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

34

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

Page 1: SharePoint Feature and Solution upgrading Bram de Jager | Lead SharePoint Developer | Macaw.
Page 2: SharePoint Feature and Solution upgrading Bram de Jager | Lead SharePoint Developer | Macaw.

SharePoint Feature and Solution upgrading

Bram de Jager | Lead SharePoint Developer | Macaw

Page 3: 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– [email protected]

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

Agenda• Basics• Solution Upgrade• Feature Upgrade• Summary

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

Why?• Creating / updating a content type in

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

content types changes the game

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

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

functionality• Distributed deployment• Scoping where XML or custom code

runs

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

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…

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

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

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

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

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

DEMOCreate solution with choice field, deploy via PowerShell

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

SOLUTION UPGRADESharePoint Feature and Solution Upgrading

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

Farm vs. User solutions• Farm solutions supports granular

upgrade• User solutions will automatically

upgrade all features to the latest version

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

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

LiteralPath C:\DevDays.wsp –GACDeployment

• Farm wide– psconfig -cmd upgrade -inplace b2b

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

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

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()

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

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

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

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

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

User solution upgrade• Upload new solution package in

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

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

FEATURE UPGRADESharePoint Feature and Solution Upgrading

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

DEMOVersioning scenario

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

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

• New feature receiver FeatureUpgrading()

• Support for parameters

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

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

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

SUMMARYSharePoint Feature and Solution Upgrading

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

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

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

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

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

Q&ASharePoint Feature and Solution Upgrading

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

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

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