Twitter Feed
Tweets by SundownSolLtd

Content Type Syndication Hub – Technical Overview

2nd August


In its most basic sense the Content Type Syndication Hub (CTSH) provides a mechanism for centralising control of content types across multiple site collections and web applications.

It does this by "Promoting" one designated site collection to become the Content Type Syndication Hub (CTSH). Any subsequent content types added to this "Promoted" site collection will be published out to all other "Consuming" site collections.

The CTSH is part of the Managed Metadata Service application and as such any site collection or web application that uses this service application will also consume content types from the CTSH.

You can only have one CTSH per Managed Meta Data Service Application and once set it cannot be changed. If you want to move the CTSH after inception then you must create/use a brand new Metadata Service Application.

However a web application may consume content types from more than one CTSH by subscribing to multiple metadata services. In the case of any conflicts the Default Managed Metadata Service Web app will win (that is to say the content type on the default will be the version pushed to the consuming site collection).

Content Type Syndication Hub – Known Limitations

Non supported column types– Custom Fields and external data columns are not supported in syndicated content types. They can be added to the original content type on the hub, but the column will not be pushed out.

Workflows– Workflows are NOT supported with syndicated content types, although once deployed workflows can be attached to them in normal fashion, but after every republish the association will be dropped and has to be re-established.

To configure the Content Type Syndication Hub

The initial Configuration of the CTSH is relatively straight forward and should be the first element checked when trouble shooting.

Step 1Provision the CTSH in the managed metadata service

  • In central admin, go to Managed Service Applications
  • Focus (not select) the managed metadata Service
  • Enter the URL that is going to be the CTSH
  • Focus (not select) the Managed Metadata service Proxy
  • Choose the desired options

Step 2Enable the Service on the site

  • Go to the proposed CTSH site
  • Enable the CTSH Feature at the site collection level

Step 3Run the timer Jobs

  • Run the Content Hub Timer job (More on this later)
  • Run the Content Subscriber Timer Job (More on this later)

Content Hub Job – Runs every 15 minutes by default – Gathers up all content types that have been set to publish for the first time or republish

Content Type Subscriber Job – Runs at 59 minutes past the hour by default – (One of these jobs exist per web app) This job runs and completed an update check per content type as well as pushing "Consuming" any new content type

Sealed and unsealed content types

When a content type is "Consumed" by a site collection that content type becomes "Sealed" – which in essence means read only. This prevents the end user altering the content type and making the Hub unstable.

If the Content Type is retraced (Unpublished) then the site collection will not receive any more updates for that content type but the content type will be set to the site scope and will become "Un sealed". End users will then be able to edit this content type as it is site specific. This is to ensure that the removal of content types from a hub does not lose any associated data.

Removing a Content Type from a Site completely

As mentioned above the use of unsealed content types has its advantages, but if you are looking to remove the content type completely from the site then you will need to go through a more hands on process.

First of all you must remove all instances of the content types from any lists or document libraries in the site/site collection. Once this has been done this you can delete the content type from the site collection Gallery.

As you can imagine with multiple content types, libraries and sites this process can take some time. The Powershell code below can be ran against your site collection to help find all documents (and their libraries) where a specific content type is used – which should aid your search considerably.

#add-pssnapin Microsoft.sharepoint.powershell

   

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint") > $null

[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Publishing") > $null

   

$url = "http://SITECOLLECTIONURLGOESHERE"

$site = new-object Microsoft.SharePoint.SPSite ($url)

$contenttype = $site.rootweb.contenttypes["Document"] # Change this to represent the desired CT

ForEach ($web in $site.AllWebs)

{

ForEach ($list in $web.Lists)

{

if ($list.BaseTemplate -eq "DocumentLibrary")

{

ForEach ($item in $list.Items)

{

If ($item.ContentType.Name -eq $contenttype.Name)

{

"DocURL:"+" /" + $item.Url + " CT: " + $item.ContentType.Name

}

}

}

}

}

Common Errors

Newly published Content Types not appearing in site collections

This is by far the most common of all errors with the CTSH and it can be caused by a number of reasons. Trouble shooting steps for this error should be to review all configuration settings and then test syndication to the effected site using the subscriber job for that web application only.

In the first instance check that the issue is reproducing in PPE and if possible rectify there first and confirm any repro steps
After this check the Content Type Syndication hub error log:

Next check the log Content type publishing log for specific publishing errors

These steps should outline the exact nature of the fault and allow you to troubleshoot further. If the logs are showing clear then use the following steps to confirm syndication is operating correctly:

  • Check CTSH settings in Central Admin (as outlined in the screenshots in Section 1 above)
  • Ensure you can surface the CTSH site collection
  • Make sure that content types in the CTSH are set to publish
  • Check currently running Jobs in Central Admin - this will show if any long running subscriber jobs are present

If you are still having issues then the creation of a test content type may be necessary but make sure you gain customer approval before deploying it.

  • Create a CTSH Content Type
  • Set the Content Type to Publish
  • Run the Content Subscriber job for that web application – alternatively wait till 59 minutes past the hour when the job will run as scheduled.

If the test content type syndicates correctly you have confirmed that the CTSH is operating as expected and the fault lies with the Content Type itself.

Columns missing from Syndicated Content Types

The CTSH does not support Custom Fields and external data columns but it WILL publish the rest of the content type. This can lead to the customer reporting columns are missing. In this instance there is nothing that can be done until the offending columns are removed from the content type at the CTSH level.

Content not syndicating to blank site

You may get a customer call about content types not be syndicated and on checking you cannot find the Content Publishing Hyperlink. This is more than likely because the site has been created using the blank site template.

By default the blank site does not have the taxonomy feature enabled and this cannot be enabled through the interface. To enable the feature use either of the following methods:

Via powershell
Enable-SPFeature -id 73EF14B1-13A9-416b-A9B5-ECECA2B0604C -URL <SiteCollectionURL>

Via STSADM
activatefeature -id 73EF14B1-13A9-416b-A9B5-ECECA2B0604C -url http://<server> -force

Follow Us