Introduction

Auto provisioning of SharePoint sites is one of the productive tasks that we can setup in any organization to reduce the number of Server Tickets raised with IT for site provisioning. We can setup a Power Automate to get this done and build some additional functionalities like applying Out of the Box or Custom Site Templates(Previously Site Designs) to the created site to add a layer of additional functionality

In this article, we will see how to use Power Automate to auto provision Communication Sites by creating a List Item entry with the basic site information and apply an Out of the Box Site template to the newly created site.

Business Use Case

We have a requirement where we need to disable the Create Site Option in the SharePoint start page which we will do by going to the SharePoint admin center -> Settings ->Site Creation and disable the option “Let users create sites from the SharePoint start page and OneDrive”

This will disable the Create a new site which otherwise will appear in the SharePoint Start Page

  

This way unnecessary site creations can be avoided by restricting the access to the site creation button. However, we will still need to provide an option to selected group of users to create sites for their team.

We can achieve this by creating a SharePoint List which has restricted access to a limited set of users and provide it with a set of columns that would capture the needed information for Site Provisioning. When a user creates an item by filling these needed columns, Power Automate will pick the values and create a SharePoint Site using the selected template.

Implementation

Lets create a List called Site Creation Wizard and add the below columns to it:

The Site Template column will be a choice field to hold the site template/design values which can be applied on top of a communication site.

Build the Flow

We will now move on to Power Automate and create a cloud flow with the trigger – When an Item is Created. We will also initiate a variable of type object that will hold the corresponding template IDs for each of the Site Template/Design names. The rationale behind storing this key value pair is that , when a user selects the site design name from the choice drop down, we will need to get the corresponding ID to use in the site provisioning action.

In the next step, lets initialize a variable to get the Site template ID of the selected Site Template/Design by using the expression

variables('varTemplateIDs')[triggerOutputs()?['body/SiteTemplate/Value']]


Once we have the Site template ID, lets add the HTTP Request to SharePoint action and provide the values as shown in the below diagram. We will issue a POST request to the URI - _api/SPSiteManager/create and keep the Site Address as the SharePoint Admin Center URL. In the Body, we will paste the request payload with the below values :

Title

The Title that should come up in the Site Title bar

URL

The URL where the site should be provisioned, we are getting the Site Address from the user that should come after /sites

Lcid

Locale identifier . By default 1033 is English(United States)

Description

Description for the site obtained from the user

Web template

By default we are creating a communication site which has the web template ID : SITEPAGEPUBLISHING#0

Site Design ID

The user has supplied the Site Design/template name which we cross check against the variable -varTemplateIDs to get the associated ID

Owner

Email ID of the item created user

Thus the overall flow will look like :

Test the flow :

So as to test the flow, lets create a list item with the needed information.

This will trigger the flow and it will create a Communication Site using the Site Template – Showcase and we can see the Site Status as 2 which indicates a successful creation :

The full set of values for SiteStatus are as follows:

  • 0 - Not Found. The site doesn't exist.
  • 1 - Provisioning. The site is currently being provisioned.
  • 2 - Ready. The site has been created.
  • 3 - Error. An error occurred while provisioning the site.

The site has also been provisioned at the provided URL :

Summary

Thus, we saw how to create an Auto Provisioning Site Solution using Power Automate and a SharePoint List and we also saw how we can give the end users the flexibility to customize the created site using one of the available Site Templates/Designs.