La migration des dossiers publics vers Exchange 2013.

Introduction

Pour ceux qui ont encore une importante infrastructure de dossiers publics, la migration de ceux-ci vers les dossiers publics modernes d’Exchange 2013 va représenter une étape importante voire complexe. Il s’agira d’une bascule quasi-définitive de l’ensemble des dossiers publics en une seule fois.

Envisager cette migration signifie aussi qu’il n’existe plus de clients Outlook 2003 dans l’entreprise, ni de logiciels dépendant des dossiers publics classiques.

Tout d’abord, il faut noter qu’un jeu de commande spécifique *PublicFolderMigrationRequest est dédié à cette migration ainsi que quelques scripts. Ces scripts se trouveront sur le serveur Exchange 2013 dans le dossier C:\Program Files\Microsoft\Exchange Server\V15\Scripts.

Cette migration utilise le service Microsoft Exchange Mailbox Replication, comme pour le déplacement des boîtes aux lettres.

  • Export-PublicFolderStatistics.ps1   Ce script      exporte la liste des dossiers publics Exchange 2010 et des tailles      correspondantes qui serviront de bases aux calculs.
  • PublicFolderToMailboxMapGenerator.ps1   Ce script      génère le fichier de mappage Exchange 2013 en fonction du fichier généré      sur Exchange 2010.

Les prérequis

 

  • Pour réaliser cette migration, la première étape sera de disposer du Service Pack 3 définitif d’Exchange 2010.

Lisez complètement les informations suivantes avant de démarrer la migration. En effet, certaines étapes impliquent des périodes où les dossiers publics ne devraient plus être modifiés, voire ne seront plus accessibles.

  • Réalisez une sauvegarde de vos dossiers publics. Selon la taille et les outils disponibles, le minimum sera de réaliser une copie à partir du client Outlook dans un fichier PST.
  • Le compte utilisé doit avoir le rôle Organisation Management.

Voici les différentes étapes :

 

Une étape préalable qu’il est préférable de réaliser consiste à mémoriser l’arborescence, les statistiques des dossiers (Taille et Nombre d’éléments), ainsi que les permissions.

 

  1. Prenez une image de l’arborescence d’origine.

Get-PublicFolder -Recurse –resultsize unlimited | ConvertTo-CSV C:\scripts\Ex2010PF.csv

[Si les serveurs sources ne sont  pas installés en Windows Server 2012, utilisez la commande Export-CSV au lieu de ConvertTo-Csv pour l’ensemble de ces commandes suivantes]

  1. Récupérez les statistiques de chaque dossier, notamment le nombre d’éléments, la taille et le propriétaire.

Get-PublicFolder –GetChildren –resultsize unlimited | Get-PublicFolderStatistics | ConvertTo-CSV C:\scripts\Ex2010PFStatistics.csv

Attention, le serveur  utilisé doit avoir une copie de tous les dossiers publics !

  1. Récupérez les permissions.

Get-PublicFolder –GetChildren –resultsize unlimited | Get-PublicFolderClientPermission | Select-Object Identity,User -ExpandProperty AccessRights | ConvertTo-CSV C:\Scripts\Ex2010PFPerms.csv

 

Toutes ces informations permettront de vérifier et corriger la destination si nécessaire.

Si des tentatives de migration ont déjà été réalisées ou que la messagerie à migrer ne vous est pas familière, vérifiez bien la situation avec la commande suivante :

Get-OrganizationConfig | Format-List PublicFoldersLockedforMigration, PublicFolderMigrationComplete

Les 2 valeurs suivantes doivent avoir l’état False.

–           PublicFoldersLockedforMigration

–           PublicFolderMigrationComplete

Si ce n’est pas le cas, utilisez la commande suivante pour repositionner la valeur initiale correcte:

Set-OrganizationConfig -PublicFoldersLockedforMigration:$false -PublicFolderMigrationComplete:$false

 

Attention, la modification de ces valeurs peut mettre du temps avant d’être prise en compte. Le redémarrage du service Microsoft Exchange Information Store accélère la prise en compte (Restart-service MsExchangeIS).

 

 

 

Tâches de nettoyages à réaliser sur les serveurs Exchange 2013

  1. Vérifiez et supprimer les éventuelles requêtes précédentes.

Get-PublicFolderMigrationRequest | Remove-PublicFolderMigrationRequest -Confirm:$false

  1. Vérifiez la présence de dossiers publics de type      2013 sur les serveurs Exchange 2013 servers.

Get-Mailbox -PublicFolder

Get-PublicFolder

  1. Si l’une des commandes précédentes renvoie des      éléments, ceux-ci doivent être supprimés.

Get-MailPublicFolder | where $_.EntryId -ne $null | Disable-MailPublicFolder -Confirm:$false

Get-PublicFolder -GetChildren \ | Remove-PublicFolder -Recurse -Confirm:$false

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

 

Etape 1 : Générer les fichiers de travail au format CSV

 

  1. Sur  Exchange Server 2010 SP3 server, exécutez      le script Export-PublicFolderStatistics.ps1 pour créer le fichier des      tailles de dossiers publics.

Le script se trouve sur le serveur Exchange 2013 et peut être copié ou utilisé à distance.

  1.  Le fichier      aura 2 colonnes: FolderName et FolderSize. La taille du      dossier sera en octets.

.\Export-PublicFolderStatistics.ps1 <FQDNofSourceServer> <FolderToSizeMapPath>

 

 

FQDNofSourceServer = Nom complet du serveur de dossiers publics

FolderToSizeMappath = Chemin (local ou réseau) et nom du fichier où sauvegarder le fichier CSV.

Ce fichier sera ensuite transféré et  lu sur le serveur Exchange 2013.

Exemple d’exécution à distance :

& ‘\\tdsrv16\c$\Program Files\Microsoft\Exchange Server\V15\Scripts\Export-PublicFolderStatistics.ps1’ -ExportFile c:\scripts\folderSize.txt -PublicFolderServer tdsrv24.deman.local

 

  1. Générer le fichier de  mappage. Ce fichier permet de définir le      nombre de boîte de dossiers publics qui seront nécessaires sur Exchange      2013.

.\PublicFolderToMailboxMapGenerator.ps1 <MaximumMailboxSizeInBytes> <FoldertoSizeMapPath> <FoldertoMailboxMapPath>

  • MaximumMailboxSizeInBytes : Taille maximale en octêts souhaitée pour le contenu initial de chaque boîte.

 

  • FoldertoSizeMapPath : Chemin du fichier CSV généré par le script Export-PublicFolderStatistics.ps1.

 

  • FolderToMailboxMapPath : Chemin du fichier qui contiendra les mappages.

Exemple de syntaxe pour obtenir des boîtes de 2 Go:

.\PublicFolderToMailboxMapGenerator.ps1 2000000000 C:\scripts\FolderSize.txt c:\Scripts\FolderMap.txt

Etape 2: Créer les boîtes de dossiers publics sur le serveur Exchange 2013

 

Attention, les boîtes créées doivent correspondre à celles se trouvant dans le fichier de mappage.

On peut modifier les noms de la colonne TargetMailbox dans le fichier qui contiendra les mappages pour s’adapter aux conventions de noms souhaitées.

  1. Créez la boîte contenant l’arborescence des dossiers      publics sur le serveur Exchange 2013 possédant le rôle Mailbox. Le mode “ HoldForMigration”      est nécessaire lors d’une migration pour ne pas activer immédiatement      cette fonctionnalité.

New-Mailbox -PublicFolder <Name> -HoldForMigration:$true

 

Name : Nom de la boîte qui servira de racine à l’arborescence des dossiers publics.

 

La première boîte de dossiers publics sera visible dans l’administration Exchange 2013 et gérera la hiérarchie principale:

  1. Créez ensuite les boîtes nécessaires en fonction      des noms définis dans le fichier résultant du script PublicFoldertoMailboxMapGenerator.ps1.

New-Mailbox -PublicFolder <Name>

A noter que chaque boîte de dossiers publics contiendra l’ensemble de l’arborescence des dossiers publics afin de faciliter  et d’accélérer les déplacements entre dossiers placés dans différentes boîtes.

Voici un exemple de script qui permet de créer une dizaine de boîte avec le préfixe Mailbox qui est défini par défaut. N’hésitez pas à modifier ce nom si nécessaire, mais n’oubliez pas de le modifier aussi dans le fichier de mappage.

$numberOfMailboxes = 10;

for($index =0 ; $index -lt $numberOfMailboxes ; $index++)

{

$PFMailboxName = « Mailbox« +$index;

if($index -eq 0)

{

New-Mailbox -PublicFolder $PFMailboxName -HoldForMigration;

}

else

{

New-Mailbox -PublicFolder $PFMailboxName;

}

}

 

Etape 3: Démarrer les requêtes de migration

 

Depuis le serveur Mailbox Exchange 2013, exécutez la commande suivante:

New-PublicFolderMigrationRequest -SourceDatabase (Get-PublicFolderDatabase -Server <SourceServerName>) -CSVData (Get-Content <FolderToMailboxMapPath> -Encoding Byte)

Exemple:

New-PublicFolderMigrationRequest -SourceDatabase (Get-PublicFolderDatabase -Server TDSRV24) -CSVData (Get-Content C:\scripts\FolderMap.txt -Encoding Byte)

Vérifiez que les requêtes de migration sont bien démarrées:

Get-PublicFolderMigrationRequest

Si vous souhaitez regarder dans le détail :

Get-PublicFolderMigrationRequest | Get-PublicFolderMigrationRequestStatistics -IncludeReport | Format-List | more

 

Si nécessaire, il faudra modifier la requête pour modifier le nombre de défauts autorisés et relancer la requête. Il est prudent d’examiner les logs afin de vérifier les éléments considérés comme défectueux, et d’en réaliser une copie spécifique.

Get-PublicFolderMigrationRequest | Set-PublicFolderMigrationRequest -BadItemLimit 10

Get-PublicFolderMigrationRequest| Resume-PublicFolderMigrationRequest

La migration sera bien démarrée quand le status  Queued ou InProgress apparaitra.

Selon la quantité de dossiers et de contenu, cette commande peut durer très longtemps (2 GB à 3 GB par heure).

La procédure peut continuer quand le statut  AutoSuspended est atteint.

Etape 4: Verrouiller les dossiers publics sur Exchange 2010 pour la migration finale

(Un temps d’indisponibilité est à prévoir)

Attention, la durée du verrouillage dépendra de la quantité de nouveaux contenus générés depuis que la migration a atteint l’état AutoSuspended. Jusqu’à ce point, les utilisateurs ont pu continuer à accéder aux dossiers publics !

Les étapes suivantes vont déconnecter les utilisateurs des dossiers publics et les bloqueront jusqu’à la synchronisation complète.

La commande suivante ne fonctionnera que sur les serveurs Exchange 2010 installés avec la dernière version du SP3 qui n’est pas encore définitive.

Set-OrganizationConfig -PublicFoldersLockedForMigration:$true

Dans le cas d’une organisation possédant de nombreuses bases de dossiers publics, il faudra s’assurer que la réplication des dossiers publics a pris en compte le flag de verrouillage. Si l’on veut accélérer cette étape, il faudra redémarrer le service « Microsoft Exchange Information Store » sur tous les serveurs possédant une banque publique en utilisant la commande suivante :

Restart-Service MSExchangeIS

Etape 5: Finaliser la migration des dossiers publics

(Un temps d’indisponibilité est à prévoir)

 

Par défaut, la commande Set-PublicFolderMigration ne peut pas achever la migration. Il est nécessaire de supprimer le flag PreventCompletion, puis redémarrer la requête de migration.

Set-PublicFolderMigrationRequest -Identity \PublicFolderMigration -PreventCompletion:$false

 

Resume-PublicFolderMigrationRequest -Identity \PublicFolderMigration

 

Les dossiers publics sont à nouveau disponibles dès la fin de la requête de migration.

Vérification du résultat de la migration:

On va maintenant extraire l’arborescence des dossiers publics sur Exchange 2013, les statistiques et les permissions. Ces fichiers seront à comparer avec ceux réalisés sur Exchange 2010.  Eventuellement, il sera possible de remettre les permissions ou les éléments manquant à partir des copies réalisées en début de migration.

Si vous avez utilisé la commande Export-CSV sur le serveur source, utilisez cette même commande sur Exchange 2013 pour comparer avec des fichiers de même structure.

  1. Récupérez l’arborescence des dossiers publics      2013.

Get-PublicFolder –Recurse –ResultSize Unlimited | ConvertTo-CSV C:\scripts\Ex2013PF.csv

  1. Récupérez les statistiques.

Get-PublicFolder –GetChildren –ResultSize Unlimited | Get-PublicFolderStatistics | ConvertTo-CSV C:\scripts\Ex2013PFStatistics.csv

  1. Récupérez      les permissions.

Get-PublicFolder –GetChildren –ResultSize Unlimited | Get-PublicFolderClientPermission | Select-Object Identity,User -ExpandProperty AccessRights | ConvertTo-CSV C:\scripts\Ex2013PFPerms.csv

 

 

On retrouvera l’affichage des dossiers publics dans la console Web d’administration :

 

 

 

Le retour en arrière (si cela est nécessaire) :

 

Après finalisation de la migration, si l’on se rend compte que les dossiers publics sur Exchange 2013 ne sont pas utilisables tels quels, il est possible de réactiver l’utilisation des dossiers publics Exchange2010.

Attention, rebasculer sur les dossiers publics Exchange 2010 peut impliquer la perte de données. Toutes les données ajoutées dans les dossiers publics Exchange 2013 ne se retrouveront pas dans Exchange 2010 !

En cas de retour-arrière, Microsoft recommande de supprimer toutes les boîtes de dossiers publics tel que cela est décrit dans la partie prérequis de la migration.

  1. Pour débloquer les dossiers publics Exchange      2010, utilisez la commande suivante sur Exchange 2010.

Set-OrganizationConfig -PublicFoldersLockedForMigration:$False

  1. Utilisez la commande suivante pour annuler la      migration:

Set-OrganizationConfig -PublicFolderMigrationComplete:$False

 

Les dossiers publics seront à nouveau disponibles au fur et à mesure des réplications ou du redémarrage du service de banques d’information.

En conclusion,

Les premières migrations vers Exchange 2013 risquent de démarrer très vite dès que le SP3 définitif de Exchange 2010 sera disponible. Pour le moment, seul Outlook 2013 peut se connecter à ces nouveaux dossiers publics. Des patchs semblent prévus pour connecter Outlook 2010 et peut être Outlook 2007 à ces nouveaux dossiers publics. Par ailleurs, ces 2 dernières versions peuvent aussi fonctionner avec Exchange 2013 sans les dossiers publics. Pour être complet, on peut aussi noter que les dossiers publics ne seront pas accessibles dans OWA 2013.

Cet article a été publié dans « IT Pro Magazine  www.itpro.fr  » en Février 2013 dans l’édition spéciale « TechDays 2013 »!

Thierry DEMAN

Thierry DEMAN est MVP sur la technologie Microsoft Exchange. Expert reconnu sur les technologies Microsoft son passage d’une petite dizaine d’année au sein du groupe Artemys fût particulièrement apprécié.