Skip to Content
New release 12 available 🎉

License Tokens

In the context of the Babel Licensing Service, license tokens are used to manage licenses and track their usage. There are two types of license tokens: floating license tokens and license activation tokens.

Only activation and floating licenses create tokens. File licenses do not, and neither does the online validation of a file license.

Floating License Tokens

In the case of floating licenses, a token represents a client that is connected to the server and using a specific license. When a client requests a license, the service creates a token for it. The token is released when the client checks the license back in.

If the client stops without releasing the license, for example after a crash or a lost network connection, the token expires after the heartbeat interval (Licensing:HeartbeatInterval in the configuration) and the seat becomes available again.

License Activation Tokens

In the case of license activation, a token represents a machine that has activated a license. The service creates the token when the machine activates, together with the node-locked license issued for that machine.

The token expires on the same date as the license. A perpetual activation never expires on its own. The token stays until the machine is deactivated. Deactivating a machine deletes its token and the node-locked license, and the slot is free immediately.

How tokens are counted

The Babel Licensing Service limits the number of active tokens, not the number of tokens ever issued. The limit comes from the license of the service itself:

EditionActive tokens
Server Server1,000
Data Center Data CenterUnlimited

A token is active while its license is not revoked and the token has not expired. Revoking a license removes its tokens from the count.

A trial uses a token only if it is delivered as an activation or floating license. A trial shipped as a signed file license with an expiry date uses none.

Freeing tokens

Tokens are freed in these ways:

  • The client deactivates the machine (activation) or releases the license (floating).
  • A floating token expires because the client stopped sending heartbeats.
  • The license is revoked or the token reaches its expiry date.
  • An administrator deletes the token. You can do this from Babel Desktop, from the REST management API or from the Data Center web application. It is the way to free the slot of a machine that died before it could be deactivated.

Limits and warnings

The service checks the number of active tokens against the limit of its license:

  • At 85% of the limit (850 for Server), the service logs a warning and sends an “approaching limit” email to the administrator.
  • When active tokens reach 105% of the limit (1,050 for Server), the service refuses new activations and floating checkouts. The client receives the ServerReachedMaxTokenAllowed error (StatusCode.PermissionDenied): “The server has reached the maximum number of license tokens allowed”. At this point the service also deletes expired and revoked tokens, which may bring the count back under the threshold.

Starting with 12.0, the block is checked against a fresh count at every activation and floating checkout. Earlier versions relied on a count refreshed every 5 minutes, so a burst of requests could briefly exceed the threshold. The warning emails are still evaluated every 5 minutes.

Reclaiming inactive activations

Starting with 12.0, the service can free the seat of an activation that is no longer used. It is disabled by default. To turn it on, set ReclaimInactiveActivationDays in the Licensing section of the configuration:

"Licensing": { "ReclaimInactiveActivationDays": 90 }

The same setting as an environment variable:

BABEL_SERVICE_LICENSING__RECLAIMINACTIVEACTIVATIONDAYS=90

The default is 0, which disables the feature. When a license has used all its seats (MaxAllowedSites) and a new machine asks to activate, the service looks at the existing activations. It frees the seat of the one that has gone the longest without contacting the service, provided that activation is older than the configured number of days, and then activates the new machine. If no activation is old enough, the request fails as before.

A machine contacts the service when it validates its license online, which updates the last-seen time of its token, or when it activates. The freed seat is handled like a deactivation: the token and its node-locked license are removed, and the license trace and the LicenseDeactivated webhook event are produced when they are enabled.

An application that validates only offline against its node-locked license file never updates the last-seen time, so its seat looks inactive. Also, reclaiming only frees the seat on the server. The node-locked license file of the old machine keeps working offline, and the old machine fails its next online validation with “license not activated”.

Enable this setting only if the protected application validates online periodically.

Upgrading from Server to Data Center

If the tokens of the Server edition are not enough, upgrade to the Data Center edition. The service package is the same. Replace the service license file with the Data Center license and restart the service. The database and the configuration stay as they are.

Last updated on