How to Create/Provision Site Collection Programmatically using Client Side Object Model (CSOM) PNP in SharePoint Office 365

Sathish Nadarajan
Solution Architect
August 13, 2016
Rate this article
[Total: 0    Average: 0/5]

In this article, let us see how to create the Site Collections Programmatically. In many scenarios, we may need to provision Site Collection using Client Side Object Model. Hence, a Handy script will be really helpful and reduce our time.

The Code below is straight forward and does not require any explanation I guess.

 using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 using Microsoft.SharePoint.Client;
 using System.Security;
 using Microsoft.Online.SharePoint.TenantAdministration;
 namespace Console.Office365
     class Program
         static void Main(string[] args)
         public static void CreateSiteCollection()
             string TenantURL = "https://******";
             string Title = "AASathish1";
             string Url = "https://********";
             string UserName = "Sathish@*******";
             string Password = "******";
             //Open the Tenant Administration Context with the Tenant Admin Url
             using (ClientContext tenantContext = new ClientContext(TenantURL))
                 //Authenticate with a Tenant Administrator
                 SecureString passWord = new SecureString();
                 foreach (char c in Password.ToCharArray()) passWord.AppendChar(c);
                 tenantContext.Credentials = new SharePointOnlineCredentials(UserName, passWord);
                 var tenant = new Tenant(tenantContext);
                 //Properties of the New SiteCollection
                 var siteCreationProperties = new SiteCreationProperties();
                 //New SiteCollection Url
                 siteCreationProperties.Url = Url;
                 //Title of the Root Site
                 siteCreationProperties.Title = Title;
                 //Email of Owner
                 siteCreationProperties.Owner = UserName;
                 //Template of the Root Site. Using Team Site for now.
                 siteCreationProperties.Template = "COMMUNITY#0";
                 //Storage Limit in MB
                 siteCreationProperties.StorageMaximumLevel = 100;
                 //UserCode Resource Points Allowed
                 siteCreationProperties.UserCodeMaximumLevel = 200;
                 //Create the SiteCollection
                 SpoOperation spo = tenant.CreateSite(siteCreationProperties);
                 //We will need the IsComplete property to check if the provisioning of the Site Collection is complete.
                 tenantContext.Load(spo, i => i.IsComplete);
                 //Check if provisioning of the SiteCollection is complete.
                 while (!spo.IsComplete)
                     //Wait for 30 seconds and then try again
                 System.Console.WriteLine("SiteCollection Created.");

Happy Coding,

Sathish Nadarajan.

Author Info

Sathish Nadarajan
Solution Architect
Rate this article
[Total: 0    Average: 0/5]
Sathish is a Microsoft MVP for SharePoint (Office Servers and Services) having 13+ years of experience in Microsoft Technologies. He holds a Masters Degree in Computer Aided Design and Business more

Leave a comment