Licensing transition information

Customers of previous DeltaXML releases may have interacted with our previous software licensing system.  This guide provides transition information for users, administrators and application developers.

Flexera based licensing is being introduced into products on a rolling basis.  The following table lists the releases where Flexera licensing is introduced.  Any previous releases will use our traditional licensing mechanism.

Product

Flexera Licensing
initial version

Corresponding traditional
licensing version 
XML Compare8.1.17.1.1
Merge5.34.3
DocBook Compare5.04.0
DITA Compare6.5.35.5.3
DITA Merge2.21.2


License File Format

Our previous license files (for all license types except Redistribution) were based on Java Property files.  Here is an example:

#DeltaXML License Key (start: Thu Mar 31 00:00:00 BST 2016, expiry date: 2016-04-15 00:00:00.0)
#Thu Mar 31 11:34:22 BST 2016
nodeLimit=-1
serial=603
startDate=1459378800000
majorVersion=4
evaluation=true
endDate=1460674800000
issuedDate=1459420462685
checksum=MCwCFEMC6ehTT+qikf1nNHOE0PaRCzVOAhQZ18rar4eEgEuKJwKCaZlaTBRh7A\=\=
licenseIssuer=CN\=DeltaXML Limited, STREET\=Monsell Lane, L\=Upton-upon-Severn, ST\=Worcestershire
licenseType=Named User
licenseHolder=CN\=Nigel Whitaker,O\=DeltaXML Ltd
cpus=16
minorVersion=2
product=DeltaXML-Merge

This format was undocumented and was only used internally by DeltaXML software.

FLexera's License Administration Guide documents their license file format in the Reading a License File section.  The Flexera guide describes the full file format although licenses issued by DeltaXML will only use a subset of the full capabilities.

Here is an example of a concurrent license using the Flexera format:

SERVER this_host VM_UUID=9980A572-3723-47A8-B0CF-5B4854C3BFBE
VENDOR deltaxml
USE_SERVER
INCREMENT docbook deltaxml 5.0 29-mar-2019 5 DUP_GROUP=H \
	ISSUER="DeltaXML Ltd" ISSUED=29-mar-2016 START=28-mar-2016 \
    NOTICE="For use on non-production/test/standby systems only" \
	SIGN="0000 1111 2222 3333 4444 5555 6666 7777 8888 9999 AAAA \
	BBBB CCCC DDDD EEEE"


Feature/product names

There is no one-to-one correspondence between our previous or traditional format licenses where they described the product and Flexera licensing where features are enabled and counted.

We have taken this opportunity to overhaul some of the names used in the licensing to make them more consistent with the capabilities of the product.

Productold license product nameflexera feature name(s)
XML CompareDeltaXMLCorecompare
MergeDeltaXML-Mergemerge
DocBook-CompareDeltaXML-DocBook-Comparedocbook
DITA CompareDeltaXML-DITA-Comparedita
DITA MergeDeltaXML-DITA-Mergedita-merge


Locating licenses

The software (including the built-in applications and customer developed code) will attempt to locate license files at defined locations.  Although the file format has changed the lookup locations are similar:

  • User home directory
  • Software install directory/sub-directory
  • Using classpath resource lookup

File and resource names

Different filenames or resource names are used in the above lookup locations according to the product being used.

ProductFilenameResource name
XML Compare
deltaxml-xml-compare.lic
deltaxml-xml-compare.lic
Merge
deltaxml-merge.lic
deltaxml-merge.lic
DocBook-Comparedeltaxml-docbook.licdeltaxml-docbook.lic
DITA Compare
deltaxml-dita.lic
deltaxml-dita.lic
DITA Merge
deltaxml-dita-merge.lic
deltaxml-dita-merge.lic
One issue with the FlexNet Operations Cloud system is that we cannot control the download filename on a per-product basis, therefore users will need to create or rename files according to the rules above.

License Reporting

Invoking the jar file still provides a license report but some details have changed:

  • IP notices contained in license files are now reported.
  • There is no longer the concept of the license holder, but the hostid and other aspects of the license provide identification.
  • The license type corresponds to one of several that are now supported:
    • SERVER
    • CONCURRENT_SERVER
    • NAMED_USER
    • CONCURRENT_USER
    • REDISTRIBUTION

Functional Changes

The previous licensing code operated by finding a license file and then checking the details in that file.  The Flexera system looks for features irrespective of which file or server they are obtained from.  The feature lookup code used for license checkout will request the feature and the version corresponding to the release.  In the previous system if a license file was found but the version specified in the file did not match that of the software a VersionException would be thrown.  VersionException is no longer possible in the Flexera system and a NoLicenseInstalledException was produced when testing similar scenarios.

The previous code would defer license checking until the licensed operation such as a compare method.  In the new system more checking is done up-front when the license is specified or set, for example when a setLicenseFile() or setRedistributionLicense() method is called.  This means that exceptions that were previously thrown at comparison time are now thrown earlier and method signatures and documentation have been changed to reflect this.

API Changes

While we have tried to maintain a degree of API compatibility a number of minor changes have been made to support the issues and topics discussed above.  A consequence of these changes is that some recompilation may be necessary and in a limited number of cases code changes may be needed.  We have incremented major version numbers of the releases to reflect these small incompatibilities at the API level.

Here is a summary of the API changes:

  • VersionException has been removed
  • LicenseNotYetStartedException and LicenseExpiredException have deprecated methods as they no longer provide useful information with Flexera licensing.
  • The XML Compare product's com.deltaxml.core package has a new LicenseException superclass so as to mirror the exception class structure used in the com.deltaxml.cores9api package
  • The signature of the setRedistributionLicense method now throws exceptions that were not used in the previous releases
  • New methods have been introduced to specify the license file or server through the API,  these are:  setLicenseFile and setLicenseServer


#content .code