ECM tenant Term Store with three closed term sets and enterprise keywords

Metadata in SharePoint Online: the layer that makes the document manager intelligent


If the document structure we saw in the previous article is the skeleton of the document manager, metadata is the nervous system. Without well-designed metadata, documents are mute files: they can be stored and retrieved, but they can’t be filtered, classified or governed efficiently. And in the Copilot era, this matters twice over: the quality of the AI answers we’ll get over our repositories depends directly on how well tagged the documents that AI is going to find are.

In this article I’ll tell you how I design the metadata model for the ECM manager in this series. I start with the Term Store —the centralized taxonomy— and from there I work down to site columns, content types and, finally, individual documents. The thread is still the financial scenario from Article 0, but I’ll point out where each concept applies the same way in any sector.


What are managed metadata and why do they matter?

In SharePoint Online there are two broad categories of columns we can use to describe a document: simple columns (free text, date, number, choice) and managed metadata columns. The difference isn’t cosmetic; it’s fundamental.

A free-text column lets each operator write whatever they want: “Credit card”, “credit card”, “CC”, “CrC”. Four operators, four different values for the same reality. When someone filters by “Credit card” the other three don’t show up. When Copilot searches for card documents, it misses all the ones that don’t have the exact value it expects. Managed metadata columns solve this problem by connecting the column to a set of predefined terms in the Term Store: the operator doesn’t type, they pick from a controlled list. A single value, consistent across the whole platform.


The Term Store: the tenant’s centralized taxonomy

The Term Store is SharePoint Online’s centralized repository of controlled vocabularies. It lives at the tenant level —in the SharePoint Admin Center, under Content services → Term store— and all the sites in the tenant share it. The structure has four levels:

LevelDescriptionECM example
Tenant Term StoreSingle root per tenant; administered by the SharePoint Admin or the Term Store Admin(tenant root)
GroupGroups term sets with common security requirements; defines who can administer themECM Documentation
Term SetList of allowed values for a column; can be open or closedProduct Type
TermIndividual value; can have synonyms, translations and custom properties“Mortgage Loans”

A closed term set only allows the values the administrators define; operators pick from the list but can’t add new terms. An open term set lets users propose new terms, which the administrator can later approve or reorganize. For a production ECM manager, the document-classification term sets almost always go closed: we need full control over the values so retention policies and searches work correctly.

The exception is enterprise keywords: free tags any user can add to any document. They’re useful for informal search and for capturing emerging vocabulary that hasn’t entered the formal taxonomy yet. In the ECM manager I use them as a complement, not as the main classification system.

Image 1 shows the Term Store I design for this series’ financial scenario, with three closed term sets and the enterprise keywords area.

ECM tenant Term Store with three closed term sets and enterprise keywords
Image 1.- ECM manager Term Store: the “ECM Documentation” group with three closed term sets (Product Type, Document Type, Document Status) and the enterprise keywords area for free tagging.

Site columns: the reusable unit of metadata

A site column is a column definition that lives at the site collection or Content Type Hub level and that can be reused across multiple libraries and content types. It’s different from a list or library column, which exists only where it’s created and can’t be shared.

The rule I follow in any ECM project is this: if a column is going to appear in more than one library or in more than one content type, it has to be a site column. Never a local library column. Local columns look easier at first, but a week later they’re out of sync between libraries and there’s no way to update them all together.

For the financial ECM manager, I define these site columns in the Content Type Hub, from where they propagate to all the tenant’s sites:

Site columnTypeValue sourceDescription
Client_IDText (single line)External CRM systemUnique client identifier; key for search and grouping
Product_TypeManaged metadataTerm Set: Product TypeFinancial product the document belongs to
Document_TypeManaged metadataTerm Set: Document TypeDocument class within the product
StatusManaged metadataTerm Set: Document StatusDocument status in its lifecycle
Valid_DateDate and timeManual entry / flowDate until which the document is valid
Expiry_DateDate and timeManual entry / flowExpiry date of the product or contract
Retention_LabelManaged metadataTerm Set: Retention PolicyPurview label that controls the lifecycle
ConfidentialityChoiceFixed list: Public / Internal / Confidential / RestrictedDocument confidentiality level

Content types: the inheritance that connects everything

The content type is where metadata reaches its maximum value. A content type is a reusable template that groups site columns, a document template, associated workflows and retention policies. When I associate a content type with a library, all its columns appear automatically in that library, ready to use.

The hierarchy I build starts from a base type published from the Content Type Hub, from which all the others inherit:

ECM Document (base type)

From the base type the columns common to the whole platform are inherited: Client_ID, Status, Valid_Date, Retention_Label, Confidentiality. Every content type in the ECM manager inherits from this type and therefore all of them have these columns without needing to define them in each one.

Second-level types (by product category)

From the base type the category types inherit: Card Document, Account Document, Loan Document, Mortgage Document. Each one adds the columns specific to its product. For example, Mortgage Document adds Deed_Number and Registry_Recording_Date; Card Document adds Masked_Card_Number.

Specific types (by document class)

From the second-level types the specific types inherit: Card Application, Card Contract, Statement; Account Opening Contract, Monthly Statement; Loan Application, Amortization Table, Loan Settlement. These are the types used directly in the libraries.

Image 2 shows how inheritance flows from the Term Store to the final document.

Metadata inheritance flow from the Term Store to the document
Image 2.- Metadata inheritance flow: the Term Store defines the vocabularies; site columns connect them; content types add them to the libraries; and documents inherit them automatically. A change in the Term Set propagates to all documents.

Metadata in the Copilot era: why design matters twice as much

Microsoft Copilot accesses the tenant’s content through Microsoft Graph and SharePoint’s Semantic Index. When a user asks Copilot “show me all the mortgage contracts for client CLI-00123 that expire this quarter”, Copilot doesn’t open folder by folder: it queries the semantic index, filters by the available metadata and returns the documents that match.

If those documents have the columns Client_ID = CLI-00123, Document_Type = Contract, Product_Type = Mortgage Loan and Expiry_Date within the current quarter, Copilot answers in seconds with surgical precision. If they don’t have that metadata, Copilot has to try to infer it from each document’s text content —which is slower, less accurate and consumes more inference tokens—, or it simply doesn’t find them.

The impact is concrete: managed metadata is the language Copilot uses to reason over the document repository. The more consistent and structured that language is, the more precise the answers will be. These are the patterns that have the most impact:

Metadata patternImpact on CopilotExample query enabled
Managed metadata columns with controlled values from the Term StoreCopilot can filter and group with high precisionHow many personal loans does client CLI-00456 have?
Valid_Date and Expiry_Date in date-type columnsEnables precise time-based queriesShow the contracts that expire in the next 30 days
Document status with a controlled valueCopilot can ignore drafts and focus on approved onesWhich documents are current for file X?
Retention_Label assigned to the content typePurview manages the lifecycle automatically; Copilot doesn’t access deleted documents(applies to repository governance)
Confidentiality with a Purview sensitivity labelCopilot respects permissions: it only shows what the user can seeSecurity in repository-based answers

One detail worth clarifying: Copilot respects SharePoint permissions. If a user doesn’t have access to a site or a library, Copilot won’t show them documents from there, even if it has them in the index. The Semantic Index operates within the user’s identity perimeter. This is good news for security, but it also means that the permissions structure we designed in Article 2 works together with metadata to make sure Copilot is useful and secure at the same time.


Metadata and the SharePoint Knowledge Agent

The SharePoint Knowledge Agent —available with a Microsoft 365 Copilot license— is the natural-language search layer specific to SharePoint’s Knowledge Base. Unlike classic KQL search, the Knowledge Agent interprets natural-language questions, translates them into queries over the index and returns answers with references to the source documents.

To get the most out of the Knowledge Agent in an ECM manager, there are two things we need to have in order. First, the classification metadata (Product_Type, Document_Type, Status) must be complete and consistent, because the Knowledge Agent uses them as implicit filters. Second, documents must have indexable text content —not just images or scanned PDFs without OCR— so the Knowledge Agent can combine semantic search with metadata filtering.

The combination is powerful: the Knowledge Agent can tell me “the three most recent mortgage contracts for client CLI-00123 that are in Approved status” and instantly returns the right documents with the justifying text. Without metadata, that query isn’t possible. With well-designed metadata, it’s trivial.


Practical design: the steps to implement the metadata model

To close the article, here’s the implementation sequence I follow in real projects:

StepWhat to doTool
1. Design the taxonomyDefine the term sets and their terms before touching SharePoint. Work with business owners to validate the vocabulary.Excel or Miro for the initial design
2. Create the Term StoreCreate the ECM group and the term sets in the SharePoint Admin Center. Import terms in bulk if there are many.SharePoint Admin Center → Term store
3. Create site columns in the Content Type HubDefine the site columns connected to the term sets. Name them with underscores (no spaces) to make KQL and Graph easier.Content Type Hub → Site settings → Columns
4. Create content types with inheritanceBuild the content type hierarchy in the Content Type Hub. Publish them to the tenant.Content Type Hub → Content Types
5. Enable in the librariesAssociate the content types with the libraries of each site collection. New sites inherit the configuration automatically.Library settings → Content Types
6. Validate with a KQL queryCheck that the metadata is indexed correctly by searching with KQL in Microsoft Search.Microsoft Search → advanced search

Conclusion

In this article I presented the metadata model that gives the document manager its intelligence: the Term Store as a controlled vocabulary, site columns as the reusable unit, inheritance from content types so everything propagates on its own, and the direct impact this design has on the quality of Copilot’s and the Knowledge Agent’s answers. Metadata isn’t a late configuration detail; it’s an architecture decision that has to be made from day one, before operators start loading documents. A poorly designed taxonomy that you then try to fix across thousands of existing documents is one of the most expensive and frustrating jobs in the ECM world. In the next article we move to the governance and security layer: how to manage permissions at scale, Microsoft 365 groups, SharePoint Advanced Management and Data Access Governance.


Fabián Imaz
Office Apps and Services MVP
CEO Siderys | CTO qualitaslearning.com
fabiani@siderys.com.uy | @fabianimaz


Appendix — Full series: ECM with Microsoft 365

A 17-article series. The links are updated as the articles are published.

  1. Enterprise Document Management with Microsoft 365: a use case that applies to any sector, with a focus on finance — Reference architecture: files per client, content types, document lifecycle and two-tier archiving with SharePoint Embedded and M365 Archive.
  2. ECM Licensing in Microsoft 365: how to choose without overspending — Enterprise, Business and Frontline plans; SharePoint Embedded, M365 Archive, Purview and Copilot. Mixed licensing by user profile.
  3. Document Structure — Communication Sites vs. Team Sites, hub sites as concentrators, site collections per entity, libraries per process, Document Sets, document links and metadata instead of folders.
  4. Metadata (this article) — Term Store, site columns, term sets, inheritance from the content type and its impact on Copilot’s answers.
  5. Governance and Security — Permission models, Microsoft 365 groups, SharePoint Advanced Management, Data Access Governance and conditional access.
  6. Processes and workflows — Power Automate, approvals, document lifecycle and Copilot Actions for automation.
  7. Compliance and retention with Microsoft Purview — Retention labels, Records Management and DLP. Replacing the information management policies deprecated in April 2026.
  8. Cataloging and classification — SharePoint Premium / Syntex: automatic classification, entity extraction and sensitivity labels.
  9. Migration to modern ECM — Content audit, migration strategy, tools (SPMT, Sharegate) and change management.
  10. Storage — SharePoint Online Sites — Site collections, quotas, lifecycle policies and site archiving.
  11. Storage — SharePoint Embedded — Containers, API via Microsoft Graph, PAYG cost model and archiving use cases.
  12. Search — Microsoft Search, KQL, Graph connectors and the SharePoint Knowledge Agent.
  13. Integration with APIs and Graph — Microsoft Graph API, SPFx, REST API and webhooks for integration with external systems.
  14. Azure AI and document intelligence — Azure Document Intelligence, OCR, field extraction and multimodal processing integrated with ECM.
  15. Copilot and ECM — How the metadata and structure architecture impacts the quality of Copilot’s answers.
  16. Copilot Studio Agents over document content — Autonomous agents over SharePoint repositories and their integration with the Power Platform.
  17. Forms and intelligent document capture — Custom upload forms, structured capture at ingestion and metadata validation at the source.

Frequently asked questions

What is the Term Store in SharePoint Online?

The Term Store is the tenant’s centralized repository of controlled vocabularies, in the SharePoint Admin Center under Content services. It has four levels—Term Store, Group, Term Set and Term—and every site in the tenant shares it, which keeps the taxonomy consistent across the whole platform.

What’s the difference between a simple column and a managed metadata column?

A free-text column lets each operator type whatever they want, producing inconsistent values (“Credit card”, “CC”, “CrC”). A managed metadata column connects to a term set in the Term Store, so the operator picks from a controlled list and the value stays unique and consistent across the platform.

Why does metadata matter for Microsoft Copilot?

Copilot uses the metadata in SharePoint’s Semantic Index to filter and reason over the repository. With consistent managed metadata it answers in seconds and with precision; without it, it has to infer from each document’s text—slower, less accurate and more token-intensive—or it simply doesn’t find the documents.

What does the SharePoint Knowledge Agent need to work well?

Two things: complete, consistent classification metadata (Product_Type, Document_Type, Status), which the Knowledge Agent uses as implicit filters, and documents with indexable text content—not just images or scanned PDFs without OCR—so it can combine semantic search with metadata filtering.