Deprecations
This page is a dated log of everything that has been deprecated across the Cryptlex Web API and SDKs, newest first. Each section covers one deprecation, what replaces it, and how to migrate. Deprecated items continue to work for backward compatibility, but you should update your integration to the replacements.
Organization address
Deprecated in August 2026 (Web API 3.85.0)
The address property on organizations is replaced by organization custom attributes. Instead of a fixed set of address fields, you define only the fields you need, such as a billing country or region, and choose who can see or change each one.
To migrate:
- For each address field you use, create a custom attribute with the
organizationresource type in the admin portal underSettings -> Custom Attributes. - Copy existing values by sending a
customAttributesarray when updating each organization through the Web API, and switch your scripts to setcustomAttributesinstead ofaddress.
Existing organization addresses keep working until you migrate.
Metadata
Deprecated in August 2026 (Web API 3.85.0, LexActivator 3.47.0)
Metadata is replaced by custom attributes. The one exception is license metadata, which stays available for integrations that store their own references on a license. Instead of free-form key-value pairs with per-value view permissions, you define each custom attribute once, with its resource type, whether it is required, a default value, and the access level of each audience. Cryptlex then validates values against that definition and lets you filter lists by them.
The following LexActivator functions are deprecated:
| Deprecated function | Replacement |
|---|---|
GetProductMetadata() | GetCustomAttribute(LA_RESOURCE_TYPE_PRODUCT, ...) |
GetLicenseMetadata() | GetCustomAttribute(LA_RESOURCE_TYPE_LICENSE, ...) |
GetLicenseUserMetadata() | GetCustomAttribute(LA_RESOURCE_TYPE_USER, ...) |
SetActivationMetadata() | SetCustomAttribute(LA_RESOURCE_TYPE_ACTIVATION, ...) |
GetActivationMetadata() | GetCustomAttribute(LA_RESOURCE_TYPE_ACTIVATION, ...) |
SetTrialActivationMetadata() | SetCustomAttribute(LA_RESOURCE_TYPE_TRIAL_ACTIVATION, ...) |
GetTrialActivationMetadata() | GetCustomAttribute(LA_RESOURCE_TYPE_TRIAL_ACTIVATION, ...) |
To migrate:
- For each metadata key you use, create a custom attribute with the same name and the matching resource type in the admin portal under
Settings -> Custom Attributes. For license, activation, and trial activation attributes, link the products they apply to. - Translate each key's view permissions into access levels: the Activation permission becomes
readapplication access (orread-writeif your app sets the value), and the User, Organization, and Reseller permissions becomereadaccess for those audiences. Metadata view permissions are set per value, while custom attribute access applies to every value of the attribute, so check whether a key's view permissions differ between resources before copying values. If they do, either grant only the access every value of that key allows, or split the key into separate custom attributes, so values that were hidden from an audience stay hidden. - Drop the license template's required metadata keys. You don't need to mark the corresponding custom attributes as required: every license of a linked product already carries every license custom attribute, stored with its default value or an empty string. Mark an attribute as required only if license creation should fail when no value is provided.
- Copy existing values by sending a
customAttributesarray when updating each product, license, or user through the Web API, and switch your order automation and scripts to setcustomAttributesinstead ofmetadata. - In your app, replace the deprecated LexActivator functions listed above. If you license through the Web API directly, send
customAttributesinstead ofmetadatain activation requests, and read the values from the activation token.
Existing metadata keeps working until you migrate. License metadata that only stores integration references, such as subscription IDs from your payment gateway, can stay as it is. The Stripe, Paddle, and FastSpring integrations store their subscription IDs this way, so leave those keys in place.
Activation logs
Deprecated in August 2026 (Web API 3.85.0)
Activation logs are no longer generated after 15 September 2026, and are replaced by activation events, a complete record of activation activity on a license, covering creation, updates, deactivations, lease expiries, and server syncs.
Activation logs are no longer generated after 15 September 2026.
To migrate:
Replace calls to the activation log endpoints in your Web API scripts with the activation events endpoints.
The LA_SYSTEM permission flag
Deprecated in December 2025 (LexActivator 3.38.0)
The LA_SYSTEM permission flag is replaced by LA_ALL_USERS, which enables system-wide activation: one activation shared by every OS user on the machine, without requiring your app to run with administrator privileges. It is supported on Windows and macOS, and the license's User locked property is ignored for system-wide activations.
To migrate, pass LA_ALL_USERS instead of LA_SYSTEM to SetProductId(). LexActivator 3.38.0 also added support for migrating existing activation data from LA_USER and LA_SYSTEM to LA_ALL_USERS, so machines that are already activated keep their activation after the change. See the permission flag guidance in Best Practices.
Validity and expiration strategy on maintenance policies
Deprecated in November 2025 (Web API 3.81.0)
The validity and expirationStrategy properties on maintenance policies are replaced by subscriptionInterval and subscriptionStartTrigger, the same model licenses moved to.
To migrate:
- Update each maintenance policy, in the admin portal or through the Web API, to use a subscription interval and start trigger instead of validity and expiration strategy.
- If your scripts create or update maintenance policies through the Web API, send
subscriptionIntervalandsubscriptionStartTriggerinstead ofvalidityandexpirationStrategy.
Existing maintenance policies keep working, and no SDK changes are required.
Trial activation extend endpoint
Deprecated in September 2025 (Web API 3.80.0)
The POST /v3/trial-activations/:id/extend endpoint is replaced by PATCH /v3/trial-activations/:id/expires-at.
To migrate, replace calls to the extend endpoint with the expires-at endpoint, and send the exact new expiration date instead of a duration to add.
Product versions and feature flags
Deprecated in May 2025 (Web API 3.78.0, LexActivator 3.32.0, LexFloatClient 4.11.0)
Product versions and feature flags are replaced by features and Entitlement Sets:
- Product versions (
/v3/product-versions) are replaced by Entitlement Sets (/v3/entitlement-sets), which group features into named tiers. - Feature flags (
/v3/feature-flags) are replaced by features (/v3/features) and feature entitlements, which support per-license overrides that feature flags did not.
To migrate:
- Recreate your product versions as Entitlement Sets and your feature flags as features, then link an Entitlement Set to each license template and license. See Features and Entitlement Sets.
- Update Web API scripts that call
/v3/product-versionsor/v3/feature-flagsto use/v3/entitlement-setsand/v3/features. - Replace the deprecated SDK functions with their replacements:
| SDK | Deprecated | Replacement |
|---|---|---|
| LexActivator | GetProductVersionName() | GetLicenseEntitlementSetName() |
| LexActivator | GetProductVersionDisplayName() | GetLicenseEntitlementSetDisplayName() |
| LexActivator | GetProductVersionFeatureFlag() | GetFeatureEntitlement() |
| LexFloatClient | GetHostProductVersionName() | GetHostLicenseEntitlementSetName() |
| LexFloatClient | GetHostProductVersionDisplayName() | GetHostLicenseEntitlementSetDisplayName() |
| LexFloatClient | GetHostProductVersionFeatureFlag() | GetHostFeatureEntitlement() |
See Accessing feature entitlements for how the replacement functions work.
Validity and expiration strategy on licenses
Deprecated in May 2025 (Web API 3.78.0)
The validity and expirationStrategy properties on licenses and license templates are replaced by subscriptionInterval and subscriptionStartTrigger. See Subscription Licensing for how the new model works.
The migration requires no changes in LexActivator, LexFloatClient, or LexFloatServer; all functionality continues to work as before. Backward compatibility is fully maintained, so existing licenses using validity keep working.
To use the new model for future licenses, update each license template:
- Clear the Validity and Expiration Strategy fields.
- Set the Subscription Interval (for example,
1 monthinstead of30 days) and the Subscription Start Trigger:- Use License Creation if the old expiration strategy was Immediate.
- Use License Activation if it was Delayed.
Modifying a license template does not affect existing licenses. You can either keep them on validity (the renewal and extension APIs remain supported) or migrate each license using the Update Subscription Parameters action from the Actions menu in the license table, setting the Subscription Interval and the appropriate Start Trigger.
The duration-based extend endpoints are also deprecated. Replace them with the expires-at endpoints, which take an exact expiration date instead of a duration:
| Deprecated | Replacement |
|---|---|
POST /v3/licenses/:id/extend | PATCH /v3/licenses/:id/expires-at |
POST /v3/licenses/:id/maintenance/extend | PATCH /v3/licenses/:id/maintenance/expires-at |
license.extended webhook event | license.expiresAt.updated webhook event |
The disableClockValidation property
Deprecated in June 2024 (Web API 3.72.0)
The disableClockValidation property on licenses is replaced by allowedClockOffset.
To migrate, set allowedClockOffset to -1 instead of setting disableClockValidation to true when creating or updating licenses and license templates.
The CheckForReleaseUpdate function
Deprecated in April 2023 (LexActivator 3.21.0)
The CheckForReleaseUpdate() function is replaced by CheckReleaseUpdate(), whose callback also reports whether the update is allowed for the license.
To migrate, replace the function call and update your callback to handle the release object and the update-allowed status. See Auto-Updates for a complete example.
The SetAppVersion function
Deprecated in June 2022 (LexActivator 3.19.0)
The SetAppVersion() function and the appVersion property on activations are replaced by SetReleaseVersion() and the releaseVersion property.
To migrate, call SetReleaseVersion() with your app's dot-separated version (for example, 1.2.3) instead of SetAppVersion(). The value is stored on the activation as releaseVersion and is also what maintenance policies validate against.
Filter query parameters
Deprecated in September 2021 (Web API 3.44.0)
The fixed filter query parameters listed below are replaced by query operators.
| Deprecated | Replacement | Endpoints |
|---|---|---|
createdAfter, createdBefore | createdAt[gt], createdAt[lt] | /v3/licenses, /v3/users, /v3/activation-logs |
lastSeenAfter, lastSeenBefore | lastSeenAt[gt], lastSeenAt[lt] | /v3/users |
metadataKey, metadataValue | metadata.key, metadata.value | /v3/licenses, /v3/users, /v3/activations |
email | user.email | /v3/licenses |
To migrate, replace each deprecated parameter with its operator form. For example, createdAfter=2021-01-01 becomes createdAt[gt]=2021-01-01.
The roles property on users
Deprecated in December 2018 (Web API 3.9.0)
The roles array on users is replaced by a single role property.
To migrate, update scripts that read or set roles on the /v3/users endpoints to use role.
Where deprecations are announced
When something is deprecated, it is noted in the corresponding changelog (Web API, LexActivator, LexFloatClient, LexFloatServer) and added to this page.