Skip to main content

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:

RequirementSpecificationVerification method
Target platform provisionedTenant created, domains verified, admin access confirmedSign in to admin portal
LicensingSufficient licences for all users plus 10% buffer for conflictsLicence inventory count
Source platform accessGlobal admin or equivalent with export permissionsTest data export on sample mailbox
Migration toolingTool selected, licensed, connectivity testedRun connectivity validation
Network capacityMinimum 100 Mbps sustained for production migrationBandwidth test during business hours
DNS accessAbility to modify MX, autodiscover, CNAME recordsTest record creation in sandbox subdomain
User communication planTemplates approved, distribution lists confirmedSend test communication
Rollback planDocumented procedures, tested on pilot groupTabletop review with stakeholders
Support capacityHelpdesk briefed, escalation path definedConfirm support staff availability for cutover

Verify source platform data volumes to estimate migration duration:

Terminal window
# For Microsoft 365 source - export mailbox statistics
Get-Mailbox -ResultSize Unlimited | Get-MailboxStatistics |
Select-Object DisplayName, TotalItemSize, ItemCount |
Export-Csv mailbox-inventory.csv
# For Google Workspace source - use Admin SDK
gam print users fields name,email,suspended |
gam csv - gam user ~email print filecount

Calculate expected migration duration using these baseline rates:

Data typeMigration rateExample calculation
Email2-5 GB per hour per mailbox50 GB mailbox = 10-25 hours
Files1-3 GB per hour per user20 GB files = 7-20 hours
Shared drives0.5-2 GB per hour500 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

  1. 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.
Terminal window
# Microsoft 365 source
Get-MsolUser -All | Select-Object UserPrincipalName, DisplayName,
Department, UsageLocation, IsLicensed |
Export-Csv user-inventory.csv -NoTypeInformation
Terminal window
# Google Workspace source
gam print users fields primaryEmail,name,orgUnitPath,suspended,
isAdmin,creationTime > user-inventory.csv
  1. Generate mailbox size reports to identify large mailboxes requiring special handling. Flag any mailbox exceeding 50 GB for extended migration windows.
Terminal window
Get-Mailbox -ResultSize Unlimited | Get-MailboxStatistics |
Where-Object {$_.TotalItemSize -gt 50GB} |
Select-Object DisplayName, TotalItemSize, ItemCount
  1. Inventory shared mailboxes, distribution lists, and mail-enabled groups. Document ownership and membership for recreation on the target platform.
Terminal window
# 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
  1. Map file storage structure, identifying shared drives, team sites, and individual storage quotas. Record permission inheritance patterns and external sharing configurations.
Terminal window
# Google Workspace shared drives
gam print teamdrives fields id,name,createdTime,
organizerCount,memberCount > shared-drives.csv
  1. Document third-party integrations connected to the source platform. For each integration, record the application name, authentication method, data accessed, and business owner.
Terminal window
# Microsoft 365 OAuth applications
Get-MsolServicePrincipal | Where-Object {$_.AppPrincipalId -ne $null} |
Select-Object DisplayName, AppPrincipalId, AccountEnabled
  1. Identify mail flow rules, transport rules, and email security configurations requiring recreation. Export rule configurations for reference during target platform setup.
Terminal window
Get-TransportRule | Select-Object Name, State, Priority,
Conditions, Actions | Export-Csv transport-rules.csv

Phase 2: Target platform preparation

  1. 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:

Terminal window
# Enable modern authentication
Set-OrganizationConfig -OAuth2ClientProfileEnabled $true
# Configure default sharing policy
Set-SharingPolicy -Identity "Default Sharing Policy" `
-Domains "Anonymous:CalendarSharingFreeBusySimple"
  1. 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
  1. 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) |
| | | | | |
+------------------+ +------------------+ +------------------+
  1. Create the target organisational unit structure mirroring source platform hierarchy. Consistent structure simplifies permission migration and policy application.

  2. Provision user accounts on the target platform in a disabled state. Account creation must precede data migration to establish target mailboxes and storage locations.

Terminal window
# Bulk user creation from inventory
Import-Csv user-inventory.csv | ForEach-Object {
New-MsolUser -UserPrincipalName $_.UserPrincipalName `
-DisplayName $_.DisplayName `
-Department $_.Department `
-UsageLocation $_.UsageLocation `
-BlockCredential $true
}
  1. Recreate distribution lists and shared mailboxes on the target platform. Preserve the same email addresses as aliases to maintain mail flow during coexistence.

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

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

  2. Communicate pilot timeline and expectations to selected users 5 business days before migration. Provide the support contact and set expectations for temporary disruption.

  3. Execute mail migration for pilot users during off-hours. Monitor migration throughput and error rates throughout the process.

Terminal window
# 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 $connectorId
  1. Execute file migration for pilot users, preserving folder structure and sharing permissions. Verify permission mapping completed correctly by testing access from shared recipients.

  2. Verify calendar items migrated with correct time zones and recurrence patterns. Check that meeting invitations from the source platform still function for migrated users.

  3. Collect pilot user feedback through structured interviews. Document issues encountered, workarounds required, and suggestions for production migration.

  4. Analyse pilot metrics against success criteria:

    MetricTargetAction if missed
    Mail migration completeness99.5% of itemsInvestigate failed items, adjust batch size
    File migration completeness99% of filesCheck permission errors, retry with elevated access
    User-reported issuesFewer than 2 per userEnhance documentation, adjust training
    Migration throughputWithin 20% of estimateAdjust parallelism, check network capacity
  5. Remediate pilot issues before production migration. Update procedures, communication templates, and support documentation based on pilot learnings.

Phase 4: Production migration

  1. 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 |
| |
+---------------------------------------------------------------------+
  1. Send wave-specific communication 3 business days before each wave begins. Include the migration window, expected impact, and post-migration instructions.

  2. Initiate mail migration for the current wave. Configure delta synchronisation to continue capturing new mail until final cutover.

Terminal window
# 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
  1. 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 |
| |
+------------------------+
  1. Migrate calendar and contacts after mail migration completes. Free/busy lookup requires both source and target calendars to be synchronised during coexistence.

  2. Enable target platform access for migrated users. Communicate login instructions and credential reset procedures.

Terminal window
# Enable user accounts post-migration
$migratedUsers = Import-Csv wave1-complete.csv
foreach ($user in $migratedUsers) {
Set-MsolUser -UserPrincipalName $user.UPN -BlockCredential $false
}
  1. Configure mail forwarding from source to target for migrated users. This ensures mail sent to source addresses reaches users on the target platform.
Terminal window
# Source platform forwarding (Microsoft 365)
Set-Mailbox -Identity user@source.org `
-ForwardingSmtpAddress user@target.org `
-DeliverToMailboxAndForward $false
  1. Execute delta synchronisation for mail and files 24 hours before wave cutover. This minimises the final sync window and reduces data loss risk.

  2. Perform final cutover synchronisation during the designated maintenance window. Disable source platform access immediately after final sync completes.

  3. Verify wave completion against success criteria before proceeding to the next wave. Document any issues requiring remediation.

Phase 5: Cutover and decommissioning

  1. Execute final delta synchronisation for all users 4 hours before DNS cutover. Monitor for completion before proceeding.

  2. 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.
  1. Disable mail forwarding rules after DNS propagation completes. Verify mail flow by sending test messages from external addresses.

  2. Reconfigure third-party integrations to connect to the target platform. Test each integration and verify data flow resumed correctly.

  3. Disable source platform user access after 7-day verification period. Retain administrative access for 30 days to address data recovery requests.

Terminal window
# Disable all non-admin source accounts
Get-MsolUser -All | Where-Object {$_.IsAdmin -eq $false} |
Set-MsolUser -BlockCredential $true
  1. Export source platform audit logs before licence termination. Retain logs for compliance requirements, typically 7 years.

  2. Terminate source platform licensing after 30-day retention period. Document licence termination date for compliance records.

  3. 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 permissionTarget equivalent (M365)Target equivalent (Google)
ViewReadViewer
EditEditEditor
Full controlFull controlEditor (no equivalent)
External viewExternal sharing enabled + ReadAnyone 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 platforms

Address 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:

  1. Confirm mailbox item counts match between source and target within 1% tolerance. Export statistics from both platforms and compare totals.
Terminal window
# Target platform item count
Get-Mailbox user@target.org | Get-MailboxStatistics |
Select-Object ItemCount, TotalItemSize
  1. Verify 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.

  2. Test calendar functionality by creating meetings with attendees on both platforms. Verify free/busy lookup functions correctly during coexistence.

  3. Confirm file access by opening 5 randomly selected files per user. Verify file content displays correctly and sharing permissions allow expected access.

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

  5. Test third-party integrations by executing representative workflows. Verify data flows correctly between integrated applications and the target platform.

Expected verification results:

CheckPass criteriaRemediation
Mail item countWithin 1% of sourceRe-run migration for missing items
Mail flowAll test messages deliveredCheck forwarding rules, DNS propagation
Calendar syncMeetings visible, free/busy worksVerify federation trust configuration
File countWithin 0.5% of sourceCheck for path length errors, unsupported characters
PermissionsAccess matches source configurationRe-run permission mapping

Troubleshooting

SymptomCauseResolution
Migration stalls at 0%Credential or permission issueVerify service account has impersonation rights on source; regenerate application credentials
Mailbox migration fails with “quota exceeded”Target mailbox smaller than source dataIncrease 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 incompleteGroups not created on targetCreate all groups on target platform before file migration; re-run permission mapping
Calendar shows wrong timesTime zone mapping failedVerify time zone settings on source accounts; manually correct affected meetings
Recurring meetings missing exceptionsTool limitation on complex recurrenceDocument affected meetings; manually recreate exceptions post-migration
External sharing links brokenTarget external sharing policy more restrictiveAdjust sharing policy or recreate links manually after migration
Mail forwarding not workingForwarding rule syntax differs between platformsUse SMTP forwarding address format; verify target address accepts external mail
Large files fail repeatedlyTimeout during transferReduce batch size; migrate large files individually during off-hours
Delta sync not capturing new itemsSync window too longReduce delta sync interval to 2 hours; verify service account access
Authentication failures during migrationToken expirationRegenerate OAuth tokens; check token lifetime settings
Shared mailbox access denied post-migrationAutomapping disabled or permissions not migratedRe-grant Full Access and Send As permissions; enable automapping if required
Public folder content missingPublic folder migration ran before hierarchy migrationMigrate hierarchy first; re-run content migration
Contact photos not migratedTool does not support photo migrationExport photos from source; bulk import to target using PowerShell
Mail rules not functioningRule syntax incompatible with targetRecreate 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.

  1. Disable target platform access for affected users immediately. Prevent further data creation on target during rollback assessment.
Terminal window
Set-MsolUser -UserPrincipalName user@target.org -BlockCredential $true
  1. Remove mail forwarding rules from source platform. Mail will resume delivery to source mailboxes.

  2. Re-enable source platform access for affected users. Communicate rollback status and revised timeline.

  3. Export any new data created on target platform during the failed migration window. Manually migrate critical items to source.

  4. Analyse failure cause before re-attempting migration. Document root cause and remediation in migration log.

See also