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