Smooth Google migration

Migrate from Google Drive to M365 the right way

Learn more
No items found.

Master Hacks: Migrate like a pro

Check out our video series to help you turn migration projects into masterpieces!

Watch now

Table of contents

TL;DR: ShareGate migrates Teams private chats—1:1s and group chats—between tenants with full history, real sender attribution, and incremental re-runs. Starting with PowerShell, with a full app experience inside ShareGate coming. Included in Migrate Pro and Enterprise.  

 

SharePoint, OneDrive, mailboxes, Teams channels—ShareGate handles it all. Teams private chats too. 

Those one-to-ones and group chats in Microsoft Teams carry conversations behind the work. What was said, agreed, decided. In compliance-driven moves and migrations in the context of a merger and acquisition, that history has to be accounted for.  

This article covers what ShareGate migrates, what it doesn't, and how to run it from PowerShell. 

 

What is Microsoft Teams private chat migration? 

In Microsoft Teams, private chats are conversations that are only visible to you and the people you're chatting with. That includes one-on-ones and small group discussions where people send messages, files, GIFs, and stickers. Private chats are separate from Teams channels, which are shared spaces within a team. 

Teams private chat migration is the process of moving those direct messages and group chats from a source Microsoft 365 tenant to a destination tenant. 

ShareGate Migrate moves them with full history and real sender attribution. Available in Migrate Pro and Enterprise, with PowerShell. 

What makes Teams private chat migration challenging—and how ShareGate fixes it 

Getting chats to land correctly at the destination means solving three problems at once: 

  • Fidelity. Messages have to arrive with the original sender, timestamp, and formatting.  
  • Attribution. Every message has to stay linked to a real user profile at the destination. That means mapping source users before anything runs, and handling unmapped authors without blocking the migration. 
  • Incrementals. Chats keep arriving right up to cutover. You need to re-run without touching what already migrated. 

ShareGate handles all three. 

 

What migrates with ShareGate's Teams private chat migration (PowerShell) 

You can run Teams private chat migration from PowerShell. A click-through experience inside ShareGate is coming. Stay tuned! 

What moves Detail 
1:1 chats All direct messages between two users Copied to the destination as a group chat with the same two participants. 
Group chats Multi-user group conversations 
Meeting chats Migrate as a group chat 
Full history, no time cap Every message, no matter how old 
Real sender, original timestamp Messages land attributed to the real user in Teams at the destination 
Rich formatting Replies as quotes, links, non-custom emojis, GIFs, stickers 
Incremental re-runs Only new messages move. Nothing already at the destination is touched. 
Date filters "From" date or "last X days" option 
CSV input Bulk user mapping in PowerShell 

‍

Limitations 

Here's what doesn't move with this release: 

  • In-chat file attachment links 
  • Meeting chats as meetings (they land as group chats) 
  • Read/unread status 
  • Whole chats hosted in another tenant 
  • Copilot chats 
  • Custom date ranges 
  • Custom emojis 
  • Reactions are supported, but not on incremental runs 
  • User provisioning — destination accounts need to exist before the migration runs 

Why your compliance team cares 

In retention-driven migrations, such as M&A and carve-outs, private chats have to move, and the compliance team needs that history preserved and defensible. Messages land with the original sender and timestamp, giving you an auditable record.

‍

For large migrations 

A few years of history for a small team is typically a matter of days. For larger organizations or deep history (five, ten years across hundreds or thousands of users) run time can stretch significantly. 

If that's your situation, then consider scoping by time window rather than migrating everything at once. Start with the most recent 90 days. You can always migrate more incrementally after. 

 

How to copy Teams private chats with ShareGate PowerShell 

This runs from PowerShell. A click-through experience inside ShareGate is coming. 

There are four steps, each with its own cmdlet. 

1. Find the users whose chats you want to copy. Use Get-ChatUser to identify source users. 

2. Map source users to destination users. Use Export-UserMappings to generate the mapping file, fill it in, then load it with Import-UserMappings. 

3. Set your copy options. Use New-ChatCopyOptions to configure the copy — including a start date if you're scoping by time window rather than copying full history. 

4. Run the copy. Use Copy-Chat to start. ShareGate calls Microsoft's Teams import API to write messages directly into Teams at the destination. Messages land governed by Teams' native permissions. 

 

For the full cmdlet reference, see our Copy private chats – Overview in the ShareGate help documentation. 

 

What Microsoft's native migration covers 

Microsoft's Cross-Tenant Migration Orchestrator handles Teams chat migration along with Exchange mailboxes, OneDrive, and Teams meetings. It requires a per-user license—a one-time fee that covers all supported content, including Teams chats. 

Good to know 

  • Original content stays on the source in edited form 
  • Participant lists can change  
  • Duplicate threads can appear on both tenants 
  • It moves chats in a single pass, so there's no way to re-run and pick up only what's new 

 

How ShareGate compares 

Capability ShareGate Microsoft orchestrator 
1:1 and group chats ✓ 1:1s land as group chats ✓ 
Meeting chats ✓ land as group chats ✓ older than 60 days land as group chats 
Full history, no time cap ✓ ✓ 
Lands in Teams at the destination ✓ ✓ 
Chats started by deleted users ✓ ✗¹ 
Incremental re-sync ✓ ✗² 
Migration license Included in Pro/Enterprise Paid per-user add-on 

¹ Microsoft Learn: migration orchestrator end-user experience, Known issues, item 3 

² Microsoft Learn: migration orchestrator end-user experience, Teams chats 

As of October 2026. 

‍

Teams private chat migration is available in ShareGate Migrate Pro and Enterprise, starting with PowerShell. We're also exploring the possibility of adding an HTML  export option and a click-through experience inside ShareGate—we'll update this article when they ship! 

See how tenant-to-tenant migration works with ShareGate—or book a demo. 

 

Frequently asked questions

What are the best practices for Teams private chat migration?
  1. Map everyone, not just the users you select. Map every source user to their destination account, including deactivated users. A chat is skipped if any participant isn't mapped.
  1. Select everyone who needs access. Only selected users become members of the migrated chat at the destination. Run everyone who should have access in the same migration.
  1. Limit history if run time matters. By default, all history is copied. Set a start date to scope it—90 days is a good starting point for most teams.
  1. Tell users to sign out and back in. Migrated chats sometimes don't appear right away. That's a Teams display delay, not missing data.
Does Teams private chat migration cost extra with ShareGate?

No. It's included in Migrate Pro and Enterprise.

Can you migrate Teams private chats between Microsoft 365 tenants?
Yes. ShareGate migrates Teams one-on-one and group chats with full history, real sender attribution, and the ability to re-run and only move new messages.
Do in-chat file attachments migrate?
No. Microsoft's Teams import API doesn't support preserving attachment links. The files themselves still migrate when you move the sender's OneDrive.
Is chat history preserved with the original sender and timestamps?
Yes. Active and deactivated users are mapped to have their messages land under their real destination profile with original timestamps. Unmapped user chats are not migrated. Deleted and external user chats are copied to "Unknown user" placeholder that keeps the real display name.
No items found.