Runbook · SharePoint tenant-to-tenant

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.

Updated 6 phases36 detailed steps10 official sources
Start here

How do you migrate SharePoint sites to another Microsoft 365 tenant?

Short answer

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.

Recommended routeMicrosoft's built-in tenant-to-tenant site move (cross-tenant SharePoint migration)

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.
Order to migrate in, and why

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.

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. 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.
Settings checklist: decide these before you copy

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 overview
  • How 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 bin
  • How 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 libraries
  • How 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 overview
  • How 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 FAQs
  • How 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 FAQs
  • How 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 overview
  • How 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 overview
  • How 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 FAQs
  • How 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 overview
  • How 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 overview
  • How 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 overview
  • How 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
The plan, phase by phase
  1. 1

    Check eligibility and size

    Before you set dates

    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.
    Show the detailed steps (3) →
  2. 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.

    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.
    Show the detailed steps (4) →
  3. 3

    Prepare the source

    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.
    Show the detailed steps (4) →
  4. 4

    Set up trust and the target

    At least seven days before the pilot

    Watch 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.

    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.
    Show the detailed steps (5) →
  5. 5

    Move sites in waves

    Outside business hours

    Watch 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.

    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.
    Show the detailed steps (5) →
  6. 6

    Rebuild and clean up

    After each wave

    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.
    Show the detailed steps (4) →
You are finished 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.
  • 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.

Click by click

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.

LicenceCross-Tenant Shared Data Migration, sold per 100 GB moved, Enterprise Agreement customers only
Site typesGroup-connected (including Teams) sites, modern sites, communication sites, classic sites
Limits5 TB and 1 million items per site; 400-character paths; 4,000 queued moves
Type of moveOne-time move with a redirect at the source; no delta passes
Not movedTeams channels and structure, 2010/2013 workflows, Power Apps and flows, label protection
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.

NeedDetailsWhere to get it
Enterprise Agreement and Cross-Tenant Shared Data Migration licencesSold per 100 GB moved, to Enterprise Agreement customers onlyYour Microsoft account team; check current terms and pricing with them
SharePoint Online Management Shell, latest versionRuns every trust, mapping and move command; Windows onlyInstall SharePoint Online Management Shell
Microsoft Graph PowerShell and the Microsoft.Graph.Beta moduleRequired to precreate Microsoft 365 groups for group-connected sitesInstall Microsoft Graph PowerShell
SharePoint Administrator in each tenantMicrosoft recommends this over Global AdministratorMicrosoft 365 admin center > Roles > Role assignments, in each tenant
Both tenant admin URLs and the source tenant IDFor Connect-SPOService and column 2 of the identity mapSharePoint admin center address bar; Microsoft Entra admin center (entra.microsoft.com) > Entra ID > Overview > Tenant ID
A folder for exports and the identity mapThe scripts below use C:\T2T on the admin PCCreate it before you start
2Confirm eligibility and size the licence3 steps
  1. 1

    Check you can buy the licence

    Where: Your Microsoft account team, recorded in your Licensing assessment

    Microsoft 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. 2

    Measure every site you plan to move

    Where: SharePoint Online Management Shell on your admin PC, connected to the source tenant

    Sum StorageUsageCurrent for 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).Sum
    You should see: C:\T2T\sites.csv lists every site, and the last command prints one total for the sites in scope.
  3. 3

    Check the tenant-level blockers

    Where: Your Migration readiness assessment, confirmed by the source admin

    Moves 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.
Same queue as OneDrive. Up to 4,000 moves can be pending at once, and Microsoft's orchestrator documentation notes this limit is shared between OneDrive and SharePoint moves. Plan your site and OneDrive waves together.
3Classify sites and plan what you will rebuild4 steps
Site or featureNative move?What to plan
Microsoft 365 group-connected sitesYesPrecreate the target group with the method in Step 4; move with Start-SPOCrossTenantGroupContentMove
Teams-connected sitesSite content onlyTeams content, channels and structure are not migrated
Modern sites without a group, communication sitesYesMove with Start-SPOCrossTenantSiteContentMove
Classic sitesYesMove with Start-SPOCrossTenantSiteContentMove
Sharing linksRedirectedWork for people who have access in the target
SharePoint 2010 and 2013 workflowsNoRecreate and republish in the target (typically in Power Automate)
SharePoint apps (add-ins)NoRepublish, and possibly modify, in the target
Power Apps and Power AutomateNoRecreate and reconnect to the target site
Web parts pointing at other sites or servicesPartlyMay need editing or recreating
Sensitivity labelsNot reliablyLabel protection and policy do not carry; remove before and reapply after
Labels with user-defined permissionsBlocks the moveRemove the labels from files first
  1. 1

    Inventory group and Teams sites separately

    Where: PowerShell 7 with Microsoft Graph PowerShell, signed in to the source tenant

    For 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 -NoTypeInformation
    You should see: C:\T2T\m365groups.csv lists every Microsoft 365 group with its alias (MailNickname), visibility and a HasTeam column.
  2. 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 > Environments

    Ask 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. 3

    Choose target URLs

    Where: Your mapping sheet: one row per site with source URL, target URL and, for group sites, the target alias

    Target 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. 4

    Pilot first, then batch

    Where: Your Pilot test plan and Migration wave plan

    Microsoft 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. 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 LockState is not Unlock in your sites.csv export, then unlock each one.

    Set-SPOSite -Identity https://contoso.sharepoint.com/sites/Finance -LockState Unlock
    You should see: Get-SPOSite for the site shows LockState Unlock.
  2. 2

    Remove labels with user-defined permissions

    Where: Source PowerShell window (SharePoint Online Management Shell), or the file in the site by hand

    Sites 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. 3

    Fix long paths and oversized sites

    Where: Your sites.csv export (StorageUsageCurrent), then the site itself with its owner

    Split 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. 4

    Tell site users what will happen

    Where: Your User communication pack, sent to each site's members

    Microsoft 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. 1

    Connect and establish trust

    Where: Two SharePoint Online Management Shell windows, one connected to each tenant's admin URL with Connect-SPOService

    The 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. 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 > Licenses

    Create 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. 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 tenant

    For 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 -SecurityEnabled
    You 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. 4

    Multi-Geo targets

    Where: Same Microsoft Graph PowerShell session, and the target SharePoint Online Management Shell for each geo

    Add -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 EUR
    You should see: The group shows the expected PreferredDataLocation, and the identity map upload succeeds in each target geo.
  5. 5

    Restrict site creation in the target

    Where: Target tenant: SharePoint admin center > Settings > Site creation

    Microsoft 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.
Do not precreate sites. If the target site exists the move fails; the feature cannot overwrite or merge a site. Target groups for group-connected sites cannot be linked to existing sites.
6Build the identity map, including Microsoft 365 groups4 steps
ColumnUserSecurity groupMicrosoft 365 group
1UserGroupGroup
2Source tenant IDSource tenant IDSource tenant ID
3Source user UPNSource group object IDSource group object ID
4Target user UPNTarget group object IDTarget group object ID
5Target user emailGroup name (target object ID)Target group alias
6RegularUser or GuestUserRegularGroupO365Group (as in Microsoft's example)
  1. 1

    Write one CSV with no header row

    Where: Excel on your admin PC, saved as CSV to C:\T2T\identitymap.csv

    Users, 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,O365Group
    You should see: Opened in Notepad, the file has no heading line and every line has exactly six values.
  2. 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/FinanceOld and the target alias is FinanceTeam, the target URL is https://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. 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.com
    You should see: The upload returns with no error, and the lookup returns the expected target user.
  4. 4

    Check compatibility from the source

    Where: Source PowerShell window

    Proceed 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. 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. 2

    Move a group-connected or Teams site

    Where: Source PowerShell window

    Use 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. 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. 4

    Monitor state

    Where: Source or target PowerShell window, using the other tenant's host URL

    Microsoft'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. 5

    Cancel a move that has not started

    Where: Source PowerShell window

    You 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. 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 owner

    Plan 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. 2

    Account for private and shared channels

    Where: Source SharePoint Online Management Shell (list the channel sites), then your pilot plan

    Private 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,Template
    You should see: A list of private and shared channel sites, each with a decision: test in the pilot or copy with a tool.
  3. 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 move

    Before 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.
Set expectations. Users of a Teams site will see their files in the target but not their channel conversations. Say so in the communications before the move, not after.
9Rebuild, reapply and clean up after the move4 steps
  1. 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 links

    Users 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. 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 list

    Recreate 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. 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/Policies
    You should see: The removed URL no longer appears in the RedirectSite#0 list.
  4. 4

    Remove the trust before source licences expire

    Where: Source and target PowerShell windows

    Once 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. 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 & groups

    Unlike 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. 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 sheet

    Load 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. 3

    Pre-stage, then run deltas

    Where: Your migration tool's job scheduler, with times recorded in the Migration wave plan

    Copy 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. 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 ReadOnly
    You should see: Item counts match within the tolerance you agreed, and Get-SPOSite shows the source site LockState ReadOnly.
Compare tools by feature, not brand. Check delta sync, permission and metadata handling, version history, Teams support and reporting. Get current pricing directly from each vendor.
Worth knowing

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 effort

Best 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
Read more →

Third-party copy tool

Medium effort

Best 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 effort

Best 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
Our advice

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.

What to do

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.

Microsoft Learn: Trim existing versions from site, library, or OneDrive
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.

What to do

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.

What to do

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.

Tools that can get around this

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.
Third-party tools, not endorsed by the platform vendor. Confirm in the tool's documentation and run a pilot first.
Microsoft Learn: Step 4, precreate users and groups (SharePoint)
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.

What to do

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.

Tools that can get around this

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.
Third-party tools, not endorsed by the platform vendor. Confirm in the tool's documentation and run a pilot first.
Microsoft Learn: Cross-tenant SharePoint migration overview
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.

What to do

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.

Microsoft Learn: Cross-tenant SharePoint migration overview
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.

What to do

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.

Microsoft Learn: Step 5, identity mapping (SharePoint)
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.

What to do

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.

Microsoft Learn: Cross-tenant SharePoint migration overview
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.

What to do

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.

Tools that can get around this

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.
Third-party tools, not endorsed by the platform vendor. Confirm in the tool's documentation and run a pilot first.
Microsoft Learn: Step 7, post-migration steps (SharePoint)
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.

What to do

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.

Microsoft Learn: Cross-tenant SharePoint migration overview
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.

What to do

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.

Tools that can get around this

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.
Third-party tools, not endorsed by the platform vendor. Confirm in the tool's documentation and run a pilot first.
Microsoft Learn: Manage site creation in SharePoint
Finish safely

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.

CheckHow to checkWhat good looks like
Every site in the wave shows Success

In the source PowerShell window run Get-SPOCrossTenantUserContentMoveState -PartnerCrossTenantHostURL https://fabrikam-my.sharepoint.com/ and compare with C:\T2T\site-wave1.csv. For a third-party tool, open its job report for the last delta pass.

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 Get-SPOSite -Limit All | Select-Object Url,Template,StorageUsageCurrent and compare each target URL with its row in C:\T2T\sites.csv using your mapping sheet.

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 Get-SPOSite -Identity https://fabrikam.sharepoint.com/sites/FinanceTeam | Format-List Url,GroupId and compare GroupId with the Id returned when you created the group with New-MgBetaGroup.

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 Get-SPOSite -Template "RedirectSite#0" -Limit All | Select-Object Url. For a tool-based copy, run Get-SPOSite -Identity https://contoso.sharepoint.com/sites/Finance | Format-List LockState.

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. 1

    Stop moves that have not started

    Where: Source PowerShell window (SharePoint Online Management Shell)

    Run Stop-SPOCrossTenantSiteContentMove -SourceSiteUrl https://contoso.sharepoint.com/sites/Policies or Stop-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. 2

    Tool route: reopen the source site

    Where: Source PowerShell window

    If 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 Unlock and tell site members to keep working there.

    You should see: Get-SPOSite shows LockState Unlock and members can edit in the source.
  3. 3

    Native route: prepare the reverse move

    Where: Both PowerShell windows

    Set 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-SPOSite first, 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. 4

    Move the site back

    Where: PowerShell window of the tenant now sending the content

    Run Start-SPOCrossTenantSiteContentMove (or Start-SPOCrossTenantGroupContentMove for group sites, with a group that exists in the original tenant) and track it with Get-SPOCrossTenantUserContentMoveState.

    You should see: The return move reaches Success and the site opens at its original URL.
  5. 5

    Clean up the other side

    Where: Original target PowerShell window, then the site's Teams, flows and labels

    Once 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 exists

Cause: 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 site

Cause: 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 mapping

Cause: 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 site

Cause: 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 labels

Cause: 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 batch

Cause: 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 Incompatible

Cause: The two tenants are on incompatible SharePoint schema versions.

Fix: Wait 48 hours and check again; contact Microsoft support if it persists.

Search the full error library →

FAQ

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.

Sources

Official sources

10 official pages this guide is based on