How to Upgrade from Exchange 2003 to Exchange 2010 SP1: Part 2 ------------------------------------------------------------------------------ 1. Relocate Databases and Log files ----------------------------------- 2. Replicate Public Folders, convert Address Lists and E-mail Address Policies, move OAB ---------------------------------------------------------------------------------------- 2.1 Check the status of IPM subtree ----------------------------------- #IPM subtree stands for interpersonal messages subtree - messages exchanged #between human recipients #IPM_Subtree contains folders visible and accessible directly by users and clients Get-publicfolder -recurse | fl name,replicas 2.2 Replicate IPM subtree ------------------------- #First switch to the Exchange Scripts directory cd $exscripts #Then replicate to Exchange 2010 server - replace E-10 with the name of your Exchange 2010 server .\AddReplicatoPFRecursive.ps1 -TopPublicFolder "\" -ServerToAdd e-10 2.3 Check the status non-IPM subtree ------------------------------------ #The non-IPM_Subtree contains operational metadata - folders not directly accessible by users. Get-publicfolder \non_ipm_subtree -recurse | fl name,replicas 2.4 Replicate non-IPM subtree ---------------------------- 2.4.1 First replicate SCHEDULE+ FREE BUSY from E-10 to E-2k3 ------------------------------------------------------------ #Replace E-2k3 with the name of your Exchange 2003 server .\AddReplicatoPFRecursive.ps1 -TopPublicFolder "\non_ipm_subtree" -ServerToAdd E-2k3 2.4.2 Then replicate non-IPM subtree from E-2k3 to E-10 #Replace E-10 with the name of your Exchange 2010 server .\AddReplicatoPFRecursive.ps1 -TopPublicFolder "\non_ipm_subtree" -ServerToAdd E-10 2.5 Double-check Public Folder Replication ------------------------------------------ Get-publicfolder -recurse | fl name,replicas Get-publicfolder \non_ipm_subtree -recurse | fl name,replicas 2.6 Convert Address Lists and E-mail Address Policies ----------------------------------------------------- #Convert Address Lists - "All Users", "All Contacts", "All Groups" and "Public Folders" Set-AddressList “All Users” –IncludedRecipients MailboxUsers Set-AddressList "All Contacts" -IncludedRecipients MailContacts Set-AddressList “All Groups” –IncludedRecipients Mailgroups Set-AddressList "Public Folders" -RecipientFilter { RecipientType -eq 'PublicFolder' } #Convert "Default Global Address List" Set-GlobalAddressList "Default Global Address List" -RecipientFilter {(Alias -ne $null -and (ObjectClass -eq 'user' -or ObjectClass -eq 'contact' -or ObjectClass -eq 'msExchSystemMailbox' -or ObjectClass -eq 'msExchDynamicDistributionList' -or ObjectClass -eq 'group' -or ObjectClass -eq 'publicFolder'))} #Convert E-mail Address Policies #Note - the command bellow applies the e-mail address policies to All Recipients #If there are e-mail address policies with custom LDAP filters (applied to subset of recipients) #use 2.6.2 instead!!! Get-EmailAddressPolicy | where {$_.RecipientFilterType –eq “Legacy”} | Set-EmailAddressPolicy –IncludedRecipients AllRecipients 2.6.2 (Otional - if you are using custom LDAP filters) Download ConvertFrom-LdapFilter.ps1 ------------------------------------------------------------------------------------------ http://msexchangeteam.com/files/12/attachments/entry442867.aspx #Save the script to C:\Program Files\Microsoft\Exchange Server\V14\scripts #and change file extension from ConvertFrom-LdapFilter.txt to ConvertFrom-LdapFilter.ps1 #If you are not in the scripts directory switch to it and convert #the Address lists and E-mail Address policies with custom LDAP filters cd $exscripts # Convert Address Lists Get-AddressList | WHERE { $_.RecipientFilterType -eq 'Legacy' } | foreach { Set-AddressList $_.Name -RecipientFilter (.\ConvertFrom-LdapFilter $_.LdapRecipientFilter) -ForceUpgrade } #Convert E-mail Address Policies Get-EmailAddressPolicy | WHERE { $_.RecipientFilterType -eq 'Legacy' } | foreach { Set-EmailAddressPolicy $_.Name -RecipientFilter (.\ConvertFrom-LdapFilter $_.LdapRecipientFilter) -ForceUpgrade } 2.7 Move Offline Address Book, enable Web Based distribution 2.8 Specify OAB for your Mailbox Database #If you skip this step, #Outlook 2003 clients will not be able to download OAB after you move their mailboxes 3. Install UCC (Unified Communications Certificate) 4. Change mail flow settings 4.1 Create Internet Send Connector 4.2 Modify Default Receive Connector to receive messages from Internet 4.3 (Optional) If you have documented SMTP Relay exceptions for IP Addresses (local devices or apps) - create new receive connector for the relay exceptions. 4.4 Enable Outlook Anywhere - set Exchange 2010 Public name as the External Host Name 4.5 Modify Router/Firewall Settings - allow inbound/outbound mail through Exchange 2010. Port 443 (OWA and Outlook Anywhere) should be forwarded to Exchange 2010. 5. Move mailboxes 5.1 Using Exchange Management Console - New Local Move Request 5.2 Using Exchange Management Shell - bulk processing of all legacy mailboxes #List legacy mailboxes Get-Mailbox -RecipientTypeDetails legacyMailbox #Move all legacy mailboxes Get-Mailbox -RecipientTypeDetails legacyMailbox | New-MoveRequest -TargetDatabase MBX1-E10 #Check status Get-MoveRequest Get-MoveRequest –MoveStatus Completed 5.3 Check Move Request status and Move Request Log. Clear Move Request!!! Get-MoveRequest –MoveStatus Completed | Remove-MoveRequest ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: http://www.netometer.com :: :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::