Vous êtes sur la page 1sur 28


Before you do anything, it's time for a common sense check, make sure your existing Exchange 2010 Organisation is happy and running cleanly, and has good communication with both the domain and your DNS. Get in the event logs and make sure it's a happy server. Time spent on reconnaissance is seldom wasted!

2. Run a full Windows update on your existing Exchange server(s), this will install any Exchange roll-ups that are outstanding.

3. If you are planning to utilise DAG, then you should install the following hot-fix on your Exchange 2010 servers before deploying SP3.

4. For coexistence of Exchange 2010 and Exchange 2013, Your Exchange 2010 Servers musthave Service pack 3 installed. If you are upgrading from service pack 1 you may see the following error. Exchange 2010 Service Pack 3 Error - 'The IIS 6 WMI Compatibility component is required'

5. After SP3 apply the latest Update Rollup, (at 03/06/13 currently Update Rollup 1)download.

Exchange 2013 Migration Step 3 "Server Prerequisites"

1. The server that will run Exchange 2013, will need to be a domain member*, and I would run all the current updates before you start.

Once that is complete there are a number of server roles that will need adding. (Note: these roles are the SAME for both CAS and Mailbox Servers). *Note: As with previous versions of Exchange it is recommended that you DO NOT run Exchange 2013 on a domain controller.

To add the Exchange 2013 Server roles via PowerShell

Note: Here on my 'Test Network' the server in question is also a domain controller. In yourproduction environment this will probably NOT be the case. If so, you will need to install the Remote Server Administration Tools for Active Directory.
Install-WindowsFeature RSAT-ADDS

Issue the following commands; Install-WindowsFeature AS-HTTP-Activation, Desktop-Experience, NETFramework-45-Features, RPC-over-HTTP-proxy, RSAT-Clustering, WebMgmt-Console, WAS-Process-Model, Web-Asp-Net45, Web-Basic-Auth, Web-Client-Auth, Web-Digest-Auth, Web-Dir-Browsing, Web-DynCompression, Web-Http-Errors, Web-Http-Logging, Web-Http-Redirect, Web-Http-Tracing, Web-ISAPI-Ext, Web-ISAPI-Filter, Web-Lgcy-MgmtConsole, Web-Metabase, Web-Mgmt-Console, Web-Mgmt-Service, WebNet-Ext45, Web-Request-Monitor, Web-Server, Web-Stat-Compression,

Web-Static-Content, Web-Windows-Auth, Web-WMI, Windows-IdentityFoundation, RSAT-Clustering-CmdInterface Then Reboot; Restart-Computer

2. You will need to install the Microsoft Unified Communications Managed API 4.0, Core Runtime 64-bit.

3. You will also need to install the Microsoft Office 2010 Filter Pack 64 bit and Microsoft Office 2010 Filter Pack SP1 64 bit.

Exchange 2013 Migration Step 4 "Install Exchange 2013"

Note: Ensure the Exchange 2013 Media version you are using is CU2. {download here} 1. Insert the DVD or open the install files and run setup.exe. It will attempt to find any outstanding updates before it starts.

2. Next.

3. Setup will begin copying files.

4. Next.

5. Accept the EULA > Next.

6. I tend to disable feedback, but the choice is yours > Next.

7. Select the server roles that you wish to install.

8. Select the folder that you wish to install the Exchange program into. Note: Remember if deploying multiple Exchange 2013 servers, it's considered good practice to keep the folder paths contiguous across all the servers.

9. If you plan to deploy third party malware protection (post Install), then you might wish to disable this, but in most cases you will want it enabled > Next. Note: This is built on technology that was called 'Forefront' in previous versions of Exchange.

10. Pre deployment readiness checks will be carried out > when complete > Next.

11. Setup will take quite some time.

12. When complete, tick the box to launch the admin console > Finish.

13. After a few seconds the Exchange Admin Center will open.

14. At this point I would move the new Exchange Database from its default location to its own volume/folder, (again keep this path contiguous across all the new servers). The following PowerShell command will do this for you; Move-DatabasePath -Identity "Database Name" -EdbFilePath "E:\Folder Name\Database name.edb"

Exchange 2013 Migration Step 5 "Migrate Mailbox's"

STOP! Before you proceed you need to think about OWA access. For internal access this will not be a problem BUT if you have users that access OWA externally (e.g. via https://mail.yourpublicdomain.com/owa) Then you will have to DO SOME PLANNING. Unless you have two free public IP addresses, your router/firewall can only point to one CAS server at a time. 1. First make sure that the new server can see the existing Exchange infrastructure. From within the Exchange Admin Center > Servers. You should see both your Exchange 2010 Servers and the new Exchange 2013 Server.

Note: You can see the same with the following PowerShell command; Get-ExchangeServer | select Name, ServerRole, AdminDisplayVersion | ft auto 2. Test move one mailbox from Exchange 2010 to 2013, Recipients > Mailboxes > Locate our Test User > Move Mailbox.

3. Give the test migration a name, and browse to the new datastore (Note: If the move fails you can increase both the BadItem limit and the LargeItem limit here as well) > Next.

4. New.

5. You will be asked if you want to the 'Migration Dashboard'.

6. Here you can watch progress (remember to keep hitting 'refresh').

7. If you prefer to use PowerShell you can migrate all mailboxes from one database to another with the following command; Get-Mailbox -Database Mailbox-Database | New-MoveRequest TargetDatabase Mailbox-Databse-2013 If you have more than 1000 mailboxes use the following instead, Get-Mailbox -Database Mailbox-Database -ResultSize Unlimited | NewMoveRequest -TargetDatabase Mailbox-Database-2013

Depending on the amount of mailboxes this can take a while!

8. Then test mail flow to/from this mailbox to internal recipients in the Exchange 2010 infrastructure, and then test mail flow to/from an external mailbox.

Note: At this point you might struggle to connect to the Exchange 2013 Admin Center as 'Administrator', because that user's mailbox is still on the Exchange 2010 Server. If that happens to you and you are 'Locked Out' of the Exchange Admin Center, simply add the user you migrated already, to the Exchange Organization Management group, and log in as that user to https://{Exchange-2013-Server-Name}/ecp

9. You can now migrate the remainder of your mailboxes.

Note: Depending on mailbox size this can take a VERY LONG time, I would suggest staging this migration gradually. To view progress; Get-MoveRequestStatistics -MoveRequestQueue "Mailbox-Database-2013" To check if anything is left in the OLD Database; Get-MailboxDatabase -Identity "Mailbox-Database" | Get-Mailbox

Exchange 2013 Migration Step 6 "Change Mail flow"

At this point you need to change the SMTP feed from the old Exchange 2010 box to the new Exchange 2013 Server, how you do this depends on your network setup, some examples of how you might do this are, i. Change the SMTP (TCP Port 25) Port redirect on your router/firewall. ii. Swap IP addresses from the old to the new server. iii. Change the translation from public to private IP address to point to the new IP. Note: If you have any mail scanning servers, anti spam hardware devices etc, then they will also need changing to point to the new server. 1. You will need to add the new server to your Exchange 'Send Connector' and remove the Exchange 2010 Server. (Note: I'm assuming you only have one send connector, if you have more than one i.e. for particular domains, or for secure TLS mail you will need to do these as well). From Exchange Admin Center > Mail flow > Send connectors > Select the send connector > Edit > Scoping > Add the 2013 server > Remove the 2010 server > Save.

2. You will not need to create receive connectors on the Exchange 2013 Server, if you navigate to mail flow > receive connectors > Change the drop down to point to the Exchange 2013 Server. You will see there is a 'Default Frontend' Connector already configured for Exchange 2013.

3. At this point, it would be sensible to once again check mail flow, to and from an external mail account.

Related Articles, References, Credits, or External Links

Thanks to Simcha Kope for the feedback (Adding RSAT-ADDS) Thanks to Austin Weber for spotting my PowerShell typo. Migration From Exchange 2010 to Exchange 2013 Part 2

Exchange 2013 Migration Step 7 "Migrate Public Folders"

1. Make sure the user you will be performing the migration as, is in the right security groups, (Organizational Management and Recipient Management).

2. On the Legacy Exchange server download the migration scripts. Then extract them to the servers C: drive.

3. Launch the Exchange Management Shell > Change to the script directory > Then create a folder name to folder size mapping file by running the Export-PublicFolderStatistics.ps1script, supply name of the file you want to create. (here I use FolderName2Size.csv). Then supply the name of the server (the legacy one with the public folders on it).

4. Create a Public Folder to Mailbox mapping file, by running thePublicFolderToMailboxMapGenerator.ps1 script, supply it with the maximum mailbox size (in bytes) Note: The Maximum size is 25GB. You will also need to supply the import file you created in step 3 (FolderName2Size.csv). Finally supply the name of the output file you wish to generate PFFolder2Mailbox.csv.

5. Open the last CSV file you created (PFFolder2Mailbox.csv) and take note of the TargetMailbox name. By default mines called Mailbox1, I'm changing it to PF-Mailbox and saving the change. Note: You may get more than one! If so take note of them all, or rename them accordingly.

6. Now go to the new Exchange 2013 Server, and create the new public folder MAILBOX. (Note: Public folders are now in a Mailbox, NOT their own Mailbox database as in previous versions of Exchange). New-Mailbox -PublicFolder PF-Mailbox -HoldForMigration:$true Database Mailbox-Database-2013

Note: Create as many as were listed in your output file above, and name them accordingly. 7. Copy the PFFolder2Mailbox.csv file (Generated above) from the 2010 Server to the Exchange 2013 Server, In this example I will put them in C:\PF-Import-File\

8. Create a new migration request; New-PublicFolderMigrationRequest -SourceDatabase (GetPublicFolderDatabase -ServerEX2010) -CSVData (Get-Content C:\PFImport-File\PFFolder2Mailbox.csv -Encoding Byte)

Note: If you have ever done a move request, (either for a mailbox or a public folder) you may be familiar with the concept of BadItemLimit and AcceptLargeDataLoss. (If you are not it's a system of parameters you set when moving data, to allow 'Bad Items' which would cause a migration to otherwise fail), these can be a corrupt email or an email in a language format that Exchange does not understand. Thanks to Eske (Boxx Jakobsen) for the feedback asking me to include those switches. New-PublicFolderMigrationRequest -SourceDatabase (GetPublicFolderDatabase -ServerEX2010) -CSVData (Get-Content C:\PFImport-File\PFFolder2Mailbox.csv -Encoding Byte) -AcceptLargeDataLoss BadItemLimit <SwitchParameter> <SwitchParameter> = 0 to 2147483647 If you set the BadItemLimit parameter to more than 50, you need to set the AcceptLargeDataLoss parameter to true.

9. To check progress; Get-PublicFolderMigrationRequest | GetPublicFolderMigrationRequestStatistics -IncludeReport | fl It might say Queued for quite a while, dont worry! DO NOT PROCEED until the status says AutoSuspended;

10. If you were looking a the progress you will see its stops just before 100%, this is because you need to "Lock" the source public folder and let the migration complete. WARNINIG this will involve downtime warn your users or do this out of hours. Set-OrganizationConfig PublicFoldersLockedForMigration:$true

11. Now access to the legacy Public Folder Database is shut down and replication to the new Public Folder Mailbox is completed in the background. This can take a little time, I would wait least a couple of hours before proceeding (depending on your network topology, if you

have a slow network or the Exchange2010 server is on another network segment it may take longer).

It's All Gone Wrong!

Dont panic! You can remove the migration request with the following command; Get-PublicFolderMigrationRequest | Remove-PublicFolderMigrationRequest 12. Complete the migration, with the following two commands; Set-PublicFolderMigrationRequest Identity \PublicFolderMigration PreventCompletion:$false Resume-PublicFolderMigrationRequest Identity \PublicFolderMigration

13. Confirm that, the public folders are now correct and available. Note: As per feedback (from Tobias Gebler) Test mail flow to your public folders, you may need to manually "Mail Enable" them before they function properly, In some cases you need to disable then re-enable them before they work properly.

14. Remember in Outlook Web App 2013, public folders are not visible until you add them!