How to – Migration Public Folder Exchange 2010 -> 2016

Seit Exchange 2013 gibt es die klassischen Public Folder nicht mehr. Eine eigene Datenbank haben die Public Folder nicht mehr. Es gibt sie zwar immer noch, aber seit Exchange 2013 werden sie in einer eigenen sogenannten Public Folder Mailbox gelagert. Das bietet den großen Vorteil, dass auch endlich die Public Folder mit den Mechanismen der Mailboxen gesichert und administriert werden können. Soviel nur am Rande. Wie bekommen Sie nun die Public Folder aus der Pub.edb von Exchange 2010 und älter in die Exchange 2016 Mailbox?

Ich kann Ihnen den Migrationspfad, der auch von Microsoft empfohlen wird, guten Gewissens weiterempfehlen. Dazu laden Sie sich zunächst die von Microsoft bereit gestellten Scripte herunter.

Speichern Sie diese am besten auf einem Netzwerk Share. Auf diesem können Sie dann auch die erstellten CSV Dateien ablegen.

Im ersten Schritt sollten sie eine Momentaufnahme Ihrer bestehenden Public Folder abspeichern. Dazu dienen die drei folgenden Scripte.

Damit wird die Struktur der Public Folder gespeichert:

Get-PublicFolder -Recurse | Export-CliXML C:\PFM_igration\PF_Structure.xml

Im nächsten Schritt speichern Sie die Statistik Daten Ihrer Public Folder Umgebung:

Get-PublicFolderStatistics | Export-CliXML C:\PF_Migration\PF_Statistics.xml

Im letzten Schritt werden noch die Berechtigungen der Public Folder abgelegt:

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

Als nächstes sollten Sie prüfen, ob in der Namensgebung der Public Folder nicht erlaubte Zeichen enthalten sind. Wenn im Namen des Public Folders oder in Attributen solche Zeichen enthalten sind, schlagen weitere Schritte evtl. fehl.

Ein Beispiel ist das Leerzeichen im Alias oder ein “\” im Namen. Entfernen Sie diese Zeichen soweit möglich.

Wenn dies geschehen ist, erstellen Sie mit Hifle der bereitgestellten Scripte die erforderlichen CSV Dateien. Mit dem folgenden Script erstellen Sie eine CSV, mit der die Folder inkl. ihrer Größe abgelegt werden.

Export-PublicFolderStatistics.ps1 “\\Server\share\PF_FolderSize.csv” “EX2010.domain.de”

Mit dem nächsten Script wird die erforderliche Anzahl der Public Folder Mailboxen anhand der Foldergrößen bestimmt. Es sind mehrere Parameter erforderlich.

  • Maximum mailbox size in bytes
    • Das ist die maximale Größe die für public Folder Mailboxen festgelegt wird. Im Beispiel 20000000000 für 20 GB.
  • Folder to size map path
    • Das ist der Pfad der CSV “PF_FolderSize.csv”.
  • Folder to mailbox map path
    • In dieser Datei wird die Zuordnung von Foldern zu Mailboxen abgelegt.
PublicFolderToMailboxMapGenerator.ps1 20000000000 "\\Server\Share\PF_FolderSize.csv" "\\Server\Share\PF_Mailboxes.csv"

Nachdem alle Daten gesammelt wurden, können die erforderlichen Public Folder Mailboxen erstellt werden.

Create-PublicFolderMailboxesForMigration.ps1 -FolderMappingCsv PF_Mailboxes.csv -EstimatedNumberOfConcurrentUsers:"maxUser"

Nun kann die eigentliche Migration gestartet werden. Dazu wird ein neuer Migrationsbatch erstellt.

New-MigrationBatch -Name PF_Migration -SourcePublicFolderDatabase (Get-PublicFolderDatabase -Server EX2010) -CSVData (Get-Content "\\Server\Share\PF_Mailboxes.csv" -Encoding Byte)

Dann starten Sie den Batch.

Start-MigrationBatch PF_Migration

Mit dem CMDLet Get-Migrationbatch können Sie sich den Status der Migration ansehen. Der Status sollte abhängig von der Größe der Folder nach Abschluss zu “Synced” wechseln.

Sollten Fehler auftreten, können Sie sich diese detailliert mit folgendem Befehl ansehen.

(Get-MigrationBatch PF_Migration -IncludeReport |select -ExpandProperty report).failures |select TimeStamp,Message

Nun folgt der Abschluss. Dazu sperren Sie die Public Folder auf dem Exchange 2010 und setzen diese in den Migration Mode.

Set-OrganizationConfig -PublicFoldersLockedForMigration:$true

Es kann sein, dass diese Konfiguration einige Zeit benötigt, bis sie bekannt ist. Beschleunigen können Sie dies, wenn Sie die Pub.ebd dismounten und wieder mounten.

Im Nächsten Schritt schalten Sie die neuen Public Folder in den Remote Mode.

Set-OrganizationConfig -PublicFoldersEnabled Remote

Wenn dies alles erfolgreich abgeschlossen wurde, können  Sie den Migrationsbatch komplettieren.

Complete-MigrationBatch PF_Migration

Wenn dieser Vorgang durchgeführt wird, wechselt der Status des Batches in “completing” und nach Abschluss in “completed”. Achten Sie darauf, dass es einige Zeit dauern kann, bis der Status von “Synced” auf “Completing” wechselt.

Wenn der Status auf “completed” gewechselt ist, testen Sie die Migration. Dazu weisen Sie einer Test Mailbox die Public Folder Mailbox als default Public Folder zu.

Set-Mailbox -Identity "TestUser"                       -DefaultPublicFolderMailbox "PF_Mailbox"

Dann starten Sie ein Outlook und verbinden sich auf die Mailbox des TestUsers.

  • Prüfen Sie die Hierarchy
  • Prüfen Sie die Berechtigungen
  • Erstellen und Löschen von Foldern
  • Veröffentlichen von Inhalten

Wenn alles funktioniert, können Sie die Public Folder Mailbox(en) für alle User freigeben.

Get-Mailbox | Set-Mailbox -DefaultPublicFolderMailbox "PF_Mailbox"
Get-Mailbox -PublicFolder | Set-Mailbox -PublicFolder -IsExcludedFromServingHierarchy $false

Bestätigen Sie als nächtes die erfolgreiche Migration auf dem Exchange 2010 Store.

Set-OrganizationConfig -PublicFolderMigrationComplete:$true

Nachdem alles funktioniert, schließen Sie mit diesem Befehl auf dem Exchange 2016 ab.

Set-OrganizationConfig -PublicFoldersEnabled Local

Nun können Sie zum Abschluss noch eine neue Eventaufnahme machen und die Datein mit denen zu Beginn vergleichen.

Get-PublicFolder -Recurse | Export-CliXML \\Server\Share\new_PF_Structure.xml
Get-PublicFolderStatistics -ResultSize Unlimited | Export-CliXML \\Server\Share\new_PF_Statistics.xml
Get-PublicFolder -Recurse | Get-PublicFolderClientPermission | Select-Object Identity,User -ExpandProperty AccessRights | Export-CliXML  \\Server\Share\PF_Perms.xml