Migration der öffentlichen Ordner von Exchange 2010 zu 2016 mit getrennten Exchange Rollen

Das Supportende von Exchange Server 2010 rückt immer näher und langsam sollten die bestehenden Exchange 2010 Server aktualisiert werden. Der Support für Exchange 2010 sollte bereits Anfang des Jahres eingestellt werden, das Ablaufdatum wurde jedoch durch Microsoft auf den 13. Oktober 2020 verschoben.

Ein großes Hindernis bei der Aktualisierung ist die Migration der öffentlichen Ordner (Engl.: Public Folder). Daher wird in diesem Blogeintrag die Migration der öffentlichen Ordner und deren Verfügbarkeit während der Migration bei einer Exchange Umgebung mit getrennten Exchange Rollen behandelt. Damit eine Koexistenz für die Migration von Exchange 2010 auf 2016 überhaupt möglich ist, muss der Exchange 2010 Server SP3 mit Update Rollup 11 installiert haben.


Problematik der öffentlichen Ordner

Exchange Server 2010 Nutzer haben keine Möglichkeit auf öffentliche Ordner zuzugreifen, die sich auf Exchange Server 2016 befinden. Andersrum ist dies mit einem Workaround möglich, indem man mit Proxy Mailboxen arbeitet. Die Proxy Mailbox wird für die Migration von Nutzermailboxen oder öffentlichen Ordnern nicht benötigt, lediglich für die Verfügbarkeit der öffentlichen Ordner während der Migration ist diese von Nöten. Um das Proxying einrichten zu können, gilt eine Voraussetzung, dass sich die öffentlichen Ordner auf einem Server mit CAS Rolle befinden. Typischerweise ist dies in einer bestehenden Umgebungen mit getrennten Exchange Rollen Mailbox und Client Access Server nicht der Fall.

Für diesen Blogeintrag habe ich folgende Umgebung verwendet:

  • EX10-MBX: Exchange Server 2010 mit Mailboxrolle, welcher die Public Folder innehält

  • EX10-CAS: Exchange Server 2010 mit der CAS Rolle, auf welchem zusätzlich die Mailboxrolle installiert werden soll, um die Voraussetzungen zu erfüllen

  • EX16: Exchange Server 2016, auf welchem die Public Folder migriert werden sollen

Exchange 2016.png

Um die Voraussetzungen des Proxying zu schaffen, muss entweder die CAS- oder die Mailboxrolle nachinstalliert werden:

1. CAS-Rolle auf dem Exchange 2010 Mailbox Server (EX10-MBX) installieren:

  • Hierbei wird auf dem Mailbox Server die CAS Rolle installiert, dadurch übernimmt der Server auch die Abwicklung sämtlicher Client Verbindungen.

  • Vorteil:

    Wenn die Installation fehlerfrei verläuft, ist es schneller die CAS-Rolle auf dem Exchange 2010 Mailbox-Server zu installieren, da hier der Schritt der Migration der öffentlichen Ordner von dem Mailbox-Server auf den CAS-Server wegfällt.

  • Nachteil:

    Allerdings kann die Funktionalität des Mailverkehrs eingeschränkt werden, wenn es zu Fehlern während der CAS-Installation kommt, weil Nutzer dann evtl. nicht mehr auf ihr Postfach zugreifen können.

2. Mailbox-Rolle auf dem CAS-Server (EX10-CAS) installieren:

  • Hierbei wird auf dem Exchange 2010 Server, der die Rolle des Client Access Service innehat, zusätzlich die Mailbox-Rolle installiert und anschließend alle öffentlichen Ordner, die sich auf dem Exchange 2010 Server (EX10-MBX) befinden, mittels des Exchange Shell Skriptes MoveAllReplicas.ps1 auf den CAS Server migriert. Sie finden das Skript im Exchange Installationspfad unter C:\Program Files\Microsoft\Exchange Server\V14\Scripts.

  • Vorteil:

    Die Installation der Mailbox-Rolle ist relativ schnell erledigt ist und es sind keine großen Änderungen an der Netzwerkstruktur erforderlich.

  • Nachteil:

    Die Migration der öffentlichen Ordner nimmt je nach Größe der Daten einige Zeit in Anspruch.

Dieser Blogeintrag zeigt, wie Mailbox-Rolle auf einem CAS-Server (Methode 2) installiert und die öffentlichen Ordner auf den CAS-Server migriert werden. Die Mailboxrolle lässt sich über das Installationsmedium nachinstallieren. Den Umzug der öffentlichen Ordner zwischen zwei bestehenden Exchange Server 2010 erkläre ich nachfolgend.

Public Folder Migration 02.png

Öffentliche Ordner innerhalb Exchange Server 2010 verschieben

Wenn auf dem CAS-Server (EX10-CAS) die Mailbox Rolle installiert wurde, muss zunächst eine öffentliche Ordner Datenbank erstellt werden. Dies kann über die Exchange Management Konsole durchgeführt werden:

  • Öffnen der Exchange Management Konsole

  • Unter Organisationskonfiguration/Postfach werden die bestehenden Datenbanken angezeigt

  • Auf der rechten Seite befindet sich das Action Center. Hier wird die Auswahl „neue Public Folder Datenbank“ getroffen

  • Im darauffolgenden Fenster wird der Name der Datenbank und der Server bestimmt

  • Der Datenbank-Pfad und der Pfad der Logs werden automatisch gesetzt

  • Durch Klick auf „Neu“ werden die Einstellungen übernommen und die Datenbank angelegt.

Public Folder Migration 03.png

Anschließend kann zur Replikation der öffentlichen Ordner übergegangen werden:

  • Public Folder Management Konsole öffnen

  • Im mittleren Bereich die bestehenden öffentlichen Ordner auswählen und mittels Rechtsklick in die Eigenschaften navigieren

  • Unter dem Reiter Replication können die zu replizierenden Server hinzugefügt werden, in diesem Fall EX10-CAS mit der öffentlichen Ordner Datenbank PfDB_cas

Public Folder Migration 04.png
  • Darauffolgend können alle Replikate mittels des Skriptes MoveAllReplicas.ps1, auf den Microsoft Exchange 2010 CAS Server in die neu erstellte Datenbank PfDB_cas verschoben werden.

.\MoveAllReplicas.ps1 -Server EX10-MBX -NewServer EX10-CAS

Anschließend kann mit der Einrichtung der Proxy Mailbox begonnen werden.


Einrichten der Proxy Mailbox

Die Proxy Mailbox sollte in einer separaten Datenbank, auf dem CAS-Server EX10-CAS, abgelegt werden. Dazu kann die Microsoft Exchange ECP genutzt oder auf folgende Befehle in der Microsoft Exchange Management Shell zurückgegriffen werden:

Hinweis: Jeder Server der öffentliche Ordner enthält benötigt eine Proxy Mailbox.  

1.     Neue Datenbank anlegen:

New-MailboxDatabase -Server EX10-CAS -Name PFProxyDB1 -IsExcludedFromProvisioning $true  

Public Folder Migration 05.png

Mit dem Parameter IsExcludedFromProvisioning wird verhindert, dass neue Mailboxen automatisch zu dieser Datenbank hinzugefügt werden. 

2. Proxy Mailbox in der neuen Datenbank anlegen:

New-Mailbox -Name PfProxyMb1 -Database PFProxyDB1 -UserPrincipalName PfProxyMb1@domain.local  

Public Folder Migration 06.png

3.    Die Proxy Mailbox sollte vom Adressbuch ausgeblendet werden:

Set-Mailbox -Identity PfProxyMb1 – HiddenFromAddressListsEnabled $true

Public Folder Migration 07.png

4.    Auf dem Exchange 2010 Server (EX10-CAS) muss es Autodiscover erlaubt werden, die Proxy Mailbox für öffentliche Ordner auszugeben:

Set-Mailboxdatabase PFProxyDB1 -RPCClientAccessServer EX10-CAS

Mit diesem Befehl wird es möglich gemacht, dass das Autodiscover die Datenbank ermitteln kann.

5.    Nachdem die Proxy Datenbank und die Proxy Mailbox erzeugt wurden, kann der Zugriff eingeschalten werden. Dazu wird folgender Befehl auf einem Exchange Server 2016 (EX16) verwendet:

Set-OrganizationConfig -PublicFoldersEnabled Remote -RemotePublicFolderMailboxes PFproxyMb1

Unter RemotePublicFolderMailboxes sollten alle Proxy Mailboxen angegeben werden, die unter Punkt 2 erstellt wurden:

Set-OrganizationConfig -PublicFoldersEnabled Remote -RemotePublicFolderMailboxes PFproxyMb1, PFproxyMb2, PFproxyMb3

6.    Anschließend kann die Datenbank der öffentlichen Ordner auf dem Exchange 2010 Mailbox -Server (EX10-MBX) gelöscht werden. Hierbei gilt zu beachten, dass die Standard öffentliche Ordner Datenbank auf Exchange 2016 Datenbanken nicht auf die öffentlichen Ordner, der Exchange 2010 Mailbox Server (EX10-MBX) verweist, sondern auf die öffentliche Ordner Datenbank des CAS-Servers (EX10-CAS). Mit folgendem Befehl kann die Standard öffentliche Ordner Datenbank geändert werden:

Get-MailboxDatabase | Set-MailboxDatabase -PublicFolderDatabase “PfDB_cas”

Public Folder Migration 8.png

7.    Nach kurzer Wartezeit und einem Neustart des CAS-Servers (EX10-CAS), sollten die öffentlichen Ordner, die sich auf dem Exchange 2010 Server befinden bei den Nutzern mit einem Exchange 2016 Postfach sichtbar sein.

Der Zugriff ist allerdings nur über Outlook und nicht über die OWA möglich.

Wenn im Outlook noch keine öffentlichen Ordner sichtbar sein sollten, kann es helfen, die Proxy Datenbank als öffentliche Ordner Datenbank der Exchange 2016 Datenbanken einzutragen. Dafür kann der folgende Befehl in der Exchange 2016 Shell ausgeführt werden:

Get-Mailboxdatabase | Set-MailboxDatabase -PublicfolderDatabase “PFProxyDB1”


Migration der öffentlichen Ordner

Die Migration der öffentlichen Ordner erfolgt typischerweise nach der Migration der Nutzerpostfächer. Daher sollte bereits folgendes konfiguriert sein:

  • Systempostfächer befinden sich auf Exchange Server 2016

  • Die DNS-Einträge sollten auf die Exchange Server 2016 Server umgestellt worden sein, da diese das Proxying übernehmen. Dies kann zur Sicherheit noch einmal mittels NsLookup überprüft werden.

  • Firewall und NLB wurden auf Exchange 2016 umgestellt

  • Es sollten sich auf dem Exchange 2010 Server (EX10-CAS) keine Postfächer außer der Proxy Mailbox befinden. Dies kann mittels Get-Mailbox überprüft werden.  

Achtung: bei der Migration kommt es zu Ausfallzeiten im Zugriff auf die öffentliche Ordner.

Für die Migration werden die folgenden Skripte verwendet. Die sechs enthaltenen Dateien, drei Skripte und deren Definitionsdateien, werden auf dem Exchange 2010 Server (EX10-CAS) und Exchange Server 2016 abgelegt. Um die vorhandene Struktur, Anzahl der Elemente und Berechtigungen zu sichern, werden die folgenden drei Befehle auf dem Exchange 2010 (EX10-CAS) Server ausgeführt (ggf. müssen die Speicherpfade abgeändert werden):

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

Achtung: Im Namen des öffentlichen Ordners werden Backslashes und bestimmte Sonderzeichen nicht unterstützt. Diese müssen vor der Migration umbenannt werden. Zudem sollte überprüft werden, dass es keine vorherigen Migrationsversuche der öffentlichen Ordner gab, da es immer nur einen Migrationsbatch geben kann.

Mit dem folgenden Befehl wird überprüft, ob Back- oder Forwardslashes im Namen eines öffentlichen Ordners vorhanden sind:

Get-PublicFolderStatistics -ResultSize Unlimited | Where {($_.Name -like "*\*") -or ($_.Name -like "*/*") } | Format-List Name, Identity

Mit dem nachfolgenden Befehl wird der Name eines öffentlichen Ordners geändert.

Set-PublicFolder -Identity <public folder identity> -Name <new public folder name>

Die öffentlichen Ordner dürfen noch nicht für die Migration gesperrt worden sein. Dies kann über den folgenden Befehl überprüft werden:

Get-OrganizationConfig | Format-List PublicFoldersLockedforMigration, PublicFolderMigrationComplete

Sollte hierbei eine Ausgabe mit dem Wert True erfolgen, muss folgender Befehl genutzt werden, um diesen Wert auf False zu setzen:

Set-OrganizationConfig -PublicFoldersLockedforMigration $false -PublicFolderMigrationComplete $false

Anschließend kann es bis zu zwei Stunden dauern, bis die Änderungen wirksam sind. Empfehlenswert ist, sich zu speichern, welche öffentliche Ordner mail-enabled sind. Damit die mail-enabled öffentlichen Ordner angezeigt werden, kann auf folgenden Befehl zurückgegriffen werden:

Get-MailPublicFolder

Bevor es zur Migration der öffentlichen Ordner geht, muss sichergestellt werden, dass sich kein Migrationsbatch zu öffentlichen Ordnern auf dem Exchange 2016 Server befindet.

Zur Überprüfung kann folgender Befehl genutzt werden:

$batch = Get-MigrationBatch | ?{$_.MigrationType.ToString() -eq “PublicFolder”}

Mit dem folgenden Befehl werden die Migrationsbatches gelöscht:

$batch | Remove-MigrationBatch -Confirm:$false

Zudem dürfen sich keine öffentliche Ordner Mailboxen oder öffentliche Ordner auf dem Exchange Server 2016 befinden. Dies wird mittels der folgenden Befehle auf dem Exchange Server 2016 überprüft:

Get-Mailbox -PublicFolder

Get-PublicFolder

Sollten sich noch öffentliche Ordner auf dem Exchange Server 2016 befinden, können diese mit den folgenden Befehlen entfernt werden:

Get-Mailbox -PublicFolder | Where {$_.IsRootPublicFolderMailbox -eq $false} | Remove-Mailbox -PublicFolder -Force -Confirm:$false

Get-Mailbox -PublicFolder | Remove-Mailbox -PublicFolder -Force -Confirm:$false


Generierung der CSV-Dateien

In den nächsten Schritten müssen die benötigten CSV Dateien für die Migration bereitgestellt werden. Diese Dateien enthalten Informationen über die bestehende öffentliche Ordner Struktur, Namensgebung und Größe. Mit dem Export-PublicFolderStatistics.ps1 wird eine Zuordnungsdatei von Ordnernamen und Ordnergröße erstellt. Die Datei wird zwei Spalten enthalten: Ordnername und Ordnergröße in Byte.

Der Befehl wird auf dem Exchange Server 2010 abgesetzt:

.\Export-PublicFolderStatistics.ps1 FolderToSizeMap.csv Ex10-CAS.domain.local

Danach wird das Mapping von öffentlichen Ordnern zur öffentlichen Ordner Datenbank erstellt. Der Befehl wird ebenfalls auf dem Exchange Server 2010 abgesetzt:

.\PublicFolderToMailboxMapGenerator.ps1 42949650969 .\FolderToSizeMap.csv FolderToMailBoxMap.csv

Die Angabe 42949650969 entspricht 40GB und sagt aus, dass eine öffentliche Ordner Mailbox max. 40GB groß sein soll. Sollten die öffentlichen Ordner größer als 40 GB sein, muss die Zahl entsprechend angepasst werden. Auf Exchange Server 2016 werden Public Folder anhand der Namen der FolderToMailBoxMap.csv erstellt, typischerweise Public Folder Mailbox 1. Sollten andere Namen gewünscht werden, muss dies in der .csv geändert werden. Anschließend können auf dem Exchange 2016 (EX16) die entsprechenden Mailboxen für die öffentliche Ordner erstellt werden:

.\Create-PublicFolderMailboxesForMigration.ps1 -FolderMappingCsv Mapping.csv -EstimatedNumberOfConcurrentUsers:<estimate>

Im nächsten Schritt wird der Migrationsbatch für die öffentliche Ordner auf dem Exchange 2016 Server (EX16) angelegt und gestartet:

New-MigrationBatch -Name PfMigration -SourcePublicFolderDatabase (Get-PublicFolderDatabase -Server EX10-CAS) -CSVData (Get-Content \\EX10-CAS\C$\PFMigration\FoldertoMailBoxMap.csv -Encoding Byte)

Start-MigrationBatch PfMigration

Gegebenfalls muss die .csv Datei noch freigegeben werden. Mittels Get-MigrationBatch lässt sich der Status der Migration überprüfen. Nachdem die Migration den Status synchronisiert erreicht hat, ist ein Wartungsfenster nötig, da der Zugriff auf die öffentlichen Ordner zum Migrationsabschluss nicht möglich sein wird. Um die öffentlichen Ordner für den Benutzerzugriff während der Migration zu sperren, wird folgender Befehl auf dem Exchange 2010 Server (EX10-CAS) verwendet:

Set-OrganizationConfig -PublicFoldersLockedForMigration: $true

Mit folgenden Befehlen kann anschließend die Migration abgeschlossen werden:

Set-OrganizationConfig -PublicfolderEnabled Remote

Complete-MigrationBatch PfMigration

Sobald die Migration abgeschlossen ist, sollte die Ordnerhierarchie getestet werden. Mit folgendem Befehl wird das Standard öffentliche Ordner Postfach für einen Testnutzer auf eines der eben migrierte öffentliche Ordner Postfächer gesetzt:

Set-Mailbox Testuser -DefaultPublicFolderMailbox Mailbox1

Wenn der Test erfolgreich war, können die öffentlichen Ordner für alle Nutzer freigegeben werden. Dazu wird folgender Befehl auf dem Exchange 2016 Server genutzt:

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

Anschließend wird die Migration auf dem Exchange 2010 Server bestätigt:

Set-OrganizationConfig -PublicFolderMigrationComplete: $true

Und zum Schluss noch folgender Befehl auf dem Exchange 2016 Server durchgeführt:

Set-OrganizationConfig -PublicFoldersEnabled Local

Nun liegen alle Benutzerpostfächer und öffentliche Ordner auf dem Exchange 2016 Server und es kann mit den Aufräumarbeiten auf den Exchange 2010 Servern begonnen werden. Dazu gehören u.a. folgende Aufgaben: die Proxy Mailbox deaktivieren, alle Datenbanken entfernen, die Sendekonnektoren und DNS-Einträge anpassen sowie schließlich Exchange 2010 deinstallieren. Vor einer Deinstallation der Exchange 2010 Server empfehlen wir Ihnen, diese für einige Tage auszuschalten. Dadurch merken Sie evtl. noch andere Systeme, bei denen der alten Exchange 2010 Server mit dem FQDN eingetragen ist. Im Fehlerfall ist es schneller, den Exchange Server 2010 zu starten und die verweiste Einträge in Ruhe zu reparieren.