There has been a number of times I have had a call where a customer wanted to Migrate users from a non HMC environment into an Exchange 2010 Sp1 or Sp2 Hosting Environment. We do have documentation for how to move users from HMC environments to 2010 hosting, but there seem to be either confusion over how do we migrate users from Non HMC environments or we don't have good documentation on how to accomplish this. So recently I had a customer who wanted to move users from an Exchange 2010 server into an Exchange 2010 SP2 hosting Tenant. Let's say they wanted to move users from Source Forest fineartschool.net into a Tenant called fineartschool.net on the Target Forest. They were having difficulty getting the Prepare-MoveRequestHosting script to work correctly. Also note that Prepare-MoveRequest script is not meant for this purpose as it won't populate some important attribute on the Migrated Target user. So the Prepare-MoveRequestHosting script is the right script to be used. There are two important User attributes that needs to be populated before you can move the mailbox from Source Forest inot the Target forest. These attributes are the following .. MsExchCU : CN=Configuration,CN=fineartschool.net,CN=ConfigurationUnits,CN=Microsoft Exchange,CN=Services, CN=Configuration,DC=Hosted,DC=lab MsExchUserRoot : OU=fineartschool.net,OU=Microsoft Exchange Hosted Organizations,DC=Hosted,DC=lab The DN for both will be the same for all of you out there, except the Tenant name and the main root domain which in my case are fineartschool.net and hosted.lab respectively. So if you are writing your own script to take care of this, these are the attributes you need to correctly populate. msExchUserAccountControl should also be populated and again this is if you are writing your own scripts or using LDIFDE tool to export your users on the Source Forest and Import them on the Target Forest. An Example of using LDIFDE tool would be like following ldifde -f exportuser.ldf -s fineart-dc -d "CN=Users,DC=fineartschool,DC=net" -p subtree -r "(&(objectCategory=person) (objectClass=User)(givenname=*))" -l "displayname,mail,mailnickname,msExchMailboxGuid,proxyaddresses, userprincipalname,objectclass" The above command will export your users on the Source forest and put them all into an LDF file. You can specify what attributes you want exported as you can see above, the most important one is the msExchMailboxGuid in this case. Then you can import these users into your Target Forest using the following command, but before you do you willhave to write a script to update your LDF file adding the other required attributes such as msExchCU, msExchUserRoot and msExchUserAccountControl etc . ldifde -i -f exportuser.ldf -s hosted-dc But you are not scripting your way into this and you won't be using the LDIFDE tool, because you just want the PowerShell scripts that comes with Exchange to work for you, so here is how you need to accomplish this and keep in mind that Prepare-MoveRequestHosting script will take care of populating the right attributes for you so you don’t have to worry about those. You just need to pass two of the important parameters to the script. Let's say you want to move a user called Robert Smith from the Source Forest into the Target Forest with SMTP address Roberts@fineartschool.net. First you need to run the following command on in the Target Exchange Hosting Server
New-Mailuser -Organaization fineartschool.net -ExternalEmailAddress: Roberts@fineartschool.net -Name “Robert Smith”
Once this is done, you are ready to run your Prepare-MoveRequestHosting Script. Run the following command
[PS] C:\Program Files\Microsoft\Exchange Server\V14\scripts>.\Prepare-MoveRequestHosting.ps1 -Identity Roberts@fineartschool.net -RemoteForestDomainController fineart-dc.fineartschool.net -RemoteForestCredential (Get-Credential fineartschool\administrator) -LocalForestDomainController Hosted-dc.hosted.lab -LocalForestCredential (Get-Credential hosted\administrator) -UseLocalObject -TargetExternalSmtpAddress "Roberts@fineartschool.net" -TargetMailUserOU "OU=fineartschool.net,OU=Microsoft Exchange Hosted Organizations ,DC=Hosted,DC=lab" -TargetMailUserCU "CN=Configuration,CN=fineartschool.net,CN=ConfigurationUnits,CN=Microsoft Exchange,CN=Services,CN=Configuration,DC=Hosted,DC=lab"
Note the two parameters above TargetMailUserOU and TargetMailUserCU, these are the previous AD atrributes I mentioned before msExchUserRoot and MsExchCU. When you run the above command you should get the following response Appending x500:/o=FINEARTSCHOOL/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients /cn=Robert Smith0a1 to proxyAddresses of Object(CN=Robert Smith,OU=fineartschool.net,OU=Microsoft Exchange Hosted Organizations,DC=Hosted,DC=lab) in Local forest. Appending x500:/o=HOSTED/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=Robert Smithdd1 to proxyAddresses of Object(CN=Robert Smith, CN=Users,DC=fineartschool,DC=net) in Source forest. Preparation for Roberts@fineartschool.net done. Local recipient info Merged. 1 mailbox(s) ready to move. Now you are ready to move the Mailbox from your Source Forest Exchange server into your Target Forest Exchange Hosting server by running the following command
[PS] C:\Program Files\Microsoft\Exchange Server\V14\scripts>New-MoveRequest -Identity Roberts@fineartschool.net -TargetDatabase "Mailbox Database 1658210873" -RemoteGlobalCatalog "fineart-DC.fineartschool.net" -Remote -RemoteHostName "fineart-E2k10.fineartschool.net" -RemoteCredential(Get-Credential fineartschool\administrator) -TargetDeliveryDomain "fineartschool.net"
DisplayName Status TotalMailboxSize TotalArchiveSize PercentComplete ----------- ------ ---------------- ---------------- --------------- Robert Smith Queued 2.083 MB (2,184,646 by... 0 If you were to move users from a Source Forest with Exchange 2003 server, things would be a bit different. For example no MRSProxy here to enable or your New-MoveRequest Command would have to also include -RemoteLegacy parameter.