Yesterday I copied my content database from production to my test environment using a database detach/attach method. All easy stuff, and I’ve done that many times before. What could possibly go wrong.
In this SharePoint 2010 environment, I’ve got a content type hub. My content type hub also got updated when I attached the new content database. Maybe I should consider giving the content type hub a separate content database so that I don’t have to update it when I don’t want to.
So my content types in the hub have been updated and now when the timer job for the content type hub runs I’m getting a lot of messages like this one:
A content type failed to be syndicated: Microsoft.SharePoint.SPContentTypeReadOnlyException: The content type “Site Request”
at “/sites/sitename” is read only.
at Microsoft.SharePoint.SPContentType.Update(Boolean updateChildren, Boolean ignoreSealedOrReadOnly, Boolean throwOnSealedOrReadOnly, IList`1 exceptions)
at Microsoft.SharePoint.Taxonomy.ContentTypeSync.Internal.SubscriberImport.UnshareContentType(SPContentType contentType, Boolean previousReadOnlyValue)
at Microsoft.SharePoint.Taxonomy.ContentTypeSync.Internal.SubscriberImport.UnshareContentType(String contentTypeIdString)
at Microsoft.SharePoint.Taxonomy.ContentTypeSync.Internal.Subscriber.SynchronizeSite(TaxonomySession session, TermStore termStore, MetadataWebServiceApplicationProxy proxy, SPSite site, Guid rawPartitionId, DownloadedHubData downloadedHubData, SyndicationResult result, SiteStatus& siteStatus)
There hadn’t been any updates made to the content types for quite a while. So this issue might have occurred since the latest SharePoint updates were installed… No that wasn’t it.
To me the above message sounds like this could be a permission issue but I couldn’t see any issue with the permissions.
Then I had a detailed look at the content types and I found the solution.
My content types have Managed Metadata fields. So these columns are linked to term sets in the Managed Metadata Service. The links are build up with GUIDs that point to the term sets available in the local term store. aha…
My Managed Metadata fields were pointing to term sets I the production environment. There term sets don’t exist in the test environment. Linking all of the site columns to the right term sets resolved the issue..