This page shows some of the changes we've made to the platform since March 2016. Note, not all changes are reflected here.



  • [Dashboard] Internal changes and improvements.
  • [Dashboard] Internal changes and improvements.
  • [Dashboard] Fix Analytics access for operator accounts.
  • [Web API] Add the option to look up a customer using their Customer Id in Get Customers method.
  • [Dashboard] Internal changes and improvements.
  • [Dashboard] Internal changes and improvements.
2024.06.13 2024.06.05
  • [Dashboard] Internal updates.
  • [Dashboard] Internal updates.
  • [Web API] Improvements to Get Web API Log method.
  • [Dashboard] Fix port from not being set correct in the license server config. Previously, it would result to 8080 being used.
  • [Dashboard] Further GUI fixes.
  • [Dashboard] Fix feature templates for Mac users.
  • [Dashboard] Internal updates.
  • [Dashboard] Fix fonts for Mac users.
  • [Web API] Speed improvement GetWebAPILog when filtering on State.
  • [Internal] Internal updates.
  • [Internal] Internal updates.
  • [Web API] Update behaviour of Get Web API Log method so that if EndingBefore parameter is supplied (and no OrderBy is provided), it will automatically set OrderBy to Id desc.
  • [Dashboard] Updates to permissions for operator accounts.
  • [Dashboard] Fix the issue that did not allow operators to set extended features and modify data objects.
  • [Internal] Internal updates to the system.
  • [Web API] Fix an issue in Change Customer method that did not trigger an update when the customer was null.
  • [Dashboard] Add an option to block customer licenses when the customer is removed.
  • [Dashboard] Internal updates.
  • [Dashboard] Fix typos in the links on the settings page.
  • [Internal] Internal changes to Get Web API Log method.
  • [Web API] Clarify that OrderBy is now depricated.
  • [Dashboard] Fix Stripe webhook listener so that it does not capture manual payments.
  • [Dashboard] Fix an issue with with the key details box on the product page for Safari users.
  • [Internal] Internal updates to the application.
  • [Dashboard] Fix an issue on the billing page for trial users.
  • [Dashboard] Internal updates.
  • [Dashboard] Further performance improvements to the product page.
  • [Dashboard] Further performance improvements to the product page.
  • [Dashboard] Performance improvements to the customer page.
  • [Internal] Internal updates.
  • [Dashboard] We have updated the DaysLeft field on the product page. It will now show the correct number of days left. If the key has expired, it will be marked as such. Expired keys are those where the expiry date is in the past. On the expiry date, it will show that zero days are left.
  • [Dashboard] Allow setting a precise expiration date on the product page.
  • [Dashboard] Fix an typo on the product page.
  • [Internal] Internal updates.
  • [Internal] Internal updates.
  • [Internal] Internal updates.
  • [Internal] Internal updates.
  • [Web API] Performance improvement to Activate method.
  • [Web API] Performance improvement to Deactivate method.
  • [Internal] Internal updates.
2023.08.22 2023.08.18
  • [Web API] Performance improvement to Create Key method.
  • [Web API] Performance improvement to Activate method.
  • [Web API] Performance improvement to GetKey method.
2023.08.16 2023.08.11
  • [Web API] Update Stripe webhook so that it ignores certain events that are not related to Cryptolens. Previously, it would throw a 500 error, but this is now changed to 200.
  • [Web API] Internal updates.
  • [Dashboard] Show the customer name in the list of issued licenses (reseller portal).
  • [Web API] Internal updates.
  • [Web API] Internal updates.
  • [Web API] Fix to GetKeys method when SearchQuery contained a the customer name or email.
  • [Dashboard] Show the product name in the list of licenses on the customer page.
  • [Dashboard] Mark blocked licenses with red colour on the customer page.
  • [Web API] Internal updates.
  • [Dashboard] Fix an issue in the configuration string that is generated for the license server, which caused "Signature check failed" error in the on-prem license server.
  • [Web API] Internal updates.
  • [Web API] Performance improvement of CreateTrialKey method.
  • [Internal] Internal improvements.
  • [Web API] Optimize the speed Activate method when registering an overdraft machine (floating licensing).
  • [Web API] Fix a potential issue with overdraft for floating licenses, when an initial activation would return that a license is overdraft but later not overdraft. The correct behaviour is that existing machines that are not overdraft should always be marked as non-overdraft.
  • [Dashboard] Update the way the configuration string is generated for the license server.
  • [Dashboard] Provide more details when an error occurs when a new license is issued by a reseller.
  • [Dashboard] Add path to config in the license server configuration.
  • [Internal] Minor updates to the application.
  • [Web API] Update documentation for GetKey method.
  • [Dashboard] Minor update to the license server page.
  • [Internal] Ensure that customers that sign up using the generic customer sign up link are also stored in Object Log.
  • [Internal] Internal updates to the platform.
  • [Dashboard] Fix a problem with creation of new keys.
  • [Internal] Internal updates to the platform.
  • [Internal] Internal updates to the platform.
  • [Dashboard] Add a new product configuration that allows you to reset the int value of key related data objects on a regualar basis. You can read more about it here under cryptolens_dobjreset
  • [Web API] Add CORS support for Create Key From Template and Create Key methods.
  • [Internal] Internal updates to the platform.
  • [Internal] Internal updates to the platform.
  • [Internal] Update the sign up page.
  • [Dashboard] Add the ability to submit feedback on each page.
  • [Dashboard] Improve the customer page for all types of accounts.
  • [Dashboard] Improve error handling for operator accounts.
  • [Dashboard] Allow re-use of existing accounts when signing up for a customer account.
  • [Dashboard] Speed improvement of analytics summary on the main page.
  • [Dashboard] Return an error when the feature specification could not be loaded on the product page.
  • [Internal] Internal updates to the platform.
  • [Dasbhoard] Update the billing page.
  • [Web API] Hide older logs in Get Web API Log method.
  • [Customer portal] Hide features in the customer portal that are not enabled (i.e. set to true).
  • [Dasboard] Fix an error when loading the history of data object operations in the dashboard.
  • [Dasbhoard] Internal updates to the billing page.
  • [Dashboard] Improve the license server page.
  • [Internal] Internal updates to the application.
  • [Internal] Internal improvements.
  • [Web API] Fix the null value in the "secret" field in Add Customer method.
  • [Web API] Add "secret" field in the default object that is returned by Add Customer.
  • [Infastructure] Update of the internal infrastructure.
  • [Dashboard] Fix the display of the number of days remaining on the product page if the local time of the machine is wrong.
  • [Dashboard] Fix an issue that did now allow to download activation files.
  • [Dashboard] Update additional feature interface.
  • [Dashboard] Fix an issue when updating additional features for the first time.
  • [Web API] Performance improvement to Activate.
    [Web API] Fix to the wrong IP being registered during activation and deactivation if is called through a proxy.
  • [Web API] Fix to the wrong IP being registered during activation and deactivation.
  • [Web API] Performance improvement for GetKey, Activate and Deactivate methods.
  • [Dashboard] Update the API endpoint.
  • [Web API] Fix an issue with floating licenses.
  • [Internal] Internal application updates.
  • [Internal] Internal application updates.
  • [Web API] Change the format of the customer secret to resemble product licenses. To use the format that resembles license keys, please create a data object with the name "cryptolens_customer_secret" and IntValue to "2" on this page.
  • [Web API] Add a new endpoint to Get Customer Licenses that allows retrieval of licenses based on the customer secret.
  • [Web API] Update Edit Customer method so that it allows changing the customer secret.
  • [Web API] Update Get Customers method so that it includes the new fields and allows searching based on the customer secret.
  • [Dashboard] Add the customer secret on the customer page.
  • [Web API] Add new parameters to the Get Events method. It is now possible to retrieve events starting from the latest, and to filter based on the "time" parameter.
  • [Internal] Transfer address from the payment method to the customer object in the recurring billing module.
  • [Web API] Improve performance of the Get Events method.
  • [Web API] Performance improvement to floating license verifications.
  • [Dashboard] Allow restricted accounts to manage billing information.
  • [Dashboard] Fix an issue with the access token page not showing access tokens for some users.
  • [Dashboard] Add an option to provide the path to the cache folder in a license server configuration.
  • [Web API] Fix GetMessages method.
  • [Internal] Make sure that there is no requirement to enable "Block Expired Licenses" setting to send out expiration notifications.
  • [Internal] Send the copy of the final email when a license is blocked, if this is enabled with cryptolens_expirationnotice_send_copy.
  • [Dashboard] In Suspected Anomalies, add the model name.
  • [Web API] In Get Web API Log method, add Model (refers to the model name) in AnomalyInfo.
  • [Internal] Add an option to send a copy of the expiration email to a different email. It can be enabled by adding a data object to a product with the name cryptolens_expirationnotice_send_copy, where the StringValue is set to the email where the copy should be sent.
  • [Dashboard] Save the RSA Public Key on the license server configuration page, so that it is not re-generated each time a new configuration is created.
  • [Web API] Fix the Create Message endpoint so that incorrect timestamps are not formatted.
  • [Dashboard] Update the page used to view product-level data objects.
  • [Internal] Internal application updates.
  • [Web API] Performance enhancement to Activate and GetKey methods.
  • [Web API] Clarify in the docs that the product ID is necessary to filter on a license key in Get Events.
  • [Web API] Fix filtering on Metadata in Get Events.
  • [Web API] Allow licenses with start countdown upon activation to be extended in time only by the first device. This can be enabled by creating a data object (in the product) with the name cryptolens_trialactivation and string value first_activation.
  • [Web API] Update Extend License so that a blocked license is automatically unblocked when extended. To enable this behaviour, you need to create a data object with the name cryptolens_unblockextendedlicenses and string value true inside the product.
  • [Web API] Get Events now supports filtering on the product, key and metadata.
  • [Web API] Fix typo in the Event object article, about the "Value" parameter.
  • [Web API] Performance fix for Get Events.
  • [Web API] Add Upload Values method that allows you to upload a log of increment/decrement operations.
  • [Dashboard] Add a page to generate license server configuration.
  • [Web API] Fix an issue that thew an error in GetKey when feature lock had certain values.
  • [Internal] Performance updates.
2021.05.04 2021.04.29
  • [Web API] Optimize speed of GetKey and Activate methods.
  • [Web API] Optimize speed of GetKeys method.
  • [Web API] Fix order by parameter in GetKeys method.
  • [Dashboard] Speed up the export of licenses.
  • [Web API] Optimize speed of Log Explorer and Get Web API Log method.
  • [Web API] Optimize speed of List Data Objects method.
  • [Web API] Optimize speed of Get Customers method.
  • [Dashboard] Minor fixes in the dashboard.
  • [Dashboard] Fix the error message that was thrown when attempting to remove a data object associated with a machine code.
  • [Dashboard] Performance improvement in Add Data Object method.
  • [Dashboard] Performance update to creation of access tokens.
  • [Internal] Internal updates.
  • [Internal] Improve performance of the Web API.
  • [Dashboard] Update Web API Log explorer so that it displays anomaly information.
  • [Dashboard] Add Suspected Anomalies where you can see which request groups were marked as anomalous.
  • [Web API] Add information about whether a certain request is anomalous to the Get Web API Log method.
  • [Internal] Internal application updates.
  • [Dashboard] Fix the error handling in the log explorer.
  • [Dashboard] Fix the link to the Web API Log from the product page (when examining logs related to a key).
  • [Dashboard] Temporarily deactivate the feature to download all the logs as csv.
  • [Internal] Internal application updates.
  • [Dashboard] Re-add the option to download log files for a certain license.
  • [Dashboard] Improve error handling on Web API Logs page.
2021.04.07 2021.03.25 2021.03.24 2021.03.17
  • [Billing] Fix an issue when some receipts were not displayed properly.
  • [Dashboard] Change the default ordering of licenses to show the recently created licenses.
  • [Customer portal] Fix deactivation of licenses with special characters.
  • [Internal] Log license key creation events in Web API Log that are created in the dashboard.
  • [Web API] Add an option in Web API Log method to filter on state codes.
  • [Dashboard] Add a new dashboard to manage credit consumption.
  • [Customer portal] Add a new dashboard to get an overview of credit consumption.
  • [Web API] Add tracking of the id for data object related requests.
  • [Web API] Add DOId to Web API Log object returned in the Get Web API Log method.
  • [Web API] Add tracking of the integer value for data object related requests.
  • [Web API] Add DOIntValue to Web API Log object returned in the Get Web API Log method.
  • [Customer portal] Fix the search field on the "Manage license" page.
  • [Dashboard] Make it possible to download activation files without having to activate new machines.
  • [Web API] Update the way metadata field is updated in the reseller object.
  • [Web API] Add Metadata to Reseller objects. The following API methods are affected: Add Reseller, Edit Reseller and Get Resellers.
  • [Dashboard] Fix loading of stats on the billing page.
  • [Dashboard] Fix loading of stats on the home page.
  • [Dashboard] Usability improvements on the product page.
  • [Dashboard] Allow special characters in string fields (name, email and company name) on the customer page.
  • [Web API] Add "ResellerId" parameter in Get Resellers method so that you can search for resellers based on their Id.
  • [Dashboard] Fix typo in RemoveReseller method documentation.
  • [Dashboard] Fix the error handling when editing features definitions on the product page.
  • [Dashboard] Update the front page to show todays number of API requests instead of the total.
  • [Dashboard] On the product page, you can now search for a certain key string without needing to add the field name, i.e. "key=".
  • [Dashboard] Fix an issue that allowed newly created users to use an existing domain.
2020.12.15 2020.12.10
  • [Dashboard] Fix an issue when it was not possible to see the QR code when setting up two step authentication.
  • [Web API] Add Create Message and Remove Message endpoint.
  • [Recurring billing] Add support for 3D secure payment authentication.
  • [Internal] Support for SCA compatible payments.
  • [Web API] Update the signature in ModelVersion=3 (affects LinqSign).
  • [Customer Portal] Fix style of the plans for certain screen resolutions.
2020.11.18 2020.10.27
  • [Internal] Update the SMPT server used to send system messages.
2020.10.16 2020.10.12
  • [Web API] Fix an error in GetKey and Activate methods that would throw an error when the new model version was used on clients using SignMethod=1.
  • [Web API] Add Edit Reseller method.
2020.10.11 2020.09.30
  • [Web API] Add reseller id field to Create Key method.
  • [Web API] Add a new model version in GetKey and Activate methods. With ModelVersion=3, we have added reseller information to the license key and "FloatingExpires" field to the object representing an Activated Machine. In addition, we have ensured that all machines, node-locked and floating, are returned in "ActivatedMachines".
  • [Dashboard] Clarify when different errors are triggered in the Deactivate method. We emphasised that if you try to deactivate a node-locked device, an error is thrown if it does not exist. However, this does not occur for floating devices.
  • [Dasboard] Improve navigation when there are many licenses in a product.
  • [Dashboard] Fix the search on the customer page.
  • [Dashboard] Warn on the product page when the max number of machines is set to a value that is less than the number of activated machines.
  • [Billing] Fix an issue in the billing system that did not automatically upgrade a customer after a trial period in certain cases.
  • [Customer portal] Fix an issue that would return an error in the GUI if one of the Stripe products did not have correct attributes.
  • [Customer portal] Fix an issue when 'null' would be shown if pricing description is missing in recurring billing module.
  • [Customer portal] Make sure that the trial period defined in the pricing plan is taken into account when the subscription is created. I.e. when creating a subscription, we have added 'trial_period_days=True' parameter.
  • [Dashboard] Update the code snippet in the activation form.
  • [Dashboard] Add support for multiple users being associated with the same customer. It can be enabled by checking "Allow Multiple User Association" when creating or editing a customer.
  • [Dashboard] Update typos in the interface.
  • [Dashboard] Fix a problem when deleting machine codes in the dashboard that contained strings with special characters.
  • [Web API] Fix error consistency in GetKey.
  • [Dashboard] Show all floating licenses on the product page.
  • [Customer portal] Show all floating licenses on the admin pages in the customer portal.
  • [Web API] Improvement to floating licensing.
  • [Internal] Internal updates.
  • [Dashboard] Show detailed information about the associated customer account.
  • [Internal] Update expiration emails.
  • [Web API] Fix the return object when the plaintext option is used in Create Key method and a customer id is returned.
  • [Dasboard] Fix student/teacher offers.
  • [Dashboard] Add recaptcha during sign up.
  • [Dashboard] Add friendly name to activation files downloaded through the product page. When calling Activate, ModelVersion=2 will be used (see update from 2020.02.16) only if at least one device was activated with a friendly name or if this is the first device with a friendly name.
  • [Dashboard] Fix of the GUI issue with the count of the number of machine codes.
  • [Dashboard] Fix GUI issue that would display the same machine code twice in the dashboard in certain cases.
  • [Web API] Add 'EndingBefore' parameter in Get Web API Log.
  • [Web API] Add 'OrderBy' parameter in Get Web API Log so that the result can be ordered based on one of the output parameters.
  • [Web API] Add 'FloatingExpires' property to the result in Get Web API Log.
  • [Web API] Update 'FriendlyName' property to the result in Get Web API Log, which did now show up in the previous version.
  • [Web API] Use a special error message in case a subscription is missing. Previously, a generic error would be returned.
  • [Web API] Fix typo in the result property in Get Web API Log. The name of the list is "Logs" and not "Events".
  • Internal improvements to the billing system.
  • Fix the autmatic expiration script.
  • Fix the blocking of expired licenses script.
2020.05.20 2020.05.19
  • [Web API] Add the Customer Id of the new or existing customer if Create Key method was called with NewCustomer or AddOrUseExistingCustomer are set to true.
  • [Dashboard] Add help links on the multiple admin page.
  • [Internal] Do not block licenses (or send expiration notice) if the license key contains the data object with the name cryptolens_stripesubscriptionitemid, or if trial activation is enabled provided that the maximum number of machines has been reached.
  • [Customer portal] Fix the Stripe webhook listening endpoint to support usage-based subscriptions.
2020.05.11 2020.05.04
  • [Web API] Add 'AddOrUseExistingCustomer' Create Key method that allow you to use the email as the customer identifier so that if a customer with the same email already exists, the new license will be associated with that customer.
  • [Dashboard] Speed up the product page.
  • [Dashboard] Fix the preview link in the Activation Form.
  • [Dashboard] Performance update of the product list GUI.
  • [Dashboard] Fix the rendering of friendly name for floating licenses, when friendly name was provided.
  • [Dashboard] Show all customers on the customer page.
  • [Customer portal] Render floating licenses in the license manager.
  • [Dashboard] Automatically detect the number of active floating licenses on the product page without the floating time interval specified in advance.
  • [Dashboard] Fix an issue that did not set the page number to 1 on the product page for new queries.
  • [Dashboard] Fix rendering of floating machine codes on the product page. Previously, the machine code would show up as an empty string.
  • [Dashboard] Add an error message when trying to issuing a license issuance right to a reseller that does not exist.
  • [Dashboard] Add a link to FAQ when expiration date does not show up for a given license.
  • [Developer portal] Make sure it is possible to perform most of the tasks even if the page has been inactive for a while.
  • [Notifications] Update the notification sent to trial users.
  • [Web API] Improve the speed of the Key Lock method.
  • [Web API] Reduce the size of the access token in Key Lock method.
  • [Web API] Fix an issue with search in Get Customers method when certain customers had null fields.
  • [Web API] Clarify that parameter names and property names are case-insensitive in Web API 3.
  • [Web API] Potential speed-up for KeyLock method (Web API 3).
2020.04.03 2020.03.30
  • [Web API] Add NewCustomer to Create Key method, which, if set to true, allows you to use the same parameters as Add Customer so that a new customer is created.
  • [Web API] Add AllowActivationManagement to Add Customer method.
  • [Customer portal] Fix an issue that did not allow deactivate a device on the global list of activations.
  • Make GitHub teacher toolbox verification page public.
  • Fix the value of activated machines in the new customer portal. Previously, it showed the number of free seats but should have displayed the number of used seats. This is now fixed.
  • Improve the search in the new customer portal.
  • Add a new page in the customer portal where customers can manage and deactivate unused devices.
  • Add support for friendly name on the product page (developer portal).
  • Add customer information on the product page.
  • Show more customer information in all dropdowns.
  • Add a new sign up link, which can be used to allow customers to deactivate unused devices.
  • Remove the usage counter for access tokens.
  • Minor fixes to the dashboard.
  • Improvement of the GitHub user verification.
  • Fix issue with the display of acivations and data objects when multiple customer objects from the same vendor are associated to the same user account.
  • Update docs for the Get Web API Log method regarding the KeyLock setting. If you set KeyLock=-1 when creating an access token, the method will require the product id and a license key string. This can be uesd to retrieve this log in a client application without exposing logs for other keys.
  • Display friendly name from previous update in both the developer and customer portal.
  • Add FriendlyName and ModelVersion to GetKey and Activate methods. The friendly name allows you to associate a name with an activated device (or used seat). This is especially useful if the customer has many devices using the node-locked model and needs to deactive an unused device. You can sort based on the friendly name on the product page, for example ActivatedMachines.any(it.friendlyname.contains("TEST-PC")). For compatibility reasons, you need to explicitly specify the ModelVersion=2, in order to get the friendly name in the list of Activated Machines in the license key (when calling GetKey or Activate).
  • Add filtering based on 'friendly name' in the Get Web API Log method.
  • Allow restricting permission to access the Get Web API Log method. From now on, you can create an access token with KeyLock=-1, which will ensure that logs can only be retrieved if the correct product id together with the license key string are provided.
  • Add three new parameters for filtering in the Get Web API Log method. Now you can filter on the product id, the license key string and machine code. We have also increased the limit to allow you to get 1000 log entries at once.
  • Add the number of activated devices (node-locked and floating) on the product page. To support floating licenses, please create cryptolens_floatingtimeinterval data object on the product page with Int value set to the desired FloatingTimeInterval.
  • Improve the message shown in the customer portal if no subscription is associated with a certain license.
  • Fix a display issue in the dashboard for licenses that had trial activation enabled. If they were activated, the GUI would show the machine code both as a node-locked and floating license.
  • Remove the machine code from the activation box when it is closed.
2020.02.01 2020.01.30
  • UI improvements in the reseller portal. Clarify which license key was issued if it was not issued to a customer.
  • Minor enhancements to the billing system.
  • Fix display of the StringValue of data objects on the product page.
  • Fix a permission error in a restricted account when accessing data objects. Previously, it would not be possible to access them even if sufficient permission was granted.
  • Security improvements in restricted accounts.
  • Make sure not to block license keys that have a data object with the name 'cryptolens_stripesubscriptionitemid', even if 'Automatic expiration notification' is enabled and the license key has expired (i.e. a time-limited license, based on feature definitions). Licenses with this data object are managed by Stripe, i.e. they will automaticaly be blocked when the plan gets cancelled. This change is introduced since some plans will not charge the user until they have accumulated a certain amount of usage.
2020.01.20 2019.12.15
  • Add an easier way to enable automatic expiration notice. It can now be enabled when clicking on "Edit Feature Names" on the product page.
2019.12.13 2019.12.06
  • Fix the IsValid field inside the Metadata field in both Activate and GetKey methods.
  • Correct the state code when setting an int value of a data object from 9016 to 8016. Existing logs will be updated in the comming days.
  • Allow selection of additional features on the billing page.
  • Allow specifying an optional terms of service agreement for customers who sign up for the customer portal.
  • Add the option to add Operator accounts.
  • Add new resource types (product and data object) to Object Log.
  • Only log Add Customer in the Object Log if it occured in through the dashboard.
  • All actions changes that occur to a product, license key and customer can be found in the Object Log.
  • Show notification when an activation is successful when activating a new device on the product page.
  • Fix an issue in the recurring billing module for a certain configuration of plans in Stripe.
  • Add notification when a person signs up or cancells a subscription.
  • Improve other recurring billing notifications.
  • Ignore requests to Stripe webhook endpont (recurring billing) for subscriptions that do not have a 'skm_key_globalid'.
  • Fix customer sign up link when it is updated.
2019.11.08 2019.10.29
  • Make it easier to copy new access tokens.
  • Improve UI of the license key creation page.
2019.10.24 2019.10.23
  • Register all new subscriptions using Register Event method in the recurring payments module.
  • Increase the size of FeatureName and EventName to 100 chars Register Event method.
  • Allow association of multiple customer objects with the same user.
2019.10.15 2019.10.02
  • UI improvements to the reseller portal.
  • Allow resellers to issue licenses to customers where they are not the associated reseller, provided that the Is Public is true.
  • Fix link to help pages for resellers and customers.
  • Update Get Customers method by adding new return fields (reseller portal related).
  • Add new fields to the Customer object that can be used for search on the produt page. More docs about them is available here.
  • Allow resellers to access customer objects and create new ones on vendors' behalf.
  • Record all actions performed by resellers. Retrieval of these will be released in the next release.
  • UI enhancements to the reseller portal.
  • Update docs for the Activate method, explaining the special case with floating license devices (more info).
  • Clarify that only node-locked licenses support listing all the connected devices on the license key page. You can still see a list of all floating license devices by clicking on the yellow button next to the license key.
  • Remove the expiration date for student accounts.
  • Fix an issue in the LicenseStatus in Activate method that would return ReasonForInvalidity=expired if the license is not time-limited.
  • Include the data objects in the export of licenses on the product page.
  • Show the customer billing page if the user comes from the customer dashboard and is not a customer.
  • Fix an error that did not open the license key box if "feature template" was incorrectly formatted JSON.
2019.09.06 2019.09.05
  • Minor UI improvements.
2019.09.04 2019.08.29
  • Store the subscription id in a data object associated with the license key when the customer signs up for a new license in recurring billing.
  • Add the generic link for customer sign up so that a customer does not need to be created in advance.
  • Fix the student verification link for GitHub.
  • Allow searching based on reseller id on the product page, eg. ResellerId=1234.
  • Enforce a requirement that does not allow product id to be changed when it has already been set for a license template.
  • Make sure license types that are used in an issuance right cannot be removed.
  • Allow editing data objects on user and product level in the dashboard.
  • Minor improvements to the dashboard.
  • Add OSInfo parameter to Activate and Deactivate methods so that it is more convenient to create new events without having to put into a separate request.
  • Add a page for GitHub Education Pack students, available here.
  • Fix an error that was thrown when trying to redeem an auth invite that did not exist.
  • Improvements to the billing page.
  • Fix the error message when trying to deactivate machine codes on licenses that are blocked.
  • Add new state codes for all methods related to data objects and license keys.
  • Anonymize the IP in Web API Log.
2019.06.26 2019.06.24
  • Add support for license templates.
  • Fix a rendering issue of multiple features when the same feature name is used on multiple levels.
  • Fix an issue that did not expand the list of features in some cases.
  • Add a history of invoices on the billing page.
  • Fix the export function so that it downloads only those that licenses that satisify the query and order.
  • Fix so that export function does not create new lines if the former notes field contains one.
  • Add cl_email and cl_transaction_id variables in payment forms that can be inserted into requests/custom message.
  • Fix an issue that did not download activation file.
  • Fix rendering of a certain feature templates.
  • Fix the deactivation issue if the machine code contained a backslash.
  • Fix issue that did not allow creating new licenses if feature definitions were null.
  • Fix rendering issues when extended features are used.
  • Fix issue when activating and deactivating machines with special characters.
  • Fix an issue that did not allow to download the activation file through the dashboard.
  • Display the custom feature names on the key creation page.
  • Fix an issue that did not allow to have multiple features with the same name on different levels.
  • Fix so that licenses of deleted products are not shown in the customer dashboard.
  • Add support for more than 8 features.
  • Add a remove button on the customer page.
  • Add the list of activated licenses in the customer dashboard.
  • Add an endpoint to detect client IP.
  • Add support for CORS for Activate, GetKey, CreateTrialKey and Deactivate.
  • Fix the list of data objects in the customer dashboard. All data objects should be displayed now.
  • Display data objects in the customer dashboard (key level data objects).
  • Make updates on the customer page automatic.
  • Fix updates of the notes field and data objects.
  • Add the option to add new data object and edit existing ones.
  • Usability improvements in the dashboard.
  • Make sure an error is shown on the customer edit page if the company domain has not been set up.
  • Clarify the difference between the public and private keys in the dasboard.
  • Fix the billing page.
  • Show a list of all data objects for licenses and machine codes.
  • Increase the time window for when authorized users to an account.
  • Update article about access tokens.
  • Display errors when accepting an invite.
  • Add "CheckForDuplicates" parameter in Add Data Object.
  • Allow retrieval of data objects based on their name (instead of just the ID).
  • Add the option to associate data objects to activations (machine codes).
  • Increase the size of the name parameter in a data object to 100 chars.
  • Remove the limit of 3 data objects per referencer.
  • Fix a potential issue in ListDataObjects when contains did not match any existing data objects.
  • Fix redirect issue when adding multiple users.
  • Add the option to block expired licenses automatically.
  • Fix end user count on billing page.
  • Fix billing page if invoicing option is used.
  • Update data object docs.
  • Add an option to add multiple users to the same account.
  • Fix an issue that threw an error when updating the company profile.
  • Fix an issue with the link on the customer page.
  • Fix Get Customer Licenses so that it does not show licenses of deleted products.
  • Fix error message when downloading activation file.
2019.02.14 2019.02.07
  • Add support for the new format (used in C++, Python and Java) in Activation Forms.
  • Add support for activation file format used in Python, Java and C++.
  • Clarify expiration date and maximum number of machines.
  • Ensure that the keylog contains all activations, not just those since the last month.
  • Add the option to view floating licenses given a floating time interval.
  • Internal improvements to billing.
  • Add floating information in the Get Key method. You can retrieve the number of active floating licenses by adding FloatingTimeInterval and setting Metadata=true.
2018.12.18 2018.12.14
  • Add UsedFloatingMachines to Activate method so that the number of active floating machine codes can be retrieved. It's stored in the metadata object, so you need to add metadata=true.
  • Add Floating parameter in Deactivate method, which allows to release a floating license.
  • Add support for license overdraft when using floating/concurrent licensing (in Activate method).
  • Fix status codes when using plaintext option introduced in 2018.11.29. Now, errors will be 400 errors when format=plaintext.
  • Fix last modified date when extending license keys.
  • Add the option to return newly created license keys in the Create Key method using as plain text (without json). You just need to add format=plaintext to the query string.
  • Make sure that the 'modified' order by option on the product page considers the creation date of the key.
  • Add the option to order by Last Modified date on the product page (for license keys).
  • Hide blocked subscriptions in the customer dashboard.
  • Cancel subscription at the end of the billing period instead of right away.
  • Send confirmation mail when a subscription is cancelled.
  • Fix messages in recurring billing.
  • Performance improvements for keylog data download.
  • Add an option to download all keylog data.
  • Allow end users to subscribe to multiple subscriptions within the same plan (recurring billing).
  • Send confirmation email when an end user subscribes to a plan (recurring billing).
  • Allow cancellation of a subscription on the main page (customer portal).
  • Show a message to end users if they did not add their card on the plan page.
  • Automatically associate new users with a customer object when they have signed up.
  • Fix a potential issue on the profile page experienced by some customers.
  • Fix an issue in Get Keys method that did not display some license keys.
  • Add the option to download key log history in the dashboard
  • Fix an issue that caused some keys not be displayed in the dashboard.
  • Fix recurring payments error caused when the vendor has changed the payment processor.
  • Add recurring billing using Stripe.
  • Improve support for user account authentication.
  • Fix the missing checkox for sandbox mode in PayPal.
  • Fix documentation about data objects.
    Make messages API accessible from the dashboard.
  • Allow retrieval of live Stripe API keys using Stripe Connect. This is the preferred way of retrieving live keys.
  • Add Message API, which allows you to broadcast messages to your users. The dashboard can be found here and the method to retrieve them here.
  • Fix access token creation page.
  • Fix customer creation design.
  • Save order by preference on the product page.
  • Fix feature name edit page.
  • Fix order by descending on the product page.
  • Update the version of Stripe APIs.
  • Fix missing sandbox mode for Paymemt processors.
  • Make it easier to search for customers in the license key box and during license key creation.
  • Add Register Event method that allows you to collect logs of how your application and its various features are being used.
  • Fix a potential issue that displayed the old public key in the dashboard.
  • Allow creation of new customers when creating a new license key.
  • Performance improvements to the Create Key method.
2018.08.06 2018.08.03
  • Add the EnableCustomerAssociation option to the Add Customer method. This allows you to retrieve a portal link that you can send to your customer so that they can access the customer dashboard.
  • Fix an issue in the activation method that did not return the metadata object if feature definitions were not set. Now, default values will be used.
  • Add the option to create verified trial keys.
  • Improve the deactivation method.
2018.08.01 2018.07.25
  • Improve floating licenses check in the activation method.
  • Fix typo in Web API Log [Web API 2] about status codes.
  • Remove the constraint of 5 products per user.
  • Fix typo in activation method docs. FloatingTimeInterval is given in seconds.
  • Improve compatibility with other time zones.
  • Fix an issue that did not allow to test API methods with access tokens when an active session existed.
  • Add built in support for floating licenses in the activation method.
  • Add a signature field to metadata, which can be used to check integrity of the metadata object. The affected methods are: GetKey and Activate. GetCustomerLicenses will not contain the signature.
  • New design language added.
  • Add support in payment forms to forward data received from the earlier requests to the requests lower down in the pipleline (i.e. the successor requests will receive all data from their predecessors).
  • Improve the payment form editor.
  • Internal enhancements.
  • General enhancements.
  • Add a license key status to GetKey, Activate and GetCustomerLicenses. This can be used to get a status check of the license given the way features were defined for the product.
  • Minor enhancements.
  • Enable access to the new analytics for all users.
  • Enhancements to the new analytics portal.
  • Minor enhancements.
  • Move the application to This change will affect those users who relied on a third party service (eg. Google) to log in, as this option is no longer supported. You can still log in here and add new login credentials (on this page).
2018.03.21 2018.02.19
  • Fix an issue that did not allow to activate the trial subscription.
  • Fix an issue that caused redirects to the terms of use page.
  • Fix an issue with two factor authentication caused by a dependency. Previously, you might have encountered that it did not work to login for some one-time codes. This issue should now be fixed with this patch.
2018.02.15 2018.02.08
  • Minor enhancements.
  • Improve the billing page.
  • Internal updates
  • Ask for additional information for billing and security purposes.
  • Update the way the number of requests is computed to include those in Web API 2.
  • Add the option to provide an additional email address where confirmation emails are sent in payment forms.
  • Fix an issue on the success page of payment forms that did not display messages if the custom message contained new line characters (as an example).
  • Fix an issue with unsent confirmation emails when PayPal was used.
  • Add a new billing page with usage overview, etc. It can be found here.
  • Fix the 'back' button on the payment processor page.
  • Fix layout of the license key info box and activated devices box.
  • Fix an issue that did not render the profile page for certain users.
  • Fix error messages on the company profile page.
  • Fix the error message on the log in page.
  • Update the way the domain name is used and stored in the Company Profile.
  • Fix so that multiple customer objects belonging to the same vendor cannot be associated with the same user account in SKM.
  • Fix an issue that did not allow certain users to update their company profile.
  • Fix so that the same customer is not associated twice.
  • Show 404 instead of 500 for pages non-existing pages in the Web API documentation.
  • Fix an issue in the documentation UI that did not display the page if the user did not have any products.
  • Fix an issue in the Activate method that activated an empty machine code even if the maximum amount was reached.
  • Update SSL certificate and site seals.
  • Fix issue in the customer control panel not showing the list of licenses.
2017.09.03 2017.09.02
  • Minor enhancements to user login authentication.
  • Improve the link from the customer page to link to the new license key box.
  • Add a custom login page for enterprise customers.
  • Enable sessions in payment forms (see here).
  • Improve error handling and consistency in error messages.
  • Fix an issue that did not allow users to register with a local SKM account.
  • Add a terms of use that has to be accepted.
  • Add User Login Auth.
  • Fix an issue when removing customers using Web API 3.
  • Update the pricing page.
  • Update the registration page.
  • Update the terms of use for new customers.
  • Fix feature names that were displayed in wrong order (on the product page).
  • Fix an issue that did not cache errors in the graphical interface (even if the action was unsuccessful, a success message would be shown).
  • Fix an issue in the license key panel that was triggered when updating license keys using SKGL algorithm.
  • Increase the size of the notes field from 150 chars to 500 chars.
  • Add the option to mark a product as a service, i.e. all license keys are treated as time-limited.
2017.06.21 2017.06.20
  • Fix width of the notes field on the product detail page.
  • Fix an issue in Get Key and Activate methods when SignMethod=1 is used with feature lock.
  • Improve monitoring and diagnostics.
2017.06.16 2017.06.14
  • Add additional metadata in Get Key, Activate and Get Customer Licenses methods, which can be optionally retrieved if Metadata=true. It can further be restricted using the feature lock.
  • Fix an issue that blocked access to Web API Log, even if the user enabled it.
  • Add a usage counter to the access tokens page.
  • Reset the access token page (new token creation) after that a new token has been created.
  • Add the option to disable methods in the Web API 2 that do not require any authentication.
  • Fix the customer search page.
  • Allow searching for customers based on their name, company, id and email.
  • Fix the link on the feature name configuration page.
  • Add feature definitions to the product page (you hover over a feature to get additional information).
  • Add tool tips to various labels on the product page.
  • The error 'unable to authenticate' now uses camel-case for the property names, in order to be consistent with other errors.
  • Fix an issue in the license key panel that did not update the product page when the key was unblocked.
  • Add the ability to customize feature names and their function.
  • Security fix to 2-step verification, which includes the hiding of the shared secrets.
  • Add support for 2-step authentication. You can set it up here.
  • Make it easier for users to migrate from SKGL to SKM.
  • Removed legacy options from the key creation page.
  • Fix an issue in payment forms when the user is redirected to a custom page. Previously, if there was a parameter attached to the url already, SKM would not notice that and therefore append a new question mark, resulting in SKM will now handle this case by attaching a & instead of ?.
  • Add product id on the product page.
  • Update Get Key and Activate StringSign option to support Unix time stamp option in all DateTime fields. The separate SignDate option that was added in SKM2017.04.24 is removed since it was not part of the signature and thus redundant from a security standpoint.
  • Update Get Key and Activate StringSign options to include the Unix time stamp (in seconds) in the parameter SignDate.
  • Add ordering by customer on the product page.
  • Fix issue in GetKey and Activate (v3) that returned the value '-1' as default (when not set). They are now returning '0' by default.
  • Add a new method MachineLockLimit to be able to change the maximum number of machine codes per license key.
  • Fix display issue caused when machine codes were too long to fit on the page (in license key box and activated devices box).
  • Add support for custom field for payment forms. It allows you to customize the requests that are called upon a successful transaction. For example, if you want to allow your customers to upgrade a specific key, you can call the payment form as shown below:
    and add the custom variable to a request by appending [custom], eg.[custom]
    If the transaction is successful, the desired key will be upgraded (in this, a specific feature will be added). Note, you can also use [custom] can be appended to the message Custom Message.
  • Add support for email field pre-filling. For example,
  • Fix typo on the Activate (v3) method's documentation page.
  • Update Get Key and Activate methods with an option to change what is being signed and returned. By specifying SignMethod, you get a more consistent way of verifying signatures, which is perfect for cross-platform scenarios where there's no official support from SKM.
  • Add Get Customer Licenses method (lists licenses associated with a customer).
  • Fix the Get Keys method so that the product id field is not left empty in the result.
  • Mark Web API 2 as deprecated and provide replacement methods in Web API 3.
2017.04.04 2017.03.17
  • Update broken link on Activate (v3) method's documentation page.
  • Fix the notification when changing the password.
  • Add a new way to order SKM subscriptions. For instance, you can now buy gift codes.
  • Improvements to the key validation box on the product page.
  • Sync the changes of a license key (creation and expiration dates, features, period and whether it's blocked) with the product page. Note, the new key will not be shown if SKGL is being used.
  • Fix the progress bar that remained active when key box was closed.
  • Fix the feature boxes that did not update when a different key was selected.
  • Update Extend License documentation.
  • Update notification about functionality available in the free subscription tier.
  • Enable log in using email address instead of user name.
  • Enable hiding of blocked keys.
  • Fix an issue that created a new profile link during updates.
  • Fix an issue that displayed the notification box even after you've closed it.
  • Update packages related to payment processing with Stripe and serialization of data.
  • Updates Web API 2 reference page.
  • Update the design for tablet and mobile users.
  • Updates to account related pages.
  • Enable the option to specify the type of request sent upon successful transaction. Before, POST was the default, however, GET should be used for the Web API 3 at the moment.
  • Update the Data Objects intro.
  • Clarify that you need to attach the access token as an argument to each method call to Web API 3. The parameter is called token. The access token is assigned as shown below:{accesstoken}&ProductId=1234&Key=MUYVD-LSEBY-CXHRQ-XFAGY&Sign=True
  • Update the code examples with Web API 3 compatible code.
  • Fix issue on the Analytics page that did not display the graphs.
  • Update the help page.
  • Add a help label to the various license specifications.
  • Fix wrong reference to the API method in the documentation of GetKey.
  • Update the Key methods in the documentation.
  • Add License Key Panel (see release statement) . Keep in mind that if you have a Premium subscription, you need to upgrade to, at least, a Standard subscription, since the panel uses Web API 3.
  • Add GetCustomer, ChangeNotes, ChangeCustomer method (beta)
  • Support for copying the key on the product page.
  • Add the missing CustomerId and Notes parameters in the Create Key method.
2016.07.01 2016.06.27
  • New activation forms are now using the new activation method and the new LicenseKey class to represent licenses
  • The activate method will throw a new error if the limit of the number of actuated devices is reached.
  • Fix activation forms when offline activation was used.
  • Add support for notifications.
  • Upgrade methods used in the license box on the product page.
  • Enforce the key lock for the specialized data object methods when the key and the product is supplied. That is, if the key lock is set to any value greater than zero, if it does not correspond to the key supplied, the method will not work.
  • In addition to the above, all the key specific requests support the key lock to be a negative number. In this way, even if the key lock is not assigned to a specific key, you can still enforce the same effect that you would get should you have used the KeyLock first.
  • Fix an issue in the activation method that threw an error in specific cases.
  • Fix an issue that assigned an error a successful result type in the specialized methods for data objects.
  • Add a deactivation method in Web API.
  • Fix an issue that caused the empty string to be interpreted as null on the product page (license file box).
  • Fix some typos in the documentation.
  • All requests related to data objects are now supporting specialized parameters for data objects that are related to a key. Instead of using key lock to get a specialized access token with the id of the key (given key string and product id), this operation is integrated into these specialized methods. Therefore, you only need one request and the security will be equivalent to that of the key lock method.
  • Improvements to the access token page.
  • Fix links in the Web API 3 docs.
  • The access token page is now much faster.
  • Add log messages in various places as a way to confirm that an action was successful or unsuccessful.
  • Ignore the value of automatic activation in Activate method. Instead, you should use the block field to tell whether the key is blocked or not.
  • Remove automatic activation as a parameter in Create Key method.
  • Remove automatic activation as a returned field in Activate method.
  • Remove automatic activation as a returned field in Get Keys method.
  • Remove automatic activation as a returned field in Get Key method.
2016.06.10 2016.06.09
  • Fix an issue on the Get Keys documentation page causing a message box to appear when selecting a product.
  • GenKey and GenerateKey now use a more scalable algorithm.
  • Add Create Key method.
  • Fix the display of the password on the product page for those products that use SKGL.
  • Fix the display of sample code for key generation.
  • Correct Get Keys documentation (typo and an example)
  • Add the productId field to the license key model. This affects Activation and Get Keys methods.
  • Fix a potential issue in the Activation method that could be caused for license keys with certain configuration.
  • Add a Get Keys method that will list license keys of a given product.
  • Add support for Message Pack for Web API 3. In order to use this format instead of JSON, please use the content type
  • Fix an issue in the activate method that did not allow post requests.
  • Fix an issue in the activate method that threw an error when no key string was supplied.
  • Minor changes to the about pages.
2016.04.27 2016.04.19
  • Add a security fix to Web API 3 to prevent potential cross-site request forgery attack.
  • Add new activation method, which allows customer information, data objects, and other additional information to be returned. There is also support for customization of fields that are shown in the response using access tokens.
  • Add KeyInfo (access within SKM only) to be able to retrieve information about a license.
  • Minor fixes in the Web API docs.
  • Add an about page.
2016.03.30 2016.03.28
  • Change the limit of the number of data objects from 100 in total to 3 data objects per referencer.
  • Update API documentation to include new methods in the search box.
  • Improve the documentation of data objects.
  • Fix a potential issue that could be caused if multiple activations would be performed on a certain license in parallel. This affects Web API 2 methods activate and deactivate.
  • Fix hsum on activation and validation pages to show the correct hsum for the default product in the drop down list.
  • Add help variables (pid, uid, hsum) to the documentation page of deactivation.
  • Fix activation file names that had 00 instead of the correct representation of the month. This fix applies both to activation files generated in activation forms and those generated using the "activation box" on the product page.
  • Enable search on the product page to use Data Objects.
  • Add support for ajax when blocking and unblocking keys on the product page.
  • Allow the Period of a license key to be any integer (32 bit) if SKM15 key generation algorithm is used. Otherwise, the restriction is 999 days (for SKGL).
  • Enable notification messages to be sent when a subscription is about to expire.
  • Using icon on the product page, you can now easily remove/deactivate machine codes.
  • Minor fixes (broken links, changelog page, etc).
  • Add an activation file generator on the product page (click on ).
  • Add Block Key and Unblock Key.
  • Add the customer field (among many others) to an activation file downloaded using Activation Forms.