Collaboration Platform Migration
Collaboration platform migration transfers email, files, calendars, contacts, and messaging data from one platform to another while maintaining user productivity and data integrity. The migration encompasses three primary workloads: mail migration (mailboxes, archives, rules), file migration (documents, folder structures, sharing permissions), and messaging migration (chat history, channels, integrations). Each workload presents distinct technical challenges, and most migrations run all three in parallel with coordinated cutover windows.
The migration process divides into five phases: assessment, preparation, pilot migration, production migration, and decommissioning. Assessment establishes the scope and identifies data requiring special handling. Preparation configures the target platform and establishes coexistence infrastructure. Pilot migration validates procedures with a representative user group. Production migration moves the organisation in waves. Decommissioning removes source platform access and licensing after a verification period.
Prerequisites
Before beginning the migration, verify the following requirements are satisfied:
| Requirement | Specification | Verification method |
|---|---|---|
| Target platform provisioned | Tenant created, domains verified, admin access confirmed | Sign in to admin portal |
| Licensing | Sufficient licences for all users plus 10% buffer for conflicts | Licence inventory count |
| Source platform access | Global admin or equivalent with export permissions | Test data export on sample mailbox |
| Migration tooling | Tool selected, licensed, connectivity tested | Run connectivity validation |
| Network capacity | Minimum 100 Mbps sustained for production migration | Bandwidth test during business hours |
| DNS access | Ability to modify MX, autodiscover, CNAME records | Test record creation in sandbox subdomain |
| User communication plan | Templates approved, distribution lists confirmed | Send test communication |
| Rollback plan | Documented procedures, tested on pilot group | Tabletop review with stakeholders |
| Support capacity | Helpdesk briefed, escalation path defined | Confirm support staff availability for cutover |
Verify source platform data volumes to estimate migration duration:
# For Microsoft 365 source - export mailbox statisticsGet-Mailbox -ResultSize Unlimited | Get-MailboxStatistics | Select-Object DisplayName, TotalItemSize, ItemCount | Export-Csv mailbox-inventory.csv
# For Google Workspace source - use Admin SDKgam print users fields name,email,suspended | gam csv - gam user ~email print filecountCalculate expected migration duration using these baseline rates:
| Data type | Migration rate | Example calculation |
|---|---|---|
| 2-5 GB per hour per mailbox | 50 GB mailbox = 10-25 hours | |
| Files | 1-3 GB per hour per user | 20 GB files = 7-20 hours |
| Shared drives | 0.5-2 GB per hour | 500 GB shared = 250-1000 hours |
Large mailbox handling
Mailboxes exceeding 100 GB require dedicated migration slots and extended windows. Identify these during assessment and schedule separately from production waves.
Procedure
Phase 1: Assessment and inventory
- Export the complete user inventory from the source platform, capturing email addresses, display names, department, and manager relationships. This inventory serves as the canonical reference for migration tracking.
# Microsoft 365 source Get-MsolUser -All | Select-Object UserPrincipalName, DisplayName, Department, UsageLocation, IsLicensed | Export-Csv user-inventory.csv -NoTypeInformation # Google Workspace source gam print users fields primaryEmail,name,orgUnitPath,suspended, isAdmin,creationTime > user-inventory.csv- Generate mailbox size reports to identify large mailboxes requiring special handling. Flag any mailbox exceeding 50 GB for extended migration windows.
Get-Mailbox -ResultSize Unlimited | Get-MailboxStatistics | Where-Object {$_.TotalItemSize -gt 50GB} | Select-Object DisplayName, TotalItemSize, ItemCount- Inventory shared mailboxes, distribution lists, and mail-enabled groups. Document ownership and membership for recreation on the target platform.
# Shared mailboxes Get-Mailbox -RecipientTypeDetails SharedMailbox | Select-Object DisplayName, PrimarySmtpAddress, @{N='Size';E={(Get-MailboxStatistics $_).TotalItemSize}}
# Distribution lists Get-DistributionGroup | Select-Object DisplayName, PrimarySmtpAddress, ManagedBy, MemberCount- Map file storage structure, identifying shared drives, team sites, and individual storage quotas. Record permission inheritance patterns and external sharing configurations.
# Google Workspace shared drives gam print teamdrives fields id,name,createdTime, organizerCount,memberCount > shared-drives.csv- Document third-party integrations connected to the source platform. For each integration, record the application name, authentication method, data accessed, and business owner.
# Microsoft 365 OAuth applications Get-MsolServicePrincipal | Where-Object {$_.AppPrincipalId -ne $null} | Select-Object DisplayName, AppPrincipalId, AccountEnabled- Identify mail flow rules, transport rules, and email security configurations requiring recreation. Export rule configurations for reference during target platform setup.
Get-TransportRule | Select-Object Name, State, Priority, Conditions, Actions | Export-Csv transport-rules.csvPhase 2: Target platform preparation
Configure the target tenant with organisational branding, security defaults, and administrative access. Establish the administrative account structure before user provisioning.
For Microsoft 365 targets, configure the following baseline settings:
# Enable modern authentication Set-OrganizationConfig -OAuth2ClientProfileEnabled $true
# Configure default sharing policy Set-SharingPolicy -Identity "Default Sharing Policy" ` -Domains "Anonymous:CalendarSharingFreeBusySimple"- Verify domain ownership on the target platform by adding the required DNS TXT records. Domain verification must complete before mail flow configuration.
# Example DNS TXT record for Microsoft 365 Type: TXT Host: @ Value: MS=ms12345678 TTL: 3600- Configure identity synchronisation or federation between source and target platforms for the coexistence period. Users must authenticate to both platforms during migration.
+------------------+ +------------------+ +------------------+ | | | | | | | Source IdP +---->+ Federation +---->+ Target Platform | | (existing) | | Trust | | (new) | | | | | | | +------------------+ +------------------+ +------------------+Create the target organisational unit structure mirroring source platform hierarchy. Consistent structure simplifies permission migration and policy application.
Provision user accounts on the target platform in a disabled state. Account creation must precede data migration to establish target mailboxes and storage locations.
# Bulk user creation from inventory Import-Csv user-inventory.csv | ForEach-Object { New-MsolUser -UserPrincipalName $_.UserPrincipalName ` -DisplayName $_.DisplayName ` -Department $_.Department ` -UsageLocation $_.UsageLocation ` -BlockCredential $true }Recreate distribution lists and shared mailboxes on the target platform. Preserve the same email addresses as aliases to maintain mail flow during coexistence.
Configure mail flow for the coexistence period. The source platform remains authoritative for MX records while the target platform receives forwarded mail for migrated users.
+----------------+ MX Record +----------------+ | |<------------------+| | | Source | | Internet | | Platform | | Mail | | +----+ | | +-------+--------+ | +----------------+ | | | Forward | Direct (post-cutover) v v +-------+--------+----+ | | | Target Platform | | (migrated users) | | | +---------------------+Phase 3: Pilot migration
Select 10-20 pilot users representing diverse roles, departments, and data volumes. Include at least one user with a mailbox exceeding 25 GB, one user with extensive file sharing, and one user from each major department.
Communicate pilot timeline and expectations to selected users 5 business days before migration. Provide the support contact and set expectations for temporary disruption.
Execute mail migration for pilot users during off-hours. Monitor migration throughput and error rates throughout the process.
# Example using BitTitan MigrationWiz $mailboxes = Import-Csv pilot-users.csv foreach ($mbx in $mailboxes) { Add-MW_Mailbox -Ticket $mwTicket ` -ConnectorId $connectorId ` -ImportEmailAddress $mbx.TargetEmail ` -ExportEmailAddress $mbx.SourceEmail } Start-MW_MailboxMigration -Ticket $mwTicket -ConnectorId $connectorIdExecute file migration for pilot users, preserving folder structure and sharing permissions. Verify permission mapping completed correctly by testing access from shared recipients.
Verify calendar items migrated with correct time zones and recurrence patterns. Check that meeting invitations from the source platform still function for migrated users.
Collect pilot user feedback through structured interviews. Document issues encountered, workarounds required, and suggestions for production migration.
Analyse pilot metrics against success criteria:
Metric Target Action if missed Mail migration completeness 99.5% of items Investigate failed items, adjust batch size File migration completeness 99% of files Check permission errors, retry with elevated access User-reported issues Fewer than 2 per user Enhance documentation, adjust training Migration throughput Within 20% of estimate Adjust parallelism, check network capacity Remediate pilot issues before production migration. Update procedures, communication templates, and support documentation based on pilot learnings.
Phase 4: Production migration
- Segment users into migration waves of 50-100 users each. Group users by department or location to simplify support coordination. Schedule waves to complete within 48-72 hours each.
+---------------------------------------------------------------------+ | PRODUCTION MIGRATION TIMELINE | +---------------------------------------------------------------------+ | | | Wave 1 Wave 2 Wave 3 Wave 4 Wave 5 | | (IT + HR) (Finance) (Ops) (Field) (Exec) | | | | Day 1-3 Day 4-6 Day 7-9 Day 10-12 Day 13-15 | | 50 users 75 users 100 users 80 users 25 users | | | +---------------------------------------------------------------------+ | | | Delta sync Delta sync Final | | after each wave continues cutover | | | +---------------------------------------------------------------------+Send wave-specific communication 3 business days before each wave begins. Include the migration window, expected impact, and post-migration instructions.
Initiate mail migration for the current wave. Configure delta synchronisation to continue capturing new mail until final cutover.
# Start migration with delta sync enabled Start-MW_MailboxMigration -Ticket $mwTicket ` -ConnectorId $connectorId ` -Type Full ` -UpdateNextRunTime (Get-Date).AddHours(4) # Delta sync every 4 hours- Execute file migration in parallel with mail migration. Large shared drives require dedicated migration slots running outside user migration windows.
+------------------------+ | File Migration Queue | +------------------------+ | | | User files: Parallel | | with mail migration | | | | Shared drives: Serial | | during off-hours only | | | +------------------------+Migrate calendar and contacts after mail migration completes. Free/busy lookup requires both source and target calendars to be synchronised during coexistence.
Enable target platform access for migrated users. Communicate login instructions and credential reset procedures.
# Enable user accounts post-migration $migratedUsers = Import-Csv wave1-complete.csv foreach ($user in $migratedUsers) { Set-MsolUser -UserPrincipalName $user.UPN -BlockCredential $false }- Configure mail forwarding from source to target for migrated users. This ensures mail sent to source addresses reaches users on the target platform.
# Source platform forwarding (Microsoft 365) Set-Mailbox -Identity user@source.org ` -ForwardingSmtpAddress user@target.org ` -DeliverToMailboxAndForward $falseExecute delta synchronisation for mail and files 24 hours before wave cutover. This minimises the final sync window and reduces data loss risk.
Perform final cutover synchronisation during the designated maintenance window. Disable source platform access immediately after final sync completes.
Verify wave completion against success criteria before proceeding to the next wave. Document any issues requiring remediation.
Phase 5: Cutover and decommissioning
Execute final delta synchronisation for all users 4 hours before DNS cutover. Monitor for completion before proceeding.
Update DNS records to point to the target platform. MX record changes propagate within TTL period, typically 1-4 hours.
# Pre-cutover DNS MX 10 source-platform-mx.example.com.
# Post-cutover DNS MX 10 target-platform-mx.example.com.
# Autodiscover update CNAME autodiscover -> autodiscover.target.com.Disable mail forwarding rules after DNS propagation completes. Verify mail flow by sending test messages from external addresses.
Reconfigure third-party integrations to connect to the target platform. Test each integration and verify data flow resumed correctly.
Disable source platform user access after 7-day verification period. Retain administrative access for 30 days to address data recovery requests.
# Disable all non-admin source accounts Get-MsolUser -All | Where-Object {$_.IsAdmin -eq $false} | Set-MsolUser -BlockCredential $trueExport source platform audit logs before licence termination. Retain logs for compliance requirements, typically 7 years.
Terminate source platform licensing after 30-day retention period. Document licence termination date for compliance records.
Update documentation to reflect new platform configuration. Archive source platform documentation with dated notation.
Mail migration specifics
Mail migration transfers mailbox contents including messages, folders, rules, and signatures. The migration tool connects to both source and target platforms simultaneously, extracting items from source and injecting into target.
Message fidelity depends on format compatibility between platforms. Messages migrating between Microsoft 365 tenants preserve full fidelity including rich formatting, embedded images, and attachments. Messages migrating from Google Workspace to Microsoft 365 undergo format conversion that occasionally affects complex HTML formatting.
Calendar migration requires special attention to recurring meetings and shared calendars. Recurring meeting patterns must map to equivalent patterns on the target platform. The migration tool recalculates recurrence after migration; verify that meeting series end dates and exception dates transferred correctly.
+------------------+ +------------------+ +------------------+| | | | | || Source Mailbox +---->+ Migration Tool +---->+ Target Mailbox || | | | | || - Messages | | - Extract | | - Messages || - Folders | | - Transform | | - Folders || - Rules | | - Load | | - Rules || - Calendar | | - Delta sync | | - Calendar || | | | | |+------------------+ +------------------+ +------------------+Public folder migration requires separate handling from mailbox migration. Export public folder hierarchy and permissions before migrating content. Public folders exceeding 25 GB should migrate to shared mailboxes or SharePoint team sites rather than target platform public folders.
File migration specifics
File migration transfers documents, folder structures, and sharing permissions. The migration preserves file metadata including created date, modified date, and author where target platform supports these attributes.
Permission mapping translates source sharing settings to target equivalents. Direct user permissions map straightforwardly when users exist on both platforms. Group-based permissions require groups to exist on the target before migration. External sharing permissions require policy configuration on the target to permit external sharing.
| Source permission | Target equivalent (M365) | Target equivalent (Google) |
|---|---|---|
| View | Read | Viewer |
| Edit | Edit | Editor |
| Full control | Full control | Editor (no equivalent) |
| External view | External sharing enabled + Read | Anyone with link - Viewer |
Large file handling varies by platform. Files exceeding 15 GB cannot migrate to SharePoint Online in a single operation. Split large files or use alternative storage for files exceeding platform limits.
Version history migration depends on tool capability and licensing. Most migration tools support version history but limit the number of versions transferred. Configure version limits before migration to avoid unexpected truncation.
SOURCE FILE STORAGE TARGET FILE STORAGE
+------------------------+ +------------------------+ | My Drive | | OneDrive | | +-- Documents |--------------------->| +-- Documents | | | +-- File1.docx | Preserve | | +-- File1.docx | | | +-- File2.xlsx | metadata | | +-- File2.xlsx | | +-- Projects |--------------------->| +-- Projects | | +-- 2024 | Map | +-- 2024 | | +-- ... | permissions | +-- ... | +------------------------+ +------------------------+
+------------------------+ +------------------------+ | Shared Drives | | SharePoint Sites | | +-- Finance |--------------------->| +-- Finance | | +-- Operations | Convert to | +-- Operations | | +-- HR | document | +-- HR | +------------------------+ libraries +------------------------+Coexistence configuration
The coexistence period spans from first user migration to final DNS cutover. During coexistence, both platforms operate simultaneously with mail routing, calendar free/busy lookup, and directory synchronisation maintaining user connectivity across platforms.
Mail routing during coexistence uses forwarding rules to deliver mail to migrated users on the target platform. The source platform remains the primary mail exchanger until final cutover, receiving all inbound mail and forwarding migrated users’ mail to target addresses.
Free/busy federation enables calendar lookup across platforms. Configure federation trust between source and target to display availability for meeting scheduling. Without federation, users cannot see availability of colleagues on the other platform.
+-----------------+ Federation +-----------------+| |<------------------>| || Source | Free/busy | Target || Calendar | lookup | Calendar || | | |+-----------------+ +-----------------+ ^ ^ | | | Unmigrated users | Migrated users | schedule meetings | schedule meetings | | +------------------+-------------------+ | v Meeting invitations work across platformsAddress book synchronisation keeps contact information current on both platforms. Configure directory synchronisation to replicate user attributes bidirectionally. The Global Address List on each platform should display all organisation users regardless of migration status.
Verification
After completing each migration wave, execute the following verification procedures:
- Confirm mailbox item counts match between source and target within 1% tolerance. Export statistics from both platforms and compare totals.
# Target platform item count Get-Mailbox user@target.org | Get-MailboxStatistics | Select-Object ItemCount, TotalItemSizeVerify sent and received mail flow by sending test messages. Send from external address, from source platform, and from target platform. Confirm delivery to target mailbox.
Test calendar functionality by creating meetings with attendees on both platforms. Verify free/busy lookup functions correctly during coexistence.
Confirm file access by opening 5 randomly selected files per user. Verify file content displays correctly and sharing permissions allow expected access.
Validate shared drive permissions by testing access from multiple users with different permission levels. Verify view-only users cannot edit, editors can modify, and owners can share.
Test third-party integrations by executing representative workflows. Verify data flows correctly between integrated applications and the target platform.
Expected verification results:
| Check | Pass criteria | Remediation |
|---|---|---|
| Mail item count | Within 1% of source | Re-run migration for missing items |
| Mail flow | All test messages delivered | Check forwarding rules, DNS propagation |
| Calendar sync | Meetings visible, free/busy works | Verify federation trust configuration |
| File count | Within 0.5% of source | Check for path length errors, unsupported characters |
| Permissions | Access matches source configuration | Re-run permission mapping |
Troubleshooting
| Symptom | Cause | Resolution |
|---|---|---|
| Migration stalls at 0% | Credential or permission issue | Verify service account has impersonation rights on source; regenerate application credentials |
| Mailbox migration fails with “quota exceeded” | Target mailbox smaller than source data | Increase target mailbox quota or archive older mail before migration |
| Files fail with “path too long” | Target platform path limit exceeded (400 characters for SharePoint) | Shorten folder names in source before migration; relocate deep folder structures |
| Permission mapping incomplete | Groups not created on target | Create all groups on target platform before file migration; re-run permission mapping |
| Calendar shows wrong times | Time zone mapping failed | Verify time zone settings on source accounts; manually correct affected meetings |
| Recurring meetings missing exceptions | Tool limitation on complex recurrence | Document affected meetings; manually recreate exceptions post-migration |
| External sharing links broken | Target external sharing policy more restrictive | Adjust sharing policy or recreate links manually after migration |
| Mail forwarding not working | Forwarding rule syntax differs between platforms | Use SMTP forwarding address format; verify target address accepts external mail |
| Large files fail repeatedly | Timeout during transfer | Reduce batch size; migrate large files individually during off-hours |
| Delta sync not capturing new items | Sync window too long | Reduce delta sync interval to 2 hours; verify service account access |
| Authentication failures during migration | Token expiration | Regenerate OAuth tokens; check token lifetime settings |
| Shared mailbox access denied post-migration | Automapping disabled or permissions not migrated | Re-grant Full Access and Send As permissions; enable automapping if required |
| Public folder content missing | Public folder migration ran before hierarchy migration | Migrate hierarchy first; re-run content migration |
| Contact photos not migrated | Tool does not support photo migration | Export photos from source; bulk import to target using PowerShell |
| Mail rules not functioning | Rule syntax incompatible with target | Recreate complex rules manually; document rules that cannot migrate |
Data loss prevention
Never delete source platform data until 30 days after cutover completion. Maintain read-only access to source for data recovery requests that emerge post-migration.
Rollback procedures
If critical issues require returning to the source platform, execute rollback within 72 hours of wave cutover before users accumulate significant new data on the target.
- Disable target platform access for affected users immediately. Prevent further data creation on target during rollback assessment.
Set-MsolUser -UserPrincipalName user@target.org -BlockCredential $trueRemove mail forwarding rules from source platform. Mail will resume delivery to source mailboxes.
Re-enable source platform access for affected users. Communicate rollback status and revised timeline.
Export any new data created on target platform during the failed migration window. Manually migrate critical items to source.
Analyse failure cause before re-attempting migration. Document root cause and remediation in migration log.
See also
- Collaboration Platform Strategy
- Document Management
- Email and Calendar
- Collaboration Platforms
- [Identity Platform Migration