Link
✎

License Lifecycle: Activation, Expiry, Renewal and Revocation

Most software licenses go through the same stages. The customer is created, the license gets activated and used, it expires or is renewed, and now and then it’s moved to someone else or taken away. In Labs64 NetLicensing each stage is one of three things: a REST API call, an action in the Management Console or the Shop, or a rule of the licensing model that kicks in during validation.

Stage How it happens in NetLicensing Notification event
Customer created Create licensee, or automatically on first validation if the product has licensee auto-create LICENSEE_CREATED
Trial starts An automatic license template (price 0) is assigned on first validation, for example in Try & Buy or Subscription  
Purchase NetLicensing Shop, your own shop via Gateway, or create license from your back end PAYMENT_TRANSACTION_PROCESSED, LICENSE_CREATED
Activation on a device The first validation with a new nodeSecret in Node-Locked client mode  
Use Validate, cached until ttl WARNING_LEVEL_CHANGED
Expiry gets close The warning level turns YELLOW, following the model’s rules WARNING_LEVEL_CHANGED
Expiry Validation returns valid=false once the period ends; a grace period can buy some time WARNING_LEVEL_CHANGED
Renewal or upgrade The customer buys in the Shop through a shop token, or you add a license LICENSE_CREATED
Transfer Transfer licenses from a licensee marked for transfer  
Suspension Update the license with active=false; inactive licenses are left out of validation  
Disabling a customer Update the licensee with active=false (no new licenses), deactivate its licenses, or delete it  

Events are delivered as webhook notifications.

Activation

There’s no separate activation call. A license counts as activated the first time your application validates it. If the product has licensee auto-create, passing productNumber on that call creates the licensee. Automatic license templates, such as a trial period, are added at the same moment. In Node-Locked client mode, the first nodeSecret values get bound to the license until its quota is used up.

If customers get a key from you, for example after buying in your own shop, use that key as the licensee number, or add it as an alias of the licensee.

Expiry and grace periods

Time-based models return the end of the paid period: expires in Subscription, evaluationExpires in Try & Buy. What happens once valid turns false is up to your application; read-only mode is a popular choice. The Subscription model also has an optional grace period during which the customer can keep working.

Renewal

Your application or website creates a shop token for the licensee and opens the shopURL from the response. The customer buys a renewal there. If they renew before the current period ends, the new period is added on after it. The next validation shows the new state, so there’s no new key to send out.

Recurring payments work with the payment providers that support them. If billing runs somewhere else, see How to use NetLicensing with subscription management services.

Revocation

To take away a single license, set its active property to false. Validation ignores inactive licenses, and you can switch it back on later. To shut out a whole customer, set the licensee’s active property to false so it can’t get new licenses, and deactivate its licenses so validation stops granting use. To free a device or a seat, remove the stored nodeSecret (Node-Locked) or sessionId (Floating) property.

Revocation takes effect at the next validation. A client that’s offline keeps going on its cached result until the ttl runs out, so pick your TTL interval with that delay in mind.

Last updated · Edit this page on GitHub