How to migrate SharePoint sites to another Microsoft 365 tenant
Microsoft's cross-tenant SharePoint migration moves whole sites, including group-connected and Teams sites, from one tenant to another and leaves a redirect behind. This runbook covers who can use it, how to size the licence, how to precreate Microsoft 365 groups the only way that works, the identity map, the move commands and what you rebuild afterwards.
How do you migrate SharePoint sites to another Microsoft 365 tenant?
This moves SharePoint sites, including sites that belong to a Microsoft 365 group or to a team in Microsoft Teams, from one Microsoft 365 tenant (your organisation's own Microsoft 365 setup) to another: a Microsoft 365 tenant-to-tenant move. There are two main ways to do it.
- Recommended route: Microsoft's built-in tenant-to-tenant site move (cross-tenant SharePoint migration)
- Order: Set up people and access first, prove the method on a few pilot sites, then move the rest in waves and clean up last.
- 6 phases: Check eligibility and size, Plan the rebuilds, Prepare the source, Set up trust and the target, Move sites in waves and Rebuild and clean up.
- You're done when: Every site in each wave shows Success (or the tool reports no unexplained failures) and sits at its mapped address with a similar storage figure.
Microsoft's built-in tenant-to-tenant site move (Microsoft calls it cross-tenant SharePoint migration) moves each site once, inside Microsoft's cloud, and leaves a redirect at the old address. It needs an add-on licence called Cross-Tenant Shared Data Migration, which Microsoft sells only under an Enterprise Agreement: a volume licensing contract Microsoft signs directly with large organisations. Most small and medium businesses buy Microsoft 365 through a reseller or online instead, so they cannot buy this licence and should use a third-party copy tool. With the built-in move, allow at least seven days after you set up trust between the tenants; after that, timing depends on site sizes and how much you must rebuild.
Content stays in Microsoft's cloud, every common site type can move, and old addresses and sharing links redirect to the new site. Choose it only if your organisation has an Enterprise Agreement and can buy the Cross-Tenant Shared Data Migration licence.
Other options and when to use them
- Third-party copy tool such as ShareGate Migrate, AvePoint Fly or Quest On Demand Migration: You have no Enterprise Agreement (true of most small and medium businesses), or you need top-up copies of later changes, to copy into sites that already exist, or to change the site structure on the way.
- Recreate small sites and copy files by hand: A few small sites with simple permissions, where you do not need old file versions or the original created and modified dates and authors.
Set up people and access first, prove the method on a few pilot sites, then move the rest in waves and clean up last. Each step depends on the one before it: a site keeps its permissions only if the people and groups already exist in the new tenant.
- Licence decision and site inventoryTells you whether you can use the built-in move at all, and how much data you would be licensing. Every later step depends on which method you use.
- Trust between the tenants (built-in move only)Microsoft documents a seven-day wait after a new trust is created, so start it early while you do the next steps.
- User accounts, security groups and guests in the new tenantPermissions and sharing links can only point to accounts that exist, and the identity map can only list accounts that exist.
- Microsoft 365 groups for group-connected and Teams sitesThe built-in move needs each target group to exist, created the special way, before its site can move. Copy tools need a target to copy into, unless they create it.
- Pilot: one communication site, one group site and one Teams siteShows how long a site takes, what breaks and what users notice, before you commit the large sites.
- Main waves, each site moving when its users switch tenantsThe built-in move has no top-up pass, so moving a site with its users stops people working in two places. Put very large sites in their own window so a failure does not hold up a batch.
- Teams, workflows, Power Apps and flows rebuilt on each moved siteThey must point at the new site address, so they can only be finished once the site has arrived.
- Clean-up: redirect sites, then the trustRedirects help users until links are updated. The trust must be removed before source licences expire, because the source side can no longer remove it after that.
Built-in and third-party tools treat these differently. Tick each one off once you have decided.
Download this checklist (Excel)How each tool handles it
Built-in methodMicrosoft's built-in move needs the Cross-Tenant Shared Data Migration licence. Microsoft sells it only to Enterprise Agreement customers, through their Microsoft account team, in blocks of 100 GB of data moved. It is a different licence from Cross Tenant User Data Migration, which is sold per user for mailboxes and OneDrive.Tip: If you buy Microsoft 365 through a reseller or online, you have no Enterprise Agreement. Plan a third-party tool and get its licence terms from the vendor.
Microsoft Learn: Cross-tenant SharePoint migration overviewHow each tool handles it
Built-in methodMicrosoft sizes the built-in move's licence from each site's storage used, plus 20 percent grace for growth. Storage used includes old file versions and the first-stage site recycle bin; Microsoft says the second-stage recycle bin does not count. This is what you are charged for. Whether recycle bin items are actually moved is a separate question: see the recycle bin item.Tip: Archive stale sites, trim versions and clear recycle bin items nobody needs, then run the size export again before you order.
Microsoft Support: Restore deleted items from the site collection recycle binHow each tool handles it
Built-in methodBuilt-in move: there is no setting to choose how many versions move. Microsoft counts versions toward each site's 1 million item limit and toward storage used, but its documentation does not say outright that every version moves. Check version history on a few files in your pilot.ShareGate MigrateThe Version history option copies versions if versioning is on in the destination library (only major versions copy if the destination allows only major versions). "Limit to X latest versions" copies the number you set, always keeping at least one major version.AvePoint FlyAvePoint says Fly preserves versions. Whether you can limit how many: not stated in AvePoint's documentation: test it in your pilot.Quest On Demand MigrationVersion history is optional, and Quest warns it greatly increases migration time. Library version settings are not copied: target libraries take the target tenant's version history limits. Whether you can choose a number of versions: not stated in Quest's documentation: test it in your pilot.Tip: For the built-in move, trim versions in the source first with a site version policy or New-SPOSiteFileVersionBatchDeleteJob. Trimmed versions skip the recycle bin and cannot be recovered, so get owner sign-off.
Microsoft Learn: Plan version storage on document librariesHow each tool handles it
Built-in methodNot stated in Microsoft's documentation whether the built-in move brings recycle bin items: test it in your pilot. Items in the first-stage recycle bin count toward the storage used figure the licence is sized on, whether or not they move.ShareGate MigrateNot stated in ShareGate's documentation: test it in your pilot.AvePoint FlyNot stated in AvePoint's documentation: test it in your pilot.Quest On Demand MigrationNot stated in Quest's documentation: test it in your pilot.Tip: Ask site owners to restore anything they still need before the move, and treat everything left in the recycle bin as staying behind.
Microsoft Learn: Cross-tenant SharePoint migration overviewHow each tool handles it
Built-in methodNot stated in Microsoft's documentation: test it in your pilot.ShareGate Migrate"Preserve authors and timestamps" copies the Created By, Created, Modified By and Modified values.AvePoint FlyAvePoint says Fly migrates metadata. Whether that includes original dates and authors: not stated in AvePoint's documentation: test it in your pilot.Quest On Demand MigrationCopies created date, created by, last modified date and last modified by for documents and list items. If a person is not matched in the target, their source email address is used instead.Tip: In the pilot, compare the Modified and Modified By columns on a few files at the source and the target.
Microsoft Learn: Cross-tenant SharePoint migration FAQsHow each tool handles it
Built-in methodBuilt-in move: permissions carry over only for users and groups in the identity map (a CSV you upload in the new tenant that pairs each old account with its new one). Each upload replaces the last, so include everyone every time. People and groups not in the map lose access.ShareGate MigrateThe Permissions option reproduces permissions as closely as it can; turned off, items inherit their parent's permissions. How you map users and groups changes how permissions land.AvePoint FlyAvePoint says Fly preserves permissions, with mapping of users and groups.Quest On Demand MigrationLists site, list, folder, list item and document permissions as supported.Tip: Export site permissions before you build any map, and create guest accounts in the target for people who stay behind.
Microsoft Learn: Step 5, identity mapping (SharePoint)How each tool handles it
Built-in methodBuilt-in move: existing sharing links redirect to the new location and work for people who have access there. Redirects last until you remove the redirect site or the source tenant is closed.ShareGate MigrateDoes not preserve sharing links. Users recreate them at the destination.AvePoint FlyNot stated in AvePoint's documentation: test it in your pilot.Quest On Demand MigrationNot stated in Quest's documentation: test it in your pilot. Quest says it supports the Shared with me view for shared items.Tip: With a copy tool, tell users before the move that old links will stop working, and update links in pages and navigation.
Microsoft Learn: Cross-tenant SharePoint migration FAQsHow each tool handles it
Built-in methodNot stated in Microsoft's documentation: test it in your pilot. Microsoft only asks you to tell users to close files and not edit during their move window.ShareGate MigrateThe "Check in as" option chooses whether files checked out at the source arrive as draft or published files.AvePoint FlyNot stated in AvePoint's documentation: test it in your pilot.Quest On Demand MigrationChecked-out documents are copied as their last checked-in version. A file that was never checked in is not copied.Tip: A week before each wave, ask owners to sort each library by the Checked Out To column and check every file in.
Microsoft Learn: Cross-tenant SharePoint migration overviewHow each tool handles it
Built-in methodBuilt-in move: each site must be no more than 5 TB and 1 million items (files, versions, folders and list items all count). A site over 5 TB in a batch times out and fails. Paths cannot exceed 400 characters at the new address.ShareGate MigrateSize and path limits: not stated in ShareGate's documentation: test it in your pilot.AvePoint FlyNot stated in AvePoint's documentation: test it in your pilot.Quest On Demand MigrationCopies files up to 250 GB each.Tip: Whatever method you use, SharePoint limits paths to 400 characters, so shorten deep folder trees and long site addresses first.
Microsoft Learn: Cross-tenant SharePoint migration overviewHow each tool handles it
Built-in methodBuilt-in move: no site may exist at the target address. It cannot overwrite or merge. Target Microsoft 365 groups must be created first with New-MgBetaGroup and ProvisionSiteOnDemand, which creates the group without a site.ShareGate Migrate"Copy if newer" copies into a site that already exists. "Copy teams" creates the target group and connected site itself; destination users must already exist.Tip: For the built-in move, turn off site creation in the target and restrict group creation until the moves are done.
Microsoft Learn: Cross-tenant SharePoint migration FAQsHow each tool handles it
Built-in methodBuilt-in move: a one-time move. Delta and incremental passes are not possible, and the old address becomes a redirect.ShareGate Migrate"Copy if newer (incremental)" adds missing items and replaces a destination item only if it is older than the source. It does not delete items removed from the source or pick up permission changes.AvePoint FlyAvePoint says Fly keeps both tenants online and migrates incrementally.Quest On Demand MigrationRe-running a task is controlled by a Conflict resolution setting for items already copied. A separate delta mode: not stated in Quest's documentation: test it in your pilot.Tip: With the built-in move, schedule each site for when its users switch tenants, and ask them not to edit during the window.
Microsoft Learn: Cross-tenant SharePoint migration overviewHow each tool handles it
Built-in methodBuilt-in move: only the SharePoint site behind a team moves, including the channel folders. The team, its channels, conversations and tabs do not. Microsoft's steps do not cover private and shared channel sites.ShareGate MigrateCopies a team with its channels, files, Planner plans and connected group to another tenant. Shared channels are skipped.BitTitan MigrationWizCreates the teams and channels, then copies public and private channels, channel files in Shared Documents, and Planner plans. Copies 60 conversations per team by default; this can be raised. Shared channels and private chats are not migrated.AvePoint FlyAvePoint says Fly moves Teams, including Teams chat, across Microsoft 365 tenants.Tip: Tell users before the move that they will see their files but not their channel conversations, unless you copy teams with a tool.
Microsoft Learn: Cross-tenant SharePoint migration overviewHow each tool handles it
Built-in methodBuilt-in move: a site with files under a label that lets users set their own permissions cannot move until those labels are removed. Other labels may not display correctly, and their protection and policy do not carry over.ShareGate MigrateHas a setting for how labels are handled. The labels must already exist and be published in the destination tenant.AvePoint FlyAvePoint says Fly preserves sensitivity labels, with mapping.Quest On Demand MigrationNot stated in Quest's documentation: test it in your pilot.Tip: Record every label you remove, file by file, so you can reapply it in the target.
Microsoft Learn: Cross-tenant SharePoint migration overviewHow each tool handles it
Built-in methodBuilt-in move: runs inside Microsoft's cloud. You set a preferred start time in UTC; Microsoft does not guarantee the end time. Up to 4,000 moves can be queued at once, shared with OneDrive moves.ShareGate MigrateInsane mode uploads through Azure storage and Microsoft's Migration API, which ShareGate says reduces throttling (Microsoft slowing down heavy traffic).AvePoint FlyAvePoint says Fly uses bulk APIs, Azure storage and app tokens to reduce throttling.Quest On Demand MigrationThrottling: not stated in Quest's documentation: test it in your pilot.Tip: Run large waves outside business hours, and convert start times to UTC (Sydney is 10 hours ahead, or 11 in daylight saving).
Microsoft Learn: Step 6, start a cross-tenant SharePoint migration
- 1
Check eligibility and size
Before you set datesShow the detailed steps (3) →Watch out: Built-in move only: the licence is sold only under an Enterprise Agreement. Microsoft sizes it on each site's storage used, which includes old file versions and the first-stage recycle bin.
Ways around it
- No Enterprise Agreement: follow the third-party tool approach from the start, and skip the trust and licence steps.
- Trim versions and clear unneeded recycle bin items before you measure. Trimmed versions skip the recycle bin and cannot be recovered.
- 2
Plan the rebuilds
Watch out: Built-in move: SharePoint 2010 and 2013 workflows, add-ins, Power Apps, flows and some web parts do not move.
Ways around it
- Add each one as a rebuild task with an owner, prepared before its site moves and finished straight after.
Show the detailed steps (4) →Watch out: Built-in move: Teams sites move files only. Channels, conversations and the team itself must be rebuilt.
Ways around it
- Decide per team how it will be rebuilt and how users reach chat history, and say so before the move.
Tools that can do it
- ShareGate MigrateCopies a team with channels, files, Planner plans and its group. Shared channels are skipped.
- BitTitan MigrationWizRecreates channel posts as threads, plus private channels and Planner. Shared channels are not migrated.
- AvePoint FlyMoves Teams, including Teams chat, with SharePoint, OneDrive and Groups.
- 3
Prepare the source
Show the detailed steps (4) →Watch out: Built-in move: a site over 5 TB in a batch times out and fails, while smaller sites in the batch continue.
Ways around it
- Schedule your largest sites on their own so a failure does not hold up a batch.
- 4
Set up trust and the target
At least seven days before the pilotWatch out: Built-in move: target groups created any other way, or any site already at a target address, make the move fail.
Ways around it
- Script group creation from your inventory, and stop users creating sites until the moves are done.
Tools that can do it
- ShareGate MigrateCopy teams creates the target group and connected site itself. Destination users must already exist.
- ShareGate MigrateCopy if newer copies into a site that already exists, adding missing items and updating older ones.
Show the detailed steps (5) →Watch out: Built-in move: permissions and sharing links keep working only for users and groups in the identity map.
Ways around it
- Export site permissions first, and re-upload the whole map after every change.
- 5
Move sites in waves
Outside business hoursWatch out: Built-in move: there is no top-up pass, so changes saved after a site moves are not picked up. Microsoft asks users to close files and not edit during the move window.
Ways around it
- Freeze editing during each site's window and move sites when their users switch tenants.
Tools that can do it
- ShareGate MigrateCopy if newer leaves the source writable and adds new and changed items in later passes.
- ShareGate Migrate (Teams)Copy teams incremental picks up new conversations and changed files in team and private channel sites.
Show the detailed steps (5) →Watch out: Built-in move: only 4,000 moves can be queued at once, shared with OneDrive moves. Microsoft's steps do not cover private and shared channel sites.
Ways around it
- Plan site and OneDrive waves together, and test channel sites in the pilot or copy them with a tool.
- 6
Rebuild and clean up
After each waveShow the detailed steps (4) →Watch out: Built-in move: once a site shows Success, the only way back is a reverse move, after you delete the redirect at the old address.
Ways around it
- Stop moves that have not started if the pilot or a rebuild fails.
- Every site in each wave shows Success (or the tool reports no unexplained failures) and sits at its mapped address with a similar storage figure.
- Old addresses redirect (built-in move), and mapped users open files from existing links.
- Every Teams site has its team rebuilt or copied, with files in each channel.
- Every rebuild task is tested by its site owner, and removed labels are reapplied.
Tools named in this plan are independent third-party products, not endorsed by the platform vendor and not paid placements. Check the tool's own documentation and run a pilot first.
What does each step involve?
Open a part when you reach it in the plan. Each step says where to go, what to do and what you should see.
About this migrationWhat it covers, limits at a glance
Cross-tenant SharePoint migration uses the same trust, identity map and compatibility check as cross-tenant OneDrive migration, then moves sites with Start-SPOCrossTenantSiteContentMove or, for Microsoft 365 group-connected sites, Start-SPOCrossTenantGroupContentMove. Content stays in the Microsoft cloud. Microsoft asks users to close files and not edit the site while it moves. When the move completes, the old address is replaced by a redirect to the new site.
It is not available to everyone: Microsoft sells the add-on licence it needs (Cross-Tenant Shared Data Migration) only to Enterprise Agreement customers. An Enterprise Agreement is a volume licensing contract Microsoft signs directly with large organisations; most small and medium businesses buy Microsoft 365 through a reseller or online instead, so they cannot buy this licence and use a third-party tool. If you cannot buy it, or you need delta syncs, the third-party approach at the end of this guide is the usual route. For how sites fit with mail, OneDrive, Teams and the domain move, see the tenant-to-tenant overview.
1What you need before step one
Collect all of this first. Each tenant's SharePoint admin runs their own commands; nobody needs credentials for both tenants.
| Need | Details | Where to get it |
|---|---|---|
| Enterprise Agreement and Cross-Tenant Shared Data Migration licences | Sold per 100 GB moved, to Enterprise Agreement customers only | Your Microsoft account team; check current terms and pricing with them |
| SharePoint Online Management Shell, latest version | Runs every trust, mapping and move command; Windows only | Install SharePoint Online Management Shell |
| Microsoft Graph PowerShell and the Microsoft.Graph.Beta module | Required to precreate Microsoft 365 groups for group-connected sites | Install Microsoft Graph PowerShell |
| SharePoint Administrator in each tenant | Microsoft recommends this over Global Administrator | Microsoft 365 admin center > Roles > Role assignments, in each tenant |
| Both tenant admin URLs and the source tenant ID | For Connect-SPOService and column 2 of the identity map | SharePoint admin center address bar; Microsoft Entra admin center (entra.microsoft.com) > Entra ID > Overview > Tenant ID |
| A folder for exports and the identity map | The scripts below use C:\T2T on the admin PC | Create it before you start |
2Confirm eligibility and size the licence3 steps
- 1
Check you can buy the licence
Where: Your Microsoft account team, recorded in your Licensing assessmentMicrosoft states that the Cross-Tenant Shared Data Migration feature and licences are currently only available to Enterprise Agreement customers, through your Microsoft account team. Licences are offered per 100 GB of data moved. This is separate from the per-user Cross Tenant User Data Migration licence used for mailboxes and OneDrive. Ask your account team for current terms and pricing.
You should see: A written answer from the account team. If you cannot buy it, plan the third-party approach at the end of this guide. - 2
Measure every site you plan to move
Where: SharePoint Online Management Shell on your admin PC, connected to the source tenantSum
StorageUsageCurrentfor the sites in scope. Microsoft allows a 20 percent storage grace in case sites grow after you size the order.Delete rows for sites you will not move before you run the sum.
Connect-SPOService -Url https://contoso-admin.sharepoint.com Get-SPOSite -Limit All | Select-Object Url,Template,StorageUsageCurrent,LockState,GroupId | Export-Csv C:\T2T\sites.csv -NoTypeInformation # Sum the values, then confirm the unit with your Microsoft account team when you size the order (Import-Csv C:\T2T\sites.csv | Measure-Object -Property StorageUsageCurrent -Sum).SumYou should see: C:\T2T\sites.csv lists every site, and the last command prints one total for the sites in scope. - 3
Check the tenant-level blockers
Where: Your Migration readiness assessment, confirmed by the source adminMoves fail if the source tenant uses Service encryption with Microsoft Purview Customer Key. Government environments (GCC, GCC High) are not supported. A site moved to the wrong geo instance cannot be moved again between geos of the same tenant with this feature.
You should see: Each blocker is recorded as "no", or the affected sites are moved to the third-party plan.
3Classify sites and plan what you will rebuild4 steps
| Site or feature | Native move? | What to plan |
|---|---|---|
| Microsoft 365 group-connected sites | Yes | Precreate the target group with the method in Step 4; move with Start-SPOCrossTenantGroupContentMove |
| Teams-connected sites | Site content only | Teams content, channels and structure are not migrated |
| Modern sites without a group, communication sites | Yes | Move with Start-SPOCrossTenantSiteContentMove |
| Classic sites | Yes | Move with Start-SPOCrossTenantSiteContentMove |
| Sharing links | Redirected | Work for people who have access in the target |
| SharePoint 2010 and 2013 workflows | No | Recreate and republish in the target (typically in Power Automate) |
| SharePoint apps (add-ins) | No | Republish, and possibly modify, in the target |
| Power Apps and Power Automate | No | Recreate and reconnect to the target site |
| Web parts pointing at other sites or services | Partly | May need editing or recreating |
| Sensitivity labels | Not reliably | Label protection and policy do not carry; remove before and reapply after |
| Labels with user-defined permissions | Blocks the move | Remove the labels from files first |
- 1
Inventory group and Teams sites separately
Where: PowerShell 7 with Microsoft Graph PowerShell, signed in to the source tenantFor every group-connected site, record the group alias, owners, members and whether it has a team. These need extra preparation in Step 4 and a Teams rebuild afterwards.
Connect-MgGraph -Scopes "Group.Read.All" Get-MgGroup -All -Filter "groupTypes/any(c:c eq 'Unified')" -Property Id,DisplayName,MailNickname,Visibility,ResourceProvisioningOptions | Select-Object Id,DisplayName,MailNickname,Visibility,@{n="HasTeam";e={$_.ResourceProvisioningOptions -contains "Team"}} | Export-Csv C:\T2T\m365groups.csv -NoTypeInformationYou should see: C:\T2T\m365groups.csv lists every Microsoft 365 group with its alias (MailNickname), visibility and a HasTeam column. - 2
List workflows, apps, flows and Power Apps per site
Where: Your Application inventory and dependency map, with input from each site owner and the source Power Platform admin center (admin.powerplatform.microsoft.com) > Manage > EnvironmentsAsk each site owner, and check the Power Platform admin centre, for anything connected to the site. Each item becomes a rebuild task in your plan.
You should see: Every site has either "nothing connected" or a list of rebuild tasks with owners. - 3
Choose target URLs
Where: Your mapping sheet: one row per site with source URL, target URL and, for group sites, the target aliasTarget site URLs must not exist yet. Keep them short: the source file path plus the new site URL must stay within 400 characters. For group-connected sites the target URL must match the new group alias.
You should see: Every site has a target URL that does not exist in the target, and group sites use their new alias in the URL. - 4
Pilot first, then batch
Where: Your Pilot test plan and Migration wave planMicrosoft recommends starting with a few sites to validate your process and communications before scheduling large batches.
Choose a pilot with one communication site, one group-connected site and one Teams site.
You should see: A pilot list of a few sites, signed off before the first full batch is scheduled.
4Prepare the source sites4 steps
- 1
Unlock read-only sites
Where: Source PowerShell window (SharePoint Online Management Shell)Source sites must be read/write or the move fails. Find sites whose
LockStateis not Unlock in your sites.csv export, then unlock each one.Set-SPOSite -Identity https://contoso.sharepoint.com/sites/Finance -LockState UnlockYou should see: Get-SPOSite for the site shows LockState Unlock. - 2
Remove labels with user-defined permissions
Where: Source PowerShell window (SharePoint Online Management Shell), or the file in the site by handSites containing files labelled with a sensitivity label that lets users assign permissions cannot be moved. Remove those labels first, by hand or per file with
Unlock-SPOSensitivityLabelEncryptedFile. Microsoft recommends removing other labels too and reapplying new labels after the move, because protection from the original label does not carry over.Unlock-SPOSensitivityLabelEncryptedFile -FileUrl "https://contoso.sharepoint.com/sites/Finance/Shared Documents/Budget.xlsx" ` -JustificationText "Cross-tenant migration"You should see: The file opens without label protection, and your list of removed labels is recorded so you can reapply them in Step 8. - 3
Fix long paths and oversized sites
Where: Your sites.csv export (StorageUsageCurrent), then the site itself with its ownerSplit any site over 5 TB or 1 million items (files, versions, folders and list items all count). A site over 5 TB in a batch eventually times out and fails while smaller sites continue. Shorten folder trees that would exceed 400 characters at the new URL.
You should see: No site in scope exceeds 5 TB or 1 million items, and no path would exceed 400 characters at the target URL. - 4
Tell site users what will happen
Where: Your User communication pack, sent to each site's membersMicrosoft suggests telling users when the move starts, how long it may last, the new URL, to close files and not edit during the window, and what may change in sharing. Treat the site as frozen until the move shows Success.
You should see: Every site's members have received the message before their window, with the new URL in it.
5Connect, establish trust and precreate users and groups5 steps
- 1
Connect and establish trust
Where: Two SharePoint Online Management Shell windows, one connected to each tenant's admin URL with Connect-SPOServiceThe trust commands are the same as for OneDrive (see the OneDrive trust steps). If you have already set up trust for OneDrive moves, verify it still returns GoodToProceed on both sides. Microsoft documents a seven-day waiting period after a new trust is created.
# Both tenants Get-SPOCrossTenantHostUrl # Source Set-SPOCrossTenantRelationship -Scenario MnA -PartnerRole Target -PartnerCrossTenantHostUrl https://fabrikam-my.sharepoint.com/ Verify-SPOCrossTenantRelationship -Scenario MnA -PartnerRole Target -PartnerCrossTenantHostUrl https://fabrikam-my.sharepoint.com/ # Target Set-SPOCrossTenantRelationship -Scenario MnA -PartnerRole Source -PartnerCrossTenantHostUrl https://contoso-my.sharepoint.com/ Verify-SPOCrossTenantRelationship -Scenario MnA -PartnerRole Source -PartnerCrossTenantHostUrl https://contoso-my.sharepoint.com/You should see: Both Verify-SPOCrossTenantRelationship commands print GoodToProceed. - 2
Precreate users and security groups
Where: Target tenant: Microsoft 365 admin center (admin.microsoft.com) > Users > Active users, Teams & groups > Active teams & groups, and Billing > LicensesCreate every user and group that holds permissions on the sites in the target, license users for SharePoint, and add them to their groups. People who stay in the source but need access should get guest accounts in the target. If those users are also having their OneDrive moved, they must not sign in to the target OneDrive before their OneDrive move completes.
For many users, use bulk create users from a CSV and assign licences. Record each new object in the mapping sheet.
You should see: Every user and security group from the permission inventory exists in the target, and users hold a licence that includes SharePoint. - 3
Precreate Microsoft 365 groups with ProvisionSiteOnDemand
Where: PowerShell 7 on your admin PC with the Microsoft.Graph.Beta module, signed in to the target tenantFor group-connected sites, Microsoft requires the target group to be created with the Microsoft Graph beta module and this exact pattern, so that no site is provisioned for it. Groups created any other way make the site move fail. Match the visibility of the source group, and do not use a period in the group name. Record each new group's object ID for the identity map.
Install-Module Microsoft.Graph.Beta -Repository PSGallery -Force Connect-MgGraph -TenantId "<target tenant ID>" -Scopes "Group.ReadWrite.All" New-MgBetaGroup -GroupTypes Unified -MailNickname "FinanceTeam" -DisplayName "Finance Team" ` -ResourceBehaviorOptions "ProvisionSiteOnDemand" -MailEnabled:$False -SecurityEnabledYou should see: The command returns the new group with its Id, and no site for the group appears in the target SharePoint admin center. - 4
Multi-Geo targets
Where: Same Microsoft Graph PowerShell session, and the target SharePoint Online Management Shell for each geoAdd
-PreferredDataLocation(for example EUR) when the site must land in a satellite geo, and upload the identity map to every target geo.New-MgBetaGroup -GroupTypes Unified -MailNickname "FinanceEU" -DisplayName "Finance EU" ` -ResourceBehaviorOptions "ProvisionSiteOnDemand" -MailEnabled:$False -SecurityEnabled -PreferredDataLocation EURYou should see: The group shows the expected PreferredDataLocation, and the identity map upload succeeds in each target geo. - 5
Restrict site creation in the target
Where: Target tenant: SharePoint admin center > Settings > Site creationMicrosoft recommends restricting SharePoint site creation in the target so nobody creates a site at a URL you plan to use. Clear Users can create SharePoint sites and Show the options to create a site in SharePoint and create a shared library from OneDrive, then select Save. Microsoft notes this does not stop users creating Microsoft 365 groups or teams, which also create sites, so restrict group creation separately if needed.
You should see: The Site creation page shows both options cleared after you save.
6Build the identity map, including Microsoft 365 groups4 steps
| Column | User | Security group | Microsoft 365 group |
|---|---|---|---|
| 1 | User | Group | Group |
| 2 | Source tenant ID | Source tenant ID | Source tenant ID |
| 3 | Source user UPN | Source group object ID | Source group object ID |
| 4 | Target user UPN | Target group object ID | Target group object ID |
| 5 | Target user email | Group name (target object ID) | Target group alias |
| 6 | RegularUser or GuestUser | RegularGroup | O365Group (as in Microsoft's example) |
- 1
Write one CSV with no header row
Where: Excel on your admin PC, saved as CSV to C:\T2T\identitymap.csvUsers, security groups and Microsoft 365 groups go in the same file, with the six columns in the order shown in the table above. Mapping is one-to-one. Verify every row before you upload. Take the source tenant ID from the source Microsoft Entra admin center > Entra ID > Overview, and group object IDs from the Graph exports in Step 2 and Step 4.
User,03cb84b4-2f99-4b43-93fb-d4479e9b57af,ana@contoso.com,ana@fabrikam.onmicrosoft.com,ana@fabrikam.onmicrosoft.com,RegularUser Group,03cb84b4-2f99-4b43-93fb-d4479e9b57af,94d00e94-a007-4b14-bf16-159b26ec2853,34a09691-899c-4613-895c-0e653061630d,34a09691-899c-4613-895c-0e653061630d,RegularGroup Group,03cb84b4-2f99-4b43-93fb-d4479e9b57af,5b1f6a2e-7c1d-4b0e-9a35-2f7d0c8e1a44,8e2c9d10-3f4b-4a6e-b1c7-6d5e4f3a2b19,FinanceTeam,O365GroupYou should see: Opened in Notepad, the file has no heading line and every line has exactly six values. - 2
Align group aliases and URLs
Where: Your mapping sheet (target URL and target alias columns)For group-connected sites, the target site URL must use the new group's alias. If the source is
https://contoso.sharepoint.com/teams/FinanceOldand the target alias isFinanceTeam, the target URL ishttps://fabrikam.sharepoint.com/teams/FinanceTeam. A mismatch makes the move fail.You should see: For every group site, the last part of the target URL is exactly the target group alias. - 3
Upload in the target and re-upload on every change
Where: Target PowerShell window (SharePoint Online Management Shell, target SharePoint admin)The target SharePoint admin uploads the file. Each upload replaces the previous map, so include everyone for the whole project every time. Save and close the file before you upload.
Add-SPOTenantIdentityMap -IdentityMapPath C:\T2T\identitymap.csv Get-SPOTenantIdentityMappingUser -Field SourceUserKey -Value ana@contoso.comYou should see: The upload returns with no error, and the lookup returns the expected target user. - 4
Check compatibility from the source
Where: Source PowerShell windowProceed on Compatible or Warning only. Run it again before every batch. On Incompatible, Microsoft recommends waiting 48 hours and contacting support if it persists.
Get-SPOCrossTenantCompatibilityStatus -PartnerCrossTenantHostURL https://fabrikam-my.sharepoint.com/You should see: The status is Compatible or Warning.
7Start, schedule and monitor site moves5 steps
- 1
Move a site that has no Microsoft 365 group
Where: Source PowerShell window (SharePoint Online Management Shell, source SharePoint admin)The source admin runs the move with the full source and target URLs.
Start-SPOCrossTenantSiteContentMove -SourceSiteUrl https://contoso.sharepoint.com/sites/Policies ` -TargetSiteUrl https://fabrikam.sharepoint.com/sites/Policies ` -TargetCrossTenantHostUrl https://fabrikam-my.sharepoint.com/You should see: The command returns with no error, and the move appears as scheduled or in progress for that site. - 2
Move a group-connected or Teams site
Where: Source PowerShell windowUse the group aliases instead of URLs.
Start-SPOCrossTenantGroupContentMove -SourceGroupAlias "FinanceOld" -TargetGroupAlias "FinanceTeam" ` -TargetCrossTenantHostUrl https://fabrikam-my.sharepoint.com/You should see: The command returns with no error, and the move appears when you check the move state. - 3
Schedule a batch
Where: Source PowerShell window, with C:\T2T\site-wave1.csv on the PC (columns SourceUrl, TargetUrl, SourceGroupAlias, TargetGroupAlias)Add
-PreferredMoveBeginDate(and optionally-PreferredMoveEndDate, best effort) in UTC. You can queue up to 4,000 moves and add more as the queue drains. Fill the alias columns only for group-connected sites.$begin = Get-Date "2026-11-21 10:00" # enter UTC Import-Csv C:\T2T\site-wave1.csv | ForEach-Object { if ($_.SourceGroupAlias) { Start-SPOCrossTenantGroupContentMove -SourceGroupAlias $_.SourceGroupAlias -TargetGroupAlias $_.TargetGroupAlias ` -TargetCrossTenantHostUrl https://fabrikam-my.sharepoint.com/ -PreferredMoveBeginDate $begin } else { Start-SPOCrossTenantSiteContentMove -SourceSiteUrl $_.SourceUrl -TargetSiteUrl $_.TargetUrl ` -TargetCrossTenantHostUrl https://fabrikam-my.sharepoint.com/ -PreferredMoveBeginDate $begin } }You should see: Each site in the CSV shows Scheduled in the move state list. - 4
Monitor state
Where: Source or target PowerShell window, using the other tenant's host URLMicrosoft's SharePoint guide documents the same state cmdlet used for OneDrive, run from either tenant with the partner's host URL. States run from NotStarted and Scheduled through ReadytoTrigger and InProgress (Validation, Backup, Restore, Cleanup) to Success, Rescheduled or Failed.
Get-SPOCrossTenantUserContentMoveState -PartnerCrossTenantHostURL https://fabrikam-my.sharepoint.com/You should see: Each move shows its state; completed sites show Success and the old URL redirects to the target. - 5
Cancel a move that has not started
Where: Source PowerShell windowYou can stop a site or group move unless it is In Progress or Success.
Stop-SPOCrossTenantSiteContentMove -SourceSiteUrl https://contoso.sharepoint.com/sites/Policies Stop-SPOCrossTenantGroupContentMove -SourceGroupAlias "FinanceOld"You should see: The site or group no longer appears as Scheduled in the move state list.
8Handle Teams-connected sites3 steps
The feature does not migrate Teams content, channels or structure. When you move a Teams-connected site, only the SharePoint site content (including the channel folders in its document library) moves to the target.
- 1
Decide how the team will be rebuilt
Where: Your Application inventory and dependency map (the HasTeam rows from Step 2), agreed with each team ownerPlan to recreate the team, its channels, tabs and apps in the target, and decide how users will access chat and channel history. The options are covered in the Teams chat migration guide.
You should see: Every Teams-connected site has a recorded rebuild method and history decision signed off by its owner. - 2
Account for private and shared channels
Where: Source SharePoint Online Management Shell (list the channel sites), then your pilot planPrivate and shared channels each have their own SharePoint site, separate from the team's main site. Microsoft's cross-tenant SharePoint documentation does not describe moving these channel sites, so test them in your pilot or plan to copy their files with a migration tool.
List the channel sites with the command below and add each to the inventory.
Get-SPOSite -Limit All | Where-Object { $_.Template -like "TEAMCHANNEL*" } | Select-Object Url,Title,TemplateYou should see: A list of private and shared channel sites, each with a decision: test in the pilot or copy with a tool. - 3
Test the team rebuild on the moved group in the pilot
Where: Target tenant: Microsoft Teams admin center (admin.teams.microsoft.com) > Teams > Manage teams, or the Teams app, after the pilot site moveBefore you commit to a method for all teams, confirm in a pilot that creating the team on the target group after the site move gives users the files where they expect them.
You should see: Pilot users open the team in the target and find the channel files in each channel's Files tab.
9Rebuild, reapply and clean up after the move4 steps
- 1
Check access and links
Where: A browser signed in as a pilot user with target credentials, opening the old source URL and a few saved sharing linksUsers sign in with target credentials. Visiting the old URL redirects to the new site. Permissions and sharing links work for users and groups that were in the identity map.
You should see: The old URL opens the site at its new target URL, and mapped users can open files from existing links. - 2
Rebuild what did not move
Where: The target site, Power Automate (make.powerautomate.com) and Power Apps (make.powerapps.com) in the target tenant, working from your rebuild listRecreate and republish 2010 and 2013 workflows, republish apps, recreate and reconnect Power Apps and flows, and edit web parts that reference other sites or services. Reapply the sensitivity labels you removed.
You should see: Every rebuild task from Step 2 is marked done and tested by the site owner. - 3
Remove redirects when the project is complete
Where: Source PowerShell window (SharePoint Online Management Shell)List redirect sites and remove them once nobody relies on old URLs. If you move a site back to the source, remove the leftover redirect first: site URLs must be unique.
Get-SPOSite -Template "RedirectSite#0" -Limit All | Select-Object Url Remove-SPOSite -Identity https://contoso.sharepoint.com/sites/PoliciesYou should see: The removed URL no longer appears in the RedirectSite#0 list. - 4
Remove the trust before source licences expire
Where: Source and target PowerShell windowsOnce source tenant licences expire, the trust removal command no longer works on the source. Run the removal in both tenants; the command below is the source form, and the target uses the source host URL (see the OneDrive clean-up for both forms).
Remove-SPOCrossTenantRelationship -Scenario MnA -PartnerRole Target -PartnerCrossTenantHostUrl https://fabrikam-my.sharepoint.com/You should see: Verify-SPOCrossTenantRelationship no longer returns GoodToProceed in either tenant.
10The third-party tool approach4 steps
If you are not an Enterprise Agreement customer, need delta passes, need to merge into existing target sites or want to restructure while you move, a third-party tool copies sites through Microsoft's APIs instead.
- 1
Create target sites and groups
Where: Target tenant: SharePoint admin center > Sites > Active sites > Create, or Microsoft 365 admin center > Teams & groups > Active teams & groupsUnlike the native move, tools usually copy into sites that already exist. Create the target sites, groups and teams first, using your inventory. Some tools can create them for you; check your tool's documentation.
You should see: Every target site from your mapping sheet exists and opens for its owners. - 2
Map users and groups in the tool
Where: Your migration tool's user mapping screen or mapping file, loaded from the Identity and licence mapping sheetLoad the same source-to-target mapping you use for mail and OneDrive, so permissions resolve the same way across workloads.
You should see: The tool reports every source user and group as mapped, with no unresolved accounts. - 3
Pre-stage, then run deltas
Where: Your migration tool's job scheduler, with times recorded in the Migration wave planCopy the bulk of the content weeks ahead, then run incremental passes, with a final pass during the cutover window. Watch for API throttling on large sites, and run big jobs outside business hours.
You should see: The tool's report for the last delta pass shows only recent changes copied and no failed items you have not explained. - 4
Validate and switch
Where: Your Data validation report, then the source sites (Set-SPOSite -LockState ReadOnly)Compare item counts and permissions, update links in navigation and pages, then make the source sites read-only.
Set-SPOSite -Identity https://contoso.sharepoint.com/sites/Finance -LockState ReadOnlyYou should see: Item counts match within the tolerance you agreed, and Get-SPOSite shows the source site LockState ReadOnly.
What can go wrong, and how do you avoid it?
The detail behind the plan: options compared, and what experienced engineers check first. Tap any item.
Compare all the ways to do this3 options
Native cross-tenant SharePoint migration (Microsoft)
Medium effortBest for: Enterprise Agreement customers moving sites as they are
- Content stays in the Microsoft cloud
- Moves group-connected, Teams, modern, communication and classic sites
- Leaves a redirect at the source URL
- Cross-Tenant Shared Data Migration licence, sold to Enterprise Agreement customers only
- One-time move with no delta passes
- Teams structure, 2010 and 2013 workflows, Power Apps and flows do not move
Third-party copy tool
Medium effortBest for: Non-EA customers, or moves that need delta passes, merges or restructuring
- Pre-stage weeks ahead, then run incremental passes
- Can copy into existing target sites and change structure on the way
- Vendor licence; check current pricing
- You create target sites and groups first, unless the tool does it
- API throttling slows large sites
Recreate small sites and copy files manually
Medium effortBest for: A few small sites with simple permissions
- No migration licence or tool
- A clean start in the target
- Version history and metadata are not carried over
- Permissions and site settings are rebuilt by hand
If you are an Enterprise Agreement customer and accept a one-time move, the native move is the simplest route for whole sites. If you cannot buy the licence, or need delta passes or a new structure, plan a third-party tool from the start. Keep manual copies for a few small sites where history does not matter.
Decide how many file versions to moveCost lever
The licence is sold per 100 GB moved, and file versions count toward both the storage you move and the 1 million item limit per site. Busy libraries often hold far more versions than files.
Before you size the order, agree a version policy with site owners and trim old versions with New-SPOSiteFileVersionBatchDeleteJob (-DeleteBeforeDays or -MajorVersionLimit). Microsoft warns trimmed versions bypass the recycle bin and cannot be recovered without a backup, so get sign-off first.
Archive stale sites instead of moving themCost lever
Every site you move costs licence capacity, queue slots and rebuild effort. Old project sites and abandoned team sites are common in long-lived tenants.
Sort your sites.csv by last activity and size, ask owners to confirm which sites are still used, and export or leave the rest in the source until it closes. Measure StorageUsageCurrent again after the clean-up.
Create target Microsoft 365 groups only the supported wayReduces risk
Microsoft says groups for group-connected sites must be precreated with New-MgBetaGroup and -ResourceBehaviorOptions "ProvisionSiteOnDemand". Any other method makes the site move fail, and a period in the group name causes an invalid character error.
Script group creation from your inventory, strip periods from names, match visibility, and restrict group and site creation in the target so nobody provisions a site first.
When a tool copies a Teams-connected site as part of the team, it creates the target Microsoft 365 group and connected site itself, so you do not precreate groups with special parameters for those sites.
- ShareGate MigrateCopy teams brings the connected SharePoint site and Microsoft 365 group along automatically. Destination users must already exist.
Treat Teams sites as two jobsUser impact
Moving a Teams-connected site moves the files only. Teams content, channels and structure are not migrated, and private and shared channel sites are not described in Microsoft's procedure.
Plan the team rebuild and the chat history decision for each team before its site moves, and test private and shared channel sites in the pilot or copy them with a tool.
Teams migration tools copy the team, its channels, channel conversations and files in one job, including private channel sites, instead of moving files only.
- ShareGate MigrateCopies a team with its channels, files, Planner plans and connected group to another tenant. The 50 most recent conversations land in Posts; older ones go to an HTML Message history tab. Shared channels are skipped.
- BitTitan MigrationWizTeams-to-Teams migration recreates channel posts and replies as threads (60 per team by default, up to 1,000), plus private channels and Planner. Shared channels and private chats are not migrated.
- AvePoint FlyMoves Teams, including Teams chat, along with SharePoint, OneDrive and Groups across Microsoft 365 tenants.
Remove sensitivity labels that block the moveCompliance
Files labelled with a label that lets users assign permissions block the site move, and protection from any original label does not carry over to the target.
Find labelled files with the source compliance team, remove those labels (by hand or with Unlock-SPOSensitivityLabelEncryptedFile), record what was removed, and reapply target labels right after the move.
Map every group and guest that holds permissionsUser impact
Permissions and sharing links survive only for users and groups in the identity map. Unmapped SharePoint permissions, external guests and people staying in the source lose access.
Export site permissions per site before you build the map, create target guests for people who stay behind, and include every security and Microsoft 365 group. Re-upload the whole map after every change.
Move very large sites on their ownSaves time
Microsoft limits a site to 5 TB and 1 million items (files, versions, folders and list items all count). A site over 5 TB in a batch eventually times out and fails.
Split or archive oversized sites before the move, and schedule your largest sites in their own window so a failure does not hold up a batch.
Freeze editing during each site's windowUser impact
Users must stop editing the site while it moves (Microsoft asks them to close files), and there is no delta pass: anything saved elsewhere during the window, or after a failed attempt, is not picked up.
Tell members the window and the new URL in advance, ask them to close files, and schedule moves out of business hours with -PreferredMoveBeginDate in UTC.
Copy-based tools leave the source site writable and can run incremental passes that add new and changed files, so the editing freeze shrinks to the final pass.
- ShareGate MigrateCopy if newer (incremental) adds items missing from the destination and updates older ones. It does not delete destination items removed from the source or pick up permission changes.
- ShareGate Migrate (Teams)Copy teams incremental picks up new conversations, membership and changed files in team and private channel sites. Channels created after the first copy must be copied separately.
List what breaks before you promise a dateReduces risk
SharePoint 2010 and 2013 workflows, add-ins, Power Apps and flows connected to the site, and web parts pointing at other sites do not move or need editing.
Ask each owner what is connected to their site, check the Power Platform admin center for flows and apps using it, and schedule the rebuild before the site moves so users are not left without a process.
Stop people creating sites at your target URLsReduces risk
If a site exists at a target URL the move fails, and the feature cannot overwrite or merge. Microsoft notes that turning off site creation does not stop users creating Microsoft 365 groups or teams, which create sites.
In the target SharePoint admin center go to Settings > Site creation and clear the user site creation options, and restrict Microsoft 365 group creation until the moves are done.
The native move cannot merge into an existing site. A copy-based tool can copy into a site that already exists at the target URL, comparing against what is there.
- ShareGate MigrateWith Copy if newer, compares source content with the existing destination, copies missing items and updates older matches without overwriting newer destination files. Differing folder structures can cause duplicates.
How do you check it worked, or roll back?
Full validation checklist7 checks
Run these before you declare the migration complete. Record the results in the data validation report.
| Check | How to check | What good looks like |
|---|---|---|
| Every site in the wave shows Success | In the source PowerShell window run | Every site and group move in the wave shows Success (or the tool reports no failed items you have not accepted). |
| Site sizes match the source export | In the target window run | Every site in the wave exists at its mapped target URL with a storage figure close to the source. |
| Group sites are attached to the right target group | In the target window run | Each group-connected site's GroupId matches its precreated target group, and the URL ends in the target alias. |
| Permissions and old links work for mapped users | Sign in as a pilot user with target credentials, open the old source URL and a few existing sharing links, then check Site settings > Site permissions against the permission inventory. | The old URL redirects to the target site, mapped users open files from old links, and site permissions match the source. |
| Source URLs are redirects | In the source window run | Each moved site has a redirect at its old URL, or (tool route) the source site shows LockState ReadOnly. |
| Teams sites have their team and channel files | In the target Microsoft Teams admin center > Teams > Manage teams, open each rebuilt team, then ask pilot users to open each channel's Files tab, including private and shared channels. | Every Teams-connected site has its team rebuilt, and every channel shows its files. |
| Rebuilt workflows, apps and labels work | Work through the rebuild tasks in your Application inventory and dependency map with each site owner: run each flow in Power Automate, open each Power App, and check reapplied sensitivity labels on the files you recorded. | Every rebuild task is marked done and tested by the site owner, and every removed label is reapplied. |
Rollback planIf it goes wrong
Roll back if
- The pilot site move fails or lands with missing content or broken permissions
- A group-connected site moved to the wrong target group or URL
- A site owner finds a business-critical workflow or app that cannot be rebuilt before the site is needed
- The compatibility status changes to Incompatible before a batch
Point of no return
The native move moves each site once, with no delta pass. Before a move starts you can stop it with Stop-SPOCrossTenantSiteContentMove or Stop-SPOCrossTenantGroupContentMove, unless it is In Progress or Success. After Success the content is in the target and the source URL is a redirect, so the only way back is a reverse cross-tenant move. Teams channel conversations never moved and cannot be recovered from the target, and labels you removed stay removed until you reapply them. With a third-party tool the source stays intact until you delete it, so rollback is unlocking the source site.
- 1
Stop moves that have not started
Where: Source PowerShell window (SharePoint Online Management Shell)Run
Stop-SPOCrossTenantSiteContentMove -SourceSiteUrl https://contoso.sharepoint.com/sites/PoliciesorStop-SPOCrossTenantGroupContentMove -SourceGroupAlias "FinanceOld"for each remaining site in the batch.You should see: The sites no longer show as Scheduled, and their source sites stay read/write. - 2
Tool route: reopen the source site
Where: Source PowerShell windowIf you used a third-party tool and made the source read-only, set it back with
Set-SPOSite -Identity https://contoso.sharepoint.com/sites/Finance -LockState Unlockand tell site members to keep working there.You should see: Get-SPOSite shows LockState Unlock and members can edit in the source. - 3
Native route: prepare the reverse move
Where: Both PowerShell windowsSet up trust and the identity map with the roles swapped so the original target sends content back. Remove the redirect at the original source URL with
Remove-SPOSitefirst, because site URLs must be unique and a leftover redirect makes the return move fail.You should see: Verify-SPOCrossTenantRelationship returns GoodToProceed for the reverse direction and the old URL is free. - 4
Move the site back
Where: PowerShell window of the tenant now sending the contentRun
Start-SPOCrossTenantSiteContentMove(orStart-SPOCrossTenantGroupContentMovefor group sites, with a group that exists in the original tenant) and track it withGet-SPOCrossTenantUserContentMoveState.You should see: The return move reaches Success and the site opens at its original URL. - 5
Clean up the other side
Where: Original target PowerShell window, then the site's Teams, flows and labelsOnce the site works in the original tenant, remove the redirect left in the original target with
Remove-SPOSite, reapply any labels you removed and confirm workflows still run in the original tenant. Record the rollback in your Rollback plan.You should see: No redirect remains for the site in either tenant, and the site owner confirms it works.
Agree the triggers and who decides before the go / no-go meeting. Use the rollback plan template.
Common problems and fixes7 errors
Site move fails because the target site already existsCause: A site exists at the target URL, or a Microsoft 365 group was created in a way that provisioned a site.
Fix: Choose a new target URL, or recreate the target group with New-MgBetaGroup and -ResourceBehaviorOptions "ProvisionSiteOnDemand", update the identity map and retry.
Invalid character error for a group-connected siteCause: The target Microsoft 365 group name contains a period.
Fix: Recreate the target group without a period, update the alias and identity map, re-upload the map and restart the move.
Group-connected site move fails after mappingCause: The target site URL in the identity map does not match the new group's alias.
Fix: Make the target URL use the target alias exactly, re-upload the full identity map with Add-SPOTenantIdentityMap and retry.
Move fails for a read-only source siteCause: The source site is locked read-only.
Fix: Run Set-SPOSite -Identity <url> -LockState Unlock and start the move again.
Site cannot be migrated because of sensitivity labelsCause: Files in the site use labels that let users assign permissions.
Fix: Remove those labels with Unlock-SPOSensitivityLabelEncryptedFile or by hand, move the site, then apply target labels.
Large site times out and fails in a batchCause: The site exceeds 5 TB or 1 million items.
Fix: Split the site or archive content until it is under the limits, then move it on its own.
Get-SPOCrossTenantCompatibilityStatus returns IncompatibleCause: The two tenants are on incompatible SharePoint schema versions.
Fix: Wait 48 hours and check again; contact Microsoft support if it persists.
Frequently asked questions
Can I move a SharePoint site to another tenant natively?
Yes, if you are an Enterprise Agreement customer with Cross-Tenant Shared Data Migration licences. The move runs from SharePoint Online PowerShell in the source tenant after you set up trust and an identity map.
How is cross-tenant SharePoint migration licensed?
Per 100 GB of data moved, with a 20 percent storage grace. Microsoft offers it to Enterprise Agreement customers through their account team.
Does moving a Teams site move the team?
No. Only the SharePoint site content moves. Teams content, channels and structure must be rebuilt or moved with another method.
Can I migrate into a site that already exists in the target?
No. The native move cannot overwrite or merge, so the target site must not exist. Use a third-party tool if you need to merge.
Do permissions and sharing links survive?
Yes for users and groups included in the identity map. Sharing links redirect to the new location for people who have access there.
Can I run a delta sync after the move?
No. The move is one-time and leaves a redirect at the source. Schedule each site for when its users switch tenants.
Official sources
10 official pages this guide is based on
Vendors change limits and features, so confirm details on the source before you rely on them. Last checked 4 Nov 2026.