Learn › SharePoint & OneDrive › 5 · Compliance & lifecycle

Retention and the Preservation Hold Library

Retention on SharePoint is enforced by a hidden library that quietly captures anything you edit or delete while a retention obligation is in force. Understanding the Preservation Hold Library explains deletion timing and the 'storage didn't drop' surprise.

What retention does

Retention (authored in Microsoft Purview as retention policies applied to locations, or retention labels applied to items) enforces two independent promises: retain content for at least N (you can't lose it early) and/or delete it after N (you can't keep it forever). The two combine — retain then delete is the common records shape.

The Preservation Hold Library (the mechanism)

Here's the part that surprises everyone. When a site is subject to retention, each document library gains a hidden partner: the Preservation Hold Library (PHL). The rule:

  • Edit or delete a file that's under retention, and a copy is written to the PHL before the change/deletion is honoured at the visible layer. The user sees the file edited or gone; a preserved copy lives on in the PHL.
  • A timer job (runs roughly every few days) sweeps the PHL: copies whose retention period has fully elapsed are purged; copies still within their period stay.

This is copy-on-write for compliance. It means retention never depends on users behaving — deleting doesn't defeat it.

Deletion timing (why it lags)

Because of the PHL, "I deleted it" and "it's actually gone" are far apart:

  • A deleted file goes to the recycle bin (versioning-recycle concept) for its window, AND a preserved copy sits in the PHL until its retention clock expires and the timer job collects it.
  • So genuine purge can be weeks to years after the user's delete, depending on the retention period — entirely by design.

Adaptive vs static scopes

Retention policies apply to locations via static scopes (named sites/OneDrives) or adaptive scopes (a query — e.g. all sites with a given property — that re-evaluates membership automatically). Adaptive scopes are the maintainable choice at scale; static lists drift as sites are created.

The failure modes

  • "I deleted things but storage didn't drop." The PHL still holds copies — expected until the retention period elapses (storage-model concept). You cannot delete your way under quota past a retention obligation.
  • The PHL is hidden but real — it consumes the site's storage quota and shows in eDiscovery. Admins hunting "why is this site so big" miss it because it's not a normal library.
  • Deleting a site under retention is blocked/deferred — the obligation outlives the container.
  • Label vs policy precedence — an explicit retention label can override a broader policy; the principle across conflicts is that the most retentive outcome wins (retain beats delete).

What to watch (proofs)

  • Retention applied to a location: Purview → Data lifecycle management → policies, and per-item Get-PnPListItem label properties — what's actually in scope.
  • The PHL's presence and size: the site's storage metrics vs visible content — the gap is largely PHL + recycle bin; it's why post-cleanup storage lags.
  • Timer-job effect over time: PHL volume trending down as periods expire — proof purge is happening, just slowly.
  • Hold interaction: Get-SPOSite <url> under an eDiscovery hold — content is preserved regardless of retention policy (ediscovery concept).

PowerShell for this concept

  • Get-SPOSite Returns one or more site collections.
  • Get-PnPListItem

Discussion

No messages yet — start the thread.

Sign in with your email to join the discussion — we send a one-time link, no password.