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¶
- Click New Group in the top toolbar.
- Enter the group name and click OK.
- The group appears in the left-hand tree.
Creating a Term Set¶
- Select a group in the tree.
- Click New Term Set.
- Enter the term set name, optional description, and contact email.
- Set Submission Policy to Open (any user can add terms) or Closed (managed terms only).
- Click Save.
Adding Terms¶
- Select a term set in the tree.
- Click Add Term.
- Enter the term label. For multilingual labels, click Add Label and choose the LCID.
- To add a child term: select an existing term and click Add Child Term.
- 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¶
- Go to List Settings → Create Column.
- Set Type = Managed Metadata.
- Under Term Set Settings, browse to or type the term set path (
Group|TermSet). - Check Allow Multiple Values to accept multiple terms per item.
- Check Allow Fill-in Choices if users may type new terms (requires Open submission policy).
- Click OK.
Attaching a Site Column¶
- Go to Site Settings → Site Columns and create a Managed Metadata column there.
- On any list's Add from existing site columns page, add the column.
- 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¶
- Go to List Settings → Enterprise Metadata and Keywords Settings.
- Check Add an Enterprise Keywords column to this list.
- 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¶
- Go to Site Settings → Look and Feel → Navigation (
/_layouts/15/AreaNavigationSettings.aspx). - Under Global Navigation or Current Navigation, select Managed Navigation.
- Choose or create a term set to drive the navigation.
- 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-expandedtoggled on expand/collapse, rovingtabindexso 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) orrole="listbox"(search results) with appropriate child roles (role="treeitem"/role="option"). - Empty-termset error is wrapped in
role="alert"so it is announced immediately.
Navigation Settings¶
- 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.CustomSortOrderis 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.