Tenant-to-Tenant Migration Tool — Microsoft 365
Migrate Teams, mailboxes, OneDrive, SharePoint, and chat history between Microsoft 365 tenants. Production-validated: 153,584 files, zero errors.
Quick answer
A Microsoft 365 tenant-to-tenant migration here runs as a direct Graph-to-Graph transfer from the operator's own browser, moving Teams, mailboxes, OneDrive, SharePoint and chat history between tenants. An interrupted run resumes safely — items already at the destination are detected by content hash and skipped, and results merge into existing targets. Coverage is Microsoft 365 to Microsoft 365 only; cross-platform moves are out of scope.
FAQ
How does tenant-to-tenant migration in GTools.pro work?
You authenticate against both source and target tenants using separate OAuth flows. Source tokens have read-only scopes; target tokens have read/write scopes. Migration jobs stream content directly from source Graph API to target Graph API through your browser. We never have visibility into the data being transferred.
Has the migration engine been validated in production?
Yes. The most recent published validation: a 36-hour continuous SharePoint migration moved 153,584 files (178 GB) with zero errors. Subsequent runs of the same site with conflict_mode=skip_existing produced 154,832 successes versus 154,830 the previous run, demonstrating stable resume behaviour with no regressions.
Can I resume an interrupted migration?
Yes. Every migration job records checkpoints in a SQLite database with WAL journal mode. Items already migrated are skipped on resume. Folder duplication on resume is prevented by Microsoft Graph conflictBehavior=fail with 409 reuse and folder-level checkpoints. SQLite uses a 30-second busy timeout with retry logic to handle concurrent writes.
What about merging into an existing target?
Migration tools support a name-based matching mode that merges source content into existing target entities (sites, teams, mailboxes) rather than creating duplicates. Confidence scoring ranges from 1.0 (exact match) to 0.5–0.9 (fuzzy match), with a UI prompt for low-confidence matches.
How long does a typical migration take?
Throughput is roughly 71 files per minute average, peaking at 104. A 5,000-mailbox migration with 100 GB average mailbox size completes in approximately 2 weeks of steady-state operation. Parallel uploads (4 concurrent streams) and 10 MB chunks deliver 200–300% throughput improvement over single-stream baselines.
Does it handle large files?
Yes. Files larger than 4 MB use Microsoft Graph chunked upload sessions with 5 MB chunks (multiples of 320 KB as Graph requires). Resumable upload sessions persist in the upload_sessions database table so transient network failures during a multi-GB upload do not require restarting the file from byte zero.
How we compare
How do you compare to BitTitan MigrationWiz?
BitTitan’s $57/user bundle routes data through BitTitan cloud where it is temporarily cached in plaintext; the Teams component is capped at 100 GB. gtools.pro Desktop never sends migration data to a third-party server — the engine reads source via Graph API and writes to target Graph API on your machine.
How do you compare to ShareGate?
ShareGate’s EU data option stores data at rest in Europe but processes it in Azure East US 1. gtools.pro Desktop processes everything on the local machine. For DACH and EU procurement that distinction is often the deciding factor.
How do you compare to Quest On Demand Migration?
Quest On Demand Migration is per-workload modular (typical engagements $200K+) with a 20% price increase early in 2025; pure SaaS, data flows through Quest Azure. gtools.pro: single SKU, time-boxed at project inception, runs in air-gapped or network-isolated environments.
Why a time-boxed SKU and not per-user-per-month?
Migration is a project, not an ongoing operation. Once done, you don’t keep paying. No competitor in the comparison offers a 90-day fixed-window desktop SKU.
Does my data leave my machine during migration?
Desktop edition: no. The engine reads source via Graph API and writes target directly; the data path is your machine → Microsoft. Cloud edition: orchestration only; credential material is encrypted client-side before any backend interaction.
Can I run a migration completely offline?
No. Migrations always need internet to reach Microsoft’s Graph endpoints — Graph is the only legal source/target path. For environments where outbound is restricted to Microsoft IPs only, gtools.pro is the only desktop-native tool in the category.
What Microsoft 365 permissions do you need?
Workload-scoped: Mail.ReadWrite for mailbox, Sites.ReadWrite.All for SharePoint and OneDrive, Teamwork.Migrate.All for Teams chat (Microsoft-required, unavoidable for any tool reconstructing chat). gtools.pro does NOT request Directory.ReadWrite.All or the EWS full_access_as_app scope — both of which BitTitan, Quest On Demand Migration, and AvePoint Fly require.
What if my migration is interrupted?
Resume + merge was introduced in v1.10.34. Jobs resume from where they stopped; duplicate detection prevents re-migration of items already moved. SQLite WAL mode with a 30-second busy timeout keeps the checkpoint store consistent across concurrent writes.