Hier ist der zweite Teil der Migration von Exchange 2010 zu Exchange 2016. Der erste Teil findet sich hier:
Migration von Exchange 2010 zu Exchange 2016 Teil 1
In diesem Artikel werden die öffentlichen Ordner und die Postfächer migriert. Die Migration der Öffentlichen Ordner kann nur mit Downtime erfolgen, daher erst lesen, dann planen :-)
Update: Reihenfolge der Screenshots korrigiert
Vorbereitung Migration Öffentliche Ordner
Wie schon in Teil 1 erwähnt, ist bisher kein Zugriff von einem Exchange 2016 Postfach auf die Öffentlichen Ordner von Exchange 2010 möglich. Wer keine Öffentlichen Ordner unter Exchange 2010 einsetzt, kann sich diesen Teil sparen und ab „Exchange 2016 als Proxy für Exchange 2010“ weiterlesen.
Auf dem Exchange 2010 Server sind Öffentliche Ordner eingerichtet, die migriert werden müssen, hier ein Beispiel:
Der Exchange 2010 Benutzer Frank kann auf die Öffentlichen Ordner unter Exchange 2010 zugreifen:
Der Benutzer Hans mit einem Exchange 2016 Postfach allerdings nicht:
Damit Exchange 2016 Benutzer auf die Öffentlichen Ordner zugreifen können, wird eine ProxyMailbox benötigt. Die ProxyMailbox für öffentliche Ordner sollte am besten in einer separaten Datenbank gespeichert sein. Die ProxyMailbox ist im Prinzip ein ganz normales Postfach, es kann per Shell oder GUI angelegt werden. Hier der schnell Weg über die Shell (der letzte Befehl muss via Shell ausgeführt werden):
Neue Datenbank für die ProxyMailbox anlegen:
New-MailboxDatabase -Server FWEX2010 -Name PFProxyDatabase -IsExcludedFromProvisioning $true
ProxyMailbox in der neuen Datenbank anlegen:
New-Mailbox -Name PFProxyMailbox1 -Database PFProxyDatabase -UserPrincipalName PFProxyMailbox1@frankysweb.local
ProxyMailbox aus dem Adressbuch ausblenden:
Set-Mailbox -Identity PFProxyMailbox1 -HiddenFromAddressListsEnabled $true
Nachdem Datenbank und ProxyMailbox erzeugt wurden, kann der Zugriff eingeschaltet werden. Dazu muss folgender Befehl auf dem Exchange 2016 Server ausgeführt werden:
Set-OrganizationConfig -PublicFoldersEnabled Remote -RemotePublicFolderMailboxes PFProxyMailbox1
Kurz warten, dann tauchen auch die Exchange 2010 Öffentlichen Ordner bei Exchange 2016 Benutzern auf:
Exchange 2016 als Proxy für Exchange 2010
Jetzt werden die DNS-Einträge auf Exchange 2016 umgestellt, wie schon im ersten Teil erwähnt, betrifft es ab hier alle Clients. Aktuell verweisen die DNS Einträge noch auf Exchange 2010 (172.16.100.101):
Das CAS-Array mit dem Namen outlook-int bleibt bestehen, denn Exchange 2016 dient als Proxy für Postfächer die auf Exchange 2010 laufen. Die Verbindung wird also via outlook.frankysweb.de von Exchange 2016 und dann weitergeleitet an outlook-int.frankysweb.de, wenn das Postfach noch auf den Exchange 2010 Server liegt.
Die DNS Einträge werden wie folgt geändert:
outlook.frankysweb.de und autodiscover.frankysweb.de verweisen jetzt auf die Exchange 2016 IP. Die Änderungen an der HOSTS-Datei an den Test Clients können rückgängig gemacht werden.
Wer Outlook Anywhere und/oder ActiveSync nutzt muss jetzt seine Firewall anpassen. Je nachdem wie Exchange 2010 im Internet erreichbar war (NAT, ReverseProxy), muss jetzt auf Exchange 2016 umgestellt werden. Wer nur NAT nutzt, also Exchange 2010 direkt per Portforward im Internet erreichbar gemacht hat, muss nur die Destination IP auf die Exchange 2016 IP ändern. Das Vorgehen hängt natürlich vom eingesetzten Produkt/Weg ab.
Ab hier sollten wir ein bisschen Zeit ins Land ziehen lassen, bis alle Clients die DNS Änderung mitbekommen haben. Mal einen Tag die Füße hochlegen, kann auch nicht schaden:
Nachdem etwas Zeit vergangen ist, sollte die Outlook Verbindung von Exchange 2016 Benutzern (Testbenutzer aus Teil 1) so aussehen:
Benutzer Hans nutzt MAPIoverHTTP mit Exchange 2016, wohingegen Benutzer Frank MAPI mit Exchange 2010 nutzt:
Wenn Benutzer Frank OWA aufruft, bekommt er die neue Anmeldemaske:
Und wird nach der Anmeldung an Exchange 2010 OWA verwiesen:
Migration der Postfächer
Jetzt ist es an der Zeit die Postfächer zu verschieben. Die Migration der Postfächer ist der einfachste Teil. Wie auch schon für das Testpostfach wird ein neuer Migrationsbatch angelegt:
Jetzt werden alle Postfächer ausgewählt die zu Exchange 2016 migriert werden sollen, mit Ausnahme der ProxyMailbox für Öffentliche Ordner, diese bleibt auf dem Exchange 2010 Server:
Im nächsten Dialog einfach wieder die Exchange 2016 Datenbank auswählen
Abschließend kann der Migrationsbatch gestartet werden:
Je nach Anzahl der Benutzer und des Zeitfensters muss hier jeder selbst entscheiden, wie viele Benutzer innerhalb eines Batches abgearbeitet werden sollen.
Der Status des Migrationsbatches lässt über den Punkt „Details anzeigen“ einsehen:
Wenn alle Postfächer des Migrationsbatches verschoben sind, sieht es wie folgt aus:
Sobald das Postfach zu Exchange 2016 verschoben wurde, erhalten die Benutzer die Nachricht das Outlook neugestartet werden muss
Nach dem Neustart ist Outlook mit Exchange 2016 verbunden.
So können nun nach und nach alle Postfächer verschoben werden, Die Benutzer werden nur einmalig aufgefordert Outlook neu zu starten. Ich denke das ist auch am Tag verkraftbar. Wer das umschubsen der Benutzer lieber in die Nacht verlagern möchte, kann die Option „Batch manuell abschließen“ anwählen, dann können die Postfächer am Tag migriert werden, und Nachts lässt man schnell ein kleines Script laufen und finalisiert die Postfächer.
Migration Öffentlicher Ordner
Wenn alle Postfächer verschoben wurden, kann mit der Migration der Öffentlichen Ordner gestartet werden. Wer keine Öffentlichen Ordner nutzt, kann diesen Teil überspringen und geduldig auf Teil 3 warten.
Für die Migration der Öffentlichen Ordner, werden die „Public Folder Migration Scripts“ benötigt, die Scripte können hier runtergeladen werden:
Microsoft Exchange 2013 Public Folders Migration Scripts
Jetzt nicht über „Microsoft Exchange 2013 Public Folder Migration Scripts“ wundern, die Scripte sind ebenfalls für Exchange 2016 gültig.
Die 4 Dateien werden auf dem Exchange 2010 Server abgelegt, hier im Beispiel in C:\PFMigration
Jetzt werden die folgenden 3 Befehle auf dem Exchange 2010 Server ausgeführt um die vorhandene Struktur, Anzahl der Elemente und Berechtigungen zu sichern:
Get-PublicFolder -Recurse | Export-CliXML C:\PFMigration\Legacy_PFStructure.xml Get-PublicFolderStatistics | Export-CliXML C:\PFMigration\Legacy_PFStatistics.xml Get-PublicFolder -Recurse | Get-PublicFolderClientPermission | Select-Object Identity,User -ExpandProperty AccessRights | Export-CliXML C:\PFMigration\Legacy_PFPerms.xml
Die 3 Befehle erzeugen diese 3 Dateien:
Hinweis: Ein Backshlash „\“ im Namen des Öffentlichen Ordners wird nicht unterstützt, Ordner mit Backshlash im Namen müssen vor der Migration umbenannt werden. Mit dem folgenden Befehl lassen sich entsprechende Ordner finden:
Get-PublicFolderStatistics -ResultSize Unlimited | Where {$_.Name -like "*\*"} | Format-List Name, Identity
Wichtig ist ebenfalls, dass es keine anderen Migrationsversuche der Öffentlichen Ordner gab, in meiner Testumgebung bin ich mir an dieser Stelle sicher und überspringe die Steps zur Prüfung. Wer sich nicht ganz sicher ist, sollte das entsprechende Vorgehen hier nachlesen.
Auch an dieser Stelle möchte ich darauf hinweisen: Diese Anleitung zeigt nur die Vorgehensweise, ist aber nicht allgemein gültig. Wer nur wenige Öffentliche Ordner hat, kann weitermachen, wer viele Öffentliche Ordner hat und / oder viel Datenvolumen, sollte die neue Öffentliche Ordner Struktur planen.
Ich gehe an dieser Stelle davon aus, dass es nur wenige Öffentliche Ordner gibt und dien Datenmenge überschaubar ist (max. 20 GB, was in den meisten Fällen zu einer PFMailbox führt)
Also werden jetzt die nötigen CSV Dateien für die Migration mit Hilfe der Scripte erstellt:
.\Export-PublicFolderStatistics.ps1 FolderToSizeMap.csv fwex2010.frankysweb.local
Als nächstes wird das Mapping von Öffentlichen Ordner zur Öffentlichen Ordner Mailbox erstellt:
.\PublicFolderToMailboxMapGenerator.ps1 21474836480 .\FolderToSizeMap.csv FolderToMailBoxMap.csv
Hinweis: 21474836480 entspricht 20 GB in Bytes und bedeutet an dieser Stelle, das eine Öffentliche Ordner Mailbox max. 20 GB groß sein soll.
Da ich nur eine Postfach für Öffentliche Ordner benutzen möchte, erzeuge ich jetzt das entsprechende Postfach auf dem Exchange 2016 Server:
New-Mailbox -PublicFolder Mailbox1 -HoldForMigration:$true
Jetzt kann der Migrationsbatch für die Öffentlichen Ordner angelegt und gestartet werden:
New-MigrationBatch -Name PFMigration -SourcePublicFolderDatabase (Get-PublicFolderDatabase -Server FWEX2010) -CSVData (Get-Content \\fwex2010\C$\PFMigration\FolderToMailBoxMap.csv -Encoding Byte) -NotificationEmails administrator@frankysweb.de Start-MigrationBatch PFMigration
Der Status der Migration lässt sich über die Shell oder über EAC überprüfen:
Get-MigrationBatch
Jetzt heißt es warten bis der Migratonsbatch fertig ist und den Status „Synchronisiert“ hat:
Für die nächsten Schritte ist ein Wartungsfenster nötig, denn der Zugriff auf die Öffentlichen Ordner, wird nicht möglich sein. Outlook wird eine entsprechende Nachricht anzeigen:
Set-OrganizationConfig -PublicFoldersLockedForMigration:$true
Hinweis: Um den Vorgang an dieser Stelle zu beschleunigen, ist es erforderlich den IIS auf dem Exchange 2010 Server neu zu starten (iisreset). Dabei werden natürlich Outlook Verbindungen unterbrochen. Nach dem Neustart kann mit den folgenden Befehlen weiter gemacht werden. Alternativ hilft auch „warten“:
Set-OrganizationConfig -PublicFoldersEnabled Remote Complete-MigrationBatch PFMigration
Jetzt abwarten, bis der Migrationbatch abgeschlossen ist:
Sobald der Migrationsbatch abgeschlossen ist, kann getestet werden ob alles geklappt hat. Der Test kann mit einem Testbenutzer durchgeführt werden, in diesem Fall der Benutzer Frank:
set-mailbox frank -DefaultPublicFolderMailbox Mailbox1
Benutzer Frank kann jetzt den Zugriff auf die Öffentlichen Ordner testen:
Wenn alles soweit gut aussieht, können die Öffentlichen Ordner wieder für alle Benutzer freigegeben werden, dazu wird der folgende Befehl auf dem Exchange 2016 Server ausgeführt:
Get-Mailbox -PublicFolder | Set-Mailbox -PublicFolder -IsExcludedFromServingHierarchy $false
Danach wird dann dieser Befehl auf dem Exchange 2010 Server ausgeführt:
Set-OrganizationConfig -PublicFolderMigrationComplete:$true
Und zu guter Letzt noch dieser Befehl auf dem Exchange 2016 Server:
Set-OrganizationConfig -PublicFoldersEnabled Local
Zugegeben, die Migration der Öffentlichen Ordner ist kompliziert und erfordert Downtime, aber wenn man das ein paar Mal gemacht hat… Wichtig ist hier die Planung, wie groß sollen die Postfächer für Öffentliche Ordner sein, wie viele Postfächer möchte ich anlegen, wie viel Wachstum wird es geben, usw. Auch die Downtime sollte gut geplant werden und ein entsprechend langes Wartungsfenster kommuniziert werden.
Ab hier liegen also Postfächer und Öffentliche Ordner auf Exchange 2016. Jetzt ist es an der Zeit (wenn erforderlich) die MX Records und Geräte wie Drucker, Scanner, andere Server die Mails verschicken auf Exchange 2016 umzustellen.
Im nächsten und letzten Teil wird dann aufgeräumt und Exchange 2010 deinstalliert.