Migration Exchange 2010 → Microsoft 365 : comment corriger l’erreur QuotaExceededException / MapiExceptionShutoffQuotaExceeded sur des boîtes volumineuses (≥ 300 000 messages) et poursuivre sans supprimer de données.
Erreur QuotaExceededException lors de la migration d’une boîte aux lettres de 300 000 messages
Problème
- La migration d’une boîte Exchange 2010 (≈ 300 000 messages) vers Microsoft 365 échoue systématiquement avec :
MapiExceptionShutoffQuotaExceeded / QuotaExceededException
. - La tentative de limiter la plage de dates ne résout pas l’erreur.
Pourquoi cette erreur apparaît
Dans un scénario de remote move, l’MRS (Mailbox Replication Service) lit l’intégralité de la boîte source et tente d’écrire chaque élément dans la boîte cible. L’erreur QuotaExceededException survient lorsque l’une de ces limites est atteinte :
- Quota primaire de la boîte cible (p. ex. 50 Go sur Exchange Online Plan 1, 100 Go sur Plan 2).
- Sur-Quota des éléments récupérables (Recoverable Items : Deletions, Purges, Versions) souvent gonflés par la rétention, les litiges ou l’absence de purge.
- Dossiers massifs (centaines de milliers d’items) déclenchant des paliers de protection (shutoff) internes.
- Éléments trop volumineux (au‑delà de la taille maximum autorisée) qui s’additionnent avec les synchronisations incrémentales et saturent le quota restant.
Que retenir (résumé opérationnel)
- Vérifier et augmenter le quota cible si possible (ou passer à une licence offrant 100 Go + archive).
- Réduire la taille avant le démarrage (ou entre deux synchronisations) via archive en ligne, nettoyage des Recoverable Items, ou archivage local contrôlé.
- Fractionner le volume par lots / utilisateurs en commençant par les plus petits, puis migrer les boîtes très volumineuses en dernière vague.
- Activer des rapports détaillés et analyser les dossiers/l’arborescence qui saturent.
Actions recommandées & commandes utiles
Action | But | Commandes / outils clés | Notes |
---|---|---|---|
Vérifier puis augmenter le quota de la boîte | Permettre à MRS de traiter tous les dossiers sans bloquer | Get-Mailbox -Identity user@domaine.tld | FL ProhibitSendReceiveQuota | Dans Exchange Online, le quota dépend de la licence. Passer de Plan 1 (50 Go) à Plan 2 (100 Go) règle souvent le problème. |
Archiver ou supprimer le contenu ancien | Réduire la taille réelle avant migration | Archivage Outlook, rétention, suppression contrôlée | Prioriser les dossiers volumineux et les Recoverable Items. |
Fractionner la migration en lots plus petits | Diminuer la charge MRS et contourner certains paliers | Créer plusieurs Migration Batches | Commencer par les boîtes < 50 Go; isoler les mastodontes. |
Collecter des journaux détaillés | Diagnostiquer précisément où ça bloque | Get-MigrationBatch , Get‑MigrationStatistics , Get‑MigrationUserStatistics -IncludeReport | Analyser les dossiers et items problématiques; ajuster les paramètres. |
Retour terrain : le passage à une licence avec quota supérieur (> 50 Go) a permis de terminer la migration.
Procédure détaillée (pas à pas)
1) Établir un état des lieux chiffré
Connectez‑vous à Exchange Online PowerShell puis dressez l’inventaire.
Connect-ExchangeOnline
# Quotas et licence
Get-Mailbox -Identity [user@domaine.tld](mailto:user@domaine.tld) | FL RecipientTypeDetails,IssueWarningQuota,ProhibitSendQuota,ProhibitSendReceiveQuota
# Statistiques globales
Get-MailboxStatistics -Identity [user@domaine.tld](mailto:user@domaine.tld) | FL TotalItemSize,ItemCount,LastLogonTime
# Dossiers les plus lourds (primaire)
Get-MailboxFolderStatistics -Identity [user@domaine.tld](mailto:user@domaine.tld) | Sort-Object FolderAndSubfolderSize -Descending | Select-Object -First 20 DisplayName,ItemsInFolder,FolderSize
# Recoverable Items (dumpster)
Get-MailboxFolderStatistics -Identity [user@domaine.tld](mailto:user@domaine.tld) -FolderScope RecoverableItems |
Select-Object Name,ItemsInFolder,FolderAndSubfolderSize
2) Traiter les Recoverable Items et le contenu obsolète
Ces dossiers ne sont pas visibles par l’utilisateur, mais comptent dans le quota. Nettoyez‑les avant la migration (ou entre deux passes).
- On‑prem / Exchange 2010 :
Search-Mailbox -SearchDumpsterOnly -DeleteContent
(selon permissions et politique de rétention). - Microsoft 365 : privilégier les outils de conformité (recherche & purge) si
Search-Mailbox
n’est pas disponible.
Pensez à supprimer les éléments Calendar Logging ou dossiers systèmes gonflés en cas de corruption; massifier la purge peut libérer plusieurs gigaoctets.
3) Augmenter temporairement le quota (si possible)
Si la licence le permet, augmentez la limite de la boîte cible afin que MRS puisse écrire tous les éléments. Sur Microsoft 365, cela revient le plus souvent à passer de Plan 1 (50 Go) à Plan 2 (100 Go) et/ou à adjoindre une archive en ligne.
4) Mettre en place l’archive en ligne pour réduire sans supprimer
Voir la section « Activer l’archivage en ligne » ci‑dessous. L’archive déplace automatiquement le contenu ancien hors du magasin primaire, libérant de l’espace pour la migration.
5) Fractionner et prioriser
Évitez de lancer un lot unique avec des boîtes > 100 Go ou > 100 000 objets. Créez des batches par profil de taille et planifiez les boîtes « XL » en fin de vague, idéalement après activation de l’archive et purge du dumpster.
6) Relancer la migration et suivre les métriques
# Statut global
Get-MigrationBatch
# Suivi détaillé d'un utilisateur
Get-MigrationUserStatistics -Identity [user@domaine.tld](mailto:user@domaine.tld) -IncludeReport |
FL Status,ItemsSynced,BytesTransferred,PercentComplete,FailureCounts
# Rapport CSV (EAC) pour analyse par dossier
Paramètres utiles pour les boîtes « hors normes »
- BadItemLimit / LargeItemLimit : autorise MRS à ignorer un nombre limité d’éléments endommagés ou surdimensionnés (à doser, l’objectif restant zéro perte).
- SuspendWhenReadyToComplete : permet de basculer la boîte lors d’un créneau réduit, une fois la synchronisation initiale terminée.
- Priorité des migrations : migrez d’abord les boîtes petites/moyennes pour libérer de la bande passante, gardez les mastodontes pour la fin.
Réduire la taille sans supprimer : activer l’archivage en ligne
Question
Peut‑on activer l’archivage en ligne pour abaisser la taille de la boîte et poursuivre la migration, sans supprimer ni archiver localement ?
Réponse courte
Oui. L’archivage en ligne (Exchange Online Archive) déplace automatiquement les éléments anciens du Primary Mailbox vers un magasin d’archive séparé. La boîte primaire redevient conforme au quota, ce qui débloque la migration.
Procédure détaillée
1) Vérifier la licence
Requis : Exchange Online Plan 2, Microsoft 365 E3/E5 ou l’add‑on Exchange Online Archiving.
2) Activer l’archive
# Crée l'In-Place Archive
Enable-Mailbox -Identity user@domaine.tld -Archive
# (Optionnel, au niveau de l'organisation) Activer l'archive extensible
# Permet une croissance automatique au-delà du quota de l'archive.
# À exécuter une seule fois pour le tenant lorsque requis :
# Set-OrganizationConfig -AutoExpandingArchive
Un magasin d’archive est créé : quota initial de 100 Go; l’archive extensible permet une croissance automatique à très grande échelle en cas de besoin.
3) Appliquer une stratégie de rétention (MRT)
Objectif : déplacer automatiquement vers l’archive les messages de plus de N mois/années.
# Crée une étiquette de rétention "tout type" vers l'archive à 2 ans
New-RetentionPolicyTag "VersArchive-2ans" -Type All -RetentionAction MoveToArchive -RetentionAge 730
# Crée la stratégie et y lie l'étiquette
New-RetentionPolicy "ArchivePolicy" -RetentionPolicyTagLinks "VersArchive-2ans"
# Affecte la stratégie à l'utilisateur
Set-Mailbox [user@domaine.tld](mailto:user@domaine.tld) -RetentionPolicy "ArchivePolicy"
4) Forcer un cycle de rétention (optionnel)
Start-ManagedFolderAssistant -Identity user@domaine.tld
5) Contrôler la taille et relancer
# Tailles primaire et archive
Get-MailboxStatistics -Identity user@domaine.tld | FL TotalItemSize,ItemCount
Get-MailboxStatistics -Identity user@domaine.tld -Archive | FL TotalItemSize,ItemCount
# Lorsque la primaire < quota, relancer la migration
Avantages
- Aucune suppression ni PST local à gérer.
- Archive accessible partout (Outlook/OWA, mobilité, eDiscovery).
- Possibilité d’archive extensible pour absorber une croissance massive.
Points d’attention
- Le contenu de l’archive n’est pas inclus dans une migration cutover/staged classique ; prévoir un plan dédié si vous devez déplacer l’archive.
- Le moteur de rétention peut prendre 24–48 h à exécuter toutes les actions selon la charge du service. Le cycle optionnel permet d’accélérer le premier passage.
Guides pratiques, scripts et check‑list
Checklist de préparation (avant tout lot)
- Exécuter
Test-MigrationServerAvailability
pour valider MRS Proxy, Autodiscover, authentification, latence. - Relever pour chaque boîte : taille totale, nombre d’items, taille du dumpster, plus gros dossiers, plus gros items.
- Confirmer la licence cible et le quota autorisé (50 Go vs 100 Go + archive).
- Activer l’archive en ligne et une stratégie de rétention cohérente.
- Segmenter vos batches : taille conseillée ≤ 100 Go ou ≤ 100 000 objets par boîte pour épargner MRS.
Script d’analyse rapide des « gros dossiers »
$u = "user@domaine.tld"
Get-MailboxFolderStatistics -Identity $u |
Select-Object FolderPath, ItemsInFolder, FolderAndSubfolderSize |
Sort-Object ItemsInFolder -Descending |
Select-Object -First 30 | Format-Table -Auto
Identifier le poids des éléments récupérables
$u = "user@domaine.tld"
Get-MailboxFolderStatistics -Identity $u -FolderScope RecoverableItems |
Sort-Object FolderAndSubfolderSize -Descending |
Format-Table Name, ItemsInFolder, FolderAndSubfolderSize -Auto
Contrôler la progression d’un utilisateur bloqué
Get-MigrationUserStatistics -Identity user@domaine.tld -IncludeReport |
FL Status,ItemsSynced,ItemsSkipped,LargeItemsEncountered,FailureCounts,PercentComplete
Nettoyer prudemment le dumpster (selon environnement et conformité)
# Exchange on-prem (ex. 2010/2016), selon rôles attribués :
Search-Mailbox -Identity user@domaine.tld -SearchDumpsterOnly -DeleteContent
# Microsoft 365 : utiliser les outils de conformité pour rechercher/purger
# (ex. recherche de contenu + action de purge sur des critères précis).
Paramétrer les tolérances (à utiliser avec parcimonie)
Autoriser un nombre raisonnable d’items endommagés/volumineux peut débloquer une boîte « historique », tout en documentant précisément ce qui a été ignoré.
# Exemple indicatif lors de la création d'un batch (selon type de migration)
# -BadItemLimit 50 -LargeItemLimit 50 -AcceptLargeDataLoss:$false
Stratégie de bascule (« cutover » contrôlé)
- Laissez MRS synchroniser la majorité des données (InitialSync = 95–99 %).
- Suspendre WhenReadyToComplete pour planifier une fenêtre de bascule courte.
- Effectuer la final sync puis basculer MX/autodiscover si nécessaire.
Informations complémentaires utiles
Limites de quota Exchange Online (référence rapide)
Plan | Boîte primaire | Archive en ligne | Remarque |
---|---|---|---|
Exchange Online Plan 1 | 50 Go | Optionnelle | Convient aux boîtes petites/moyennes |
Exchange Online Plan 2 | 100 Go | Incluse + archive extensible possible | Recommandé pour boîtes volumineuses |
Taille conseillée pour un lot de migration
- ≤ 100 Go ou ≤ 100 000 objets par boîte dans le même lot pour limiter les effets de throttling MRS.
- Mélangez plusieurs petites boîtes avec une seule boîte volumineuse plutôt que plusieurs mastodontes simultanément.
Surveillance en temps réel
Le Centre d’administration Exchange > Migration affiche l’état, les pourcentages et permet de télécharger des rapports CSV détaillant les erreurs par dossier/élément. Corrélez toujours ces rapports avec Get‑MigrationUserStatistics -IncludeReport
pour obtenir les failure codes exacts.
Bonnes pratiques avant un batch
- Exécuter
Test-MigrationServerAvailability
pour valider l’endpoint. - Nettoyer les dossiers « Recoverable Items » pour éviter un quota caché.
- Vérifier les règles et calendriers partagés pouvant créer de la latence.
- Informer les utilisateurs des changements (autorisations déléguées, carnet d’adresses, compléments Outlook).
Étude de cas : quand le quota débloque tout
Une organisation migrait des boîtes Exchange 2010 de 150–180 Go, dont certaines dépassaient 300 000 messages. Malgré des tentatives de filtration temporelle, l’erreur MapiExceptionShutoffQuotaExceeded interrompait chaque synchronisation. Après avoir :
- identifié des Recoverable Items supérieurs à 15 Go,
- activé l’archive en ligne avec une stratégie « vers archive – 2 ans »,
- et remplacé la licence Plan 1 par Plan 2 (100 Go),
la taille primaire est descendue sous 90 Go, l’archive a absorbé le surplus historique, et la migration s’est finalisée sans échec. Le lot suivant a été scindé, réduisant nettement les temps d’InitialSync.
FAQ express
Limiter la plage de dates suffit‑il à éviter l’erreur ?
Pas nécessairement. La structure des dossiers et le poids des Recoverable Items peuvent à eux seuls dépasser le quota. Traitez le quota et l’archive en priorité. Ai‑je besoin d’un PST local ?
Non si vous activez l’archive en ligne et une stratégie de rétention qui déplace le contenu ancien. Combien d’éléments « défectueux » puis‑je autoriser ?
Le but est de rester à 0. En pratique, tolérer quelques dizaines d’items peut fluidifier une boîte très ancienne, mais documentez‑les et informez l’utilisateur. Que faire des pièces jointes > 150 Mo ?
Exchange Online bloque les messages trop volumineux. Utilisez LargeItemLimit
pour les ignorer pendant la migration, puis récupérez‑les au cas par cas (OneDrive/SharePoint).
Recette prête à l’emploi
- Inventorier tailles/quota (
Get-Mailbox
,Get-MailboxStatistics
,Get-MailboxFolderStatistics
). - Nettoyer le dumpster et les dossiers anormalement volumineux.
- Activer l’archive en ligne, appliquer une politique « vers archive » (ex. 2 ans), forcer un premier cycle.
- Si nécessaire, passer la licence à Plan 2 (100 Go) pour la boîte cible.
- Créer des lots de migration raisonnables; suivre les métriques et les rapports détaillés.
- Basculer lors d’une fenêtre courte après la fin de l’InitialSync.
Modèles de scripts (copier/coller)
Top 20 dossiers par volume (primaire + archive)
$u = "user@domaine.tld"
"--- Primaire ---"
Get-MailboxFolderStatistics -Identity $u |
Sort-Object FolderAndSubfolderSize -Descending |
Select-Object -First 20 DisplayName,ItemsInFolder,FolderAndSubfolderSize |
Format-Table -Auto
"--- Archive ---"
Get-MailboxFolderStatistics -Identity $u -Archive |
Sort-Object FolderAndSubfolderSize -Descending |
Select-Object -First 20 DisplayName,ItemsInFolder,FolderAndSubfolderSize |
Format-Table -Auto
Vue express de la santé d’un utilisateur en migration
Get-MigrationUserStatistics -Identity user@domaine.tld -IncludeReport |
Select-Object Identity,Status,ItemsSynced,ItemsSkipped,LargeItemsEncountered,PercentComplete |
Format-Table -Auto
Créer et affecter une politique « vers archive – 2 ans »
New-RetentionPolicyTag "VersArchive-2ans" -Type All -RetentionAction MoveToArchive -RetentionAge 730
New-RetentionPolicy "ArchivePolicy" -RetentionPolicyTagLinks "VersArchive-2ans"
Set-Mailbox user@domaine.tld -RetentionPolicy "ArchivePolicy"
Déclencher le moteur de rétention (MFA)
Start-ManagedFolderAssistant -Identity user@domaine.tld
Conclusion
Face à l’erreur QuotaExceededException / MapiExceptionShutoffQuotaExceeded lors d’une migration Exchange 2010 vers Microsoft 365, la clé est de jouer sur les leviers de taille plutôt que de forcer MRS : élaguer le dumpster, activer l’archive en ligne avec une rétention adaptée, et si besoin augmenter le quota via la licence. Ajoutez à cela des lots calibrés et un suivi rigoureux des rapports : vous irez au bout même avec des boîtes contenant 300 000 messages (et plus), sans recourir à la suppression ni aux fichiers PST.
Annexe : aide‑mémoire des commandes
Connect-ExchangeOnline
Get-Mailbox
Get-MailboxStatistics
Get-MailboxFolderStatistics
Enable-Mailbox -Archive
New-RetentionPolicyTag
New-RetentionPolicy
Set-Mailbox -RetentionPolicy
Start-ManagedFolderAssistant
Get-MigrationBatch
Get‑MigrationStatistics
Get‑MigrationUserStatistics -IncludeReport
Search-Mailbox -SearchDumpsterOnly -DeleteContent
(selon environnement)Test-MigrationServerAvailability