HowTo: Migration von Exchange 2013 zu Exchange 2016 (Teil 1)

Hier hatte ich bereits über die Migration von Exchange 2010 Zu Exchange 2016 geschrieben. Heute ist die Migration von Exchange 2013 zu Exchange 2016 an der Reihe.

Vorwort

Diese Anleitung beschreibt die Migration von Exchange 2013 zu Exchange 2016 und soll einen Überblick über die notwendigen Schritte verschaffen und ist daher bewusst einfach gehalten. Zertifikate und der Namespace sollen übernommen werden. Da sich  Exchange 2013 und Exchange 2016 sehr stark ähneln, ist die Migration recht einfach und wird in den meisten Fällen wohl keine großen Probleme bereiten.

Eins noch vorweg: Dies ist keine allgemein gültige Migrationsanleitung, die sich auf jede Exchange 2013 Organisation anwenden lässt. Die Migration sollte daher in einer Testumgebung ausprobiert werden, um ein Gefühl dafür zu bekommen.

Umgebung

Die Testumgebung besteht aus 3 Windows Server 2012 R2. Ein Domain Controller, ein Exchange 2013 Server und ein Exchange 2016 Server:

Testumgebung Migration

Exchange 2013 und Exchange 2016 sind bereits installiert.

Damit es während der Migration zu keinen Problemen kommt sollte die Exchange Organisation die aktuellen Updates installiert haben. Zum Zeitpunkt dieses HowTos ist das CU11 für Exchange 2013 aktuell. Der Download findet sich hier:

Die Exchange 2016 Installation in einer bestehenden Exchange 2013 Organisation, unterscheidet sich nicht von der Installation in einer frischen Umgebung. Nur die Frage nach dem Organisationnamen entfällt. Ich spare mir daher die Installation von Exchange 2016 zu beschreiben, denn das habe ich bereits hier getan:

Exchange 2013 ist auf die folgenden URLs konfiguriert:

  • Servername: EX2013.frankysweb.local
  • Outlook: outlook.frankysweb.de
  • OWA, EWS, ActiveSync, OAB: outlook.frankysweb.de
  • Outlook Anywhere: outlook.frankysweb.de
  • Autodiscover: autodiscover.frankysweb.de

Exchange 2016 soll die folgenden URLs benutzen:

  • Servername: EX2016.frankysweb.local
  • Outlook: outlook.frankysweb.de
  • OWA, EWS, ActiveSync OAB: outlook.frankysweb.de
  • Outlook Anywhere: outlook.frankysweb.de
  • Autodiscover: autodiscover.frankysweb.de

Exchange 2016 soll also die gleichen URLs benutzen wie Exchange 2013, so brauchen sich die Benutzer nicht umgewöhnen.

MAPIoverHTTP ist bereits aktiviert, sollte vor der Migration aktiviert werden. Wie MAPIoverHTTP aktiviert wird, steht hier beschrieben:

Vorbereitung

Wie bereits erwähnt ist Exchange 2016 bereits installiert, aber noch nicht konfiguriert. Daher werden zunächst die URLs konfiguriert, am einfachsten passiert das mittels Exchange Management Shell:

$servername = "EX2016"
$internalhostname = "outlook.frankysweb.de"
$externalhostname = "outlook.frankysweb.de"
$autodiscoverhostname = "autodiscover.frankysweb.de"
 
$owainturl = "https://" + "$internalhostname" + "/owa"
$owaexturl = "https://" + "$externalhostname" + "/owa"
$ecpinturl = "https://" + "$internalhostname" + "/ecp"
$ecpexturl = "https://" + "$externalhostname" + "/ecp"
$ewsinturl = "https://" + "$internalhostname" + "/EWS/Exchange.asmx"
$ewsexturl = "https://" + "$externalhostname" + "/EWS/Exchange.asmx"
$easinturl = "https://" + "$internalhostname" + "/Microsoft-Server-ActiveSync"
$easexturl = "https://" + "$externalhostname" + "/Microsoft-Server-ActiveSync"
$oabinturl = "https://" + "$internalhostname" + "/OAB"
$oabexturl = "https://" + "$externalhostname" + "/OAB"
$mapiinturl = "https://" + "$internalhostname" + "/mapi"
$mapiexturl = "https://" + "$externalhostname" + "/mapi"
$aduri = "https://" + "$autodiscoverhostname" + "/Autodiscover/Autodiscover.xml"
 
Get-OwaVirtualDirectory -Server $servername | Set-OwaVirtualDirectory -internalurl $owainturl -externalurl $owaexturl
Get-EcpVirtualDirectory -server $servername | Set-EcpVirtualDirectory -internalurl $ecpinturl -externalurl $ecpexturl
Get-WebServicesVirtualDirectory -server $servername | Set-WebServicesVirtualDirectory -internalurl $ewsinturl -externalurl $ewsexturl
Get-ActiveSyncVirtualDirectory -Server $servername  | Set-ActiveSyncVirtualDirectory -internalurl $easinturl -externalurl $easexturl
Get-OabVirtualDirectory -Server $servername | Set-OabVirtualDirectory -internalurl $oabinturl -externalurl $oabexturl
Get-MapiVirtualDirectory -Server $servername | Set-MapiVirtualDirectory -externalurl $mapiexturl -internalurl $mapiinturl
Get-OutlookAnywhere -Server $servername | Set-OutlookAnywhere -externalhostname $externalhostname -internalhostname $internalhostname -ExternalClientsRequireSsl:$true -InternalClientsRequireSsl:$true -ExternalClientAuthenticationMethod 'Negotiate'
Get-ClientAccessService $servername | Set-ClientAccessService -AutoDiscoverServiceInternalUri $aduri

Jetzt kann das Zertifikat des Exchange 2013 Servers auf dem Exchange 2016 Server importiert werden (nachdem es auf dem Exchange 2013 exportiert wurde). Ich finde das geht immer noch am Einfachsten über die MMC:

Zertifikat

Nachdem das Zertifikat importiert wurde, kann das Zertifikat den Exchange Diensten zugewiesen werden:

Zertifikat

Zertifikat und URLs sind jetzt also auf beiden Exchange Servern identisch konfiguriert. Jetzt müssen noch die Authentifizierungseinstellungen abgeglichen werden, einmal für Outlook Anywhere:

Outlook Anywhere

Outlook Anywhere

und auch für Outlook Web Access:

Outlook Web Access

Outlook Web Access

Damit Exchange 2016 auch Mails verschicken kann, muss er noch als Quellserver für den Sendeconnector eingetragen werden:

Sendeconnector

Jetzt haben wir also eine Umgebung in der 2 Exchange Server parallel zu einander laufen. Die Vorbereitungen sind soweit abgeschlossen. Exchange 2016 wird auch schon Autodiscover Anfragen der Clients beantworten.

Im zweiten Teil kümmern wir uns dann um die eigentliche Migration. Coming soon…

5 thoughts on “HowTo: Migration von Exchange 2013 zu Exchange 2016 (Teil 1)”

  1. Hallo Frank
    Zuerst einmal herzlichen Dank jeweils für die ausführlichen Anleitungen. Ich greife immer wieder gerne auf diese zurück, so sind Stolpersteine wie fehlende Server-Funktionen von vorherein kein Thema.

    Nun hätte ich eine Frage zu den externen und internen URL’s: Sind am umstellen von Ex2013 auf Ex2019. Nun haben wir das Problem das Autodiscover den Clients unterschiedliche URL’s mitteilt (als interne URL den 13er und als externe URL den 19er)! Auf den Servern sind für jeden Server eigene FQDN’s konfiguriert, da noch einige wenige Clients mit Office 2010 unterwegs sind und dies noch ein paar Monate so sein wird. Der Autodiscover zeigt immer noch auf den alten Ex2013.
    War / ist es nicht so, dass Autodiscover anhand des msExchHomeServerName-Attributs im AD den Clients die URL mitteilt die der jeweilige Exchange konfiguriert hat? Liege ich falsch, oder überseh ich da was?

    Besten Dank für deinen Tipp.

    Reply
  2. Hallo Frank, du schreibst „Exchange 2016 wird auch schon Autodiscover Anfragen der Clients beantworten.“
    Kann man das umgehen?
    Ich habe nun das Problem gehabt, ohne Ausfall von Exchange 2007 auf Exchange 2013 zu wecheln. Anwender nutzen Office 2010.
    In dem Punkt haben wir auch mapi aktiviert. Nun das Problem, wir haben Exchange 2016 nur installiert, danach haben über 50% der Clients sich nicht mehr starten lassen und haben nach dem neuen Exchange gefragt, interner Name mit Zertifikat. Das Outlook Profil neu anlegen hat geholfen, warum ging es plötzlich bei einigen nicht mehr? Wieso fragt das Outlook plötzlich den Exchange 2016, obwohl alles auf dem Exchange 2013 läuft. Ich habe testweise die URLs gleich gesetzt, Zertifikat hinterlegt, trotzdem hat es nichts geholfen. Weder das der Exchange 2016 aus war oder an, die Clients liessen sich nicht mehr mit dem alten Profil starten. Nur in einem gewissen Moment als der Exchange 2016 neustartete.
    Auch die Deinstallation des Exchange 2016 hat nichts gebessert. Die CLients wollten einfahc nicht mehr mit Exchange 2013 verbinden und haben ständig versucht den Exchange mit dem internen Namen zu finden.

    Reply

Leave a Comment