Presentation is loading. Please wait.

Presentation is loading. Please wait.

Developing against Managed Meta Data – Blackbelt

Similar presentations

Presentation on theme: "Developing against Managed Meta Data – Blackbelt"— Presentation transcript:

1 Developing against Managed Meta Data – Blackbelt
Bart-Jan Hoeijmakers Donald Hessing

2 Introduction – Who are we?
SharePoint Connections Autumn 2010 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 TODO Plaa Updates will be available at

3 Agenda 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

4 Managed meta data Architecture

5 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 The Managed Metadata Service application is, in my opinion, the most important new service application in SharePoint Server 2010.  It’s responsible for enabling the centralized management of terms (also called metadata or tags) and deployment of content types across site collections, web applications, and even farms.  Terms and content types are the backbone of information architecture (IA), so the fact that SharePoint 2010 now does these tasks, and does them well, is a big win!

6 Terminology = TermStore = TermGroup = TermSet = Term = Term

7 Administration 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 local to the farm have full access Term Store Administrator Create Term Groups Assign Term Group Managers Can assign Term Group Contributors Create and manage Term Sets and Terms Alleen even rechten op de MMS aanstippen. Hier hoef je niks aan te doen

8 Consuming Managed Meta Data
Webapplication must be connected to the Service Application Managed Meta Data Service Applications in the default proxy group are connected automatically

9 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 location for keywords Users must have permissions on the MMS

10 Enterprise Keywords versus Keyword
Keywords field is there for MOSS compatibility Keywords words are not stored in the keywords termset If you have both fields added SharePoint will sync the values the-keywords-field-vs.-the-enterprise-keywords-field-in-sharepoint.aspx

11 TaxonomyHiddenList 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

12 Provision Managed meta data field

13 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] The TaxonomyField stores the label defined when declaring the field. As the next sheet will show.

14 Provision Taxonomy Field
Microsoft Naming Convention When provisioning TaxonomyFields, also provision the hidden notefield! ShowField is the field to be shown from the TaxonomyHiddenList. So the field defined here shows the English language label. If you deploy languagepacks, other languages will be available.

15 Add Field to ContentType
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

16 Provision the List

17 Event Receivers Manually add the TaxonomyItemSynchronousAddedEventReceiver and TaxonomyItemUpdatingEventReceiver to the list definition Synchronizes the TaxCatchAll fields and the hidden notefield Bij toevoegen van een TaxonomyField in de Userinterface worden deze eventreceivers automatisch aan de lijst toegevoegd. Ook als je een TaxonomyField vanuit code aan een lijst toevoegt, worden de eventreceivers automatisch gekoppeld. (Het hidden note field wordt dan overigens ook automatisch geprovisioned naar de lijst)

18 Bind Taxonomy Field to TermStore
Taxonomy Field is a specialized lookup field After provisioning it should be binded to 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!!


20 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!

21 Demo Show VS2010 solution

22 Set Taxonomy Field value programmatically

23 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)

24 Set value by the Guid of the Term
Site can have multiple TermStores associated We usually don’t know the GUID of the Term SetFieldValue methode is hier essentiele omdat indien je het via de propertie van de indexer doet er events niet afgaan (bv wssid aanmaken in taxhiddenlist) TODO: Check provision termset with predefined guids

25 Set term based on Label The Taxonomy Field has a reference to the TermStore and TermSet Taxonomy Field Get the Term by label Ask someone what is “wrong” with this code

26 demo Set taxonomy value TaxonomyHiddenList
Verwijder Webparts list item uit taxonomylist Verwijder webparts uit taxonomyhiddenlist

27 Query List items by taxonomy field value using caml

28 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><FieldRef LookupId="TRUE" Name=“MyTaxonomyField" /><Values> <Value Type="Integer">7</Value> <Value Type="Integer">5</Value> <Value Type="Integer">6</Value> </Values></In></Where> TaxonomyField.GetWssIdsOfTerm(..,..,..) TODO::Fix images

29 Taxonomy Fields and CAML
Get the Lookup Id’s of the Term from the TaxonomyHiddenList Construct the CAML query Execute the CAML Query against the list

30 Query List Items by Taxonomy Field value using CAML

31 Search for items by term

32 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

33 Managed and crawled properties
To create and map properties in PowerShell, use the following commandlets: New-SPEnterpriseSearchMetadataCrawledProperty New-SPEnterpriseSearchMetadataManagedProperty New-SPEnterpriseSearchMetadataMapping

34 Search by Term in code

35 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 TODO::aanpassen plaatje

36 demo Searching items by term from code
TODO::Aanpassen demo zodat de termset “netjes” opgehaald wordt. Code iets versimpelen

37 Column Specific termsets

38 Column specific TermSets
In general Taxonomy Fields are connected to a central TermSet 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 In general Taxonomy Fields are connected to a central TermSet  Departments To provide team specific termsets that don’t make sense for global availability  Milestones

39 Column specific TermSets

40 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

41 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

42 Q & A Contact Donald Hessing
Contact Bart-Jan Hoeijmakers

Download ppt "Developing against Managed Meta Data – Blackbelt"

Similar presentations

Ads by Google