Updated 22 August 2010 for release 1.1.0.0 - includes PowerShell cmdlet to upgrade Features of all scopes

Project Description
A set of tools for managing upgradable Features in SharePoint 2010. (Upgrading Features is a means of deploying code/artifact updates to existing SharePoint sites).

Background

SharePoint 2010 introduces the concept of 'versioned' or 'upgradable' Features, as a means of applying updates to existing sites. A new version of a Feature is created by modifying the definition (with new XML or code) and incrementing the version number. For the change to be applied, existing Feature instances (e.g. in each web for a web-scoped Feature) must be upgraded. SharePoint 2010 does not ship with any admin screen, STSADM command or PowerShell cmdlet to manage this process. The only way to upgrade Features is to write code - however, this kit provides tools so that no code is required on your behalf; I've done it for you.

(Read a 5 part series on Feature upgrade on my blog - http://www.sharepointnutsandbolts.com/2010/06/feature-upgrade-part-1-fundamentals.html)

What's in the kit

The kit is comprised of 3 things:
  • An application page in Central Admin - administrators can use this to upgrade Features of any scope across the entire farm
  • An OPTIONAL page in each site collection's Site Settings - this can be used to devolve responsibility for upgrading Features (and therefore updating functionality provided by developers) to local site administrators. A Feature must be enabled on each site to enable this.
  • A PowerShell cmdlet which allows Feature upgrade to be run from script.

Usage

Central Admin page

After deploying updates to a Feature, this page can be used to find and upgrade instances of the Feature across the farm. The tool is accessed from the System Settings area with Central Admin:

Link in Central Admin

Farm administrators can then select the scope (Farm, WebApplication, Site or Web) and then find the Features which require upgrade (this uses a set of methods named QueryFeatures() in the SharePoint API). In the image below I've selected 'WebApplication' as the scope and clicked 'Search' to display the results:

Central Admin

I can use the checkboxes to selectively upgrade some instances and not others (by default all will be upgraded, but this can be controlled by deselecting checkboxes). In the image below I've upgraded 1 of the 2 web application Features found previously - the success/failure result of all feature instances are shown on the page:

Central Admin

In the example above, the selected Feature has now been upgraded.

To help the experience when used in larger farms, when the Central Admin page is used to upgrade Site or Web scoped Features, filters appear to allow you to restrict the scope of the query. So for upgrading Site-scoped Features, a selector appears allowing to select the parent web application:

Filtering for Site-scoped Features in Central Admin

Similarly for Web-scoped Features, you filter on parent site collection:

Filtering for Web-scoped Features in Central Admin

Usage

Site Settings page

The Site Settings page works in a very similar way, except only Site and Web-scoped Features can be upgraded (in the current site collection). The tool is accessed from the Site Settings area for the site collection:

Link in Site Settings

Site collection administrators can then select the scope (e.g. Site or Web) and then find the Features which require upgrade (this uses a set of methods named QueryFeatures() in the SharePoint API). In the image below I've selected 'Web' as the scope and clicked 'Search' to display the results:

QueryFeatures() results

I can use the checkboxes to selectively upgrade some instances and not others (by default all will be upgraded, but this can be controlled by deselecting checkboxes). In the image below I've upgraded 2 of the 4 web Features found previously - the success/failure result of all feature instances are shown on the page:

Feature upgrade result

PowerShell cmdlet

# Farm Features
Upgrade-SPFeatures -Scope Farm

# Web application Features
Upgrade-SPFeatures -Scope WebApplication

# Site collection Features
Upgrade-SPFeatures -Scope Site -WebApplication "http://myUrl"

# Web Features
Upgrade-SPFeatures -Scope Web -Site "http://myUrl/sites/site1"

For more information on using the cmdlet, see my blog post at http://www.sharepointnutsandbolts.com/2010/08/feature-upgrade-part-5-using-powershell.html

Last edited Aug 25, 2010 at 10:30 PM by chrisobrien, version 22