Unable to Delete Items from Mailbox Due to Discovery Holds in Exchange Online – Complete Fix
Even after disabling mailbox-level features, data may still be preserved due to higher-priority compliance policies.
🔍 The Symptoms / Error Message
⚠️ What You May Experience
- Users cannot permanently delete emails
- Purges folder keeps increasing in size
- Mailbox size does not reduce despite cleanup attempts
- Same issue seen in both primary and archive mailbox
🧠 Root Cause
💡 Why This Happens
This issue occurs because one or more of the following holds are active:
- Litigation Hold
- eDiscovery (In-Place Hold – legacy)
- Microsoft Purview Retention Policies
- Organisation-wide retention or discovery holds
- Retention configured with “retain forever / never delete”
⚠️ Important
Even if you disable Single Item Recovery or remove retention policies at mailbox level, Purview retention overrides everything. Always validate Purview policies first.
🛠️ Step-by-Step Resolution
Check Mailbox Size and Recoverable Items
Connect to Exchange Online and inspect the mailbox and archive sizes, then check the Purges folder specifically.
Connect-ExchangeOnline # Primary mailbox size Get-MailboxStatistics user@yourdomain.com | Select DisplayName,TotalItemSize,TotalDeletedItemSize # Archive mailbox size Get-MailboxStatistics user@yourdomain.com -Archive | Select DisplayName,TotalItemSize,TotalDeletedItemSize # Purges folder - primary Get-MailboxFolderStatistics user@yourdomain.com -FolderScope RecoverableItems | Where-Object {$_.Name -eq "Purges"} | Select Name,FolderPath,ItemsInFolder,FolderSize # Purges folder - archive Get-MailboxFolderStatistics user@yourdomain.com -Archive -FolderScope RecoverableItems | Where-Object {$_.Name -eq "Purges"} | Select Name,FolderPath,ItemsInFolder,FolderSize
Check Mailbox Hold Status
Identify all active holds on the mailbox including litigation hold, in-place holds, and delay holds.
Get-Mailbox user@yourdomain.com | Select DisplayName,LitigationHoldEnabled,LitigationHoldDuration,InPlaceHolds,RetentionHoldEnabled,SingleItemRecoveryEnabled,DelayHoldApplied,DelayReleaseHoldApplied Get-OrganizationConfig | Select InPlaceHolds
Disable Single Item Recovery (if needed)
If Single Item Recovery is enabled and not required, disable it on the mailbox.
Set-Mailbox user@yourdomain.com -SingleItemRecoveryEnabled $false
⚠️ Note
This alone will not clear the Purges folder if a Purview retention policy is still active. Proceed to Step 4.
Identify Microsoft Purview Retention Policies
Connect to Security & Compliance PowerShell and identify which retention policies are applied and their rules.
Connect-IPPSSession # List all retention policies Get-RetentionCompliancePolicy | Select Name,Enabled # Check Exchange locations per policy Get-RetentionCompliancePolicy | Format-List Name,ExchangeLocation,Guid # Check retention rules Get-RetentionComplianceRule | Select Name,Policy,RetentionDuration,RetentionAction # Check which policy includes the mailbox Get-RetentionCompliancePolicy -Identity "PolicyName" | Format-List Name,ExchangeLocation
Remove or Exclude Mailbox from Policy
Either remove the mailbox entirely from the policy, or add it as an exception — the recommended approach.
✅ Two Options Available
- Option A — Remove mailbox completely from the policy
- Option B (Recommended) — Add mailbox as an exception, preserving the policy for all other users
# Option A - Remove mailbox completely Set-RetentionCompliancePolicy "PolicyName" -RemoveExchangeLocation user@yourdomain.com # Option B - Add as exception (Recommended) Set-RetentionCompliancePolicy "PolicyName" -AddExchangeLocationException user@yourdomain.com # Verify the exception was applied Get-RetentionCompliancePolicy -Identity "PolicyName" | Format-List Name,ExchangeLocationException
Validate Hold Removal
Confirm the hold has been removed and check the mailbox retention settings.
# Validate distribution status and hold state Get-RetentionCompliancePolicy -Identity "PolicyName" | Format-List DistributionStatus,*Hold* # Confirm mailbox retention settings Get-Mailbox user@yourdomain.com | Format-List RetainDeletedItemsFor
Wait for Policy Propagation
Changes do not apply instantly — Microsoft Purview needs time to update across workloads.
✅ Once Propagation Completes
- The Purges folder will start clearing automatically
- Mailbox size will begin to reduce
- Users will be able to permanently delete emails
💡 Best Practices & Recommendations
- Avoid using “never delete” retention policies unless legally required
- Use policy exceptions instead of removing policies globally to protect other users
- Always validate Purview policies first before making mailbox-level changes
- Monitor Recoverable Items regularly in high-compliance environments
✅ Final Insight
If users cannot delete emails, always assume Purview retention is the real blocker. Mailbox-level changes (SingleItemRecovery, quotas, etc.) will not work until the mailbox is removed or excluded from the retention policy. This is especially common in tightly controlled environments where compliance policies are enforced for legal discovery or investigation purposes.
📚 References & Further Reading
- 🔗 Retention policies in Microsoft 365 — Microsoft Learn
- 🔗 Recoverable Items folder in Exchange Online — Microsoft Learn
- 🔗 Connect to Exchange Online PowerShell — Microsoft Learn
- 🔗 Connect to Security & Compliance PowerShell — Microsoft Learn
