← Blog/Deep dives

How to migrate Teams message history between M365 tenants

Teams migration is uniquely complex — message history, channel files, and member rosters each require different API calls. Here's how it works.

M
Mike B.·28 Apr 2026·7 min read

Of the four M365 workloads, Teams is the hardest to migrate. Unlike email (which is just EML messages in a mailbox) or OneDrive (which is just files in a drive), Teams weaves together multiple Graph API resources: teams, channels, messages, members, tabs, apps, and channel files stored in SharePoint.

What actually gets migrated

⚠

Private channel message history and 1:1 / group chat history require additional Graph API permissions (ChannelMessage.Read.All) and are only available via the Teams Export API, which has stricter throttle limits.

The migration API sequence

Microsoft provides a Teams Migration API that allows creating teams and channels in migration mode, then importing messages with their original timestamps. The sequence is:

  1. 1Create the team in migration mode using POST /teams with the creationMode: migration flag.
  2. 2Create each channel in the team, also in migration mode.
  3. 3POST messages to each channel using their original timestamps — this is what preserves history.
  4. 4Complete migration mode on each channel, then on the team.
  5. 5Add members and owners after completing migration mode — you cannot add members while in migration mode.

Throttle limits to plan around

The Teams migration API is significantly more throttled than standard Graph API calls. Practically, this means:

Channel files

Each Teams channel has a backing SharePoint document library. These files need to be migrated separately as part of your SharePoint migration — they are not included in the Teams message migration. The channel file tab in Teams will resolve automatically once the SharePoint migration puts files at the correct URL.

✦

Migrate SharePoint before completing your Teams migration. If the channel files aren't in place when Teams migration mode completes, the Files tab shows empty — which panics users.

Ready to start migrating?

25 free seats included. No credit card required.