Activating a Feature that has been upgraded multiple times for the first time on a new site

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/27644

  •  06-12-2019
  •  | 
  •  

Question

I have a feature that has been upgraded a couple of times to add new fields to a content type. The feature started as version 1.0.0.0 and was deployed and activated at the site collection level.

As part of ongoing maintenance, we upgraded the feature to 1.1.0.0 to add some fields to a content type, and again later to 1.2.0.0 to add fields to another content type. Each time, after running Update-SPSolution on the containing WSP, I used Chris O'Brien's Feature Upgrade Kit to query for features at a certain scope that require an upgrade, and then upgrade the feature.

Worked like a charm ...

The problem I'm having is that when I create a new site collection from scratch, none of the historical upgrade actions I made to that feature are being applied.

I understand that Feature upgrades are decoupled from solution deployment and updates, however, when I check with the Feature Upgrade Kit, it tells me that no feature instances at the scope require an upgrade. Also, I can see (in SharePoint Manager) that the feature version is actually 1.2.0.0.

Here's what the Upgrade Actions look like:

<UpgradeActions>
  <VersionRange BeginVersion="1.0.0.0" EndVersion="1.1.0.0">
    <AddContentTypeField ... />
    <AddContentTypeField ... />
  </VersionRange>
  <VersionRange BeginVersion="1.1.0.0" EndVersion="1.2.0.0">
    <AddContentTypeField ... />
    <AddContentTypeField ... />
  </VersionRange>
<UpgradeActions>

Things I've tried:

  • Set BeginVersion to 1.0.0.0 on each VersionRange
  • Omit BeginVersion on each VersionRange
  • Run Update-SPSolution post deployment and query for features requiring an upgrade

Not sure what I'm missing here.

Thanks!

Was it helpful?

Solution

My understanding is that when you add a new field to Content Type while upgrading a FEATURE, you have to :

  1. Use your code (UpgradeActions/VersionRange in your question) for FEATURES already activated and need to be upgraded

  2. Add the fields to the original content types also to make sure that fresh activation also includes the fields because, it (fresh activation) will NOT go through the upgrade cycle.

OTHER TIPS

The point here is that there are many possible upgrade scenarios, and in some cases performing historical upgrades is not desired. Instead of managing only upgrade actions, you should also keep up-to-date the main version of your feature, i.e. you should include the FieldRef elements into the content type XML. This will not interfere with UpgradeActions, because if you're activating the feature from scratch, it is intended to be the latest version.

Licensed under: CC-BY-SA with attribution
Not affiliated with sharepoint.stackexchange
scroll top