Migrate SharePoint List to Another Site – A Comprehensive Guide
Because of SharePoint’s immense popularity, organizations used it at an alarming rate. Although SharePoint is rich in collaboration features, its List feature is highly used in organizations. However, there might be situations when organizations need to re-construct themselves and merge with another. In these situations, they need to migrate SharePoint list to another site to maintain data consistency.
Table of Content
- Overview of SharePoint List
- Pre-Migration Steps
- Professional Tool to Migrate SharePoint List
- PowerShell Commands for Tech Experts
- Power Automate: Create a Flow to Move SharePoint List
- Download and Upload List as Template
- Export List in Excel and Upload to Destination Site
- Post-Migration Checklist
- Conclusion & FAQ’s
But it is not as simple as it sounds. So, in this article, we will discuss the different approaches to copy SharePoint list to another site.
Before directly moving to the solutions, let’s take a look at one of the frustrated SharePoint user queries posted on Microsoft Community.
An Overview of SharePoint List
Before going further in the discussion, let’s take a look at what the SharePoint list is. It is a feature in SharePoint that allows users to manage, organize, and store data in a structured format similar to a spreadsheet (excel files). Here each row represents an item along with the column that states the data about the item.
These are highly customizable and collaborative. In addition, it supports filters, views, sorting, and many more customizations as well. Users can integrate them with Microsoft 365 for real-time collaboration. Additionally, users can also use Power Automate (formerly Microsoft Flow) to automate list-related processes including sending alerts when items are added or updated.
Preparation to Migrate SharePoint List to Another Site
For a smooth transition of the SharePoint list to another SharePoint site, follow the below steps.
- Permissions – Make sure you have permissions for both sites including creating one.
- Optimize SharePoint List – Remove empty folders in SharePoint Online including files. It will save time and effort to avoid migrating irrelevant data into the list.
- Test Functionality – Test the functionality of the SharePoint list to ensure each feature of the list is working before migrating it to another site.
- Remove Items Duplicity – Find duplicate files in SharePoint Online and remove them for a flawless process.
- Perform a Test migration – Before the actual migration, test migration with the dummy list to find the errors at the run time.
How to Copy SharePoint List to Another Site Using MVP’s Suggested Tool?
SharePoint is not used only in small or medium organizations. It is also used in the top MNCs to enhance collaboration. As a result, SharePoint acts as a central location to store crucial data. So, copying the crucial data containing SharePoint lists requires an authentic and secure tool.
Due to this, Microsoft professionals tested several tools and picked out the Most Reliable SharePoint Migration Tool. This tool incorporates several features and quick steps to simplify the process. You can also copy document library to another SharePoint site.
Step 1. Download and Execute the tool.
Step 2. Choose Office 365 as Source & Destination platforms.
Step 3. Select the Sites that you want to migrate, and filter them as per necessity.
Step 4. Complete the credentials of both Source & Destination accounts.
Step 5. Add Users and then load Sites into the tool.
Step 6. Finally, hit the Start Migration button to migrate SharePoint list to another site.
Move SharePoint List from One Site to Another Site Using PowerShell Commands
Here is the free method to move items from one SharePoint list to another site. But only follow this method when you have technical expertise in executing the PowerShell commands. Otherwise, you will face a lot of errors.
Install-Module -Name PnP.PowerShell
Connect-PnPOnline -Url https://[entertenantname].sharepoint.com/sites/[source site] -Interactive
Get-PnPSiteTemplate -Out C:\Temp\Lists.xml -ListsToExtract “List Y”, “List Z” -Handlers Lists
Add-PnPDataRowsToSiteTemplate -Path C:\Temp\Lists.xml -List “List Y”
Add-PnPDataRowsToSiteTemplate -Path C:\Temp\Lists.xml -List “List Z”
Connect-PnPOnline -Url https://[entertenantname].sharepoint.com/sites/[destination SharePoint site] -Interactive
Invoke-PnPSiteTemplate -Path “C:\Temp\Lists.xml”
If the SharePoint list contains some attachments, then execute the below PowerShell script.
Function Copy-SPListAttachments()
{
param
(
[Parameter(Mandatory=$true)] [Microsoft.SharePoint.Client.ListItem] $SourceItem,
[Parameter(Mandatory=$true)] [Microsoft.SharePoint.Client.ListItem] $DestinationItem
)
Try {
$AllListAttachments = Get-PnPProperty -ClientObject $SourceItem -Property “AttachmentFiles”
$AllListAttachments | ForEach-Object {
$File = Get-PnPFile -Connection $SourceCont -Url $_.ServerRelativeUrl -FileName $_.FileName -Path $Env:TEMP -AsFile -force
$FileStream = New-Object IO.FileStream(($Env:TEMP+”\”+$_.FileName),[System.IO.FileMode]::Open)
$Attachment_Details = New-Object -TypeName Microsoft.SharePoint.Client.AttachmentCreationInformation
$Attachment_Details.FileName = $_.FileName
$Attachment_Details.ContentStream = $FileStream
$AttachedFile = $DestinationItem.AttachmentFiles.Add($Attachment_Details)
Invoke-PnPQuery -Connection $DestinationConn
Remove-Item -Path $Env:TEMP\$($_.FileName) -Force
}}
Catch {
write-host -f Red “Error Copying Attachments:” $_.Exception.Message
}
}
Function Copy-SPAllListItems()
{
param
(
[Parameter(Mandatory=$true)] [Microsoft.SharePoint.Client.List] $SourceList,
[Parameter(Mandatory=$true)] [Microsoft.SharePoint.Client.List] $DestinationList
)
Try {
Write-Progress -Activity “Reading Source…” -Status “Getting Items from Source List. Please wait…”
$SourceSharePointListItems = Get-PnPListItem -List $SourceList -PageSize 500 -Connection $SourceCont
SourceSharePointListItemsCount= SourceSharePointListItems.count
Write-host “Total Number of List Items Found are:”SourceSharePointListItemsCount
$SourceListFields = Get-PnPField -List $SourceList -Connection $SourceCont | Where { (-Not ($_.ReadOnlyField)) -and (-Not ($_.Hidden)) -and ($_.InternalName -ne “ContentType”) -and ($_.InternalName -ne “Attachments”) }
[int]$Count = 1
ForEach($SourceItem in $SourceSharePointListItems)
{
$ItemsValue = @{}
Foreach($SourceField in $SourceListFields)
{
If($SourceItem[$SourceField.InternalName] -ne $Null)
{
$FieldsType = $SourceField.TypeAsString
If($FieldsType -eq “User” -or $FieldsType -eq “UserMulti”)
{
$PeoplePickerValues = $SourceItem[$SourceField.InternalName] | ForEach-Object { $_.Email}
$ItemsValue.add($SourceField.InternalName,$PeoplePickerValues)
}
ElseIf($FieldsType -eq “Lookup” -or $FieldsType -eq “LookupMulti”) # Lookup Field
{
$LookupIDs = $SourceItem[$SourceField.InternalName] | ForEach-Object { $_.LookupID.ToString()}
$ItemsValue.add($SourceField.InternalName,$LookupIDs)
}
ElseIf($FieldsType -eq “URL”) #Hyperlink
{
$URL = $SourceItem[$SourceField.InternalName].URL
$Description = $SourceItem[$SourceField.InternalName].Description
$ItemsValue.add($SourceField.InternalName,”$URL, $Description”)
}
ElseIf($FieldsType -eq “TaxonomyFieldsType” -or $FieldsType -eq “TaxonomyFieldsTypeMulti”)
{
$TermGUIDs = $SourceItem[$SourceField.InternalName] | ForEach-Object { $_.TermGuid.ToString()}
$ItemsValue.add($SourceField.InternalName,$TermGUIDs)
}
Else
{
$ItemsValue.add($SourceField.InternalName,$SourceItem[$SourceField.InternalName])
}}}
#Copy Created by, Modified by, Created, Modified Metadata values
$ItemsValue.add(“Created”, $SourceItem[“Created”]);
$ItemsValue.add(“Modified”, $SourceItem[“Modified”]);
$ItemsValue.add(“Author”, $SourceItem[“Author”].Email);
$ItemsValue.add(“Editor”, $SourceItem[“Editor”].Email);
Write-Progress -Activity “ List Items starts copying:” -Status “Copying Item ID ‘$($SourceItem.Id)’ from Source List ($($Count) of $($SrcListItemsCount))” -PercentComplete (($Count / $SrcListItemsCount) * 100)
$NewItem = Add-PnPListItem -List $DestinationList -Values $ItemsValue
Copy-SPListAttachments -SourceItem $SourceItem -DestinationItem $NewItem
Write-Host “Copied Item ID from Source to Destination List:$($SourceItem.Id) ($($Count) of $($SrcListItemsCount))”
$Count++
}
}
Catch {
Write-host -f Red “Error:” $_.Exception.Message
}
}
$Source_SiteURL = “https://[tenantnamehere].sharepoint.com/sites/[sitenamehere]”
$Source_ListName = “[enter list name here]”
$Destination_SiteURL = “https://[tenantnamehere].sharepoint.com/sites/[sitenamehere]”
$Destination_ListName = “[enter list name here]”
$SourceCont = Connect-PnPOnline -Url $Source_SiteURL -Interactive -ReturnConnection
$SourceList = Get-PnPList -Identity $Source_ListName -Connection $SourceCont
$DestinationConn = Connect-PnPOnline -Url $Destination_SiteURL -Interactive -ReturnConnection
$DestinationList = Get-PnPList -Identity $Destination_ListName -Connection $DestinationConn
Copy-SPAllListItems -SourceList $SourceList -DestinationList $DestinationList
Migrate SharePoint List to Another Site Using Power Automate
Microsoft Power Automate offers the option to move one SharePoint list item to another site.
1. Setup trigger on the Source SharePoint list. Select the “When an existing item is modified” option.
2. Search for the item in the destination list to get its ID and update it.
3. Apply the condition to make sure whether the item exists or not.
[If the item is present update it, else create it.]
Move Items from One SharePoint List to Another Using Template Method
This method is also free and one can use it if the SharePoint list size is smaller.
- Open the SharePoint account then move to the List settings.
- Click on the Save List as template option from the Permissions and Management section.
- Now Open the Site settings and hit the List templates option.
- Choose the List template that you want to download or export.
- Click on the Download a Copy button to save the list.
- Go to the destination site > Site collection.
- Open Site settings then Gallery.
- Move to the List templates and then the Documents section.
- Browse the downloaded file and upload it.
Migrate SharePoint List to Another Site By Exporting and Importing List in Excel File Format
Users can export the list into an Excel file format and then upload it to the destination site.
1. Go to the Source SharePoint Site > My Lists and open the SharePoint list that you want to copy.
2. Click on Export > Export to Excel and save it on your computer.
3. Open the destination Site. Click on New > List.
4. Now upload the data from the downloaded Excel file.
5. Finally, Save the changes.
Post-Migration Verification
- Review: Perform a quick check on the migrated list and identify the discrepancies.
- Test List Functionality: Test all the features of the list to ensure everything is working as per expectations.
- Update References: Update any references to the old list, such as links and bookmarks.
- Clean Up the Source List: Once the list is copied to the destination SharePoint site, either delete the source list or archive it.
Conclusion
Copying a SharePoint list can be a daunting task, but with the right approach, it can be a smooth process. Now, by understanding the multiple approaches you can easily migrate SharePoint list to another site. Also do not forget, to choose the best migration method for your crucial data.
Frequently Asked Questions
Q1. How do I migrate a large SharePoint list to another site collection?
A – You can choose any of the above-suggested solutions to move items from one SharePoint list to another. But, you can pick PowerShell if you are good at it, otherwise, you should go with the MVP’s suggested tool to migrate crucial and large data lists to another SharePoint site.
Q2. Can I automate the SharePoint list migration process?
A – Yes, you can automate SharePoint list migration using PowerShell scripts or above suggested migration tool.
Q3. How do I migrate SharePoint list to another site along with the permissions?
A – While using the professional tool to copy list from one SharePoint to another, you do not need to worry about the permissions. Remember, this tool can migrate the permissions as well without hassle.
Q4. What are the risks of SharePoint list migration?
A – You might face several potential risks of SharePoint list migration. It includes data loss, broken links, permission issues, and workflow disruptions. Therefore, to minimize these risks, it’s important to copy SharePoint list to another site with careful planning.