Migrate Public Folders from Exchange 2010 to Modern Public Folders on Exchange 2013

Hallo zusammen,

Eigentlich wollte ich mir die Modern Public Folders schon länger anschauen. Beziehungsweise die Migration der Public Folders von Exchange 2010 auf Exchange 2013 durchführen.

Der Folgende Blog Artikel zeigt nun wie die Migration zu bewerkstelligen ist.

 

Als erstes wird legen wir ein paar Informationen auf die Seite, damit der Stand vor der Migration dokumentiert ist:
Die Public Folder Struktur unter Exchange 2010 in ein CSV exportiert.
Danach die dazugehörigen Statistiken. 
Und anschliessend werden noch die Berechtigungen exportiert. (Die Fehlermeldung bezieht sich nur auf den Root Folder "\")

Get-PublicFolder -Recurse | Export-CSV D:\Temp\2010_PFStructure.csv -NoTypeInformation

Get-PublicFolder -Recurse | Get-PublicFolderStatistics | Export-CSV D:\Temp\2010_PFStatistics.csv -NoTypeInformation

Get-PublicFolder -GetChildren | Get-PublicFolderClientPermission | Select Identity, User -ExpandProperty AccessRights | Export-CSV D:\Temp\2010_PFPerms.csv -NoTypeInformation

Danach wird geprüft ob schon irgendwie eine Public Folder Migration am laufen ist. Beide Werte sollten auf False stehen.

Get-OrganizationConfig | fl *public*

Nun muss ein Script vom Exchange 2013 auf den Exchange 2010 kopiert werden.

#Copy the Scripts from Ex2013 to Ex2010

C:\Program Files\Microsoft\Exchange Server\V15\Scripts

Export-PublicFolderStatistics.ps1

Export-PublicFolderStatistics.strings.psd1

Damit wird die Public Folder Struktur in ein CSV Exportiert, welches später weiterverwendet wird

 

.\Export-PublicFolderStatistics.ps1 D:\Temp\PF_MapFile.csv ICESRV01.corp.icewolf.ch

So sieht das CSV File dann aus.

Nun muss das CSV auf den Exchange 2013 Server kopiert werden. Dann wird dort das CSV File verwendet um einen Vorschlag zu erhalten, wie das in den Modern Public Folder Mailboxen organisiert werden könnte.

cd C:\Program Files\Microsoft\Exchange Server\V15\Scripts

.\PublicFolderToMailboxMapGenerator.ps1 100MB D:\TEMP\PF_MapFile.csv D:\TEMP\PF_MapMailbox.csv

Da ich nur ein paar Folders habe, schlägt mir das Script vor nur eine Public Folder Mailbox anzulegen. Ich werde dieses CSV jedoch anpassen und das Resultat in zwei Public Folder Mailboxes migrieren.

Dafür lege ich zwei Public Folder Mailboxes an. Eine für die Hierarchy und eine für die Daten - ist zwar für die paar Folder übertrieben aber es geht ja ums Prinzip. 

New-Mailbox -PublicFolder PF-Hierarchy –Database MDB03 -IsExcludedFromServingHierarchy $True –HoldForMigration

New-Mailbox -PublicFolder PF-Data01 –Database MDB03 -IsExcludedFromServingHierarchy $True

Nun passe ich das CSV entsprechend an.

Jetzt ist alles vorbereitet und die Synchronisation der Daten in die Public Folder Mailboxen unter Exchange 2013 kann beginnen.

New-PublicFolderMigrationRequest -SourceDatabase (Get-PublicFolderDatabase -Server ICESRV01.corp.icewolf.ch) -CSVData (Get-Content D:\TEMP\PF_MapMailbox.csv -Encoding Byte)

Der obige Befehl wurde mit der untenstehenden Fehlermeldung Quittiert. Eine Recherche im Internet hat ergeben, dass der Source Exchange Server (Exchange 2010) mit dem Public Folder noch mindestens eine Mailbox Datenbank benötigt. Also habe ich wieder eine Mailbox DB auf dem entsprechenden Server erstellt.

Danach klappt es dann :)

New-PublicFolderMigrationRequest -SourceDatabase (Get-PublicFolderDatabase -Server ICESRV01.corp.icewolf.ch) -CSVData (Get-Content D:\TEMP\PF_MapMailbox.csv -Encoding Byte)

Mit dem untenstehenden Befehl, kann man den Status des Kopiervorgangs anschauen.

PublicFolderMigrationRequest | Get-PublicFolderMigrationRequestStatistics

Detaillierte Infos kann man mit folgendem Befehl anschauen.

PublicFolderMigrationRequest | Get-PublicFolderMigrationRequestStatistics -IncludeReport | fl

Bei 95% hält die Datensynchronisation automatisch an. Um nun den Cutover der Public Folders zu beginnen, muss der Source Public Folder unter Exchange 2010 gelockt werden.

#Ex2010

Set-OrganizationConfig –PublicFoldersLockedforMigration $True

Nun kann mit den folgenden Befehlen der Cutover initiert werden

#Ex2013
Get-PublicFolderMigrationRequest | Set-PublicFolderMigrationRequest -PreventCompletion $False
Get-PublicFolderMigrationRequest | Resume-PublicFolderMigrationRequest

Bei mir hat es nicht lange gedauert bis der Status auf "Completed" stand.

PublicFolderMigrationRequest | Get-PublicFolderMigrationRequestStatistics

Ein Blick im Exchange Admin Center zeigt, dass die Folders da sind.

Mit dem untenstehenden Befehl kann man sich die Public Folder Mailboxen anzeigen lassen. Die Hierarchy (Public Folder Struktur) wird jedoch den Clients noch nicht bereitgestellt.

Get-Mailbox -PublicFolder
Get-Mailbox -PublicFolder | fl *hier*

Das passe ich nun an 

Set-Mailbox PF-Hierarchy -PublicFolder -IsExcludedFromServingHierarchy $False

Set-Mailbox PF-Data01 -PublicFolder -IsExcludedFromServingHierarchy $False

Nun weise ich meiner Mailbox die Public Folder Mailbox zu

Get-Mailbox -Identity a.bohren | fl DefaultPublic*
Set-Mailbox -Identity a.bohren -DefaultPublicFolderMailbox PF-Data01

Weitere Informationen:

Grüsse

Andres Bohren

Set-OrganizationConfig –PublicFolderMigrationComplete $true