Mar 26 2017 05:53 PM
Hi,
I am using PnP Library to apply a template to existing sites(with new changes- such as adding new site fields, content types, modifying views etc). We have 40+ site collections, where I need to apply the template.
Depending on the number of changes, for each site it is taking 5-10 minutes. As the number of sites are more, the deployment process is taking lot of time to deploy the changes to existing sites.
I have used async approach with Tasks, which has improved the performance. Could anyone advise is there any other better approach that can improve the performance while applying changes to existing sites?
Is it possible to take a site collection offline while the deployment is in progress?
Mar 27 2017 07:11 AM
Applying templates with PnP PowerShell/Core can indeed be a slow process. I have however found some ways to speed things up.
First of all I don't like the concept of Content type hubs, however the use of a content type hub could speed your process up a bit. You would only need to apply fields and content types to the conten type hub and then you ould exclude them form the rest of your template applications.
The other option is to exclude handlers from your template application. So if for example you know that you have made only chnages to fields. Then run:
Apply-PnPProvisioningTemplate -Handler Fields ...
(or if you are running the core libraries you could run only the fields handler there). I would still extract the full template but only apply parts of the template to your many sites. Of course you do need to be very much aware of your chnages that you want to apply.
May 29 2018 06:04 AM - edited May 29 2018 06:14 AM
May 29 2018 06:04 AM - edited May 29 2018 06:14 AM
The number of sites have increased to 200 almost. Is there any other approach to deploy or rollout the changes to multiple sites?
How does Microsoft manage rolling out changes to multiple tenants?
May 29 2018 10:26 PM
We use C# so we can have some more control on the rollout. And only do updates on the selected parts we noticed especially Lists are slowing the provisioning down. So if you do not update a list remove it out of your template. Or only do the parts you need.
Hope this helps. And i noticed if you do it over the weekend the system is most of the time 30-40% faster. As the load is not that high.
Jun 03 2018 07:37 PM
Paul,
Thanks for the reply.I am applying only selected parts (Lists/Security/Content types) in the template. There are situations where I need to update the lists. For 100+ sites, it is taking almost 8+ hours depending on the changes. Sometimes, we get 401 unauthorized error while the execution is in progress. (May be due to DDOS). We are re-running the deployment again for such sites.
Is there a way to automate the deployment? I mean give the list of sites as input and the template -which has the list of changes and run the deployment and log the errors if any.
Jun 03 2018 09:31 PM
Yes that would be to create a webjob in azure or a console app that performs the update but complete lists content types etc takes a long time. Be sure you only update what is necessary and leave out the components that do not need to be updated.