Corriger QuotaExceededException (MapiExceptionShutoffQuotaExceeded) lors d’une migration Exchange 2010 vers Microsoft 365 & activer l’archivage en ligne

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.

Sommaire

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)

  1. Vérifier et augmenter le quota cible si possible (ou passer à une licence offrant 100 Go + archive).
  2. 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é.
  3. 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.
  4. Activer des rapports détaillés et analyser les dossiers/l’arborescence qui saturent.

Actions recommandées & commandes utiles

ActionButCommandes / outils clésNotes
Vérifier puis augmenter le quota de la boîtePermettre à MRS de traiter tous les dossiers sans bloquerGet-Mailbox -Identity user@domaine.tld | FL ProhibitSendReceiveQuotaDans 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 ancienRéduire la taille réelle avant migrationArchivage Outlook, rétention, suppression contrôléePrioriser les dossiers volumineux et les Recoverable Items.
Fractionner la migration en lots plus petitsDiminuer la charge MRS et contourner certains paliersCréer plusieurs Migration BatchesCommencer par les boîtes < 50 Go; isoler les mastodontes.
Collecter des journaux détaillésDiagnostiquer précisément où ça bloqueGet-MigrationBatch, Get‑MigrationStatistics, Get‑MigrationUserStatistics -IncludeReportAnalyser 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)

PlanBoîte primaireArchive en ligneRemarque
Exchange Online Plan 150 GoOptionnelleConvient aux boîtes petites/moyennes
Exchange Online Plan 2100 GoIncluse + archive extensible possibleRecommandé 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 :

  1. identifié des Recoverable Items supérieurs à 15 Go,
  2. activé l’archive en ligne avec une stratégie « vers archive – 2 ans »,
  3. 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

  1. Inventorier tailles/quota (Get-Mailbox, Get-MailboxStatistics, Get-MailboxFolderStatistics).
  2. Nettoyer le dumpster et les dossiers anormalement volumineux.
  3. Activer l’archive en ligne, appliquer une politique « vers archive » (ex. 2 ans), forcer un premier cycle.
  4. Si nécessaire, passer la licence à Plan 2 (100 Go) pour la boîte cible.
  5. Créer des lots de migration raisonnables; suivre les métriques et les rapports détaillés.
  6. 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
Sommaire