Skip to content

Taxonomy and Managed Metadata — User Guide

Audience: Site administrators who need to configure and use the Taxonomy (Term Store) and Managed Metadata features in Cesivi.


Overview

Cesivi implements SharePoint's full Taxonomy / Managed Metadata stack:

  • Term Store — a hierarchical store of Groups → Term Sets → Terms (and child terms)
  • Managed Metadata column — a site or list column that stores terms from a specific term set
  • Enterprise Keywords — an open-submission metadata feature backed by a special flat term set
  • Term-set-backed Managed Navigation — site navigation driven by a taxonomy term hierarchy

All taxonomy data is stored per-site-collection and exposed via the Term Store Manager admin page, REST API, CSOM client, and PnP PowerShell cmdlets.


Term Store Manager

Navigate to: Site Settings → Site Administration → Term Store Management (/_layouts/15/TermStoreManager.aspx)

This single page replaces the three separate SP pages (mngterm, mngtermstore, mngtermset).

Creating a Term Group

  1. Click New Group in the top toolbar.
  2. Enter the group name and click OK.
  3. The group appears in the left-hand tree.

Creating a Term Set

  1. Select a group in the tree.
  2. Click New Term Set.
  3. Enter the term set name, optional description, and contact email.
  4. Set Submission Policy to Open (any user can add terms) or Closed (managed terms only).
  5. Click Save.

Adding Terms

  1. Select a term set in the tree.
  2. Click Add Term.
  3. Enter the term label. For multilingual labels, click Add Label and choose the LCID.
  4. To add a child term: select an existing term and click Add Child Term.
  5. To deprecate a term: select it, check Available for Tagging = false, click Save.

Moving a Term

Select the term in the tree, click Move Term, and choose the target term set or parent term.

Deleting a Group / Term Set / Term

Select the item and click Delete. Cascade deletion applies: deleting a term set deletes all contained terms. Items are soft-deleted and can be recovered from the Recycle Bin.


Managed Metadata Column

A Managed Metadata column stores one or more terms from a specified term set.

Adding a Managed Metadata Column to a List

  1. Go to List Settings → Create Column.
  2. Set Type = Managed Metadata.
  3. Under Term Set Settings, browse to or type the term set path (Group|TermSet).
  4. Check Allow Multiple Values to accept multiple terms per item.
  5. Check Allow Fill-in Choices if users may type new terms (requires Open submission policy).
  6. Click OK.

Attaching a Site Column

  1. Go to Site Settings → Site Columns and create a Managed Metadata column there.
  2. On any list's Add from existing site columns page, add the column.
  3. The column is pushed down automatically to all content types that reference it.

Entering Values in a Form

The term picker has two modes: - Type-ahead — type a few letters; matching terms appear in a dropdown. - Browse — click the browse icon to open the hierarchical tree dialog and navigate to the correct term.

Multi-value fields show selected terms as chips; click the × on a chip to remove a value.


Enterprise Keywords

Enterprise Keywords is a special single flat term set that allows any user to tag items with free-form terms. All terms entered by any user become available to all users.

Enabling Enterprise Keywords on a List

  1. Go to List Settings → Enterprise Metadata and Keywords Settings.
  2. Check Add an Enterprise Keywords column to this list.
  3. Click OK.

An Enterprise Keywords column appears on the list's New/Edit forms.

Adding Tags

Open any item's New or Edit form. In the Enterprise Keywords field, type a term. If it exists in the enterprise keyword set it will autocomplete; otherwise it is added as a new term on save.


Term-Set-Backed Managed Navigation

Managed Navigation uses a taxonomy term hierarchy to define the site's navigation links.

Enabling Managed Navigation

  1. Go to Site Settings → Look and Feel → Navigation (/_layouts/15/AreaNavigationSettings.aspx).
  2. Under Global Navigation or Current Navigation, select Managed Navigation.
  3. Choose or create a term set to drive the navigation.
  4. Click OK. The navigation bar re-renders from the term hierarchy.

Each top-level term becomes a navigation node; child terms become drop-down items.


API Access

REST

GET /_api/v2.0/termStore/groups               → list all term groups
GET /_api/v2.0/termStore/groups/{id}           → get a specific group
GET /_api/v2.0/termStore/groups/{id}/sets      → list term sets in a group
GET /_api/v2.0/termStore/sets/{setId}/terms    → list all terms in a term set
GET /_api/v2.0/termStore/sets/{setId}/terms?$filter=startswith(labels/any(l:l/name),'Proj') → filter terms
POST /_api/v2.0/termStore/groups              → create a group
POST /_api/v2.0/termStore/sets               → create a term set
POST /_api/v2.0/termStore/sets/{id}/terms    → add a term

CSOM (Cesivi.Client)

var ctx = new ClientContext("http://localhost:5000");
var termStore = ctx.Site.GetDefaultSiteCollectionTermStore();
var group = termStore.Groups.GetByName("Engineering");
ctx.Load(group, g => g.Name, g => g.TermSets);
ctx.ExecuteQuery();

var termSet = group.TermSets.GetByName("Projects");
var term = termSet.CreateTerm("ProjectAlpha", 1033, Guid.NewGuid());
ctx.ExecuteQuery();

PnP PowerShell

Connect-PnPOnline -Url http://localhost:5000 -Credentials $cred
$group = Get-PnPTermGroup -Identity "Engineering"
$set   = Get-PnPTermSet  -Identity "Projects" -TermGroup $group
Add-PnPTerm -Name "ProjectAlpha" -TermSet $set

Accessibility (WCAG 2.1 AA)

Surface #9 — PLAN-1646 (2026-05-30) — all gates PASS, KnownAxeAcceptances = []

Term Store Manager

  • The term-group tree implements the WAI-ARIA tree pattern (role="tree" on the container, role="treeitem" on each group/set node, aria-expanded toggled on expand/collapse, roving tabindex so only one node is in the tab sequence at a time).
  • Keyboard navigation: Arrow keys move between visible nodes; ArrowRight expands a collapsed group; ArrowLeft collapses or moves to parent; Home/End jump to first/last.
  • The three Create modals (Group, Term Set, Term) use the role="dialog" aria-modal="true" aria-labelledby="{id}" triplet — screen readers announce the dialog title on open.
  • Create/delete results are announced via an aria-live="polite" region (#tsAnnounce).
  • All table headers have scope="col". Reorder and Actions columns use visually-hidden text.

Term Picker (ManagedMetadata field in forms)

  • Browse button announces as "Browse terms for {field title}" — field name is interpolated.
  • Selected-term close buttons announce as "Remove term {term label}" — term name is interpolated.
  • The browse-tree uses role="tree" (hierarchical) or role="listbox" (search results) with appropriate child roles (role="treeitem" / role="option").
  • Empty-termset error is wrapped in role="alert" so it is announced immediately.
  • Global Navigation and Current Navigation radio groups are wrapped in <fieldset>/<legend> so screen readers announce the group name before each option.

Known Limitations

  • Term GUIDs are stable within a Cesivi instance but are not transferable to Microsoft SharePoint.
  • TermSet.CustomSortOrder is stored but not enforced in the term picker (alphabetical order used).
  • Cross-site-collection term sharing (Content Type Hub scenarios) is not yet implemented — each site collection owns its own term store.
  • Term reorder via keyboard (Up/Down buttons) is visual-only — no server-side sort API exists; the keyboard buttons reorder the in-memory table display but the order is not persisted.