Smart Solutions
  • 100% Free & MIT Licensed
  • No third-party data hosting
  • 30 Languages Supported
  • Expert help when you want it

Quick answer

What is the best way to migrate content between SharePoint Online sites?

For SharePoint Online to SharePoint Online moves, use a tool built on the SharePoint Migration API so version history, authors, timestamps and metadata survive. Free SharePoint Smart Copy handles same-tenant and tenant-to-tenant copies of SharePoint, OneDrive and Teams files with identity mapping; paid suites such as ShareGate or AvePoint are still the right fit when Exchange mailboxes, Teams chats or file shares are in scope.

SharePoint Online migration: complete reference

Last updated · By Sean Regan

1. Migration scenarios

SourceTargetCanonical path
SharePoint 2013 / 2016 / 2019SharePoint OnlineSPMT or Migration API[1]
File share (SMB)SharePoint Online / OneDriveSPMT or Mover
SharePoint Online tenant ASharePoint Online tenant BMigration API via third-party / custom tool[3]
Box / Dropbox / Google DriveSharePoint Online / OneDriveMover (deprecated) or third-party

Microsoft's free SharePoint Migration Tool (SPMT) supports on-premises and file-share sources but does not support tenant-to-tenant migration[1]. Cross-tenant scenarios require either Microsoft's preview Cross-Tenant SharePoint Migration service or a third-party / open-source tool that calls the Migration API directly.

2. The SharePoint Migration API

The Migration API is the only Microsoft-supported path that preserves full fidelity at production throughput. The flow is asynchronous[3]:

  1. The client builds a migration package: the source files plus two XML manifests (ExportSettings.xml andManifest.xml) describing items, versions, authors, timestamps, and permissions.
  2. The package is uploaded to an Azure Blob Storage container the tenant provisions viaProvisionMigrationContainers.
  3. The client callsCreateMigrationJob, which queues a server-side import job and returns a job ID.
  4. SharePoint Online imports the package server-side, writing to the Azure Queue with progress and error events. The client polls the queue, not the API, which is what lets the Migration API sustain throughput where direct uploads would be throttled.

3. Fidelity: what is and is not preserved

AttributeMigration APIGraph / drag-and-drop
File contentYesYes
Created / Modified timestampsYesNo — set to upload time
Created By / Modified ByYes (with identity mapping)No — set to uploader
Version historyYes (all major + minor)No
Custom column metadataYesOnly if target schema pre-exists
Item-level permissionsYes (with identity mapping)No
Workflows (2010/2013)No — must be rebuilt in Power AutomateNo
InfoPath formsNo — rebuild as Lists forms or Power AppsNo

4. Identity mapping

Source user identities (Windows SIDs, on-premises UPNs, or another tenant's GUIDs) cannot exist in the target tenant. They must be mapped to target principals at migration time[2]. The Migration API consumes a UserAndGroupMapping.xml file with one row per source principal. Unmapped principals are written to the import asi:0#.f|membership|unknown and surface as broken Created By / Modified By fields in the target — they cannot be retroactively fixed without re-running the import.

Build the mapping file from the source by enumerating every distinct principal across all libraries (Created By, Modified By, role assignments on items with unique permissions), then resolve each to a target UPN via Microsoft Graph /users.

5. Throttling and rate limits

SharePoint Online enforces resource units per tenant per minute. Migration API jobs run server-side and do not consume the same quota as direct REST calls, which is why migrations that work for the first 50GB suddenly start failing the moment a script switches to direct upload[4]. Practical rules:

  • Always honor Retry-After response headers — Microsoft documents that ignoring them results in escalating throttles up to 24h blocks[4].
  • Use an app registration with certificate authentication, not delegated user credentials. User-context tokens are throttled aggressively.
  • Run migrations off-hours in the target's timezone. The same job that throttles at 9am completes clean at 10pm.
  • Cap concurrent migration jobs per site collection to ~4. Server-side import is already parallelized inside each job.

6. Tooling options

ToolLicenseTenant-to-tenant
SPMT (Microsoft)FreeNo
ShareGatePaid (per user/yr)Yes
AvePoint FlyPaidYes
Quest Migration ManagerPaidYes
Metalogix Content MatrixPaidYes
SharePoint Smart CopyFree / MITNo

See the full comparisons: ShareGate, AvePoint, Quest, Metalogix, SPMT.

Smart Copy does

  • Copy files, folders, document libraries, lists and list items between two SharePoint Online sites in the same Microsoft 365 tenant
  • Preserve full version history, Created/Modified, Created By/Modified By and custom column metadata
  • Copy item-level (unique) permissions
  • Copy modern Site Pages with web part URL remapping
  • Produce a verification report comparing source and destination after the copy

Smart Copy does not

  • Exchange mailbox or Teams chat migration — use ShareGate, AvePoint or Quest (Smart Copy covers SharePoint, OneDrive and Teams files tenant-to-tenant)
  • Migrate from on-premises SharePoint Server or file shares — use SPMT
  • Migrate from Box, Google Drive or Dropbox — use SPMT
  • Migrate Teams, Microsoft 365 Groups or OneDrive at scale
  • Identity remapping, coexistence, or scheduled unattended bulk jobs

7. Post-migration verification

Treat verification as a separate engineering pass, not a smoke test. The minimum checklist:

  1. Counts — source vs target item count per library; flag any delta > 0.
  2. Checksums — SHA-256 of file content for a 1% random sample.
  3. Timestamps — source vs target Created/Modified for the same sample.
  4. Permissions — export a per-scope permissions report on the target and diff against the source. See the permissions inheritance reference for what to expect.
  5. Version history depth — confirm version counts match per item.
  6. Identity — query the target for any author resolving to System Account or unknown; these indicate UserAndGroupMapping gaps.

References

  1. [1] Microsoft Learn — Introducing the SharePoint Migration Tool (SPMT)
  2. [2] Microsoft Learn — User and group identity mapping for SharePoint migration
  3. [3] Microsoft Learn — Migration API overview
  4. [4] Microsoft Learn — Avoid getting throttled or blocked in SharePoint Online
  5. [5] Microsoft Graph — driveItem resource type

Related

Migrate without the enterprise license

SharePoint Smart Copy is a free, open-source Windows app that drives the Migration API directly — preserves versions, timestamps, authors, and item permissions across tenants.

Need expert hands on deck?

Let our team plan and run your SharePoint migration

Full-service file and metadata migrations across sites, tenants, or from on-premises to SharePoint Online, from planning and test runs to verification and cutover.