Maintenance Policies

A maintenance policy can be used to configure how the end-user can update the software (product). You can add restrictions on the major version, minor version and duration for which the updates will be available. The maintenance policy once created can be linked to the licenses.

NOTE: Maintenance policies do not require using our Release Management service.

Maintenance policy properties

The maintenance policy has the following properties:

Name

Name of the maintenance policy.

Validity

The duration (in seconds) after which the maintenance for the software updates of a license will expire. For unlimited duration set the validity to zero.

Expiration Strategy

The expiration strategy determines the expiration start date of the maintenance. It allows for the following strategies:

Immediate:

The license maintenance starts expiring right after it is created.

Delayed:

The license maintenance starts expiring after the license is activated the first time.

Allow Major Version Updates

If set to true then all the major version updates will be allowed till the license maintenance expires.

Allow Minor Version Updates

If set to true then all the minor version updates will be allowed till the license maintenance expires.

Using maintenance policies

After you have created a maintenance policy and linked it with the license, you need to call the following LexActivator functions in your code after calling SetProductId() function:

SetReleaseVersion("1.2.3");

SetReleasePublishedDate();

The allowed version format syntax is $MAJOR.$MINOR.$PATCH.$BUILD. So, only the following three formats are allowed:

  • x.x - $MAJOR.$MINOR

  • x.x.x - $MAJOR.$MINOR.$PATCH

  • x.x.x.x - $MAJOR.$MINOR.$PATCH.$BUILD

It must only contain dot-separated digits e.g. 1.2, 1.2.3, 1.2.3.4, etc.

The version set in this function is stored in the license as "CurrentReleaseVersion" property and in the activation as "ReleaseVersion" property. If the license has more than one activation the "CurrentReleaseVersion" property of the license will store the max release version.

Using max allowed release version

In case your use case is simple and you want to allow updates up to a particular max version, then you don't need to create any maintenance policy. Just set the "MaxAllowedReleaseVersion" property of the license to the max version up to which you want to allow updates. And in your application just call SetReleaseVersion("x.x.x") the function.

Renewing maintenance

Whenever you create a license and link a maintenance policy with validity say 365 days, you will see a property in the license resource named maintenanceExpiresAt. It is a read-only, computed property and determines the time when the license maintenance will expire.

If the license maintenance policy expiration strategy is set to immediate, the maintenanceExpiresAt property will be populated with the date on which the license maintenance will expire starting from the time when the license was created.

If the license maintenance policy expiration strategy is set to delayed, the maintenanceExpiresAt property will be null till the license is activated, as the license maintenance will start expiring after it is used.

To renew the license maintenance you need to invoke the license maintenance renew endpoint or renew it through the license page on the Dashboard. It extends the license maintenance expiry by its maintenance policy's validity.

Possible use cases

1- Lifetime free updates

Don’t create any policy or create the policy with the following values:

Validity

0

AllowMajorVersionUpdates

true

AllowMinorVersionUpdates

true

2- Lifetime minor version updates

Validity

0

AllowMajorVersionUpdates

false

AllowMinorVersionUpdates

true

3- One-year major version updates

Validity

365 Days

AllowMajorVersionUpdates

true

AllowMinorVersionUpdates

true

4- One-year minor version updates

Validity

365 Days

AllowMajorVersionUpdates

false

AllowMinorVersionUpdates

true

5- No updates

Validity

0 (or any value)

AllowMajorVersionUpdates

false

AllowMinorVersionUpdates

false

Last updated