Sharepoint

SharePoint Is Not a Museum

Valtteri Halonen

Valtteri Halonen

·7 min read
Person holding a cardboard sign that reads SharePoint Is Not a Museum on a city street.

SharePoint storage can grow unnoticed for years. In some environments, the issue reaches IT only when the tenant approaches or exceeds its storage quota.

Version history is often a major contributor. By default, SharePoint can retain up to 500 major versions of each file, and automatic version history limits are not enabled by default.

Why storage usage goes unnoticed

Tenant storage is not visible to end users, nor should monitoring it be their responsibility. Users see only the current files, while storage consumed by previous versions remains hidden.

Administrators can review tenant storage in the SharePoint admin center, but without regular monitoring it is easy to miss. Quota warnings may also reach administrative accounts that are not actively monitored.

If the tenant runs out of storage, SharePoint may be placed in read-only mode, preventing users from uploading files or saving changes.

Investigate before you act

When storage is running low, it is tempting to start panic-deleting content or slap on some expensive additional storage and call it a day.

Before changing anything, identify where the storage is actually going.

Start by checking:

  • Which sites consume the most storage?
  • How much storage is being used by version history?
  • Could inactive sites or files be archived or deleted?
  • Should older file versions be trimmed, future version limits changed, or the content kept as-is?

Find where the storage is going

Start with the Microsoft 365 SharePoint usage report. It helps you identify the largest sites and gives useful context such as activity, file counts, and ownership.

The following steps require the SharePoint Administrator role.

Review the SharePoint usage report

Sign in to the Microsoft 365 admin center and go to Reports → Usage → SharePoint.

You can choose which columns to display in the SharePoint site usage report.

Sort the report by Storage used to identify the largest sites.

Keep in mind that this report shows the total storage used by each site. It does not show how much of that storage is consumed by version history.

Check version history separately

For the sites that stand out, generate a version storage usage report with the SharePoint Online Management Shell. The report is created as a CSV file in a document library of your choice and contains file-level version data that can be analyzed in Excel or PowerShell.

Connect-SPOService -Url https://contoso-admin.sharepoint.com

New-SPOSiteFileVersionExpirationReportJob `
    -Identity "https://contoso.sharepoint.com/sites/ExampleSite" `
    -ReportUrl "https://contoso.sharepoint.com/sites/ExampleSite/Shared%20Documents/version-report.csv"

Report generation runs as a background job. It may take more than 24 hours even for smaller sites, while larger sites can take several days. Do not modify the CSV file while the report is still being generated.

You can check its status with:

Get-SPOSiteFileVersionExpirationReportJobProgress `
    -Identity "https://contoso.sharepoint.com/sites/ExampleSite" `
    -ReportUrl "https://contoso.sharepoint.com/sites/ExampleSite/Shared%20Documents/version-report.csv"

The command returns a JSON response with a status value:

Status Meaning
completed The report is fully generated.
in_progress The report is still being populated.
no_report_found No active report job was found for the specified file.
failed Report generation failed. Check error_message for details.

What to look for in the report

Example structure of the SharePoint version storage usage report. Used with permission from Microsoft. Source: Microsoft Learn.

Each row represents one stored file version.

For an initial review, focus on these fields:

  • FileUrl.Compact identifies the file.
  • MajorVersion and MinorVersion identify the version number.
  • Size shows how much storage that version consumes, in bytes.
  • LastModifiedDate shows when the version was last changed.
  • SnapshotDate shows when it became a historical version.
  • Expiration fields show the current expiration date and how automatic or simulated trimming policies would affect the version.

Columns ending in .Compact do not repeat the same value on every row. If a cell is blank, use the most recent non-empty value above it.

To find the largest storage consumers, group the rows by file and sum the values in the Size column.

Confirm what can actually be changed

Usage data can help identify inactive or rarely used sites, but it cannot determine whether they are safe to archive or delete.

Use the report to narrow down the candidates, then confirm ownership, business need, and any retention requirements before taking action.

Choose the right response

Once you know what is consuming the storage, the next step is to decide whether to reduce it, archive it, or add more capacity. The sections below cover the main options.

Trim old versions

If historical versions account for a significant share of the storage usage, trimming can reclaim capacity without removing the current files.

Trim jobs can target an entire site or a single document library. Choose one of the following trimming methods:

  • -Automatic applies Microsoft’s automatic version thinning algorithm.
  • -DeleteBeforeDays removes versions older than the specified number of days.
  • -MajorVersionLimit together with -MajorWithMinorVersionsLimit retains a fixed number of major and minor versions.

Analyze the impact first

Before you let the trim job loose, run your version storage report through Microsoft’s offline What-If analysis. It shows how many versions and how much storage each option would remove, before you have to explain to Margaret from Accounting why Tuesday’s version of her billing report is gone for good.

Queue the trim job

Once you have reviewed the impact and chosen the appropriate trimming method, queue the deletion job with PowerShell.

$siteUrl = "https://contoso.sharepoint.com/sites/ExampleSite"
$library = "Documents"

New-SPOListFileVersionBatchDeleteJob `
    -Site $siteUrl `
    -List $library `
    -Automatic

Use only one trimming method at a time. For example, replace -Automatic with
-DeleteBeforeDays to remove versions older than a specified number of days:

New-SPOListFileVersionBatchDeleteJob `
    -Site $siteUrl `
    -List $library `
    -DeleteBeforeDays 365

Reduce future version growth

After dealing with existing versions, review the organization-level version history settings in the SharePoint admin center.

Organization-level version history limits can be configured as automatic or manual.

Automatic limits are Microsoft’s recommended option for optimizing version storage. They retain recent versions more densely and gradually reduce older versions over time.

Manual limits let you define a fixed number of major versions and, optionally, an expiration period.

Apply the policy to existing libraries

Existing document libraries keep their current version history settings until they are updated separately. The following example enables automatic version history limits for both existing libraries and any new libraries created on the site:

$siteUrl = "https://contoso.sharepoint.com/sites/ExampleSite" 

Set-SPOSite `
 -Identity $siteUrl ` 
 -EnableAutoExpirationVersionTrim $true ` 
 -ApplyToExistingDocumentLibraries ` 
 -ApplyToNewDocumentLibraries

Updating existing libraries runs as a background job. You can check its progress with:

Get-SPOSiteVersionPolicyJobProgress -Identity $siteUrl

Archive inactive content

If a site is no longer actively used but still needs to be retained, archiving may be the better fit.

Site-level archiving removes inactive sites from normal collaboration while preserving their content, permissions, and metadata.

File-level archiving may also be useful when only part of an active site contains rarely accessed data. Keep in mind that once an archived file is reactivated, it cannot be archived again for 120 days.

Confirm the business owner, retention requirements, and expected restore needs before archiving anything.

Archive a SharePoint site

Note that Microsoft 365 Archive is not available until pay-as-you-go billing has been configured and the service has been enabled for the tenant.

The setting is located in the Microsoft 365 admin center under Settings → Org settings → Pay-as-you-go services. Open the Settings tab, select Storage services → Archive, and enable the service.

Enable Microsoft 365 Archive under Pay-as-you-go services → Settings → Storage services → Archive.

After SharePoint site archiving has been enabled, sites can be archived from the SharePoint admin center:

  1. Open Active sites.
  2. Select the site.
  3. Choose Archive from the command bar.
  4. Confirm the action.

Archived sites can later be found and reactivated under Archived sites.

Add storage where it is justified

Additional storage is a valid solution when the content is active, required, and already managed appropriately.

It should not be used to postpone an obvious lifecycle problem, but trimming or archiving content simply to avoid all storage costs can also create unnecessary operational risk. Sometimes the correct decision is to keep the data available and pay for the capacity it requires.

What about backups?

Every SharePoint environment should have a separate backup strategy in place. That said, backups do not make version history redundant. If backups run only once per day, recovering a file from backup can mean losing an entire working day of changes.

Version history covers the changes between backup runs and gives users a faster recovery path without the support tickets, approvals, and administrative work that a backup restore may require.

Backup coverage should influence how much version history you retain, but it should not determine the decision on its own.

Final thoughts

Measure what is consuming the storage, decide how much version history is actually useful, and configure SharePoint accordingly.

SharePoint is not a museum. Not every edit needs to be preserved forever.

#Sharepoint#Microsoft 365#Governance#Storage Management

Newsletter

Get notified when new articles are published.

Click image to zoom