Migrate Exchange 2000 or 2003 to Exchange 2007

A couple of notes ahead of time:

  • Edge Transport server is the only server that should be left in Workgroup mode
  • Set your application log files to 40MB
  • If your memory is under 8GB set the Pagefile to 1.5x memory.  Else set the page file the same size as the amount of memory you have plus 10MB.  If you use a separate disk for your page file make sure you leave 100MB on your OS drive for dump purposes.

Run ExBPA or Exchange best practice analyzer:
ExBPA tests your existing organization for readiness before installing Exchange 2007.  It can be downloaded here http://technet.microsoft.com/en-us/exchange/bb288481.aspx
Servers Deployed in the following order:

  1. Client Access Server
  2. Hub Transport server
  3. Mailbox server
  4. Unified Messaging Server

Install Active Directory Domain Services remote management tools:
ServerManagerCmd -i RSAT-ADDS
Install IIS requirements for Exchange Management Console:
ServerManagerCmd -i PowerShell
ServerManagerCmd -i Web-Metabase
ServerManagerCmd -i Web-Lgcy-Mgmt-Console
Install the prerequisites for client access servers:
ServerManagerCmd -i PowerShell
ServerManagerCmd -i Web-Server
ServerManagerCmd -i Web-ISAPI-Ext
ServerManagerCmd -i Web-Metabase
ServerManagerCmd -i Web-Lgcy-Mgmt-Console
ServerManagerCmd -i Web-Basic-Auth
ServerManagerCmd -i Web-Digest-Auth
ServerManagerCmd -i Web-Windows-Auth
ServerManagerCmd -i Web-Dyn-Compression
If the CAS server is going to support Outlook anywhere clients:
ServerManagerCmd -i RPC-over-HTTP-proxy
Install Edge Transport Server prerequisites:
ServerManagerCmd -i PowerShell
Download and install ADAM if the server is running Windows Server 2003
If the server is running Windows Server 2008 install the Active Directory Lightweight Service s role. ServerManagerCmd -i ADLDS
Install Hub Transport prerequisites:
ServerManagerCmd -i PowerShell
Install Mailbox server prerequisites:
ServerManagerCmd -i PowerShell
ServerManagerCmd -i Web-Server
ServerManagerCmd -i Web-ISAPI-Ext
ServerManagerCmd -i Web-Metabase
ServerManagerCmd -i Web-Lgcy-Mgmt-Console
ServerManagerCmd -i Web-Basic-Auth
ServerManagerCmd -i Web-Windows-Auth
If the mailbox server is clustered
ServerManagerCmd -i Failover-Clustering
Unified Messaging server prerequisites:
ServerManagerCmd -i PowerShell
ServerManagerCmd -i Desktop-Experience
Install the prerequisites if the server will be the Hub Transport, Client Access Server, and Mailbox Server:
ServerManagerCmd -i PowerShell
ServerManagerCmd -i Web-Server
ServerManagerCmd -i Web-ISAPI-Ext
ServerManagerCmd -i Web-Metabase
ServerManagerCmd -i Web-Lgcy-Mgmt-Console
ServerManagerCmd -i Web-Basic-Auth
ServerManagerCmd -i Web-Digest-Auth
ServerManagerCmd -i Web-Windows-Auth
ServerManagerCmd -i Web-Dyn-Compression
If you will be supporting Outlook Anywhere clients:
ServerManagerCmd -i RPC-over-HTTP-proxy
Prepare Legacy Permissions:
Insert the Exchange 2007 DVD.  From the CMD prompt browse to the disc and type setup /prepareLegacyExchangePermissions.
This does 3 things:

  1. Copies the setup files.
  2. Performs Exchange Prerequisite test
  3. Updates the legacy permissions

Extend AD Schema

Setup /PrepareAD

After you run the above command you should see a new administrative group in ESM named FYDIBOHF23SPDLT

Setup /PrepareSchema

Setup /PrepareDomain

This does 3 things:

  1. Copies setup files
  2. Performs Organizational checks
  3. Prepares the organization

Install Exchange 2007 Prerequisites

.NET Framework 2.0

MMC 3.0

Exchange Management Shell – do this by clicking on msh_setup.msi

Replace front end servers with client access servers

Replace Exchange 2000/2003 front end servers with CAS servers.  2007 CAS servers can manage Exchange 2000/2003/2007 back end servers.  So if this is the first server you upgrade it can support your back end configuration.

Check logs for errors:


Migrate bridge servers with Hub Transport Servers

Hub Transport servers can route mail for Exchange 2000/2003/2007.  Keep in mind bridgehead servers also support 2000/2003/2007 just as long as you have a routing group connector between every group.

If you receive the oganization name during setup then you must STOP immediately.  This means it is not seeing your existing Exchange configuration.  The page you should be receiving is Mail Flow Server page for interoperability with an existing exchange environment.  If you get this page type the name of the server that you will use to route messages from this server.  This will create a routing group connector between this server and your existing 2000/2003 servers.  The server you want to choose in this instance is the existing bridgehead server.  If you do not have a bridgehead server then select a server that will be one of the last 2000/2003 servers during the migration.  This way interoptibility lasts until you decomission this server. 

If you fail this step for whatever reason you can create a routing group connector between Exchange 2007 and your old environment by running the following:

New-RoutingGroupConnector -Name “Ex2003 to Ex2007 RGC” -SourceTransportServers “E2007Hub.N2NetworkSolutions.com” -TargetTransportServers “Exch2003BridgeHead.N2NetworkSolutions.com” -Cost 10 -Bidirectional $true -PublicFoldersEnabled $True

 An example of an unattended install is as follows:

Setup /mode:install /roles:ClientAccess,HubTransport,Mailbox /LegacyRoutingServer: Exchange2003.N2NetworkSolutions.com

After you replace the front end severs with CAS servers verify through OWA that everything is functioning and remove your old front end severs.

Create internet send connector:

Right click Hub-Transport and select new Send Connector.  Type Internet E-mail as the name.  Select Internet on the intended use drop down.

On the address space screen simply select * to route all mail.

On the network settings screen if you have an SMTP gateway or Edge Transport server in place enter it here.  Else let the Hub Transport server route your mail by selecting Use DNS to route mail automatically.

Click next on the hub transport screen.

The next thing you need to do is install the new Exchange 2007 mailbox server.  This can easily be done by running setup.exe and selecting the mailbox role.

Modify default receive connector:

Go to the hub transport configuration in the server manager.  Modify the default receive connector and add Anonymous Users.  By default the hub transport server accepts email from the edge transport and anonymous is not required.  Before enabling this however you should have outside SMTP protection through an internal SMTP gateway or 3rd party filtering company.

Install Mailbox Server:

Setup.com /mode:install /roles:MB 

Move mailboxes:

  1. Launch Exchange Management Console (EMC)EMC is your Exchange 2007 server do not attempt to move your mailboxes from your 2003 ESM.
  2. Go to Recipient configuration>mailbox container.  In the recipient type column you’ll see two types here legacy mailbox and mailbox user.  Legacy means the user is still on Exchange 2000/2003, mailbox user means 2007
  3. Highlight all the users you want to m0ve to 2007 right click and select move mailbox.
  4. The next window gives you the ability to select your new server storage group and database.  Select accordingly.
  5. In the next select tell it to skip mailbox if corrupt.  This way your migration goes smoothly. 
  6. The next screen gives you the ability to run now or schedule for later.

*Do not remove your old mailbox server at this point.  Leave it online because all of your clients will hit it and will be redirected to the new Exchange server.  This will save you hundreds if not thousands of hours reconfiguring users’ mailboxes.
EMS Move Mailboxes:
Get-Mailbox –Database “Exchange2003First Storage GroupMailbox Store (Store1)” | Move-Mailbox –TargetDatabase “Exchange2007First Storage GroupMailbox Database” –MaxThreads 10
Move Specific Users via EMS:
$UsersToMigrate = “Jeremy”, “Mike”, “Elvis”
ForEach ($SingleUser in $UsersToMigrate) {Move-Mailbox -Identity $SingleUser -TargetDatabase “E2K7First Storage GroupMailbox Database” -Confirm:$false}
Install Unified Messaging and Edge Transport Servers
I would recommend holding off on this step until the Administrator has had a week, 2 weeks, a month to explore the new Exchange interface.  These servers are not necessities so it does not need to be done the same day as your migration.
Migrate public folders
Migrate public folders method 1
MoveAllReplicas.ps1 is a PowerShell Script which can be found with Exchange 2007 in the Program FilesMicrosoftExchange ServerScripts diretory
MoveAllReplicas.ps1 –Server Exchange2003 –NewServer Exchange2007
This can take hours be patient
Use PFMigrate to move your public folders. 

  1. Open CMD prompt.  Go to [CD drive]:supportexdeploy
  2. To create a report type the following pfmigrate.wsf /S:OLDServer /T:NewServer /r /f:c:logname.log
  3. To replicate system folders pfmigrate.wsf /s:OldServer /t:NewServer /sf /a /n:10000 /f:c:logname.log
  4. To replicate public folders pfmigrate.wsf /s:OldServer /t:NewServer /a /n:10000 /f:c:lolgname.log
  5. After migration type in pfmigrate.wsf /s:OldServer /t:NewServer /d
  6. View logname.log to ensure proper replication.

Another method
Go into the Exchange 2003 System Manager.  Right click on the public folder store and select move all replicas.
The goal is to have 0 entries in the public folder instances tab.
Once all public folders are removed you can right click on the public folder store and select delete.
Offline Address Book
Open Exchange Management Console
Go to Organization Configuration>Mailbox>Offline Address Book tab
Right click on the default offline address book and select move.  Click browse and select your 2007 Exchange server.  Once everything is set click Move.
Move Offline Address Book via Exchange Management Shell:
Get-OfflineAddressBook | fl 
When you run the command above remember the field labeled AdminDisplayName it will be used in the next step.
Type in Move-OfflineAddressBook “Default Offline Address List” -Server Exchange2007
In the above command you will substitute Default Offline Address List for the name of your address list.  Also the Exchange2007 will be substituted for your Exchange 2007 server name
Remove routing group connectors
Via Exchange Management Shell
Remove-RoutingGroupConnector –Identity “First Administrative GroupFirst Routing GroupExchange2003-Exchange2007”
Remove-RoutingGroupConnector –Identity “Exchange Administrative Group (FYDIBOHF23SPDLT)Exchange Routing Group (DWBGZMFD01QNBJRExchange2007-Exchange2003”
Via 2003 ESM
Open ESM>Administrative groups>Exchange Administrative group>Routing Groups>Exchange Routing Group>Connectors
Make sure you go into the connectors folder for each administrative group
Remove recipient update services:
Right click on domain RUS and click remove.
To remove enterprise RUS open ADSIEdit and browse to
Configuration / Services / Microsoft Exchange / <organization name> / Address Lists Container / Recipient Update Services
Once you are here right click on enterprise RUS and delete
Remove OLD Exchange servers

  1. Remove all routing connectors.
  2. Uninstall Exchange
  3. Remove routing groups

Before removing routing connectors stop the RGC service if nobody complains you know that server wasn’t routing mail.  It can be removed via the following steps.

  1. Launch ESM.
  2. Go to Administrative Groups>expand administrative group where your server is located.
  3. Expand routing group container
  4. Expand routing group that has the connector you want to remove
  5. expand connectors
  6. right cilck on connector select delete.
  7. Once all of the connectors are deleted you can remove the routing group itself.

DO NOT simply unplugged old Exchange servers from the network. Go to add/remove programs and uninstall it.  This performs critical tasks.
Once you remove the last routing group Exchange it clears legacy routing.
Verify mail flow in the logs
Program FilesMicrosoftExchange ServerTransportRolesLogsProtocolLog
Test mobile device connectivity
Microsoft has a utility that allows you to emulate mobile device connectivity it can be downloaded here.

0 replies

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply