Cross-Forest Exchange 2007 Migrations
Having done cross-forest
migrations since the Exchange 5.5 days, let me say that they are
complex, there are many things that can go wrong and that it is almost
ALWAYS cheaper to do it without expensive tools as long as you are
careful and do extensive testing.
First, let me start off with
one of the first thing you will likely see in your tests:
“Failed to set basic mailbox
information, will retry in 60 seconds"
This error is recoverable. In
fact, it is really just a warning that it took a little longer to stage
the target Exchange Mailbox.

So what
is happening is Move-Mailbox is in the process of Mailbox-enabling the
target AD account and it was unable to confirm the creation. The tool is
designed to wait a while and then confirm its existence again. Now, here
is where it gets strange….if you search enough you will find the
Move-Mailbox command line reference on TechNet.
http://technet.microsoft.com/en-us/library/aa997599.aspx
This
article includes the following details on Retry Interval:
|
RetryInterval
|
Optional
|
Microsoft.Exchange.Data.EnhancedTimeSpan
|
The
RetryInterval
parameter specifies the interval for retrieving the move's
status from the server.
|
Unfortunately, Microsoft leaves out two very important
pieces of information:
1)
The Syntax is
00:00:00 (Hours:Minutes:Seconds)
2)
No matter what you
use as a valid, the status screen will continue to show a 60 second
delay ““Failed to set basic mailbox information, will retry in 60
seconds"
For
Syntax and testing, I would recommend you start with 00:00:30 which is
essentially half the default period. Your Move-Mailbox Script should
look something like this:
Move-Mailbox -identity $item -TargetDatabase
$TargetExchange -GlobalCatalog $GC -SourceForestGlobalCatalog $SGC -NTAccountOU
$OU -SourceForestCredential $SourceCredential -TargetForestCredential $TargetCredential
-confirm:$False -BadItemLimit 0
-RetryInterval
00:00:45 -SourceMailboxCleanupOptions
MailEnableSourceAccount -ReportFile $report
Now, here is where things get
fun. After you add the -RetryInterval
00:00:45 the status screen will still
say “will retry for 60 seconds” but if you time it you will see that the
value you entered is honored.
In the migrations I have done, I have found that 30-45
seconds seem to work best for me. Also, I have also found that while
Move-Mailbox tends to do a pretty good job at moving messages, it does
not seem to be as robust when working with the AD. The performance of
the DC, the proximity to the script execution and other less-measurable
factors can easily trip this up in a cross-forest migration. I recommend
that you push as much of the AD tasks outside of Move-Mailbox in order
to increase the effectiveness of your migration. In short, try to do the
Account Setup and Account cleanup tasks OUTSIDE of Move-Mailbox.
I have some scripts, a project overview and other
helpful suggestions for a Cross-Forest move of mailboxes. Stay tuned!
|