Sunday, September 15, 2013

Set SharePoint default compatibility range after migration

SharePoint 2013 supports a great level of backward compatibility, where it allows us to run sites either in 2010 or 2013 mode. You can get more information on SharePoint 2010 and 2013 modes by referring to this article.
This feature comes in very handy for a migrated environment which has following requirements.
  • Need to create new sites, but they should have SharePoint 2010 look and feel
  • Site collection administrators should not be able to upgrade there sites to SharePoint 2013 until they feel it's 100% ready to do so
You may think above requirements are absurd. Why do we migrate an entire environment, and still keep the older look and feel. But they have some valid points.
  • Users are not still ready for the new look and feel, and migrated environment should not cause any confusion for end users
  • End user, super user, site administrator training is not complete yet.
  • Policy where sites need to be upgraded gradually. (e.g.: home site upgraded first, and department site collections each week)
So how do we achieve the goal ?
We can modify the compatibility range web application property to arrive at a solution. We can use following Powershell commands to see current compatibility range
   1: $wa=Get-SPWebApplication "http://sp2013"
   2: $wa.CompatibilityRange

This provides us following information

image

The meaning of the above is that, if we create a site collection with default settings, the farm will create a site in SharePoint 2013 mode as the DefaultCompatibilityLevel is set to 15. Since the MinCompatibilityLevel is 14, it is possible to create sites with 2010 compatibility mode as well as 2013 mode with default settings (As shown in below image).

image

Apart from that, site administrators are notified that their SharePoint 2010 sites can be upgraded to SharePoint 2013 mode as the MaxCompatibilityLevel is set to 15.

image

Solution

We need to modify the compatibility range to suit our requirement. To do that we will execute following Powershell commands
   1: $wa=Get-SPWebApplication "http://sp2013"
   2: $range = New-Object Microsoft.SharePoint.SPCompatibilityRange(14,14)
   3: $wa.CompatibilityRange = $range
   4: $wa.Update()
   5: $wa.CompatibilityRange

image
The New-Object Microsoft.SharePoint.SPCompatibilityRange(14,14) instructs that both MinCompatibilityLevel and MaxCompatibilityLevel is set to 14 (SharePoint 2010 mode). So if we create new site collections, they will be in 2010 mode. (You can’t see the SharePoint 2013 option)

image

Furthermore site administrators are not notified about possible upgrade options.
If we need to revoke the setting later to allow SharePoint 2013 to be the default we need to execute following Powershell commands
   1: $wa=Get-SPWebApplication "http://sp2013"
   2: $range = New-Object Microsoft.SharePoint.SPCompatibilityRange(14,15)
   3: $wa.CompatibilityRange = $range
   4: $wa.Update()
   5: $wa.CompatibilityRange

In this scenario, MinCompatibilityLevel is set to 14 and MaxCompatibilityLevel is set to 15. The DefaultCompatibilityLevel is set to 15 which is as same as MaxCompatibilityLevel.

In a SharePoint migration scenario with strict policies and guidelines, CompatibilityRange property can be a lifesaver.

No comments: