Skip to content

Add site version policy management features to Set-PnPTenantSite and related commands#5300

Merged
gautamdsheth merged 2 commits into
devfrom
feat/version-policy-v2
Apr 23, 2026
Merged

Add site version policy management features to Set-PnPTenantSite and related commands#5300
gautamdsheth merged 2 commits into
devfrom
feat/version-policy-v2

Conversation

@gautamdsheth
Copy link
Copy Markdown
Collaborator

  • Introduced parameters for managing version policies including:
    • EnableAutoExpirationVersionTrim
    • ExpireVersionsAfterDays
    • MajorVersionLimit
    • MajorWithMinorVersionsLimit
    • FileTypesForVersionExpiration
    • RemoveVersionExpirationFileTypeOverride
    • ApplyToNewDocumentLibraries
    • ApplyToExistingDocumentLibraries
    • InheritVersionPolicyFromTenant
  • Added new cmdlet New-PnPSiteManageVersionPolicyJob for batch version policy management.
  • Updated documentation for Set-PnPTenantSite to reflect new parameters and examples.
  • Implemented utility methods for version policy handling in SiteVersionPolicyUtilities.
  • Enhanced SetSite and related commands to support new version policy parameters.

Before creating a pull request, make sure that you have read the contribution file located at

https://github.com/pnp/powerShell/blob/dev/CONTRIBUTING.md

Type

  • Bug Fix
  • New Feature
  • Sample

Related Issues?

Fixes #X, partially fixes #Y, mentioned in #Z, etc.

What is in this Pull Request ?

Please describe the changes in the PR.

Guidance

  • You can delete this section when you are submitting the pull request.*
  • Please update this PR information accordingly. We use this as part of our release notes in monthly communications.
  • Please target your PR to Dev branch. If you do not target the Dev branch we will not accept this PR.

…related commands

- Introduced parameters for managing version policies including:
  - EnableAutoExpirationVersionTrim
  - ExpireVersionsAfterDays
  - MajorVersionLimit
  - MajorWithMinorVersionsLimit
  - FileTypesForVersionExpiration
  - RemoveVersionExpirationFileTypeOverride
  - ApplyToNewDocumentLibraries
  - ApplyToExistingDocumentLibraries
  - InheritVersionPolicyFromTenant
- Added new cmdlet New-PnPSiteManageVersionPolicyJob for batch version policy management.
- Updated documentation for Set-PnPTenantSite to reflect new parameters and examples.
- Implemented utility methods for version policy handling in SiteVersionPolicyUtilities.
- Enhanced SetSite and related commands to support new version policy parameters.
Copilot AI review requested due to automatic review settings April 23, 2026 19:22
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds SharePoint Online site version policy management capabilities to existing site/tenant-site cmdlets and introduces a new admin cmdlet to queue site-level version policy trim/sync jobs.

Changes:

  • Added site version policy parameters (inherit tenant defaults, auto-trim vs explicit limits, file type targeting, apply-to scope, and -Force) to Set-PnPSite and Set-PnPTenantSite.
  • Introduced New-PnPSiteManageVersionPolicyJob for queuing site-level list policy trim and/or sync operations (with optional -NoWait).
  • Added shared utility logic (SiteVersionPolicyUtilities) and updated documentation + changelog.

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
src/Commands/Utilities/SiteVersionPolicyUtilities.cs Centralizes validation + application of site version policy parameters onto SiteProperties.
src/Commands/Site/SetSite.cs Adds new site property parameters and hooks into SiteVersionPolicyUtilities.
src/Commands/Site/NewSiteManageVersionPolicyJob.cs New cmdlet to queue site-level version policy management jobs.
src/Commands/Admin/SetTenantSite.cs Adds new tenant-site parameters and routes site version policy settings via SiteVersionPolicyUtilities.
documentation/Set-PnPTenantSite.md Documents new parameters and adds examples for version policy scenarios.
documentation/Set-PnPSite.md Documents new parameters and adds examples for version policy scenarios.
documentation/New-PnPSiteManageVersionPolicyJob.md New cmdlet documentation with syntax, examples, and parameters.
CHANGELOG.md Adds entries describing new cmdlet and new parameters.

Comment thread src/Commands/Site/NewSiteManageVersionPolicyJob.cs Outdated
Comment thread documentation/Set-PnPTenantSite.md Outdated
Comment thread src/Commands/Site/SetSite.cs Outdated
Comment thread src/Commands/Admin/SetTenantSite.cs Outdated
Comment thread src/Commands/Utilities/SiteVersionPolicyUtilities.cs Outdated
…entation for Set-PnPSite and Set-PnPTenantSite cmdlets

Co-authored-by: Copilot <copilot@github.com>
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 8 out of 8 changed files in this pull request and generated 3 comments.

Comment on lines +567 to +578
private SiteVersionPolicyOptions GetSiteVersionPolicyOptions() => new SiteVersionPolicyOptions
{
InheritVersionPolicyFromTenant = InheritVersionPolicyFromTenant.IsPresent,
EnableAutoExpirationVersionTrim = EnableAutoExpirationVersionTrim,
ExpireVersionsAfterDays = ExpireVersionsAfterDays,
MajorVersionLimit = MajorVersionLimit,
MajorWithMinorVersionsLimit = MajorWithMinorVersionsLimit,
FileTypesForVersionExpiration = FileTypesForVersionExpiration,
RemoveVersionExpirationFileTypeOverride = RemoveVersionExpirationFileTypeOverride,
ApplyToNewDocumentLibraries = ApplyToNewDocumentLibraries.IsPresent,
ApplyToExistingDocumentLibraries = ApplyToExistingDocumentLibraries.IsPresent
};
Copy link

Copilot AI Apr 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Indentation in this newly added method uses tabs while the surrounding file uses spaces. This will likely fail style enforcement (or at least makes diffs noisy). Please reformat this block to match the file’s existing indentation style.

Suggested change
private SiteVersionPolicyOptions GetSiteVersionPolicyOptions() => new SiteVersionPolicyOptions
{
InheritVersionPolicyFromTenant = InheritVersionPolicyFromTenant.IsPresent,
EnableAutoExpirationVersionTrim = EnableAutoExpirationVersionTrim,
ExpireVersionsAfterDays = ExpireVersionsAfterDays,
MajorVersionLimit = MajorVersionLimit,
MajorWithMinorVersionsLimit = MajorWithMinorVersionsLimit,
FileTypesForVersionExpiration = FileTypesForVersionExpiration,
RemoveVersionExpirationFileTypeOverride = RemoveVersionExpirationFileTypeOverride,
ApplyToNewDocumentLibraries = ApplyToNewDocumentLibraries.IsPresent,
ApplyToExistingDocumentLibraries = ApplyToExistingDocumentLibraries.IsPresent
};
private SiteVersionPolicyOptions GetSiteVersionPolicyOptions() => new SiteVersionPolicyOptions
{
InheritVersionPolicyFromTenant = InheritVersionPolicyFromTenant.IsPresent,
EnableAutoExpirationVersionTrim = EnableAutoExpirationVersionTrim,
ExpireVersionsAfterDays = ExpireVersionsAfterDays,
MajorVersionLimit = MajorVersionLimit,
MajorWithMinorVersionsLimit = MajorWithMinorVersionsLimit,
FileTypesForVersionExpiration = FileTypesForVersionExpiration,
RemoveVersionExpirationFileTypeOverride = RemoveVersionExpirationFileTypeOverride,
ApplyToNewDocumentLibraries = ApplyToNewDocumentLibraries.IsPresent,
ApplyToExistingDocumentLibraries = ApplyToExistingDocumentLibraries.IsPresent
};

Copilot uses AI. Check for mistakes.
Comment on lines +110 to +114
private static string[] NormalizeFileTypes(string[] fileTypes, string parameterName)
{
if (fileTypes == null)
{
return null;
Copy link

Copilot AI Apr 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The file type normalization logic is duplicated in multiple places (e.g., SetListVersionPolicy and SiteVersionPolicyUtilities). To avoid future drift/inconsistent behavior, consider centralizing this into a shared internal helper and reusing it here.

Copilot uses AI. Check for mistakes.
Comment thread CHANGELOG.md

### Added
- Added `Get-PnPListVersionPolicy` and `Set-PnPListVersionPolicy` cmdlets to inspect and manage SharePoint Online document library version policies. [#5299](https://github.com/pnp/powershell/pull/5299)
- Added `Get-PnPListVersionPolicy` and `Set-PnPListVersionPolicy` cmdlets to inspect and manage SharePoint Online document library version policies. [#5300](https://github.com/pnp/powershell/pull/5300)
Copy link

Copilot AI Apr 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This changelog line now attributes the existing Get-PnPListVersionPolicy/Set-PnPListVersionPolicy cmdlets to PR #5300, but this PR’s diff doesn’t include changes for those cmdlets. Please avoid re-pointing existing changelog entries to an unrelated PR; instead, keep the original PR reference and add only new entries relevant to this PR.

Copilot uses AI. Check for mistakes.
@gautamdsheth gautamdsheth merged commit fc930b6 into dev Apr 23, 2026
9 checks passed
@gautamdsheth gautamdsheth deleted the feat/version-policy-v2 branch April 23, 2026 19:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants