developing against managed meta data blackbelt l.
Skip this Video
Loading SlideShow in 5 Seconds..
Developing against Managed Meta Data – Blackbelt PowerPoint Presentation
Download Presentation
Developing against Managed Meta Data – Blackbelt

Loading in 2 Seconds...

play fullscreen
1 / 39

Developing against Managed Meta Data – Blackbelt - PowerPoint PPT Presentation

  • Uploaded on

Developing against Managed Meta Data – Blackbelt. Bart-Jan Hoeijmakers Donald Hessing. Introduction – Who are we?. Donald Hessing Working with SharePoint since 2007, before .Net architect Technical Manager, Lead SharePoint Architect at VX Company

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
Download Presentation

PowerPoint Slideshow about 'Developing against Managed Meta Data – Blackbelt' - hilda

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
developing against managed meta data blackbelt

DevelopingagainstManaged Meta Data – Blackbelt

Bart-Jan Hoeijmakers

Donald Hessing

introduction who are we
Introduction – Who are we?

Donald Hessing

  • Working with SharePoint since 2007, before .Net architect
  • Technical Manager, Lead SharePoint Architect at VX Company
  • Virtual Technology Solution Professional for Microsoft Netherlands

Bart-Jan Hoeijmakers

  • Working with SharePoint since 2006, before .Net developer
  • Lead SharePoint Developer at VX Company
  • Strong focus on developing custom solutions
  • Introduction – Who are We?
  • Architectural overview of Managed Meta Data
  • Provision Taxonomy Field
  • How to set Taxonomy Field value programmatically?
  • Query List items by Taxonomy Field value using CAML
  • Search for items by Term
  • Column specific TermSets
managed meta data service application
Managed Meta Data Service Application
  • Sharing meta data cross:
    • Sites, Site Collections, Web Applications, Farms
  • Centralized management of:
    • TermSets, Terms, ContentTypes
  • MMS can be connected cross farm
  • Multiple MMS can be connected to the

same web application

  • MMS is Tenant “aware”  partitioned

= TermStore

= TermGroup

= TermSet

= Term

= Term

  • Managed Meta Data Service Application
    • Administrators
      • Manage the properties of the Service Applications
      • Are NOT Term Store Administrator by default
    • Permissions
      • Local Farm: By default all services localto the farm have full access
  • Term Store Administrator
    • Create Term Groups
    • Assign Term Group Managers
      • Canassign Term Group Contributors
        • Createand manage Term Sets andTerms
consuming managed meta data
ConsumingManaged Meta Data
  • Webapplication must beconnectedto the Service Application
    • Managed Meta Data Service Applications in the default proxy group are connectedautomatically
enterprise keywords
Enterprise Keywords
  • Enterprise Keyword Field allows users to select enterprise keywords and managed terms
  • Used keywords are stored in the Keywords TermSet of the System Group in the MMS
  • Set the default storage locationforkeywords
  • Users must have permissions on the MMS

Location: [SiteCollectionUrl]/Lists/TaxonomyHiddenList

  • Stores taxonomy values for:
    • Assigned Taxonomy values in the site collection
    • Default values of the Taxonomy Field Site Column
  • The Taxonomy Field is a lookup field to TaxonomyHiddenList
    • This prevents a hotspot on MMS
  • TaxonomyHiddenList is synchronized with the TermStore by the Taxonomy Update Scheduler Timer Job
  • Updating a term in the TermStore doesn’t change the field
    • The new value is provided by the lookup to the synchronized TaxonomyHiddenList
provision managed metadata field
Provision Managed Metadata Field
  • For provisioning a Taxonomy Field you need 2 Fields:

<Field Type=“TaxonomyFieldTypeMulti” Name=“DemoTaxField” ..../>

<Field Type=“Note” Name=“DemoTaxFieldTaxHTField0” .... />

  • TaxonomyFieldTypeMulti renders the hierarchical meta data field (FieldControl)
    • Stores the WssId of the item in the TaxonomyHiddenList
    • [4;#SharePoint 2010]
    • Value is provided by the Lookup to the TaxonomyHiddenList
  • Note field stores the selected term label and term GUID
    • [SharePoint 2010|dd212d38-417e-4a9d-8222-e856b05d627b]
provision taxonomy field
ProvisionTaxonomy Field
  • When provisioning TaxonomyFields, also provision the hidden notefield!

Microsoft Naming Convention

add field to contenttype
Add Field toContentType
  • Manually add the TaxCatchAll and TaxCatchAllLabel fields to the listdefinition, or to your contenttype
  • Seach refinement panel and Document Information Panel rely on these fields
event receivers
Event Receivers
  • Manually add the TaxonomyItemSynchronousAddedEventReceiverand TaxonomyItemUpdatingEventReceiver to the list definition

Synchronizes the TaxCatchAll fields

and the hidden notefield

bind taxonomy field to termstore
Bind Taxonomy Field toTermStore
  • Taxonomy Field is a specializedlookup field
  • Afterprovisioningitshouldbebindedto a TermStore:
    • Bind TermStoreID and TermSetID in event receiver
    • Bind the hidden note field in event receiver

This doesn’t work for SandBox solutions because the “Microsoft.SharePoint.Taxonomy” DLL is not available!!

taxonomyfieldadded feature
TaxonomyFieldAdded feature

When using custom webtemplates, or site definitions based on Blank Site Template make sure that hidden feature 73ef14b1-13a9-416b-a9b5-ececa2b0604c (TaxonomyFieldAdded) is activated on the sitecollection!

how to set a value of a taxonomy field programmatically
How to set a value of a Taxonomy field programmatically?
  • In General: Terms that were not used before will be added to the TaxonomyHiddenList of the SiteCollection
  • Taxonomy Field can be updated by
    • TermGUID
    • Term from the Term Store (MMS)
  • The Taxonomy Field has a reference to the TermStore (SspId) and TermSet (TermSetId)
set value by the guid of the term
Set value by the Guid of the Term

Site can have multiple TermStores associated

We usually don’t know the GUID of the Term

set term based on label
Set term based on Label

The Taxonomy Field has a reference to the TermStore and TermSet Taxonomy Field

Get the Term by label

Set taxonomy value


query the list using caml
Query the list using CAML
  • Get all list items that are tagged with a term or one of its child terms
  • CAML query can be constructed to achieve this goal

<Where><In><FieldRefLookupId="TRUE" Name=“MyTaxonomyField" /><Values>

<Value Type="Integer">7</Value>

<Value Type="Integer">5</Value>

<Value Type="Integer">6</Value>



taxonomy fields and caml
TaxonomyFieldsand CAML

Get the Lookup Id’s of the Term from the TaxonomyHiddenList

Construct the CAML query

Execute the CAML Query against the list

setting up metadata properties
Setting up Metadata properties
  • For Taxonomy Fields, Crawled and Managed properties are automatically created after the first full crawl
    • Only when a list item is added and contains a taxonomy field value
  • Nice for out of the box implementations, but for custom solutions :
    • You can’t first call someone to create a listitem for the managed properties
    • Create the crawled and managed properties in advance by using powershell
    • Provide crawled property with prefix ows_taxId_
    • Provide managed property with prefix owstaxId
managed and crawled properties
Managed and crawled properties
  • To create and map properties in PowerShell, use the following commandlets:
  • New-SPEnterpriseSearchMetadataCrawledProperty
  • New-SPEnterpriseSearchMetadataManagedProperty
  • New-SPEnterpriseSearchMetadataMapping
hierarchical search vs exact search
Hierarchical search vs exact search
  • Prefix term GUID in search query with # or with #0
  • #0 = exact search  SharePoint
  • # = search for the term or any child terms

below it in the TermStore hierarchy

 SharePoint, MOSS 2007, SharePoint 2010

column specific termsets36
Column specific TermSets
  • In general Taxonomy Fields are connected to a centralTermSet
    • Departments
  • It is also possible to create and connect to a local TermSet
    • To provide team specific termsets that don’t make sense for global availability
    • Termsets are stored in the MMS with SiteCollection-FieldName as name
  • Default storage location for column specific Term Sets should be enabled
other gotcha s
Other Gotcha’ s
  • TaxonomyHiddenList is resource throttled
  • The TaxonomyHiddenList is not cleaned up with unused terms
  • Keywords stored in the termstore are not security trimmed
  • The number of lookupFields is limited to 8 by default  number of joins allowed per query
  • Import of termsets will get a new GUID during import | DTAP
key take aways
Key take aways!
  • MMS can provide taxonomy for Sites, SiteCollections, Web Applications or Farms
  • TaxonomyHiddenList in the Site Collection prevents hotspot on MMS
  • Provisioning Taxonomy Fields requires additional Fields and attached EventReceivers
  • The Taxonomy Field contains a reference to the TermStore and TermSet
  • Hierachical search on Taxonomy Fields can be done by using Search
    • Use #0 for exact match
    • Use # for search on child terms


Donald Hessing


Q & A


Bart-Jan Hoeijmakers