Why a GoDaddy Office 365 Migration Is Really a Domain Swap, Not a Mail Move

TL;DR
- GoDaddy's Office 365 platform uses the same MX records as standard Office 365, so the usual MX cutover does not apply and the domain has to be removed from GoDaddy and recreated in the destination tenant.
- Done correctly, the domain swap holds downtime to roughly 5 to 15 minutes rather than a full mail-cutover window.
- If you would rather avoid a migration entirely, defederating the GoDaddy tenant moves you to a standard tenant with no migration and no downtime.
- Before you can remove the domain from GoDaddy, every user UPN, alias, and group carrying that domain has to be moved to the .onmicrosoft.com address, which PowerShell handles in bulk.
- BitTitan's Deployment Pro agent reconfigures Outlook profiles after the cutover, and tracking its DMA heartbeat per device tells you which users still need attention.
Most Office 365 migrations end with an MX record change. A GoDaddy Office 365 migration does not, and that is the detail that trips people up. GoDaddy resells the same Office 365 platform Microsoft sells directly, so the MX records on a GoDaddy tenant are identical to the ones you would point at in a regular tenant. There is nothing to cut over. The real obstacle is the domain registration itself: you have to remove the primary domain from GoDaddy and recreate it in the destination tenant. Sequenced correctly, downtime stays in the 5 to 15 minute range.
Before you commit to a migration at all, know there is a shortcut. Defederating the GoDaddy tenant converts it to a standard tenant with no migration and no downtime. That solution is here. Migrate only when the customer needs a net-new tenant or defederation is not an option.
This is a high-level overview of the migration steps using BitTitan. For the complete step-by-step guide with screenshots, follow this playbook PDF (opens in new tab). The guide is specific to BitTitan, but the same concepts apply with any tool.
Stand up the destination tenant
- Provision a net-new tenant in Office 365. It is provisioned with the .onmicrosoft.com domain. Purchase it directly or under the CSP model through a distributor.
- Pre-stage the domain entry. In the 365 Admin Center, go to Setup > Domains > Add Domains. This is where you will later add and verify the domain with a TXT record once it has been removed from GoDaddy. For now, users keep .onmicrosoft.com as their primary SMTP address.
- Add users and apply licenses one at a time, by bulk upload via PowerShell, or by bulk upload via CSV.
To bulk import users with passwords:
Import-Csv -Path 'FilePath' | foreach {New-MsolUser -UserPrincipalName $_.UserPrincipalName -FirstName $_.FirstName -LastName $_.LastName -DisplayName $_.DisplayName -Password $_.Password -ForceChangePassword $False}Set impersonation rights for the admin user. Connect to Exchange Online with PowerShell (opens in new tab) and run:
New-ManagementRoleAssignment -Role ApplicationImpersonation -User <admin_user_name>Prepare the GoDaddy source environment
- Set impersonation rights for the admin user on the source side too. Connect to GoDaddy's Exchange Online with PowerShell (opens in new tab) and run the same cmdlet:
New-ManagementRoleAssignment -Role ApplicationImpersonation -User <admin_user_name>- Plan the downtime window. Decide when you will remove the domain from GoDaddy and notify users accordingly (opens in new tab).
- Notify GoDaddy of the planned domain removal. Tell GoDaddy about the planned removal 24 hours prior to avoid delays.
- Upgrade software on workstations. If applicable, install the latest Office 365 software on all user workstations.
Set up a BitTitan account
- Create a login (opens in new tab) for a BitTitan username and password.
- Create a customer by entering the primary domain name and customer name.
Push the Outlook reconfiguration agent
BitTitan includes a tool called Deployment Pro that reconfigures Outlook profiles after the migration. You can push it out through GPO or by email.
- Decide on GPO or email delivery. GPO instructions (opens in new tab) or email instructions (opens in new tab).
- Track users with the agent installed. Devices register and match a user's email address to a computer in a one-to-one relationship. Each computer reports a "heartbeat."


Prepare the migration endpoints
- Set up source and destination endpoints in the BitTitan portal. The source endpoint is found under Office 365. The destination is Office 365. Provide admin credentials for each endpoint.
- Autodiscover users. Clean up the user list as needed, and remediate UPN issues by clicking the pencil icon next to a user. The source should contain the .com address and the destination should contain the .onmicrosoft.com address.
- Verify credentials. This tells you whether there are errors. The most typical errors are insufficient impersonation rights or wrong admin credentials. A successful check shows "Completed Verification."
- Subscribe users. Select all users, click the last icon on the top toolbar (three lines), and choose "Apply User Migration Bundle." It takes 3 to 5 minutes to propagate.
Run the migration passes
- Run a prestage pass bringing mail from GoDaddy to Office 365. This brings over the bulk of the data before you remove the domain. Set it prior to 60 days. Any user whose status changes to "Failed" is almost 100% due to a server timeout. Simply re-run those users.

- Run a full pass to bring over the remaining mail, calendars, contacts, notes, and rules. Start once the prestage pass has completed. You can run up to 10 delta passes. Make sure everyone goes into a "Completed" status.
The domain swap: remove from GoDaddy
This is the part that is unique to GoDaddy. To remove the domain, it must be detached from every record in the portal first.
Bulk update all user UPNs to the .onmicrosoft.com domain in GoDaddy:
$UserCredential = Get-Credential
Connect-MsolService -Credential $UserCredential
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection
Import-PSSession $Session -AllowClobber
$testpath = test-path c:\temp; If ($testpath -eq $false) {new-item -type directory c:\temp}; $dataout = @();
Get-MsolUser -All | ? {$_.UserPrincipalName -match "domain.com"} | % {Set-MsolUserPrincipalName -ObjectId $_.objectId -NewUserPrincipalName ($_.UserPrincipalName.Split("@")[0] + "@domain.onmicrosoft.com"); $dataout += "$($_.UserPrincipalName)" ; $_.UserPrincipalName };$dataout | out-file c:\temp\UPNChangeOutput.txtRemove all aliases carrying the domain:
$Records = Get-mailbox -ResultSize Unlimited| where {$_.emailaddresses -like "smtp:*@domain.com"} | Select-Object DisplayName,@{Name="EmailAddresses";Expression={$_.EmailAddresses |Where-Object {$_ -like "smtp:*domain.com"}}}
foreach ($record in $Records)
{
write-host "Removing Alias" $record.EmailAddresses "for" $record.DisplayName
Set-Mailbox $record.DisplayName -EmailAddresses @{Remove=$record.EmailAddresses}
}Remove all groups carrying the domain:
Get-MsolGroup -all | ?{$_.emailaddress -match "domain.com"} | Remove-MsolGroup -forceRemove the domain. The portal notifies you if any users or groups still have the domain attached to their profile. Work with GoDaddy if you need additional assistance.
The domain swap: recreate in the destination tenant
These steps are essentially the reverse of what you just did in GoDaddy.
Add the domain to 365. In the 365 Admin Center, go to Setup > Domains > Add Domains. Add the domain and verify with a TXT record. It can take about 5 minutes before you can recreate it.
Bulk update all user UPNs back to the .com domain:
$UserCredential = Get-Credential
Connect-MsolService -Credential $UserCredential
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection
Import-PSSession $Session -AllowClobber
$testpath = test-path c:\temp; If ($testpath -eq $false) {new-item -type directory c:\temp}; $dataout = @();
Get-MsolUser -All | ? {$_.UserPrincipalName -match "domain.onmicrosoft.com"} | % {Set-MsolUserPrincipalName -ObjectId $_.objectId -NewUserPrincipalName ($_.UserPrincipalName.Split("@")[0] + "@domain.com"); $dataout += "$($_.UserPrincipalName)" ; $_.UserPrincipalName };$dataout | out-file c:\temp\UPNChangeOutput.txtBulk upload distribution lists. Create two CSVs: one with the distribution group name and primary SMTP address, and one with the group name and the members of that group.
Import-Csv -Path 'File Path' | foreach {New-Distributiongroup -Name $_.Name -PrimarySmtpAddress $_.Address }
Import-Csv 'File Path' | foreach {Add-DistributionGroupMember -Identity $_.DL -Member $_.Alias}Post-migration cleanup
- Confirm the DMA agent ran successfully. DMA status goes into "Completed" after successful authentication by the end user. Any user who fails authentication three times goes into an "error" status. Reschedule those users and make sure they have the correct 365 password.

- Hand out mobile reconfiguration guides. Mobile users can set up their mailbox on their phone with these guides: iPhone (opens in new tab) and Android (opens in new tab).
Frequently asked questions
Do I have to migrate a GoDaddy Office 365 tenant at all?
No. Because GoDaddy resells the same Office 365 platform, you can defederate the tenant instead, which converts it to a standard tenant with no migration and no downtime. Migrate only when the customer needs a clean net-new tenant or you cannot defederate. See the defederation walkthrough at https://tminus365.com/defederating-godaddy-365/.
Why can't I just change MX records like a normal Office 365 migration?
GoDaddy's Office 365 uses the same MX records as standard Office 365, so there is nothing to cut over. The mailbox routing is identical on both sides. The blocker is the domain registration itself, which is why you remove it from GoDaddy and recreate it in the destination tenant.
How long is the downtime?
If the domain removal and recreation are sequenced correctly, downtime should be limited to about 5 to 15 minutes, the window between removing the domain from GoDaddy and verifying it in the destination tenant.
Why notify GoDaddy before removing the domain?
GoDaddy can delay a domain removal if it is not expected. Let them know about the planned removal 24 hours in advance to avoid that delay during your cutover window.
The migration is day one, not the finish line
A fresh tenant is a clean tenant for about a week. CloudCapsule checks 250+ security controls across every tenant you manage in about 60 seconds each, so the new environment does not quietly drift out of compliance.
Run a free scan
Written by
Nick Ross
CEO · Microsoft MVP · Founder, T-Minus 365
Nick is not just a CEO, he's a respected thought leader and influencer in the MSP space. Tens of thousands of MSPs learn through his YouTube channel, T-Minus365. Nick has been honored as a three-time Microsoft MVP for his educational content; his expertise and influence are the backbone of our mission, ensuring that you are in the best hands when it comes to security.
Nick joined Pax8 in 2017, where he would ultimately oversee product management for PSA and Microsoft integrations. Following his tenure at Pax8, Nick has continued to demonstrate his leadership prowess as an executive at various MSPs, culminating in his most recent role at Sourcepass.
Nick holds a Bachelor's Degree in Business Management from Florida State University, as well as a Minor Degree in Entrepreneurship. In his free time, Nick is an avid hiker, reader, and fitness-junkie.


