πŸ“š SharePoint Term Store & Term Set Management: The Complete Guide

Encoding, storage and retrieval. What Is Memory, stages and processes in short-term memory and long-term memory

The Term Store in SharePoint is a centralized metadata management system that helps organize content with consistent taxonomy. It’s essential for:
βœ… Tagging documents & lists 🏷️
βœ… Improving search & navigation πŸ”
βœ… Enforcing governance & compliance πŸ›‘οΈ


πŸ” What is the Term Store?

The Managed Metadata Service (MMS) stores terms (keywords) in term sets (groups). These can be:

  • Enterprise-wide (global, managed by admins)
  • Local (site-specific, managed by site owners)

Key Concepts:

TermA keyword/tag (e.g., “Finance”)
Term SetA group of related terms (e.g., “Departments”)
Term GroupA container for term sets (e.g., “Corporate Taxonomy”)

πŸ› οΈ How to Access the Term Store

For Admins (Global Term Store)

  1. Go to SharePoint Admin Center (admin.microsoft.com)
  2. Navigate to Term Store under Content Services

For Site Owners (Local Terms)

  1. Go to Site Settings βš™οΈ β†’ Term Store Management

πŸ“‚ Creating & Managing Term Sets

1️⃣ Create a Term Group

  1. Open Term Store
  2. Click + New Group
  3. Name it (e.g., “HR Taxonomy”)
  4. Assign contributors (who can edit terms)

2️⃣ Create a Term Set

  1. Select a Term Group
  2. Click + New Term Set
  3. Configure:
  • Name (e.g., “Job Roles”)
  • Description
  • Owner (who manages it)
  • Submission Policy (open or closed)

3️⃣ Add Terms

  1. Select a Term Set
  2. Click + New Term
  3. Add terms (e.g., “Manager,” “Analyst,” “Director”)
  4. (Optional) Add child terms (hierarchical structure)

βš™οΈ Advanced Term Store Settings

SettingPurpose
Term Set PropertiesDefine stakeholders, contact email, submission policy
Term PropertiesAdd custom descriptions, synonyms, translations
Pin Term SetReuse terms across sites (Enterprise Keywords)
Term-Driven PagesCreate dynamic pages based on terms

πŸ”— Using Term Sets in SharePoint

In Document Libraries/Lists

  1. Add a Managed Metadata column
  2. Choose a Term Set (e.g., “Departments”)
  3. Users can now tag items with approved terms

In Navigation & Search

  • Metadata-based refiners (filter search results)
  • Term-driven navigation (dynamic menus)

πŸš€ Best Practices for Term Store Management

βœ” Plan a Clear Hierarchy (e.g., Location > Country > City)
βœ” Use Closed Term Sets (prevents random tags)
βœ” Assign Term Owners (for governance)
βœ” Avoid Too Many Nested Terms (keep it simple)
βœ” Sync with Microsoft 365 Groups (for Teams/Outlook consistency)


πŸ”₯ Term Store vs. Enterprise Keywords

Term StoreEnterprise Keywords
βœ… Structured & controlledβœ… Free-form tagging
βœ… Requires admin setupβœ… Anyone can add tags
βœ… Great for complianceβœ… Good for ad-hoc collaboration

πŸ’‘ Pro Tip: Use bothβ€”Term Sets for governed terms and Enterprise Keywords for flexibility.


πŸ› οΈ Troubleshooting Term Store Issues

❌ “Term Set Not Available”?
β†’ Check if the Term Group is shared with the site

❌ “User Cannot Add Terms”?
β†’ Verify permissions in Term Store

❌ “Changes Not Appearing”?
β†’ Wait for metadata cache refresh (or force it via PowerShell)

Here’s a practical example of Terms, Term Sets, and Groups in SharePoint’s Term Store, structured for real-world use cases:


🌐 Example Term Store Structure

Term Group: Corporate Taxonomy
(Managed by IT/Content Managers)

1️⃣ Term Set: Departments

(Used in document metadata, site navigation)

  • Finance
  • Accounting
  • Budgeting
  • Auditing
  • HR
  • Recruitment
  • Training
  • Benefits
  • IT
  • Support
  • Development
  • Security

2️⃣ Term Set: Project Status

(Used in lists, task tracking)

  • Not Started
  • In Progress
  • On Hold
  • Completed
  • Archived

3️⃣ Term Set: Locations

(Hierarchical, for global sites)

  • North America
  • USA
    • New York
    • California
  • Canada
  • Europe
  • Germany
  • France

πŸ“‚ Example Term Set: Document Types

Term Group: Marketing
(Managed by Marketing Team)

  • Brochures
  • Whitepapers
  • Technical
  • Business
  • Social Media
  • LinkedIn
  • Twitter
  • Instagram

πŸ”§ How to Apply These Examples

  1. Document Libraries:
  • Add a Managed Metadata column “Department” β†’ Link to Departments term set.
  • Users can tag files with “Finance > Budgeting” or “HR > Training”.
  1. Lists (e.g., Projects):
  • Add a “Status” column β†’ Link to Project Status terms.
  1. Navigation:
  • Create a term-driven menu using Locations (e.g., /sites/NY for New York).
  1. Search Refinement:
  • Users can filter results by “Document Type > Whitepapers > Technical”.

πŸ’‘ Best Practices for Your Terms

  • Keep terms concise (e.g., “HR” instead of “Human Resources Department”).
  • Use hierarchies sparingly (avoid more than 3 levels deep).
  • Add synonyms (e.g., “IT” = “Information Technology”).
  • Lock term sets (if terms shouldn’t be edited by end-users).

πŸš€ Real-World Use Case

A Project Management Site might use:

  • Term Set: “Client Industries”
  • Healthcare
  • Education
  • Manufacturing
  • Term Set: “Project Phases”
  • Discovery
  • Design
  • Development
  • Launch

Result: Documents tagged with Client Industries > Healthcare and Project Phases > Design are instantly filterable across sites.

πŸ“œ PowerShell Scripts for SharePoint Term Store Management

Here are practical PowerShell examples to create and manage terms in SharePoint’s Managed Metadata Service (Term Store):

Prerequisites

# Load SharePoint modules
Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue

# Connect to SharePoint Online (if using SPO)
Connect-PnPOnline -Url "https://yourtenant.sharepoint.com" -Interactive

1️⃣ Create Term Group, Term Set, and Terms

# Load the Taxonomy assembly
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Taxonomy.dll"

# Get the Taxonomy Session
$session = Get-SPTaxonomySession -Site "http://yourserver"

# Get the Term Store
$termStore = $session.TermStores["Managed Metadata Service"]

# Create a new Term Group
$group = $termStore.CreateGroup("Corporate Taxonomy", "GUID-IF-NEEDED")

# Create a Term Set under the group
$termSet = $group.CreateTermSet("Departments", "GUID-IF-NEEDED", 1033) # 1033 = English LCID

# Add terms to the Term Set
$financeTerm = $termSet.CreateTerm("Finance", 1033)
$hrTerm = $termSet.CreateTerm("HR", 1033)
$itTerm = $termSet.CreateTerm("IT", 1033)

# Add child terms
$financeTerm.CreateTerm("Accounting", 1033)
$financeTerm.CreateTerm("Budgeting", 1033)
$hrTerm.CreateTerm("Recruitment", 1033)

# Commit changes
$termStore.CommitAll()

2️⃣ Import Terms from CSV

# Sample CSV format (Path,Name,Description)
$terms = Import-Csv -Path "C:\terms.csv"

foreach ($term in $terms) {
    $parent = $null
    $pathParts = $term.Path.Split('\')

    for ($i = 0; $i -lt $pathParts.Length; $i++) {
        $currentTermName = $pathParts[$i]

        if ($i -eq 0) {
            # Check if term exists at root level
            $existingTerm = $termSet.Terms | Where-Object { $_.Name -eq $currentTermName }

            if ($null -eq $existingTerm) {
                $parent = $termSet.CreateTerm($currentTermName, 1033)
            } else {
                $parent = $existingTerm
            }
        } else {
            $existingChild = $parent.Terms | Where-Object { $_.Name -eq $currentTermName }

            if ($null -eq $existingChild) {
                $parent = $parent.CreateTerm($currentTermName, 1033)
            } else {
                $parent = $existingChild
            }
        }
    }

    if (-not [string]::IsNullOrEmpty($term.Description)) {
        $parent.SetDescription($term.Description, 1033)
    }
}

$termStore.CommitAll()

3️⃣ Get All Terms (Reporting)

$session = Get-SPTaxonomySession -Site "http://yourserver"
$termStore = $session.TermStores["Managed Metadata Service"]

$termStore.Groups | ForEach-Object {
    $group = $_
    Write-Host "Group: $($group.Name)"

    $group.TermSets | ForEach-Object {
        $termSet = $_
        Write-Host "  TermSet: $($termSet.Name)"

        function Process-Terms($terms, $indent) {
            $terms | ForEach-Object {
                $term = $_
                Write-Host "$indent- $($term.Name) (ID: $($term.Id))"

                if ($term.Terms.Count -gt 0) {
                    Process-Terms $term.Terms "$indent  "
                }
            }
        }

        Process-Terms $termSet.Terms "    "
    }
}

4️⃣ Delete Terms

$termStore = (Get-SPTaxonomySession -Site "http://yourserver").TermStores["Managed Metadata Service"]
$group = $termStore.Groups["Corporate Taxonomy"]
$termSet = $group.TermSets["Departments"]

# Delete specific term
$term = $termSet.Terms["OldTermName"]
$term.Delete()

# Delete entire term set (use with caution!)
$termSet.Delete()

$termStore.CommitAll()

5️⃣ SharePoint Online (PnP PowerShell)

# Create a new term group
New-PnPTermGroup -Name "Corporate Taxonomy"

# Create term set
New-PnPTermSet -Name "Departments" -TermGroup "Corporate Taxonomy"

# Add terms
$termSet = Get-PnPTermSet -Identity "Departments" -TermGroup "Corporate Taxonomy"
New-PnPTerm -TermSet $termSet -Name "Finance" -Lcid 1033
New-PnPTerm -TermSet $termSet -Name "HR" -Lcid 1033

# Add child terms
$financeTerm = Get-PnPTerm -Identity "Finance" -TermGroup "Corporate Taxonomy" -TermSet "Departments"
New-PnPTerm -TermSet $termSet -Name "Accounting" -Lcid 1033 -ParentTerm $financeTerm

Best Practices for PowerShell Management

  1. Always test scripts in a development environment first
  2. Use -WhatIf parameter when available for destructive operations
  3. Back up your term store before major changes
  4. Schedule large imports during off-hours
  5. Use error handling with try/catch blocks

For more advanced scenarios, you can combine these with CSOM or REST API calls for maximum flexibility in your term management workflows.



πŸ“š Learning Resources


🎯 Final Thoughts

A well-managed Term Store ensures consistent tagging, better search, and smoother compliance. Start small, define key term sets, and expand as needed!

πŸ’¬ Need help? Drop a question below! πŸ‘‡

SharePoint #TermStore #Metadata #Taxonomy #Microsoft365 #Governance

Comments

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.