Receive error: Target mailbox doesn't have an SMTP proxy matching '.mail.onmicrosoft.com' when move mailbox to Office 365

Recently I was working on Exchange Hybrid Deployment for one of our customer. The Hybrid Configuration process itself went smoothly. No errors for HCW. 

The problems came when I tried to move mailbox to Exchange Online. The migration fails with error:
Target mailbox doesn’t have an SMTP proxy matching ‘.mail.onmicrosoft.com’"

To check that I ran the following command against the On-premise Exchange.

Get-Mailbox “O365 Test5” | fl and check the EmailAddress filed

Then I ran get-mailuser in Exchange Online. Because the mailbox hasn’t been migrated, the user still show up as Mailuser(Contact) in Office 365.

Get-MailUser “o365 test6” |fl

Noticed the proxy address “contoso.mail.onmicrosoft.com” does not show up into the Azure AD object. The user object in Office 365  only has our primary SMTP address “[email protected]” and “[email protected]” stamped. “CONTOSO.MAIL.onmicrosoft.com” is missing from the address list.

After review the DirSync rules, I notice for user object, the proxyAddress attribute does not have an “Import” rule associated with it. As a test I manually added a Import rule for “proxyAddresses”.
The rule details are:

cd.all:proxyAddresses->mv.all:proxyAddresses

After kicked off a full sync by run “Start-OnlineCoexistenceSync”. 

“get-mailuser” was able to return with the SMTP addresses “contoso.mail.onmicrosoft.com”. Mailbox migration to Office 365 went successfully after that.