cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
Showing results for 
Search instead for 
Did you mean: 

ThingWorx extension versioning requirements?

asinclair
1-Newbie

ThingWorx extension versioning requirements?

After making some modification to restructure an extension, I tried to update the server and got the following ...

What can and cannot be changed between versions of an extension? Are the rules documented somewhere?

I checked the Thingworx extension development user guide (TWX 6.6) but there are no details there.

10 REPLIES 10
dmoon
5-Regular Member
(To:asinclair)

When you upgrade an extension package from one major version to the next major version, you can get that error. To resolve this issue, try these steps below to remove the extension package and reimport.

  1. Export all entities that depend upon the extension in question
  2. Delete all entities that depend upon the extension in question
  3. Remove the extension through the Manage extensions screen under the Import/Export menu option
  4. Import the new extension through the Import/Export menu option Import



Thanks for providing a workaround, Daniel.


In a production system, however, this procedure would cause an interruption of service, requires coordination between tenants, and incorporates some risk of losing data.

I need an answer to my original question so I can plan enhancements to my Extensions that avoid the need to restart.

brue
1-Newbie
(To:asinclair)

Andy,

Starting with ThingWorx 6.6, extensions follow a Semantic Versioning 2.0.0 like set of rules for the packageVersion number of an extension. Basically, extension versions must follow the <major>.<minor>.<patch> format where each section is a numeric value.

  • When the current extension is already installed(For example: MyExtension with a version of 2.5.3)
    • Major version differences are not allowed into the system. Major changes signify a change in an extension that is not backwards compatible. MyExtension:3.0.1 would not be allowed to be installed.
    • Minor version differences are allowed into the system only when the minor version is greater than the minor version that is installed. MyExtension:2.6.1 would be allowed to be installed.
    • Patch version differences are also allowed into the system only when the patch version is greater than the patch version that is installed. MyExtension:2.5.4 would be allowed to be installed.

Whether you are on a production system or not, it's likely you'll need a restart of ThingWorx to get your new extension's JAR file(s) to replace the existing one(s). What you'll need to do is a "dump and pump" which is a full export and import of your current system into a new system with your new extension installed. If you incorporated a change to your extension that causes your existing entities and data to be incompatible, it's a bit more involved because you now have to transform your export before you import.

asinclair
1-Newbie
(To:brue)

This is the kind of info I needed. Thank you, Brian.

In my case, the old extension was version 1.0.2 and the new one was 1.1.0, which should have been okay according to the rules above. Are the other conditions associated with this error that would be checked during validation?

I need to better understanding of what changes can cause "your existing entities and data to be incompatible." Some thing are obvious, but I suspect the devil is in the details. This is a "best practices" topic and it would be interesting to hear how people manage this.

Thanks again.

brue
1-Newbie
(To:asinclair)

You're welcome.

I will look into that error too - it should have been allowed to be installed. We just released ThingWorx 7.1 so maybe there has been some changes/bug fixes around versioning.

Feel free to start another thread about managing extensions from a customer point of view. See what others are doing and maybe that could turn into an organic place for others to submit ideas and share.

joao_espadanal
5-Regular Member
(To:brue)

Hi Brian Rue,

Regarding this issue, I am having the same problems. It surely seems like a ThingWorx bug (I am now using version 7.1.3).

When upgrading an extension from version 2.0.0 to 2.0.1, everything is OK.

When upgrading from version 2.0.1 to 2.2.0, is does not pass the validation (the message says the same extension with version 2.2.0 is already installed, which clearly indicates a bug).

When upgrading from version 2.0.1 to 2.2.1 it is OK.

I have not tested this in version 7.2, but could you please check it?

Thank you,

João

Have we heard anything more on this issue here, as I just ran into this trying to upgrade my package that I am working on from 0.1.48 to 0.2.0 and got the message about a newer version being installed.

I am on Thingworx 7.0.3 for this release of the extension package.

Hey Jason,

Recently (August 2016) we were able to successfully rev one of our extensions from 2.0.16 to 2.1.0 and another extension from 1.0.145 to 1.1.0. Both updates were done on TW 7.2.2 or better. I think there was a bug that was fixed in 7.2.x but it would be best if PTC could verify that.

-Andy

brue
1-Newbie
(To:asinclair)

I can definitively tell you that bug was fixed in the ThingWorx 7.2.0 release.

Hi Brian,

About Semantic Versioning, why it's that strict? can we disable the major version upgrade limitation?

Imagine a "not professional" developer for an extension which didn't followed the rules: they updated major version without doing significant API changes, crazy developers! You will be forced to do a "dump and pump" process when it isn't needed, and we speak with real world TW production servers that can be an hours process ( imagine a production server with about 100000 things or more... ) which on the other hand could be just a server restart?

Well previous case it's not an hypothetical case, the "not professional" developer it's ThingWorx with Mail Extension, and the production server it's our ( which lucky/unlucky for us we are not a 100000 things, but still a "dump and pump" it's not a desired process, as it takes too much and you lose Real Time data). I've looked at API Changes between 2.0 and 3.X and it aren't major at all, everything that we have that works on 2.0 works also on 3.X.

What we do now? you can decide this implementation restrictions without training your team on it and also give a clear statement on it, not just a community post when someone asks for it, as you see people doesn't gets it, neither internal people

Of course current workaround will be to unzip extension, change metadata information to for instance 3.X to 2.3.X and go on, but for sure professional developers doesn't like it.

Best Regards, Carles.

Announcements