Download - SharePoint Feature and Solution upgrading
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]
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-cycleUpgrade 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