Release Notes
3.2.0
October 14, 2025
Changes
Targeting Licensing API version 2025-10-10
Added
CurrentUsagePeriodStartandNextUsagePeriodStartproperties to theIActivationFeatureinterface, exposing feature usage reset capabilities.Removed properties associated with the linger feature from the data models.
Download: Zentitle.Licensing.Client.3.2.0.zip
3.1.0
July 25, 2025
New Features
Added support for
editionIdhint that allows consumers to activate specific edition of a product to make required features available to end users.editionIdis an optional argument withActivatecall.Added
Attributesproperty of typeIAttributeSettoIActivationinterface, placing alongside the existingFeaturesproperty, for easier access.
Changes
Marked
FeaturesandAttributesproperties inActivationInfoclass as obsolete to encourage migration to the new interface-based approach.
Note: Obsolete features will be removed in version 4.0.0. Please migrate to the new interface-based approach for attribute and feature management.
Download: Zentitle.Licensing.Client.3.1.0.zip
3.0.1
June 27, 2025
Bug Fixes
The
IActivation.FeaturesandIActivation.Info.Featureshad inconsistent state after refresh operation (both online and offline) once there were changes made to entitlement on server side.
Download: Zentitle.Licensing.Client.3.0.1.zip
2.2.4
June 27, 2025
Bug Fixes
The
IActivation.FeaturesandIActivation.Info.Featureshad inconsistent state after refresh operation (both online and offline) once there were changes made to entitlement on server side.
Download: Zentitle.Licensing.Client.2.2.4.zip
3.0.0
April 28, 2025
Enhanced Concurrency Management
Added native support for system-wide locking through the new
ISharedActivationinterfaceRemoved
UseActivationOperationLockfrom activation options (custom lock implementations are no longer needed; useISharedActivationfor cross-process scenarios)
Simplified API Design
Moved all feature-related operations (
CheckoutFeature,ReturnFeature,TrackFeatureUsage) fromIActivation.Featuresto theIActivationinterface for more intuitive usageAll feature operations now use the
IActivationFeatureinterface as input for more reliable accessWhen a feature action succeeds,
IActivationFeaturerepresents the current state of the feature, including recent changes from other activations
Improved Documentation
Enhanced exception information throughout the API
Extended the list of possible error responses from the server through the
ApiErrorCodesstatic classAdded comprehensive documentation for common error scenarios
Download: Zentitle.Licensing.Client.3.0.0.zip
2.2.3
November 21, 2024
Improvements
The
IActivation.DeactivateOffline()method permitted in theEntitlementNotActiveState.
Download: Zentitle.Licensing.Client.2.2.3.zip
2.2.2
November 18, 2024
Improvements
The
IActivation.Deactivate()method is now permitted in theEntitlementNotActiveState. Instead of raising anIllegalActivationOperationException, it clears the local state storage and transitions the activation instance to theNotActivatedstate.
Download: Zentitle.Licensing.Client.2.2.2.zip
2.2.1
November 8, 2024
Bug Fixes
The client (version 2.2.0) would previously throw an exception when calling
IActivation.RefreshLeasemethod in a specific scenario:ActivationStateModel.LeaseExpiryequals the Entitlement Expiry Date (because the previousRefreshLeasealready extended the lease to the maximum, which is Entitlement Expiry Date). This is a new behavior introduced with API version 2024-11-07. After this fix, the method will NOT throw an exception but will returnfalseto indicate that the Activation Lease Expiry can no longer be prolonged.
Download: Zentitle.Licensing.Client.2.2.1.zip
2.2.0
November 6, 2024
Improvements
Using Licensing API version 2024-11-07
Performance - Activate and Feature Activate/Return operations now refresh the Activation state from response instead of an extra call to the Get Activation State endpoint.
Download: Zentitle.Licensing.Client.2.2.0.zip
2.1.0
Improvements
The
activation.Info.Entitlementobject has been extended with the following properties to eliminate the need to retrieve entitlement information through the Licensing API:ConcurrencyModeHasManintenanceandMaintenanceExpiryDate
Download: Zentitle.Licensing.Client.2.1.0
2.0.0
Improvements
Added support for Zentitle2Core Library integration, including the following features:
Device Fingerprint
Offline Activation
Secure Storage
Removed dependency on the
Microsoft.IdentityModel.TokensNuGet package
Breaking Changes
Offline activation requires Zentitle2Core Library integration, and it accepts the
TenantRsaKeyModulusstring parameter instead of theJsonWebKeyobjectFileActivationStoragehas been renamed toPlainTextFileActivationStorage
Download: Zentitle.Licensing.Client.2.0.0
1.4.6
Download: Zentitle.Licensing.Client.1.4.6.zip
Improvements
Added support for bool features usage tracking
1.4.5
Download: Zentitle.Licensing.Client.1.4.5.zip
Bug Fixes
Fixed bug with in-memory cached persistence state not properly cleared after the seat deactivation
1.4.4
Download: Zentitle.Licensing.Client.1.4.4.zip
Improvements
Added locking to the
Activationclass to prevent possible concurrency issues and make it thread-safe. Check Configuring the Activation section for more detailsEntitlement status in the
EntitlementInforespects the entitlement dates and is automatically updated after the entitlement enters the grace period or expires
Bug Fixes
When the seat's lease period expires at the same time as the entitlement, the
Activationtransitions into theEntitlementNotActivestate instead of theLeaseExpiredstate.
1.4.3
Download: Zentitle.Licensing.Client.1.4.3.zip
Improvements
[Breaking Change] Dropped support for the
Consumption TokenandFloatingfeature types
1.4.2
Download: Zentitle.Licensing.Client.1.4.2.zip
Improvements
Added support for a new Usage Count feature type
1.4.1
Download: Zentitle.Licensing.Client.1.4.1.zip
Improvements
Activation entitlement has been added to the offline activation tokens and can be retrieved using the
GetActivationEntitlement()method[Breaking Change]
PersistentDatacontains newOfflineActivationEntitlementfield. Make sure that it's being handled properly in yourIActivationStorageimplementation.
1.4.0
Improvements
[Breaking Change] Changed offline activation token format
Added support for username/password license activation flow
Added maintenance fields to activation's entitlement
1.3.0
Improvements
Logging improvements
1.2.0
Improvements
Activation state management
[Breaking Change] The
OfflineActivatedstate has been removed because it has been merged with theActivestate. TheInfo.Modeactivation property can be used to distinguish between theOnlineandOfflineactivated seat.[Breaking Change] The
Expiredstate has been renamed toLeaseExpiredstate[Breaking Change] The
NotActivestate has been renamed toNotActivatedstateA new
EntitlementNotActivestate has been added, which represents an activated seat with no active entitlement (license) - e.g., the entitlement has expired or has been disabled on the server
Activation methods changes
[Breaking Change] The
Refresh()method has been renamed toRefreshLease()[Breaking Change] The
RefhreshOffline()method has been renamed toRefreshLeaseOffline()The
Deactivate()method returns bool now, indicating if the deactivation has been successful or not
The number of API calls inside the
RefreshLease()method has been reduced from 2 to 1Documentation is now available for all public classes and methods of the SDK code
Bug Fixes
When the entitlement is no longer active on the server (because it has expired/has been disabled), the
Refresh(),Deactivate()andPullRemoteState()methods are no longer transitioning the activation into theNotActivestate but into theEntitlementNotActivestate. In this state, thePullRemoteState()method can be used to transition back to the previous state if the entitlement becomes active again. If that isn't the case, theActivate()method can be used in this state to activate the seat with another entitlement.If there is an API exception raised because of the invalid nonce, the activation doesn't fall into the
NotActivatedstate, but the API error is propagated out of the library.
1.1.0
Improvements
Added
PullPersistedState()activation method, which allows retrieving the activation state from the storage, even if the activation has been initialized already. If there are some changes in the persistence (made by other processes accessing the same activation) when calling this method, they will be reflected in the activation's in-memory state.
1.0.0
The initial version of Zentitle.Licensing.Client SDK
Last updated
Was this helpful?