Recently I found myself stuck on publishing content types from the Content Type Hub in a SharePoint 2010 farm at a customer. My new content types were not getting through to the subscribed site collections and some old deleted ones were. Very strange. My search for the issue began and a solution had to be found.
Content Type Hub
Since SharePoint 2010 the Content Type Hub introduced itself. Its purpose is to manage content types centrally and publish them to subscribed site collections. Back in the beta stage of SharePoint 2010 I wrote a blog post about it and since then plenty of articles can be found on the net. Especially one article from Wictor Wilén is a must read when planning for a content type hub.
With the Content Type Hub 2 timer jobs join the game:
- Content Type Hub
- Content Type Subscriber (one per web application)
The first one tracks content type log maintenance and manages unpublished content types and runs every 15 minutes by default, while the second one retrieves content types packages from the hub and applies them to the local content type gallery. This timer job runs every hour by default and every web application has this type of timer job.
To see the settings of these timer jobs go to Central Administration, Monitoring, Review job definitions. If you select a timer job you can see the settings and you are also able to run it now.
To examine my issue, I created a content type in the hub and published it.
Then I ran the Content Type Hub timer job. To see the logging information I needed to know on what server the timer job is executing. This information can be found on the Job History page.
Then I logged in on that server and started the ULS Viewer tool. I ran the timer job Content Type Hub once again and monitored the ULS. Then an exception was thrown:
Failed to process hub site http://sharepoint/sites/cthub: The changeToken refers to a time before the start of the current change log.
Aha. There is the issue. What is this changeToken and Change Log?
Every web application has a setting for its change log. This can be found at the web application management page and then Resource Throttling settings for the selected web application:
The change log keeps track of all changes in sites, lists and items. For more detailed information: http://msdn.microsoft.com/en-us/library/bb447511(v=office.14).aspx It keeps this information for 60 days by default. My issue was apparently that I had no changes at all for over 60 days in the Content Type Hub site. The last synchronization by the Content Type Hub timer job stored a changeToken that was before the start of the current change log and that threw an exception.
When searching the net for a solution I encountered several posts about this issue. Not entirely the same situation like I have, but close enough. This issue occurred on SharePoint 2010 installations up to June 2011 CU and a hotfix was released then: http://support.microsoft.com/kb/2553016. The hotfix is also part of the August 2011 CU. I checked the farm settings and discovered that the SharePoint 2010 patch level was indeed SP1 June 2011 CU. The hotfix was installed by Support and I tested it all over again. The exception was gone. Did everything show up in the subscribed site collection? No, not immediately. My guess is, over time there was too much damage done and too much unused and deleted content types.
First I deleted all unwanted content types from the subscribed site collection and created and published my content types in the hub once again one by one. On every synchronization I deleted unwanted content types that were still coming over. After several tries I had all my content types needed for my customer solution.
While this all was taken place in the Acceptance Test environment, the next step is to take care of Production environment.