Skip to content

Litigation Hold & Retention Coverage

The question it answers: Which mailboxes and locations are covered by no retention policy and no hold?

If a mailbox is covered by no retention policy and no hold, a user can delete mail and it is gone for good after the recoverable-items window - including evidence. Mailboxes that nothing retains are listed first, together with whole locations (all sites, all OneDrives, all group mailboxes) no org-wide policy covers.

Where in the appTenant › Compliance & Audit › Retention & Hold Coverage
WorkloadCompliance
KindTable · dashboard tile
DataRead from Microsoft 365 when someone first opens it, then kept for the report cache lifetime (Settings > Data & cache, 1 hour unless changed). It reads through PowerShell (Exchange Online or SharePoint Online), so the first load takes longer than a Graph report.
LicenceMicrosoft 365 E3 or higher (retention policies); litigation hold needs Exchange Online Plan 2 or an archiving add-on.
Report id (API and MCP)tenant.compliance.retention-coverage
ColumnKeyType
Mailbox / locationDisplayNameText
RetainedCoveredStatus
Covered byCoveredByText
TypeMailboxTypeText
Litigation holdLitigationHoldYesNo
Other holdsOtherHoldsText
MRM policyMrmPolicyText
AddressAddressText
FilterKey (API)On when the page opens
Only what nothing retainsnot-retainedYes

Licence: Microsoft 365 E3 or higher (retention policies); litigation hold needs Exchange Online Plan 2 or an archiving add-on.

Application permissions on the IntensiveReports app registration (all permissions):

PermissionAPIWhat it allowsNote
Exchange.ManageAsAppOffice 365 Exchange OnlineManage Exchange As Application

Roles and other setup:

  • Purview role for the app: Compliance Administrator (or a view-only compliance role)
Data sources it reads
  • Connect-IPPSSession (prefix Cc)
  • Get-RetentionCompliancePolicy -DistributionDetail
  • Get-EXOMailbox (LitigationHoldEnabled, InPlaceHolds, RetentionPolicy)
GET /ir-api/v1/reports/tenant.compliance.retention-coverage?size=100
GET /ir-api/v1/reports/tenant.compliance.retention-coverage?filter=not-retained

An AI assistant reads it with the MCP tool get_report and the id tenant.compliance.retention-coverage. The client needs the Read grant for Compliance. See Using the API.