PowerShell: Set/Configure Document Library with MajorVersionLimit, MajorWithMinorVersionsLimit & require to checkout before editing

Just finished coding a PowerShell function to achieve the following:
Approval Library:
– Require content approval;
– Require items to be checked out;
– Require major versions and minor versions;
– Keep a maximum of 5 major versions and drafts for 1 major version.

Here is the PS function which I coded to satisfy the above design requirement:

function ConfiguringVersioningSettings($webUrl, $listName, $requireCheckOut, $majorVersionLimit, $minorVersionLimit){
       Write-Message "Configuring version settings for $listName..." "cyan"
       $web = Get-SPWeb $webUrl
       $library = $web.Lists[$listName]
       $library.EnableVersioning = $true
       $library.EnableMinorVersions = $true
       $library.MajorVersionLimit = $majorVersionLimit
       $library.MajorWithMinorVersionsLimit = $minorVersionLimit
       $library.ForceCheckOut = $requireCheckOut
       $library.Update()
       $web.Update()
       $web.Dispose()
}

Why do we restrict the number of versions?

Out of the box SharePoint keeps all versions in the document library. Once we enable the versioning on libraries all versions size is counted towards the site collection quota, there is no such thing as storing deltas in this case, they’re the full versions. I.e. each time we save the document, SharePoint stores as a separate copy of complete document in the database though we make a small change. Just imagine If we have a 100 MB document with 20 different versions (Around 2 GB of storage capacity). With large documents, even a small but active library can eat up your database in a hurry. If you have a limited site collection storage capacity, this is going to be a big issue to store more number of documents as database reaches it max storage capacity very soon. So, restrict at max 3 major and 3 minor versions at any point in time in the document library.

If you forget to set the limitation, there is no way from SharePoint out-of-the-box to house keep/manage specific versions from document version history. Either you have to remove/delete all versions or all minor versions

To enable version history on a document library choose the library you would like to set version settings.

Library Settings > in the settings page, under General Settings > click Versioning Settings:

– Check the checkbox “Create major and minor (draft) versions” option

– And, check the checkboxes to keep 3 major and 3 minor versions

Happy Point Sharing!

Setting up Document Expiration and Retention Policies for Libraries in SharePoint 2010

The following could be useful for someone who is trying to setup a Document Expiration and Retention Policies for a library in SharePoint 2010:

Check List:

1. Central Administrator should have retention enabled for sites created:

Central Administration > Security > Information policy > Configure Information Management Policy > Retention [Available for use in new site and list policies]

2. “Information Management Policy” and “Expiration Policy” are the two timer jobs which are responsible for retention policy. By default both will work “Weekly”, change this to suite your need.

Note: Set the recurring schedule in such a way that “Information Management Policy” job should run before the “Expiration Policy”.

[For testing purposes, you can either execute “Run Now” or set a shorter interval like every 5 minutes]

Steps to configure an Expiration Policy as below:

1. [Designated Document Library] > Document Library Settings > Information management policy settings >

a. Library and Folders (Change source or configure library schedule) > [Select Library and Folders].

b. Add a retention stage… > “This stage is based off a date property of the item Time Period :” Created + e.g. 0 days (for immediate action) > Action [Select Move to Recycle Bin]

c. Press OK/Apply to save the changes.

2. Add a document to the [Designated Document Library] and wait for the “Expiration Policy” timer job to execute.

That’s it; you should see that the item has been moved to the recycle bin.

Setting Expiration Dates

In SharePoint 2010, you have the option to set an expiration time based on any date property available in the drop-down list shown in Figure 8-5, including when it was declared a record. You can specify values between 0 to 500 years, 0 to 6000 months, or 0 to 182,500 days from the date selected from the drop-down list. In reality, all three settings have the same maximum amount of time, so your choice of which to select is really based on how precise you want the date setting to be. Selecting days will give you a more precise setting than months, and months will be more precise than years. The precision of the retention period required by your organization should be determined by your legal team.

Related references:

Retention Policy for document library in SharePoint 2010

http://weblogs.asp.net/sreejukg/archive/2010/11/11/retention-policy-for-document-library-in-sharepoint-2010.aspx

Creating a retention policy to start a workflow in SharePoint 2010 using PowerShell

http://get-spscripts.com/2011/08/creating-retention-policy-to-start.html

Bulk provisioning SharePoint 2010 document retention policies using PowerShell:

http://www.sharemuch.com/2011/04/11/bulk-provisioning-sharepoint-2010-document-retention-policies-using-powershell/

Add a workflow to a SharePoint list in all sites of a site collection using PowerShell

http://get-spscripts.com/2010/08/add-workflow-to-sharepoint-list-in-all.html