U4-2542 - Adding a new prevalue to a Checkboxlist in an existing package is broken

Created by Matthew Jones 25 Jul 2013, 09:37:15 Updated by Sebastiaan Janssen 27 Jul 2013, 13:19:16

Relates to: U4-2514

I'm having problems with packages in Umbraco 6.1.2. When I import a checkboxlist datatype into another Umbraco install it imports fine the first time. If I later update the checkboxlist datatype (by adding a new prevalue) and then import the updated package into the other Umbraco instance it ignores my changes.

I've attached packages, repro steps and screenshots to illustrate the issue.

Here are the steps to reproduce the issue

  1. Download the 6.1.2 Umbraco zip file from this url http://our.umbraco.org/ReleaseDownload?id=77775 and extract it.

  2. Right click on the extracted folder and run it with web matrix, or point IIS at the folder.

  3. Run through the install process and select the "I want to use SQL CE 4, a free, quick-and-simple embedded database" option.

  4. Import the first sample package attached to this issue [package 1.0.0|http://issues.umbraco.org/_persistent/Test_datatype_on_its_own_1.0.0.zip?file=64-824&v=0&c=true]. This package should add a new checkboxlist data type to Umbraco called "Test checkbox data type".

  5. Open up the datatypes in the umbraco admin and look at the "Test checkbox data type", it should look like this http://issues.umbraco.org/_persistent/1.0.0%20screenshot.jpg?file=64-826&v=1&c=true&rw=899&rh=601.

Note how the "Test checkbox data type" has 3 prevalues defined (Test 1, Test 2, Test 3).

  1. Import the second sample package attached to this issue [package 1.0.1|http://issues.umbraco.org/_persistent/Test_datatype_on_its_own_1.0.1.zip?file=64-825&v=0&c=true]. This should update the datatype called "Test checkbox data type" by adding a new prevalue called "Test 4" to it.

  2. Open up the datatypes in the umbraco admin and look at the "Test checkbox datatype". It should look like this [expected_result.jpg|http://issues.umbraco.org/_persistent/1.0.1%20expected%20result%20screenshot.jpg?file=64-828&v=1&c=true&rw=926&rh=635] but instead looks like this [actual_result.jpg|http://issues.umbraco.org/_persistent/1.0.1%20actual%20result%20screenshot.jpg?file=64-827&v=1&c=true&rw=899&rh=601]

"Test checkbox data type" should now have 4 prevalues defined (Test 1, Test 2, Test 3, Test 4) but it actually has only 3 values defined instead (Test 1, Test 2, Test 3).

5 Attachments

Download Test_datatype_on_its_own_1.0.0.zip

Download Test_datatype_on_its_own_1.0.1.zip

Comments

Matthew Jones 26 Jul 2013, 11:36:54

Sorry but this is another issue with Checkboxlist and packages.


Sebastiaan Janssen 26 Jul 2013, 12:54:35

Yeah, so the scenario you're describing has never worked with packages and will never work. The thing is: packages are specifically meant to be used by plugin developers, not to transfer data between environments. it's a nice side-effect that in most cases it will work quite well but that was never the intention. In fact, it is VERY difficult for us to do what you're asking here correctly, due to different Ids being used in different environments, due to potential problems with deletions, what happens if a prevalue is changed in both environments, etc.

From what I can read between the lines is that you need the functionality that we offer with Courier: http://umbraco.com/products/more-add-ons/courier-2.aspx


Sebastiaan Janssen 26 Jul 2013, 12:57:10

Ps. This may sounds all "you should go commercial man, it's great, give me money" but that is not the intention. So just to re-iterate: it's a problem that we addressed in Courier and you might also have some luck with open source add-ons like uSync (http://our.umbraco.org/projects/developer-tools/usync) or uSiteBuilder (http://our.umbraco.org/projects/developer-tools/usitebuilder).


Matthew Jones 27 Jul 2013, 12:17:59

That all sounds fair enough Sebastiaan. Thanks for taking the time to respond to my issue. If I were to develop a plugin, and then release an update that happened to add new values to a checkbox list, what would I do? It sounds like I'd be up the creek...

We've looked at courier but we were concerned by the issues that we've experienced with the packages system (and we assumed that courier was built on top of the packages system). Packages didn't work for us, and we were reluctant to invest in courier incase we had the same issues or similar issues with it.

It'd be great if we could trial courier and see if it suits our needs. Basically our scenario is that we want to deploy new document types and data types from our test environment to live, and we want to transfer content and assets from live back to test.

Any advice you have on this would be great. :-) We're having to resort to database restores at the moment, which means we have to double enter the data types and document types on both systems. It's very sub optimal at the moment, but we can live with it until we find a better solution.

We have no problem with spending money, but need to make sure it'll suit our needs.


Sebastiaan Janssen 27 Jul 2013, 13:19:16

Yep, you'd have to resort to programatically adding new prevalues from a usercontrol that can be loaded after installing the package. The packaging system is fairly simple and built years ago without much attention on how to do upgrades. It has it's strengths and also it's limitations. :)

No Courier is a complex product which doesn't build upon the packages system at all. Here's a post on how to evaluate Courier: http://umbraco.com/follow-us/blog-archive/2011/11/17/how-to-evaluate-courier-25.aspx In short: test it out between two instances on your localhost.


Priority: Normal

Type: Bug

State: Closed

Assignee:

Difficulty: Normal

Category: Packages

Backwards Compatible: True

Fix Submitted:

Affected versions: 6.1.2

Due in version:

Sprint:

Story Points:

Cycle: