Licensing summary, installing 8.1:

- Now instance speific license used which prevents license sharing and protects our intellectual property further

- 2 paths for getting up and running with a license:

         -Connected: platform-settings configuration only

         -Disconnected: text file generated, self-serve creation from PTC support portal, license.bin generated to be placed in platform folder


Connected / Disconnected mode

  • LicensingSubsystem::GetLicenseState returns :
    • UNINITIALIZED in disconnected mode
    • LICENSE_EXISTS in connected mode (not sure, I had a R&D license pre-installed when I tested)
    • I see other states in the source (not tested) : LICENSE_INSTALL_GRACE_PERIOD_OVER, LICENSE_CAPABILITY_RESPONSE_EXISTS

Metrics reporting (AKA phone home) uses connected licensing. Provides mechanism from automatic opt-in for metrics reporting.

Installer updated to reflect ThingWorx 8.1 changes

License entitlement for ThingWorx will be 1 production license, 5 test licenses, 25 dev licenses


User Journey

1. Get activation id (PTC Support Portal)

2. Configure platform-settings.json with username, password  and activation id (from the first step)

3. Deploy/start ThingWorx web app

4. Confirm Licensing Subsystem features are present and review any log errors in the app log


NOTE: Each instance needs a valid license file to be running.



- If any misconfiguration or connection failures occur, error messages will be thrown to Application log

Example: unable to fetch license file with device id; Unable to connect to the PTC lisense server. Please make sure the LicensingConnectionSettings settings...

-Connection attempt will occur upon TWX startup. If connection can't be made, instance will be following disconnected scenario


Getting Activation ID's

PTC Support Portal -> Manage Licenses -> PTC Thingworx Licensing Tool


-Make sure Pop Up Blockers are turned off

-If you are new to PTC licensing steps, go to Resources -> Helpful Resources



Platform Settings - Licensing


-new section for licensing connection strings:

-user name - used to connect to ptc support portal

-password - encrypted (recommended) or plain text password used to connect to ptc support portal

-activation id's - one or more activation id's provided either by entitlement letter or by PTC Support portal (manage licenses)



New Services on Licensing Subsystem

- GetInstanceID - returns instance/device ID which is created at startup

- GetCustomerID - returns customer ID from licensing connection. Used for metrics reporting (phone home)

- WritteLicenseUsageData - writes encryptes license usage (same as system data table) to ThingworxStorage\reports\LicenseUsageReport folder


Instance ID

  • The license file is now bound to the platform Instance ID aka Device ID - (unlike most other PTC products where the license is bound to the hardware : CPUID, MAC, ...)
  • This Instance ID is generated during first startup and stored in the database
  • Instance ID is accessible in composer with LicensingSubsystem::GetInstanceID

License Connection Settings (in platform-settings.json - plain text sample)

  1. "LicensingConnectionSettings": { 
  2.       "username":"<PTC_support_portal_username>"
  3.       "password":"<PTC_support_portal_password>"
  4.         "activationIds":"<activation_IDs>"
PTC device id: d2b2a62e-afc6-489f-8b10-8323c756fd45
PTC activation ids:



Q: What happens when license files are bad or missing?

A: If there is an invalid license file, with 8.0 valid license.bin needs to be in the folder before starting up; tomcat will crash. In 8.1 no need for license file as long as connected (platform-settings.json), no need to take take an extra step, dynamic connection.

connected/disconnected, limited 30 day scenario. Monitoring mashup accessible - check logs.


Q: Where is the InstanceID stored ?

A: It's stored in the database


Q:  how do we handle/allow for licensing dev/qa instances?

A:  Customers will use the License Management section on the PTC support site for details on activitation ids for different instances


Q: Is there a tool on PTC support portal that maps "Deployed" Activation IDs and Instance ID ? Can customer flag which instance ID correspond to a prod, test, dev system ?

A: Customers will use the License Management section on the support portal for managing the mappings of activiation id's / entitlements for their instances.


Q: Will the instanceID change during updates (minor 8.1.0 to 8.1.1)

A: Device id's don't change.


Q: What will happen in disconnected scenario if there is no valid license after 30 days? The application will not start anymore or user is not able to login?

A:  It shuts down, so there is no more "limited" mode. However, a user can come along on day 55 (for example) and can drop in a valid license and start the web app to get it fully running.


Q: What happens if the customer has to reinstall the platform after the license has been fetched ? Is it possible to "return" the license ?

A: They would use the License Management section to remove (make obsolete) the mapping of the old device id (i.e. old install) to the activation id that was used in the platform-settings.json. Then deploy 8.1 again.


Q: How are the 1 prod, 5 test, 25 dev theshold handled ?

A: The License Management tool would provide all available activation id's listed. If you run out, you will not be able to install new ThingWorx instances.