Top 3 Methods to Copy/ Move SharePoint List to Another Site

move sharepoint list to another site
Stephen King ~ Published: February 27th, 2024 ~ Migration ~ 7 Minutes Reading

There are different types of sites in SharePoint Online. The main components of SharePoint are the list and library that store the different information. But for several reasons such as merger and tenant-to-tenant migration, there is a need to move SharePoint list to another site. However, lacking the proper knowledge to do so, most of the administrators failed. But after reading this write-up, no one will fail to migrate SharePoint list to another site. Let’s see how.

Different Methods to Copy SharePoint List to Another Site

There are different possible methods to transfer SharePoint list to another site. One is the template method in which there is a need to create a template of the SharePoint list and export it to the destination. The second one is performed with the help of PowerShell commands. The final and expert-recommended method is the automated tool to successfully migrate SharePoint list from one site to another. Automated tool can also move SharePoint site to another site. Here you will get a complete discussion on all the methods so that you can go with the right one. Let’s explore the method sequentially.

Method 1. Move SharePoint List to Another Site Using Template Method

In this method, you need to export the required list from the source Office 365 account and upload it to the destination Office 365 account. This process is suitable for a small number of lists with less amount of data. This process becomes time-consuming when the lists are more and heavier. Now. let’s discuss the steps to complete the process without hassle.

Step 1. Save List as Template from the Source SharePoint Site

  • Sign to the destination SharePoint account and then open List Settings.
  • Under the Permissions and Management section, hit the “Save list as template” option.

Step 2. Download SharePoint List

  • Open the Site Settings.
  • From the galleries section, click on the List Templates option.
  • From the List Template Gallery window, select the list template that you want to export.
  • Finally, hit the Download a copy button to download the SharePoint list(.stp).

Step 3. Move SharePoint List to Another Site

  • Open the destination site and then Site collection.
  • Click on Site Settings and move to the Galleries section.
  • Choose the List templates and go to the Documents tab then hit the Upload Document option.
  • Browse the downloaded .stp file and press the OK button.

Method 2. Copy SharePoint List to Another Site Using PowerShell Commands

Migration of the SharePoint list to another site is also possible with the PowerShell commands. However, it is not for non-tech users because it requires a lot of technical knowledge. It is completely based on the commands. If any of the commands is executed non-sequentially or wrongly then results will be unexpected. Due to this, the experts do not prefer this method. It also requires some pre-requisites before starting the process and these are:-

• Create a separate list, and both lists should have the same columns.
• Run PowerShell as an administrator.

After fulfilling the prerequisites now follow the below commands to move SharePoint list to another site.

Install-Module -Name PnP.PowerShell


Connect-PnPOnline -Url https://[entertenantname].sharepoint.com/sites/[name of source site] -Interactive


Get-PnPSiteTemplate -Out C:\Temp\Lists.xml -ListsToExtract “List A”, “List B” -Handlers Lists

Get the List Data
Add-PnPDataRowsToSiteTemplate -Path C:\Temp\Lists.xml -List “List A”
Add-PnPDataRowsToSiteTemplate -Path C:\Temp\Lists.xml -List “List B”


Connect-PnPOnline -Url https://[entertenantname].sharepoint.com/sites/[name of destination site] -Interactive


Invoke-PnPSiteTemplate -Path “C:\Temp\Lists.xml”

If the list items have attachments, then run the below commands command:

Function Copy-SPOAttachments()
{
param
(
[Parameter(Mandatory=$true)] [Microsoft.SharePoint.Client.ListItem] $SourceItem,
[Parameter(Mandatory=$true)] [Microsoft.SharePoint.Client.ListItem] $DestinationItem
)
Try {

$Attachments = Get-PnPProperty -ClientObject $SourceItem -Property “AttachmentFiles”
$Attachments | ForEach-Object {

FileName = f1

$File = Get-PnPFile -Connection $SourceConn -Url $_.ServerRelativeUrl -f1 $_.f1 -Path $Env:TEMP -AsFile -force

$FileStream = New-Object IO.FileStream(($Env:TEMP+”\”+$_.f1),[System.IO.FileMode]::Open)
$AttachmentInfo = New-Object -TypeName Microsoft.SharePoint.Client.AttachmentCreationInformation
$AttachmentInfo.f1 = $_.f1
$AttachmentInfo.ContentStream = $FileStream
$AttachFile = $DestinationItem.AttachmentFiles.Add($AttachmentInfo)
Invoke-PnPQuery -Connection $DestinationConn


Remove-Item -Path $Env:TEMP\$($_.f1) -Force
}
}
Catch {
write-host -f Red “Error Copying Attachments:” $_.Exception.Message
}
}


Function Copy-SPOListItems()
{
param
(
[Parameter(Mandatory=$true)] [Microsoft.SharePoint.Client.List] $SourceList,
[Parameter(Mandatory=$true)] [Microsoft.SharePoint.Client.List] $DestinationList
)
Try {

Write-Progress -Activity “Reading ” -Status “Loading”
$SourceListItems = Get-PnPListItem -List $SourceList -PageSize 400 -Connection $SourceConn
$SourceListItemsCount= $SourceListItems.count
Write-host “Total Number of Items Found:”$SourceListItemsCount

InternaleName = In1
$SourceListFields = Get-PnPField -List $SourceList -Connection $SourceConn | Where { (-Not ($_.ReadOnlyField)) -and (-Not ($_.Hidden)) -and ($_.In1 -ne “Content”) -and ($_.In1 -ne “ files”) }


[int]$Counter = 1
ForEach($SourceItem in $SourceListItems)
{
$ItemValue = @{}

Foreach($SourceField in $SourceListFields)
{

If($SourceItem[$SourceField.In1] -ne $Null)
{

$FieldType = $SourceField.TypeAsString

If($FieldType -eq “User” -or $FieldType -eq “UserMulti”) #People Picker Field
{
$PeoplePickerValues = $SourceItem[$SourceField.In1] | ForEach-Object { $_.Email}
$ItemValue.add($SourceField.In1,$PeoplePickerValues)
}
ElseIf($FieldType -eq “Lookup” -or $FieldType -eq “LookupMulti”) # Lookup Field
{
$LookupIDs = $SourceItem[$SourceField.In1] | ForEach-Object { $_.LookupID.ToString()}
$ItemValue.add($SourceField.In1,$LookupIDs)
}
ElseIf($FieldType -eq “URL”) #Hyperlink
{
$URL = $SourceItem[$SourceField.In1].URL
$Description = $SourceItem[$SourceField.In1].Description
$ItemValue.add($SourceField.In1,”$URL, $Description”)
}
ElseIf($FieldType -eq “TaxonomyFieldType” -or $FieldType -eq “TaxonomyFieldTypeMulti”) #MMS
{
$TermGUIDs = $SourceItem[$SourceField.In1] | ForEach-Object { $_.TermGuid.ToString()}
$ItemValue.add($SourceField.In1,$TermGUIDs)
}
Else
{
#Get Source Field Value and add to Hashtable
$ItemValue.add($SourceField.In1,$SourceItem[$SourceField.In1])
}
}
}

$ItemValue.add(“Created”, $SourceItem[“Created”]);
$ItemValue.add(“Modified”, $SourceItem[“Modified”]);
$ItemValue.add(“Author”, $SourceItem[“Author”].Email);
$ItemValue.add(“Editor”, $SourceItem[“Editor”].Email);

Write-Progress -Activity “List Items are copying:” -Status “ID Copies ‘$($SourceItem.Id)’ from Source List ($($Counter) of $($SourceListItemsCount))” -PercentComplete (($Counter / $SourceListItemsCount) * 100)


$NewItem = Add-PnPListItem -List $DestinationList -Values $ItemValue


Copy-SPOAttachments -SourceItem $SourceItem -DestinationItem $NewItem

Write-Host “ID Copied$($SourceItem.Id) ($($Counter) of $($SourceListItemsCount))”
$Counter++
}
}
Catch {
Write-host -f Red “Error:” $_.Exception.Message
}
}


$SourceSiteURL = “https://[tenantnamehere].sharepoint.com/sites/[sitenamehere]”
$SourceListName = “[listnamehere]”

$DestinationSiteURL = “https://[tenantnamehere].sharepoint.com/sites/[sitenamehere]”
$DestinationListName = “[listnamehere]”


$SourceConn = Connect-PnPOnline -Url $SourceSiteURL -Interactive -ReturnConnection
$SourceList = Get-PnPList -Identity $SourceListName -Connection $SourceConn

$DestinationConn = Connect-PnPOnline -Url $DestinationSiteURL -Interactive -ReturnConnection
$DestinationList = Get-PnPList -Identity $DestinationListName -Connection $DestinationConn


Copy-SPOListItems -SourceList $SourceList -DestinationList $DestinationList

 

Method 3. Automated Tool to Migrate SharePoint List to Another Site

It’s time to discuss the expert’s recommended automated tool to transfer SharePoint list to another site. Experts recommend the Migrator Wizard SharePoint Online Migration Tool to copy SharePoint list to another site and for SharePoint Online tenant to tenant migration as well. It is proficient to complete the process without hassle. To execute the automated tool, you do not need to be efficient at technical aspects.

This tool provides an interactive interface due to which even the non-tech users can also operate this tool. For an error-free process, there are different features incorporated in this tool such as Delta migration for migrating newly arrived data and many more. To move SharePoint list to another site, you need to execute the below steps.

Download Now Purchase Now

Step 1. Download and Run the tool. Select Office 365 as the Source and Destination platform.

source and destination
Step 2. Tick the checkbox of the sites and other data that needs to be migrated under the workload section. Apply the Date filter to filter the essential data.

select data for migration
Step 3. Complete and validate the Source Office 365 account credentials and then Next.

source details
Step 4. Provide the details of the Destination Office 365 account. Make sure to validate them and then hit Next.

destination details
Step 5. Load the users into the tool using Fetch Users, Import Users, and Download template options.

load users
Step 6. Finally, click on Start Migration to copy SharePoint list to another site.

start migration

Conclusion

When you are not aware of the best way to migrate the SharePoint list to another site then it becomes a complex and hectic process. Therefore through this write-up, we have elaborated on different methods to move SharePoint list to another site. Because of several limitations of the template and PowerShell methods, experts advised going with the automated tool.