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