Clone or Copy SharePoint Online Site Collection With Lists Content
Modern problems need modern solution...!
Although we have spent years with SharePoint On-Premises but its time to move on SharePoint Online. Being SharePoint Administrator in past, now you may have to deal with Microsoft Cloud Admin. It was pretty easy in good old days to copy or clone a site using backup restore or using export import methods. However, that thing do not work anymore in SharePoint Online. You have to try different approach and syntax for this. There are several articles on this but I found this one which lead me to different type of errors and ultimately to the actual solution I was looking for. Here is how I did it...
There are three main components in this article.
- Create a Site in SharePoint online with some dummy data
- Use PNP PowerShell to backup the site template and list data
- Create new site and restore the template
Important : The commands I will be using in this article are different than the used in above mentioned article. To run these commands, you need to get rid of the legacy SharePoint PNP Online and Install the PNP PowerShell. Please see this detailed article or run the below commands.
Uninstall-Module -Name "SharePointPnPPowerShellOnline" -AllVersions -Force
Install-Module -Name "PnP.PowerShell"
1. Create a Site in SharePoint online with some dummy data
Let's create a new site for this.
Site has been created. Now lets create a list and add some items.
Add some dummy data.
2. Use PNP PowerShell to backup the site template and list data
Run the below commands to export the template. (Full script is on the end)
3. Create new site and restore the template
Create new site is pretty easy in SharePoint Online using PNP.
Note: The syntax is different to create a modern communication site and modern team site. Check this for complete details. Also, you need to be very sure that your source and target sites templates are same. Check full details here. For example
To create Modern Team Site (Our case):
New-PnPSite -Type TeamSite -Title 'Shadow of Teams' -Alias ShadowTeams
If you want to create Modern Communication Site:
New-PnPWeb -Title "SubSite of Modern Team s" -Url SubSiteTeams -Description "Creating Subsite of Teams" -Locale 1033 -Template "STS#3"
SharePoint Online Site Templates names:
Template ID | Title | Description / Additional Info |
STS#3 | Team site (no Office 365 group) | A site with no connection to an Office 365 Group. |
SITEPAGEPUBLISHING#0 | Communication site | Publish dynamic, beautiful content to people in your organization to keep them informed and engaged on topics, events, or projects. |
GROUP#0 | Office 365 Group associated Team Site | For Reporting Only – You cannot create sites with this template |
POINTPUBLISHINGPERSONAL#0 | Delve Blog | For Reporting Only – Delve Blogs are being Retired |
SPSPERS#10 | OneDrive for Business personal Site | For Reporting Only – Use the Request-SPOPersonalSite cmdlet to pre-provision a OneDrive for Business ite |
RedirectSite#0 | Redirect Site | Placeholder template for the old URL when you rename the Site URL. This is for reporting only and those sites are only created by Microsoft programmatically. |
TEAMCHANNEL#0 | Teams Private Channel Site | Lightweight Site Collection provisioned for each Teams Private Channel Site. This is For Reporting Only, and not for manual provisioning trough SharePoint Online |
Lets verify the site now.
Complete Script
Connect-PnPOnline -interactive -URL "https://sharepointerguy.sharepoint.com/sites/ModernTeams"Get-PnPSiteTemplate -Out "D:\Temp\MyApplications.xml"Add-PnPDataRowsToSiteTemplate -Path "D:\Temp\MyApplications.xml" -List "Food Items"New-PnPSite -Type TeamSite -Title 'Shadow of Teams' -Alias ShadowTeamsConnect-PnPOnline -interactive -URL "https://sharepointerguy.sharepoint.com/sites/ShadowTeams"Invoke-PnPSiteTemplate -Path "D:\Temp\MyApplications.xml"
Comments
Post a Comment