SharePoint Feature and Solution upgrading Bram de Jager | Lead SharePoint Developer | Macaw.

Post on 30-Mar-2015

222 views 0 download

Tags:

Transcript of SharePoint Feature and Solution upgrading Bram de Jager | Lead SharePoint Developer | Macaw.

SharePoint Feature and Solution upgrading

Bram de Jager | Lead SharePoint Developer | Macaw

About Bram• Lead SharePoint developer / architect for

Information Worker Solutions center of Macaw• Started with SharePoint 2003• Worked on projects for Shell, Hogeschool

INHolland, Library of Rotterdam and Univé. • Contact

– http://bramdejager.wordpress.com– @bramdejager– bram.de.jager@macaw.nl

Agenda• Basics• Solution Upgrade• Feature Upgrade• Summary

Why?• Creating / updating a content type in

1 site collection is easy• But having 20 site collections and 10

content types changes the game

When to use a feature? • Isolated/ autonomous piece of

functionality• Distributed deployment• Scoping where XML or custom code

runs

Initial build (trade-off)• Custom code vs. XML• Code:– Ability to DEBUG– More control– Upgrade artifact requires code

• XML:– Site definitions, list template, delegate controls,

custom actions…

How was it done in 2007?• Solution deployment: deploy and retract– Upgrade was supported but did not install

new features

• Feature events: (un)install and (de)activate– No upgrade support, you would deactivate

and active the feature to trigger any logic

Deployment life-cycleAdd

SolutionSolution added to

Solution Store

Deploy Solution

Files deployed to File System on all servers

Feature install event fires

Activate Feature(s)

Element files are executed

Feature active event fires

DEMOCreate solution with choice field, deploy via PowerShell

SOLUTION UPGRADESharePoint Feature and Solution Upgrading

Farm vs. User solutions• Farm solutions supports granular

upgrade• User solutions will automatically

upgrade all features to the latest version

Farm solution upgrade• Update-SPSolution –Identity DevDays.wsp –

LiteralPath C:\DevDays.wsp –GACDeployment

• Farm wide– psconfig -cmd upgrade -inplace b2b

• Granular– QueryFeatures() & Feature.Upgrade()

Granular upgrade• QueryFeatures()

– Guid featureId– Guid featureId, bool needsUpgrade– Guid featureId, Version featureVersion– SPFeatureScope scope, bool needsUpgrade

• Available for SPWebService (farm), SPWebApplication, SPContentDatabase, SPSite

• Feature.Upgrade()

Upgrade life-cycle

Upgrade Solution

Files updated on File System on

all servers

Upgrade Feature(s)

Upgrade actions executed for

specified version

Feature upgrading event

fires

Replacement or Update• Retract & Deploy

– Only on initial deployment!– Replaces all feature instances with definition

• Does not trigger upgrade actions• No feature upgrade possible!

• Update– On new version of the solution– Deploys to file system

• Doesn’t trigger install for new feature :-S

User solution upgrade• Upload new solution package in

Solution Gallery• Press Upgrade button• Solution and features are upgraded• It’s all or nothing

FEATURE UPGRADESharePoint Feature and Solution Upgrading

Versioning• Version attribute • On activation a feature instance is

created• Deploy new version, feature definition

gets updated• Easy tracking of feature definition and

associated feature instances

Feature Upgrade• Upgrade according to upgrade

actions• Based on VersionRange with Begin

& End versions– Actions for 0.0.0.0 – 0.9.9.9– Other actions for 1.0.0.0 – 1.9.9.9

Multiple versions scenario• v1.0.0.0– Create Contacts list instance

• v2.0.0.0– Add creation Events list instance

• v3.0.0.0– Add creation Issues list instance

DevDays.wsp

Feature DevDaysv1.0.0.0

Feature DevDaysv1.0.0.0

DevDays.wsp

Feature DevDaysv2.0.0.0

DevDays.wsp

Feature DevDaysv3.0.0.0

Site A Site B Site C

Feature DevDaysv2.0.0.0

Feature DevDaysv3.0.0.0

Feature DevDaysv3.0.0.0

Feature DevDaysv3.0.0.0

Dependencies• Child-child element of feature.xml• <ActivationDependency> element– New MinimumVersion attribute

UIVersion attribute• New UIVersion attribute of

feature.xml• Specifies UI version for this feature

with operators (=, <, >, <=, >=, ;)• Based on SPWeb.UIVersion (3 or 4)• Example: Ribbon custom actions

Declarative upgrade actions• New child element in feature.xml• <UpgradeActions> element –<VersionRange>–<ApplyElementManifest>–<AddContentTypeField>–<MapFile>

DEMOVersioning scenario

CustomUpgradeAction• Child element of <UpgradeActions>–<CustomUpgradeAction>

• New feature receiver FeatureUpgrading()

• Support for parameters

DEMOAdding field to content type, copy contents, hide old field

SUMMARYSharePoint Feature and Solution Upgrading

Upgrade approach• Solution update instead of

retract/deploy• New feature– Staple to existing site definition for new

sites– Script activation on existing sites

• Upgrade existing feature– Farm wide or granular upgrade

Gotchas• BeginVersion inclusive but EndVersion not• Solution upgrade does not trigger (un)install

event feature– When adding new feature after initial deployment,

no (un)install event. Manual Install-SPFeature.

• Quit PowerShell when building (out of sync)• Enable ULS logging, change setting to Verbose

– Feature Infrastructure, Fields, General

Q&ASharePoint Feature and Solution Upgrading

Resources• MSDN – Packaging and Deployment• Chris O’Brien “Nuts and Bolts”-blog