I have created CI/CD for sharepoint Online in Azure DevOps.

I am using PnP provisioning template to deploy changes in Page Layout files from development to QA & Prod environment. Using Apply-PnPProvisioningTemplate.

Example of template file:

    <pnp:File Src="src\_catalog\masterpage\html\TestPageLayout.html" Folder="{masterpagecatalog}" Overwrite="true" ></pnp:File>


This file contains mso:ContentTypeId, mso:PublishingAssociatedContentType etc based on site collection (for example Dev, UAT, Prod). Every site collection have different ContentTypeId & PublishingAssociatedContentType.

If I select a single file (with specific ContentTypeId & PublishingAssociatedContentType) for each sitecollection (Dev, UAT,Prod) & run Apply-PnPProvisioningTemplate, it will break the page layout in other environment because every environment have different ContentTypeId & PublishingAssociatedContentType.

If I have same contenttypeid for used "site content type" (eg. TestContentType) in all environment, so same TestPageLayout.html can work in all environment but ContentTypeId is readOnly & can't change for "Site Content Type". Useful link : https://docs.microsoft.com/en-us/previous-versions/office/sharepoint-server/ms460737(v=office.15) & https://social.technet.microsoft.com/wiki/contents/articles/31444.sharepoint-online-content-types-in-powershell-edit.aspx

Other option is change Template file and add property attribute for PageLayout as below: https://github.com/SharePoint/PnP-Sites-Core/blob/master/Core/OfficeDevPnP.Core/Framework/Provisioning/BaseTemplates/Common/Publishing-Feature-Native-Files.xml

For Dev,Prod & UAT:

Same as above with correct value of ContentTypeId & PublishingAssociatedContentType.

In this approach, I have to manage three different template file based on environmet & manage Release pipeline to call different template file for each environment.

Can anyone please suggest another way to manage ContentTypeId & PublishingAssociatedContentType in Page Layout if deploying in different environment ?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.