SharePoint Site Provisioning Engine


Site provisioning engines are a very hot topic in the SharePoint community at the moment. To be honest with you I feel really sad about it being such a hot topic, because it basically means that Microsoft failed to deliver the correct solution, and now everyone is trying to build their own. I hope that Microsoft corrects this mistake, by improving their site provisioning offerings, but it doesn’t seem like it, so while we wait we have to fill the gap and help customers with their site provision needs in way that is cheap to use, extend and flexible enough to solve their needs.

The typical common customer pain is:

We need non-priviledged users to be able to/create new site (or maybe order sites via some process) (of insert specific template types here). The site must have the appropriate permissions set and should adhere to the corporate branding. And we need the sites to follow our governance model.

Most of the clients we work with need this functionality for Office 365. But there is also some customer that wants it for their on-premise environment, implemented in a way that is Office 365 compliant, so that they are ready for the move.

There exists some solutions out there like these:

Frameworks (Office 365)

Office PNP Site Provisioning Framework(Engine code)
SPMeta2 – Code Provisioning

Products (On-premise)

HATAHET (Site is in german)

I haven’t tried HATAHET so I can’t comment on it. ChangeBot is a fairly decent solution, but it currently only works on-premise, and is designed around SharePoint service application architecture, so it’s a major rewrite to get it to work with SharePoint online. A common problem with the two Office 365 solutions that I’m aware of, Office PNP and the SPMeta2 are that they are very developer focused, they are not usable for an IT pro without some assistance from a developer.

If installed and setup correctly an IT pro might be able to edit and create new Office PNP Provisioning templates because they are in XML format, although very verbose, but you do have the possibility to generate the template from an existing site, which is a nice feature that is very IT-Pro friendly.

SPMeta2 is a code solution, and not a ready to use framework, so it will require some development hours. I will say that with this solution your developers will be very effective once they learn the library and your solution will work across different versions of SharePoint, onprem and in the cloud.

What we at Delegate A/S have built in cooperation with one of our clients is a framework, that takes the best from the Office 365 PNP provisioning engine and exposes it as a software-as-a-service that IT-pros can extend without the need for a developer.

The main idea behind our provisioning framework is that it is based on the PNP work, so we can leverage all the good work those guys have done, and will do. It then take that work and exposes it as simple REST services that can be called from e.g. a SharePoint workflows, such that it’s possible to compose workflows that do exactly what the customer needs, whether it’s applying branding, enable sharing with external users, or creating a complete site-provisioning flow. The positive effect of building the templates as workflow, is that they can be edited by IT-pros, and as such the client doesn’t need to request our assistance once they need to add a new permission level or something similar. Another nice feature is that corrections to existing sites are possible, so let’s say an updated branding package gets developed, an IT-pro can author a workflow the rolls out the branding to all existing sites.

To give the maximum amount of flexibility to IT-pros our framework supports that PowerShell scripts can be part of a workflow to carry out actions that our REST API currently doesn’t support, or is too specialized to expose as a REST service.

Later we will also enable authoring of site provisioning flows from F#, by creating a type provider for our REST endpoints to cater to a developer audience.

I will release more information on our software-as-a-service solution and the list of REST operations we currently have and how our service can be used across multiple tenants in the near feature, once the framework rolls out of internal testing.