When migrating mailboxes from on-premises Exchange to Office 365, we can run into the error where the migration fails with an error stating that the target mailbox doesn’t have an SMTP proxy matching the Microsoft Online Routing Domain.
This can happen due to a number of causes. For example the mailbox is managed by an Email Address Policy (EAP) that was not updated with the online routing domain. Alternatively, the mailbox may not be managed by an Email Address Policy. Office 365 will display the following, indicating which mailboxes failed to be migrated:
The error logged is "target mailbox doesn't Have An SMTP Proxy Matching <domainname.mail.onmicrosoft.com>".
If we look to see what EAPs are present in this organisation, there are two. The Default Policy and an additional one called Corp-Policy-1. The mailbox above is managed by the Corp-Policy-1 EAP. Looking at the settings of the EAP there is a difference between them. There is an extra address in the Default EAP – this is the TailspinToysCanada.Mail.OnMicrosoft.com address. This is not present in the Corp-Policy-1 EAP.
Get-EmailAddressPolicy | FL Name, *EMAIL*
For mailboxes located in the OU managed by the Corp-policy-1 EAP, they will pick up the above settings from that EAP.
We need to edit the Corp-Policy-1 EAP, and add in the TailspinToysCanada.Mail.OnMicrosoft.com namespace.
Updating EAP
Let’s update the Corp-Policy-1 EAP with the additional SMTP address.
Note that it does not have to be the primary address, just present on the mailbox as a secondary.
The EAP is applied once the changes have been made.
Note that the online routing domain is now present on both EAPs:
Looking at this user’s mailbox we can now see that the additional SMTP address has been added.
Now we can either wait for the next automatic iteration of Directory Synchronisation, or manually launch a delta sync to synchronise these changes to Office 365.
Once that has completed, the migration can be re-attempted.
Proactively Addressing This Issue
We can identify users who are not inheriting an EAP quickly using PowerShell. A sample PowerShell query to quickly check all mailboxes could look like this:
Get-Mailbox -ResultSize unlimited | Where-Object {$_.EmailAddressPolicyEnabled -eq $FALSE}
Cheers,
Rhoderick
Thank you, Rhoderick!
Although in my environment I had only one the default EAP that was set to apply all, with the PowerShell query I discovered 4 users that lack the
Hi David,
There will always be those pesky outliers 🙂
Cheers,
Rhoderick