Retention Policies
Configure data retention across Microsoft 365 workloads. Retention policies ensure content is kept for compliance requirements and automatically deleted when no longer needed.
Note: If a retention policy says to retain and another says to delete, content is retained. This principle ensures regulatory compliance takes precedence over cleanup operations.
Retention Policy List
| Column | Description |
|---|---|
| Policy Name | Descriptive name for the policy |
| Status | On, Off, or Pending |
| Locations | Workloads covered (Exchange, SharePoint, etc.) |
| Retention Period | How long to retain content |
| Action | What happens after retention (delete, nothing) |
| Created | When policy was created |
Creating a Retention Policy
1. Policy Name and Description
Use descriptive names that indicate purpose and scope: “7-Year Financial Records Retention” or “90-Day Email Cleanup”
2. Choose Locations
Select which workloads to apply the policy:
- Exchange Email — User mailboxes, shared mailboxes
- Exchange Public Folders — Public folder content
- SharePoint Sites — Sites, document libraries
- OneDrive Accounts — User OneDrive files
- Microsoft 365 Groups — Group mailbox and site
- Teams Channel Messages — Standard and private channels
- Teams Chats — 1:1 and group chats
- Yammer — Community messages and files
3. Retention Settings
- Retain items for a specific period — Keep content for X days/months/years from creation, modification, or labeling
- Retain items forever — Never automatically delete. Use for permanent records
- Only delete items older than — Delete content after X period. Use for cleanup policies
4. After Retention Period
- Delete items automatically — Permanent deletion after period
- Trigger disposition review — Manual review before deletion
- Do nothing — Only retain, no automatic deletion
Policy Types
Static Policy
Apply to all content in selected locations. Simple to configure and manage. Use for organization-wide retention requirements.
Example: Retain all Exchange email for 7 years
Adaptive Policy (Preview)
Dynamically apply based on user or content attributes. Policy scope updates automatically as users join/leave or attributes change.
Example: Retain OneDrive for users in Finance department for 10 years
Common Scenarios
- Regulatory Compliance (SEC 17a-4) — Retain all broker-dealer communications for 7 years with immutable storage. Use preservation lock to prevent policy modification.
- GDPR Data Minimization — Delete personal data after processing purpose is complete. Combine with retention labels for specific data types.
- Email Hygiene — Delete email older than 2 years to reduce mailbox sizes and storage costs. Exclude from legal hold users.
- Teams Chat Cleanup — Delete Teams chats after 90 days. Critical for managing storage and reducing data sprawl.
Exclusions and Inclusions
Include Specific
- Specific mailboxes or users
- Specific SharePoint sites
- Specific M365 Groups
- Specific Teams
Exclude Specific
- Executive mailboxes
- Legal hold sites
- Archive locations
- Service accounts
Policy Conflicts
When multiple policies apply to the same content:
- Retention wins over deletion — If any policy says retain, content is kept
- Longest retention wins — If multiple retention periods, longest applies
- Explicit wins over implicit — User-specific policy beats org-wide
- Shortest deletion wins — For deletion-only policies, shortest period applies
Preservation Lock
For regulatory requirements like SEC 17a-4:
Warning: Irreversible. Once locked, policy cannot be disabled or deleted. Retention period cannot be shortened. Locations cannot be removed from policy. Only Microsoft Support can remove (with regulatory approval).
Monitoring and Reporting
- Policy deployment status across locations
- Items pending deletion
- Items under retention hold
- Policy sync errors
- Disposition review queue
API Reference
GET /api/compliance/retention-policies— List all retention policiesPOST /api/compliance/retention-policies— Create new retention policyPUT /api/compliance/retention-policies/:id— Update retention policyGET /api/compliance/retention-policies/:id/status— Get policy deployment statusDELETE /api/compliance/retention-policies/:id— Delete retention policy (if not locked)