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) { //Sample(); CreateSiteCollection(); } public static void CreateSiteCollection() { string TenantURL = "https://******-admin.sharepoint.com"; string Title = "AASathish1"; string Url = "https://********.sharepoint.com/sites/AASathish3"; string UserName = "Sathish@*******.onmicrosoft.com"; 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); tenantContext.Load(tenant); //We will need the IsComplete property to check if the provisioning of the Site Collection is complete. tenantContext.Load(spo, i => i.IsComplete); tenantContext.ExecuteQuery(); //Check if provisioning of the SiteCollection is complete. while (!spo.IsComplete) { //Wait for 30 seconds and then try again System.Threading.Thread.Sleep(30000); spo.RefreshLoad(); tenantContext.ExecuteQuery(); } System.Console.WriteLine("SiteCollection Created."); } } } }
Happy Coding,
Sathish Nadarajan.
Leave a comment