In September 2021, we changed content type publishing to improve performance and make newly published and updated content types available to sites faster.
Note: Although this new publishing mechanism was developed for Microsoft Syntex, these changes are available to all SharePoint customers in Microsoft 365, even those without a Microsoft Syntex license.
How content type publishing worked before
In the previous content type publishing experience, when you publish a content type from the content type gallery or content type hub site, a copy of the content type is added to each site in your organization. Content types periodically sync across sites to ensure that changes to published content types propagate to each site in the organization.
As the number of sites and content types in your organization grow, site performance tends to degrade, leading to long delays while changes sync across sites.
Furthermore, since not all content types are used in every site, much of this resource consumption is unnecessary. Therefore, we made changes to how content type publishing works, to improve performance and reliability of the sync and make content types available where they’re needed more quickly.
How the new content type publishing works
To address these issues and help optimize the syncing of published content types to sites and libraries, we’ll be switching from a push everywhere model to pull as needed approach. Users can select or pull content types directly from the hub while adding them to lists and libraries, and updates in the content type hub is propagated only to where the content types are used.
To support the new model, the modern experience to add content types to a list or library will be updated to show all published content types directly from the content type hub, in addition to those custom content types already available on the site.
How to add published content types directly to a list or library
Note: To allow the addition of content types to a library, you need to go to Library settings > Advanced Settings > Select Yes for Allow management of content types.
1. Select Add column in the library.
2. Select Content type in the menu.
3. In the drop-down list, all published content types and custom content types available are listed.
4. Select the published content type that you want to add.
5. Select Apply to confirm the addition.
When a user selects a published content type from the hub and adds it to their library, the content type is copied into the site and added to the library. With this approach, there will no longer be any unnecessary resource consumption to sync all published content types to all your sites if they don’t have a use in your lists and libraries.
Content type publishing is also driven by the use of the content type. If a content type is added to any list or library in the site, then changes to the content type published from the content type hub syncs to the site periodically. If a content type is no longer used in any list or library in the site, then changes won’t sync to the site, to save on unnecessary updates.
How will content types published earlier be affected?
For an enterprise content type that was published before this change and added to at least one list or library – These content types are considered in use, and the published changes continue to be synced down periodically. So effectively, they’ll be unaffected by this change.
For an enterprise content type that was published before this change but not added to any list or library – Since it was published before the change, a version of the content type is available on the site. However, any further changes published in the content type hub won’t sync to the content type in the site unless it is used in a library. Once added to a library, it will behave like the previous case.
For an enterprise content type that was published after this change – Since this content type is published after this change, no version of it exists in the site, but it’ll be listed as an option to add to the list or library via the new experience to add content types. Once added, they are synced to the site promptly, and behave like the first case.
For an enterprise content type that was published after this change and modified after syncing to sites – Initially the content type will behave as described in the previous point. After applying it to libraries or lists if further changes are made to the enterprise content type and republished, the latest changes will be available 45 minutes to 1 hour after the republish action. You can also choose to update the content type to pull in the latest changes immediately, either programmatically or manually from the site-level content type gallery.
For a site content type created directly on the site – These content types are unaffected by this change.
Programmatic content type addition
For those who have built custom solutions that use content types and their publishing, we are introducing a few ways to programmatically add published content types to the desired destinations.
Note: Once the previous publishing mechanism is phased out (in October 2021), any scripts that add a published content type in a site for the first time need to use one of these methods. Any solutions that depend on waiting for a published content type to get copied to all sites won’t work going forward.
The new Add-PnpContentTypesFromContentTypeHub cmdlet allows for direct reference of content types in the content type hub, so there is no need to wait for the content type to be synced to the site.
The PnP cmdlet has corresponding CSOM method support that can also be used directly if desired. You can refer to powershell/AddContentTypesFromContentTypeHub.cs at dev · pnp/powershell · GitHub for the method.
A new addContentTypesFromHub verb is available for use within SharePoint site script actions. For more information, read Site template JSON schema.
The Microsoft Graph API support for fetching and syncing published content types from the content type gallery or content type hub site to target sites is now available in v1.0. For more information, see contentType: addCopyFromContentTypeHub, and contentType: getCompatibleHubContentTypes.