Exchange Public Folder nach Office 365 migrieren

    Erfolgreiche Migration der Public Folder nach Exchange OnlineBeim Umstieg von einer on-Premise-Umgebung in die Cloud reicht es meist nicht, Benutzer und Gruppen zu mig­rieren. Denn nach wie vor nutzen viele Organi­sationen öffent­liche Ordner auf ihrem lokalen Exchange-Server. Diese sollten in einem sepa­raten Projekt nach Micro­soft 365 über­führt werden.

    Für die Migration der Public Folder nach Exchange Online ist lokal mindesten Exchange 2013 CU15, Exchange 2016 CU4 oder höher erforderlich. Bei Exchange 2019 gibt es keine Anforderungen an das CU.

    Die hier verwendete System­umgebung basiert auf Exchange 2019 und einem frischen Microsoft 365-Tenant, auf dem noch keine öffentlichen Ordner vorhanden sind. Sollten auf Exchange Online aber bereits welche existieren, so wird empfohlen, diese zu löschen.

    Auf dem Exchange-Server befinden sich keine weiteren Migrations-Jobs oder irgendwelche Altlasten, zudem gibt es keinen Mischbetrieb mit anderen Exchange-Versionen. Falls Ihre Umgebung davon abweicht, sind unter Umständen weitere Vorbereitungen notwendig.

    Weitere Voraussetzungen

    • Die Benutzer sollten vor den öffentlichen Ordnern migriert werden, damit die Berechtigungen auf Ordnerebene korrekt gesetzt werden können.
    • In Exchange Online sollte der Migrations­benutzer die Rolle Organisations­verwaltung innehaben. Auf dem lokalen Exchange kann er alternativ auch Mitglied der Gruppe Server Verwaltung RBAC sein. Es empfiehlt sich zudem, die Multifaktor-Authentifizierung (MFA) für diesen User zu deaktivieren, da es ansonsten zu Problemen bei der Migration kommen kann.
    • Darüber hinaus sollte man die Größe alle öffentlichen Ordner prüfen. Sie darf 25 GB nicht überschreiten und lässt sich mit dem Cmdlet Get-PublicFolderStatistics ermitteln. Zudem ist die Anzahl der Postfächer für öffentliche Ordner auf 1000 und für die Migration auf 100 begrenzt.
    • Die Namen der öffentlichen Ordner sollte man darauf prüfen, ob sie einen '/' oder '\' enthalten. Diese Zeichen müssen entfernt werden.
    • Schließlich sollte der Proxy für den Postfach­replikations­dienst (MRS) auf mindestens einem Exchange-Server aktiviert sein.

    Während der Migration bzw. zu ihrem Abschluss (letzter Sync) muss man eine Downtime einplanen, an dem die öffentlichen Ordner nicht zur Verfügung stehen.

    Herunterladen der Migrations-Scripts

    Die für die Migration nötigen Scripts kann man von Microsofts Website hier und hier herunterladen. Es empfiehlt sich, diese in einem Migrations­ordner zu sammeln.

    In meinem Beispiel liegen sie unter C:\Skript\Migration und werden von dort ausgeführt. Sie erzeugen CSV-Dateien, welche ebenfalls in diesem Ordner abgelegt werden.

    Momentaufnahme erstellen

    Da bei der Migration etwas schiefgehen könnte, macht es Sinn, vorher eine Moment­aufnahme der öffentlichen Ordner zu erstellen. Dazu führt man folgenden Befehl auf dem lokalen Exchange aus, um die ursprüngliche Quellordner­struktur zu sichern:

    Get-PublicFolder -Recurse -ResultSize Unlimited | Export-CliXML OnPrem_PFStructure.xml

    Struktur der öffentlichen Ordner auf dem Quellsystem aufzeichnen

    Folgendes Script erstellt eine Moment­aufnahme der Statistiken, darunter die Anzahl der Elemente, Größe und Besitzer.

    Get-PublicFolderStatistics -ResultSize Unlimited | Export-CliXML OnPrem_PFStatistics.xml

    Statistische Kennzahlen zu den öffentlichen Ordnern sichern mit PowerShell

    Ein weiteres Kommando hält die Berechtigungen auf die öffentlichen Ordner fest:

    Get-PublicFolder -Recurse -ResultSize Unlimited |Get-PublicFolderClientPermission |
    Select-Object Identity, User, AccessRights -ExpandProperty AccessRights |
    Export-CliXML OnPrem_PFPerms.xml

    Und das letzte Script erzeugt eine Moment­aufnahme der E-Mail-aktivierten Ordner:

    Get-MailPublicFolder -ResultSize Unlimited | Export-CliXML OnPrem_MEPF.xml

    E-Mail-aktivierte Ordner in eine XML-Datei wegschreiben

    AAD Connect

    Wer AAD Connect einsetzt, sollte sich vergewissern, dass die Option Öffentliche Exchange E-Mail Ordner nicht angeklickt ist.

    Die Option Öffentliche Exchange E-Mail Ordner sollte nicht aktiviert werden

    CSV-Dateien zur Vorbereitung der Migration generieren

    In den nächsten Schritten werden einige CSV-Dateien durch die zuvor herunter­geladenen Scripts generiert, welche später bei der Migration erforderlich sind.

    Der erste Aufruf erzeugt eine CSV-Datei, welche die Eigenschaften FolderSize, DeleteItemSize und Foldername enthält:

    .\Export-ModernPublicFolderStatistics.ps1 <Folder-to-size map path>

    Statistiken für die öffentlichen Ordner in eine CSV-Datei exportieren

    Das nächste Script berechnet, wie viele Postfächer für die öffentlichen Ordner in Exchange Online benötigt werden und schreibt dies wieder in eine CSV-Datei weg:

    .\ModernPublicFolderToMailboxMapGenerator.ps1 -MailboxSize 50GB `
    -MailboxRecoverableItemSize 1GB -ImportFile .\PFStatistic.csv -ExportFile map.csv

    Berechnen, wie viele Postfächer in Microsoft 365 für die öffentlichen Ordner benötigt werden

    Postfächer für öffentliche Ordner in Exchange Online erstellen

    Im nächsten Schritt werden die vorhin erstellten Dateien verarbeitet. Das folgende Script generiert die benötigten Postfächer auf Exchange Online, diese entnimmt es aus der map.csv.

    Postfächer für die öffentlichen Ordner auf Exchange Online erstellen

    Starten der Migrationsanforderung

    Alle Vorbereitungen sind mit diesem Schritt abgeschlossen. Nachfolgend beginnt nun die eigentliche Migration der öffentlichen Ordner zu Exchange Online.

    Auf dem lokalen Exchange-Server führt man folgendes Skript aus, das die E-Mail-aktivierten öffentlichen Ordner mit Exchange Online synchronisiert. Die einzugebenden Anmeldedaten sind die des Migrations­benutzers in Microsoft 365.

    .\Sync-ModernMailPublicFolders.ps1 -Credential (Get-Credential) `
    -CsvSummaryFile:sync_summary.csv

    Für die Synchronisierung der E-Mail-aktivierten Ordner benötigt man den Migrationsbenutzer aus Microsoft 365.

    Erfolgreiche Synchronisierung der Mail-aktivierten öffentlichen Ordner

    Die nächsten Schritte führt man in der PowerShell von Exchange Online aus. Die abgebildete Kennwort­abfrage erwartet den Migrations­benutzer der On-prem-Umgebung:

    $Source_Credential = Get-Credential smartsocke\administrator

    Anmeldedaten des lokalen Migrationsbenutzers abfragen

    Danach speichert man den FQDN des MRS Proxy-Servers in einer Variablen:

    $Source_RemoteServer = "EX01.smartsocke.com"

    Jetzt muss man zwischen­durch auf dem lokalen Exchange-Server die GUID des primären Postfaches ausgeben. Diesen Wert benötigt man zwingend im nächsten Script:

    (Get-OrganizationConfig).RootPublicFolderMailbox.HierarchyMailboxGuid.GUID

    GUID der primären Mailbox für die Weiterverarbeitung im nächsten Script ausgeben

    Weiter geht es in der Exchange Online PowerShell, hier erstellt man nun den Endpunkt und die Migrations­anforderung für die öffentlichen Ordner. Die weiter oben beschriebenen Schritte für die Credentials und den MRS Server habe ich zur besseren Übersicht in das vollständige Script übernommen:

    In der ECP von Exchange Online unter Empfänger => Migration müsste nun ein Migrations-Job zu sehen sein, welcher die öffentlichen Ordner der On-prem-Umgebung synchronisiert. Die Public Folders selbst sind bis zum Abschluss des Vorgangs aber in dieser Konsole noch nicht zu sehen.

    Anzeige des Migrations-Jobs im Admin Center von Exchange Online

    Das Ergebnis der Migration kann mit PowerShell in Exchange Online wie folgt prüfen:

    Get-MigrationBatch | where {$_.MigrationType -like "*PublicFolder*"} | ft *last*sync*

    Get-PublicFolderMailboxMigrationRequest |
    Get-PublicFolderMailboxMigrationRequestStatistics |ft targetmailbox,*last*sync*

    Ergebnis der Migration mit PowerShell überprüfen

    Sobald die Synchronisation erfolgreich abgeschlossen ist, kann man damit beginnen, die öffentlichen Ordner auf dem lokalen Exchange-Server zu sperren. Damit ist spätestens jetzt eine Downtime unver­meidlich. Sie lassen sich mit PowerShell so deaktivieren:

    Set-OrganizationConfig -PublicFolderMailboxesLockedForNewConnections $true

    Es sollten nun auch in der ECP des lokalen Exchange-Servers keine öffentlichen Ordner mehr zu sehen sein und auch Get-PublicFolder sollte keine mehr anzeigen.

    Abschluss der Migration

    Die Migration beendet man nun in der Exchange Online PowerShell mit folgendem Kommando:

    Complete-MigrationBatch PublicFolderMigration

    Das Admin Center von Exchange Online zeigt den Abschluss der Migration an.

    Der Status springt in der ECP dann auf Wird abgeschlossen und schließlich auf Abgeschlossen.

    Auf Seite von Exchange Online müssen die öffentlichen Ordner nun noch freigegeben werden. Das lässt sich ebenfalls mit der PowerShell von Exchange Online erledigen:

    Set-OrganizationConfig -RemotePublicFolderMailboxes $Null -PublicFoldersEnabled Local

    Es kann nun einige Zeit dauern, bis die öffentlichen Ordner unter Exchange Online zu sehen sind, Microsoft gibt dafür einen Wert von zirka 30 Minuten an. Anschließend kann mit einigen Testbenutzern die Zugriffe auf die öffentlichen Ordner und deren Inhalte ausprobieren.

    Sollte soweit alles in Ordnung sein, dann kann die Migration auf dem lokalen Exchange-Server ebenfalls mit folgendem Befehl beendet werden:

    Set-OrganizationConfig -PublicFolderMailboxesMigrationComplete:$true `
    -PublicFoldersEnabled Remote

    Nach dem Abschluss der Migration auf dem lokalen Exchange verschwinden die öffentlichen Ordner aus der ECP.

    Die öffentlichen Ordner sind danach auf dem lokalen Exchange nicht mehr sichtbar.

    Täglich Know-how für IT-Pros mit unserem Newsletter

    Wir ver­wenden Ihre Mail-Adresse nur für den Ver­sand der News­letter.
    Es erfolgt keine per­sonen­be­zogene Auswertung.

    Keine Kommentare