Failed mailbox migration to Office 365: mrsproxy.svc’failed because no service was listening on the specified endpoint. The remote server returned an error: (404) Not Found

I was doing a migration between Exchange 2013 and Office 365 in a Hybrid configuration when I recieved the above error message. Couldn’t quite figure out why until I stumbled accross a forum thread that pointed me in the right direction.

This is what you have to check out and remediate if you have this error:

The ExchangeGuids of on-premise users are different to the ExchangeGuids of the corresponding users in Office 365.

Update the online user’s ExchangeGuid to match the on-premise ExchangeGuid and start migration.

1. On the on-premise Exchange server:

Get-MailBox -Identity userID | Select ExchangeGuid

2. In an Office 365 PowerShell session:

Get-MailUser -Identity UserID | Select ExchangeGuid

If the results don’t match, copy the guid result from command 1 and then run the following command in the Office 365 PowerShell session:

Set-MailUser -Identity userID -ExchangeGuid “copied guid”

Start migration:

$Cred = Get-Credential

$s = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell -Credential $cred -Authentication Basic -AllowRedirection

Import-PSSession $s

$OnPremAdmin = Get-Credentials

New-MoveRequest -identity “UPN” -Remote -RemoteHostName “remote host ex OWA URL mail.domain.com” -RemoteCredential $OnPremAdmin -TargetDeliveryDomain domain.mail.onmicrosoft.com

Lync 2010/2013 and Exchange Online

As the distribution of Office 365 spreads accross the planet, the need for hybrid deployments rises. In many scenarios we find that environments are partly hosted on-prem and in the cloud. The reason for  such deployments vary in some degree, and when it comes to Lync deployments it’s often due to enterprise voice which is not possible in the cloud(at the moment).

To implement a hybrid configuration where Lync resides on-prem and Exchange is hosted online, we have to do some configuration in the on-prem environment.
First, if the Lync environment is a Lync 2010 installation the minimum requirement is that the March 2013 server Update is installed on the Lync servers. In addition to this, a standalone server with Lync 2013 Administrative Tools has to be deployed in order to be able to connect with Office365. All PowerShell commands against the Online environment has to be executed on the server running Lync 2013 Admin Tools.

To enable Lync On-prem integration with Exchange Online, the first step is to make sure that federation is allowed(most environments already have open federation enabled):

Set-CsAccessEdgeConfiguration -AllowFederatedUsers $True

The next step is to configure the shared address space with Exchange Online:

New-CsHostingProvider -Identity "Exchange Online" -Enabled $True -EnabledSharedAddressSpace $True -HostsOCSUsers $False -ProxyFqdn "exap.um.outlook.com" -IsLocal $False -VerificationLevel UseSourceVerification
  • Identity specifies a unique string value identifier for the hosting provider that you are creating (for example, “Exchange Online”). Values that contain spaces must be in double quotes.
  • Enabled indicates whether the network connection between your domain and the hosting provider is enabled. This must be set to True.
  • EnabledSharedAddressSpace indicates whether the hosting provider will be used in a shared SIP address space scenario. This must be set to True.
  • HostsOCSUsers indicates whether the hosting provider is used to host Office Communications Server or Lync Server. This must be set to False.
  • ProxyFQDN specifies the fully qualified domain name (FQDN) for the proxy server used by the hosting provider. For Exchange Online, the FQDN is exap.um.outlook.com.
  • IsLocal indicates whether the proxy server used by the hosting provider is contained within your Lync Server topology. This must be set to False.
  • VerificationLevel Indicates the verification level allowed for messages that are sent to and from the hosted provider. Specify UseSourceVerification, which relies on the verification level included in messages sent from the hosting provider. If this level is not specified, the message will be rejected as being unverifiable.

Check replication status to verify that the changes has replicated to the access edge server:

Get-CsManagementStoreReplicationStatus