Migrar de Exchange 2010 a Exchange 2013

En este documento podremos ver todos los requisitos y los pasos que debemos dar para proceder a migrar un entorno de Microsoft Exchange 2010 a Exchange Server 2013. Deberemos tener en cuenta que es un proceso largo y sobre todo dependiendo del número de servidores así como de buzones que tengamos o sus tamaños, será una migración que no requerirá parada de servicio en ningún momento.

ExchangeArchitecture-bujarra

A tener en cuenta: Tener actualizados los Windows Update de los servidores, además de al menos el SP3 en todos los Exchange 2010, si no, lo instalaremos primero en los CAS, luego en los HUB y finalmente en los servidores de buzones si es que tenemos los roles separados. Adicionalmente sería recomendable tener los Update Rollup instalados post SP3 de igual forma. Tendremos que tener en cuenta que a Exchange 2013 sólo podrán acceder las siguientes versiones de Outlook (y este parche si no se conectan las carpetas públicas a los Outlooks):

Tendremos que tener los niveles funcionales del bosque y del dominio en al menos ‘Windows Server 2003’, el maestro de esquema deberá ser Windows 2003 SP2 o superior, así como un catálogo global en la zona con dicho SO. También especial cuidado con las quotas a nivel de usuario o límites, no sea que fallen las migraciones al superar los valores predeterminados, así como si vamos a mover una gran cantidad de buzones tendremos cuidado con los LOGs.

 

Preparación del esquema del AD,

El primer paso será aplicar la actualización del esquema para nuestro Directorio Activo, podremos hacer este paso de forma manual u obviarlo y dejarlo que lo haga la instalación de nuestro primer servidor Exchange 2013 de la organización. Podremos actualizarlo desde cualquier servidor miembro del dominio que sea x64, siendo Administradores de Esquema, Administradores de dominio y Administradores de Empresa, desde una consola DOS o PowerShell (con permiso de administrador) ejecutamos:

setup /PrepareSchema /IAcceptExchangeServerLicenseTerms

Instalación de requisitos de Exchange 2013 en Windows 2012 R2,

Podremos continuar con la instalación de los prerequisitos de Exchange Server 2013 sobre nuestro Windows Server 2012 R2, para ello desde PowerShell ejecutaremos:

 

Install-WindowsFeature RSAT-ADDS

Install-WindowsFeature AS-HTTP-Activation, Desktop-Experience, NET-Framework-45-Features, RPC-over-HTTP-proxy, RSAT-Clustering, Web-Mgmt-Console, WAS-Process-Model, Web-Asp-Net45, Web-Basic-Auth, Web-Client-Auth, Web-Digest-Auth, Web-Dir-Browsing, Web-Dyn-Compression, Web-Http-Errors, Web-Http-Logging, Web-Http-Redirect, Web-Http-Tracing, Web-ISAPI-Ext, Web-ISAPI-Filter, Web-Lgcy-Mgmt-Console, Web-Metabase, Web-Mgmt-Console, Web-Mgmt-Service, Web-Net-Ext45, Web-Request-Monitor, Web-Server, Web-Stat-Compression, Web-Static-Content, Web-Windows-Auth, Web-WMI, Windows-Identity-Foundation, RSAT-Clustering-CmdInterface -Restart

 

Deberemos además instalar Microsoft Unified Communications Managed API 4.0, además de Microsoft Office 2010 Filter Pack de 64 bit y su SP1. Instalación del primer servidor Exchange 2013 siempre que se pueda con el último SP embebido. Una vez instalado deberemos entrar al ECP (Exchange Control Panel), al tener una instalación mixta como es este escenario la URL predeterminada “https://SERVIDOR_EXCHANGE_2013/ecp” nos llevará a la gestión de los buzones en el Exchange 2010, si queremos gestionar el Exchange 2013 deberemos acceder con la siguiente URL “https://SERVIDOR_EXCHANGE_2013/ecp?ExchClientVer=15”.

 

Si queremos, podremos crear un administrador de forma temporal para Exchange 2015 y así el ECP no nos redireccionará al Exchange 2010, con crear un usuario en nuestro AD y hacerle miembro del grupo ‘Organization Management’ bastará.

 

Instalamos Exchange 2013 con el asistente de instalación y aplicamos el último Update Rollup al finalizar la instalación de Exchange!

 

Creamos la estructura de carpetas para las BBDD y los Logs en nuestro servidor, renombramos y moveremos la BD de buzones que viene con el sistema a nuestro path correcto con:

Move-DatabasePath -Identity NOMBRE_BD -EdbFilePath "F:BBDDNOMBRE_BD.edb" –LogFolderpath "G:LOGsNOMBRE_BD"

 

Además, configuraremos la Lista de direcciones sin conexión predeterminada de Exchange 2013 en cada BD que tengamos en el nuevo Exchange, podremos verificar que tenemos todo OK ejecutando:

Get-MailboxDatabase | select name,offlineaddressbook | sort name

 

1º Instalar los certificados correspondientes a los servicios de Exchange

Tendremos que instalar en este servidor de Exchange 20013 (o en los servidores que vayamos a tener) los certificados SSL para la securización de los protocolos que utilicemos, como conocemos los necesitaremos para securizar:

  • HTTPS – Outlook Anywhere, OWA, ECP/EAC, ActiveSync, EWS, OAB o Autodiscover: correo.dominio.com
  • IMAPS: correo.dominio.com
  • POPS: correo.dominio.com
  • SMTPS: correo.dominio.com

 

exchange-2013-certificado-01-bujarra

Para ello, importaremos el .pfx de un certficado existente a los certificados del equipo local o deberemos generar una solicitud de certificado desde la ECP > Servidores > Certificados > Nuevo & seguir el asistente seleccionando el dominio para el que debe responder.

 

 

exchange-2013-certificado-02-bujarra

Una vez instalado el certificado lo asignaremos a servicios anteriores que nos interese.

 

2º Configurar URLs de sitios

Lo más fácil para configurar de forma correcta todas las URLs de los sitios de Exchange sería ejecutando estos comandos, si no, podremos hacerlo de forma tradicional desde la GUI con ECP:

Set-OABVirtualDirectory -identity "SERVIDOR_EXCHANGE_2013OAB (Default Web Site)" -ExternalURL https://correo.dominio.com/OAB -InternalUrl https://correo.dominio.com/OAB

Set-WebServicesVirtualDirectory -identity "SERVIDOR_EXCHANGE_2013EWS (Default Web Site)" -ExternalURL https://correo.dominio.com/EWS/Exchange.asmx -InternalUrl https://correo.dominio.com/ews/Exchange.asmx

Set-ActiveSyncVirtualDirectory -Identity "SERVIDOR_EXCHANGE_2013Microsoft-Server-ActiveSync (Default Web Site)" -ExternalURL https://correo.dominio.com/Microsoft-Server-ActiveSync -InternalUrl https://correo.dominio.com/Microsoft-Server-ActiveSync

Set-OWAVirtualDirectory -Identity "SERVIDOR_EXCHANGE_2013owa (Default Web Site)" -ExternalURL https://correo.dominio.com/owa -InternalUrl https://correo.dominio.com/owa

Set-ECPVirtualDirectory -Identity "SERVIDOR_EXCHANGE_2013ecp (Default Web Site)" -ExternalURL https://correo.dominio.com/ecp -InternalURl https://correo.dominio.com/ecp

Set-PowerShellVirtualDirectory -Identity "SERVIDOR_EXCHANGE_2013PowerShell (Default Web Site)" -ExternalURL https://correo.dominio.com/powershell -InternalURl https://correo.dominio.com/powershell

Set-ClientAccessServer  -Identity SERVIDOR_EXCHANGE_2013 -AutoDiscoverServiceInternalUri https://correo.dominio.com/Autodiscover/Autodiscover.xml

Set-AutodiscoverVirtualDirectory -identity "SERVIDOR_EXCHANGE_2013Autodiscover (Default Web Site)" -ExternalUrl 'https://correo.dominio.com/Autodiscover/Autodiscover.xml' -InternalUrl 'https://correo.dominio.com/Autodiscover/Autodiscover.xml

 

3º Límites y quotas

Deberemos conocer los límites y las quotas que tenemos en nuestra organización 2010 antes de comenzar cualquier progreso a la 2013. Lo primero será poner las mismas quotas a nivel de BD tanto de Warning, como de prohibir enviar o prohibir recepción; así como los periodos de retención de buzones de usuario o correos eliminados. Es recomendable eliminar las quotas individuales que tengamos por usuario mientras se realiza la migración, así que de igual forma las anotaremos. Por ejemplo con este PowerShell sacaremos las cuotas establecidas en los buzones:

Get-Mailbox | Where {$_.UseDatabaseQuotaDefaults -eq $False} | ft name,prohibit*,issue*

Y con este PowerShell sacaremos los límites establecidos en las BD de 2010 para poder establecerlos posteriormente de igual manera en las nuevas BD de 2013, además de los tiempos de retención para buzones eliminados o items individuales :

Get-MailboxDatabase | fl Name,IssueWarningQuota,ProhibitSendQuota,ProhibitSendReceiveQuota,DeletedItemRetention,MailboxRetention

 

4º Configurar Outlook Anywhere

Deberemos configurar Outlook Anywhere, podremos modificar el tipo de autenticación, o directamente con este PowerShell su nombre para redes externas o internas:

Set-OutlookAnywhere -Identity "SERVIDOR_EXCHANGE_2031Rpc (Default Web Site)" -InternalHostname correo.dominio.com -ExternalHostname correo.dominio.com

 

5º Cambiar paths de logs de transporte

exchange-2013-logs-01

Desde ECP, en las propiedades del servidor podremos cambiar fácilmente los paths de los logs de Transporte.

 

6º Conector de envío

Habrá que crear un conector de envío para el Exchange 2013 con la misma configuración que ya teníamos en 2010 (límites…) o bien, más fácil, asociarle y darle permisos de envío desde un conector ya generado en los anteriores servidores Exchange 2010.

 

7º Migración de aplicativos o dispositivos,

A tener en cuenta que habrá que mover los buzones que utilicen servicios, aplicaciones o dispositivos como software de backup, AV, impresoras, FAX, PBX, escáneres, sitios web… Al igual que si disponemos de alguna pata de relay (conector de recepción) en el Exchange 2010, habrá que configurarla de igual forma en este 2013, además de configurar la misma autenticación, o la misma dirección IP, si no, nos tocará reconfigurar todas estas apps que mandan correos a través del servidor Exchange 2010.

 

8º Mover buzones,

Continuamos, lo siguiente ya será mover los buzones de los usuarios, deberemos tener en cuenta que si el usuario tiene el buzón abierto le desconectará y le pedirá que abra Outlook de nuevo para que se reconfigure contra el nuevo servidor de correo de forma automática.

exchange-2013-migrar-01

Seleccionamos los usuarios que queramos mover desde el ECP > “Recipients” > “Mailboxes” > Y seleccionamos mover el buzón a otra base de datos.

 

exchange-2013-migrar-02

Le indicamos un nombre a la tarea de migración e indicamos a qué base de datos moveremos los buzones, “Next”,

 

exchange-2013-migrar-03

Indicaremos si iniciar la tarea de migración de forma automática y si además también la finalizaremos o de forma manual, “New” para crearla.

exchange-2013-migrar-04

 

Deberemos ir al panel de Migración para ver el estado de los movimientos de buzones, “Yes”,

 

exchange-2013-migrar-05

Podremos pulsar en “View details…” para ver más detalles del proceso de migración,

 

exchange-2013-migrar-06

Donde veremos de forma individual el estado de la migración de cada buzones! Esperaremos mientras copia…

 

exchange-2013-migrar-07

Lo más comodo seguramente, sea mover los buzones por PowerShell, moveremos los buzones usando el siguiente comando:

Get-Mailbox -Database BASE_DATOS_2010 | New-MoveRequest -TargetDatabase BASE_DATOS_2013

 

Para ver el estado de migración podremos ejecutar:

Get-MoveRequestStatistics -MoveRequestQueue BASE_DATOS_2013

 

Y para verificar que no nos quedan buzones en las BBDD viejas del 2010:

Get-MailboxDatabase -Identity BASE_DATOS_2010 | Get-Mailbox

 

9º Migrar carpetas públicas,

Tras mover los buzones migraremos las carpetas públicas del servidor Exchange 2010 al Exchange 2013, nos bajaremos primero estos scripts de aquí.

Ejecutaremos primero en la shell del Exchange 2010:

exchange-2013-migracion-85-bujarra

Para sacar un snapshot de la estructura de carpetas:

Get-PublicFolder -Recurse | Export-CliXML C:PFMigrateLegacy_PFStructure.xml

Sacaremos un snapshot de las estadísticas de las carpetas públicas, como número de elementos, tamaño o propietario:

Get-PublicFolderStatistics | Export-CliXML C:PFMigrateLegacy_PFStatistics.xml

Y uno último para sacar los permisos:

Get-PublicFolder -Recurse | Get-PublicFolderClientPermission | Select-Object Identity,User -ExpandProperty AccessRights | Export-CliXML C:PFMigrateLegacy_PFPerms.xml

En Exchange 2013 no deberemos tener carpetas públicas creadas, para verificarl y si tenemos debemos deshacer la migración anterior, ejecutamos:

Get-Mailbox -PublicFolder

Get-PublicFolder

Verificaremos además desde el Exchange 2010 que no tenemos carpetas públicas con nombres no válidos:

Get-PublicFolderStatistics -ResultSize Unlimited | Where {$_.Name -like “**”} | Format-List Name, Identity

 

exchange-2013-migracion-86-bujarra

Empezamos en el Exchange 2010, comenzamos ejecutando el siguiente script que nos generará un fichero con el nombre de las carpetas públicas y sus tamaños:

.Export-PublicFolderStatistics.ps1 PfMapNameToSize.csv SERVIDOR_EXCHANGE_2010

exchange-2013-migracion-87-bujarra

Ejecutaremos el siguiente script para crear el archivo de mapeos entre las carpetas públicas y el buzón:

.PublicFolderToMailboxMapGenerator.ps1 TAMAÑO_BUZON PFMapNameToSize.csv PFmapFolderToMailbox.csv

 

exchange-2013-migracion-88-bujarra

Crearemos los buzones de carpetas públicas ya en el Exchange 2013, el primer buzón debe ser del tipo master hierarchy mailbox, así que  lo crearemos por defecto con el modo HoldForMigration. Podremos cambiar el nombre del buzón en el archivo ‘PFmapFolderToMailbox.csv’ y así lo indicaremos en el siguiente comando!

Para crear el primer buzón ejecutamos:

New-Mailbox -PublicFolder Mailbox1 -HoldForMigration:$true -Database BD_EXCHANGE_2013 -IsExcludedFromServingHierarchy $True

Y si tenemos más carpetas a migrar, crearemos más buzones con:

New-Mailbox -PublicFolder Mailbox2 -Database BD_EXCHANGE_2013  -IsExcludedFromServingHierarchy $True

exchange-2013-migracion-89-bujarra

Tras preparar la migración, empezamos ya la migración de las carpetas en el Exchange 2013

New-PublicFolderMigrationRequest -SourceDatabase (Get-PublicFolderDatabase -Server SERVIDOR_EXCHANGE_2010) -CSVData (Get-Content PFmapFolderToMailbox.csv -Encoding Byte)

exchange-2013-migracion-90-bujarra

Para verificar que la migración ha comenzado y de una forma más sencilla el % de avance y estado, ejecutamos:

Get-PublicFolderMigrationRequest | Get-PublicFolderMigrationRequestStatistics

Si tenemos algún error, lo más fácil será verlo con el siguiente comando, puede que tengamos los Alias de las carpetas publicas del 2010 con espacios… comando para verlo:

Get-PublicFolderMigrationRequest | Get-PublicFolderMigrationRequestStatistics -IncludeReport | Format-List

Si tenemos que resumir la migración por que hemos tenido un error (y lo habremos visto con el mensaje anterior, ejecutamos: Resume-PublicFolderMigrationRequest -identity “PublicFolderMigration”

 

exchange-2013-migracion-90b-bujarra

Cuando el estado de la migración haya llegado al estado ‘AutoSuspended’ y 95%, podremos continuar con el siguiente paso, que será bloquear las carpetas públicas en el Exchange 2010.

 

exchange-2013-migracion-91-bujarra

A partir de ahora los usuarios no podrían acceder a las carpetas públicas del Exchange 2010, ejecutamos en el 2010:

Set-OrganizationConfig -PublicFoldersLockedForMigration:$true

 

exchange-2013-migracion-92-bujarra

De vuelta en el Exchange 2013, para finalizar el proceso de migración deberemos ejecutar:

Set-PublicFolderMigrationRequest -Identity PublicFolderMigration -PreventCompletion:$false

 

exchange-2013-migracion-93-bujarra

Y finalizamos con la ultima sincronización con las diferencias entre las distintas carpetas públicas.

Resume-PublicFolderMigrationRequest -Identity PublicFolderMigration

Confirmamos cómo va la migración:

Get-PublicFolderMigrationRequest | Get-PublicFolderMigrationRequestStatistics

 

exchange-2013-migracion-97-bujarra

Y esperamos a que acabe al 100%!

 

exchange-2013-migracion-96-bujarra

Podremos probar con un usuario si las carpetas públicas están bien, para ello, podremos asociar a un usuario de pruebas con el buzón de carpetas públicas ya en el Exchange 2013, ejecutando:

Set-Mailbox -Identity USUARIO_PRUEBAS -DefaultPublicFolderMailbox Mailbox1

 

exchange-2013-migracion-94-bujarra

Antes de ejecutar el comando anterior, podremos abrir el Outlook de ese usuario en cuestión con el parámetro “outlook /rpcdiag” para ver el estado de las conexiones entre el Outlook y el servidor de Exchange. Veremos en un principio que las carpetas públicas siguen estando en el servidor antiguo…

 

exchange-2013-migracion-95-bujarra

Y tras ejecutar el comando para establecer el buzon de carpetas publicas a un usuario en cuestión y abramos de nuevo su Outlook con el parámetro /rpcdiag, veremos que ya conecta contra el nuevo servidor de Exchange.

 

exchange-2013-migracion-98-bujarra

Una vez que las pruebas realizadas son correctas, deberemos habilitar el acceso a estas carpetas al resto de usuarios de la organización, ejecutamos:

Get-Mailbox -PublicFolder | Set-Mailbox -PublicFolder -IsExcludedFromServingHierarchy $false

 

exchange-2013-migracion-99-bujarra

Confirmamos que tenemos la migración Completed y al 100% de migración completada, e indicamos que la migración se finalizó con:

Get-PublicFolderMigrationRequest | Get-PublicFolderMigrationRequestStatistics

Set-OrganizationConfig -PublicFolderMigrationComplete:$true

Set-OrganizationConfig -PublicFoldersEnabled Local

 

Deshacer la migración de Exchange 2013

En el Exchange 2010 ejecutaremos:

Set-OrganizationConfig -PublicFoldersLockedForMigration:$False

 

10º Eliminando recursos del 2010

Despues de tener ya las carpetas públicas en el 2013 en producción, lo siguiente será confirmar que hemos movido todos los buzones de los usuarios y que no nos quedan más buzones de sistema como pueden ser los de Archivo o Arbitration, los buscamos con:

Get-Mailbox -Archive | fl name,database
Get-Mailbox -Arbitration | fl name,database

Si tenemos alguno lo moveremos ejecutando lo siguiente desde una PowerShell del Exchange 2013:

Get-Mailbox -Database BASE_DATOS_2010 -Archive | New-MoveRequest -TargetDatabase BASE_DATOS_2013
Get-Mailbox -Database BASE_DATOS_2010 -Arbitration | New-MoveRequest -TargetDatabase BASE_DATOS_2013

Además de mover el buzón de descubrimiento o Discovery Search Mailbox:

New-MoveRequest DiscoverySearchMailbox* -TargetDatabase BASE_DATOS_2013

Para ver el estado de migración podremos ejecutar:

Get-MoveRequestStatistics -MoveRequestQueue BASE_DATOS_2013

Una vez realizado y verificando de nuevo que ya no tenemos más buzones, podremos desmontar y eliminar la BD.

Lo siguiente será eliminar la OAB del Exchange 2010, lo podremos hacer sencillamente desde la GUI, siempre y cuando no la tengamos asignada a ninguna BD de Exchange 2013.

Por último, eliminaremos la BD de carpetas públicas del 2010, las desmontaremos & eliminaremos.

Podríamos proceder ya a desinstalar el Exchange 2010!

Héctor Herrero

Autor del blog Bujarra.com
Cualquier necesidad que tengas, no dudes en contactar conmigo, os intentare ayudar siempre que pueda, compartir es vivir 😉 . Disfrutar de los documentos!!!