ActivateTrial() creates a new trial on the same machine

Hi,

I am not sure if this ActivateTrial() call is supposed to be, I thought calling the ActivateTrial() on the same machine, as long as the hardware has not been changed, should not start a new trial what’s so ever.

Here is a screenshot from the dashboard that shows my same machine starting a new trial.

My initial intent is to try to extend the first trial from the dashboard, and at the user end it calls ActivateTrial() to get an updated expiration date. If the ActivateTrial() isn’t what I should call it, then what is the right way to get the new updated expiration date on the user’s machine?

Thanks in advance!

I guess what is not clear to me is how ActivateTrial() determines if it is on an existing machine or a new machine. Calling ActivateTrial() within a couple of hours in the morning seems doesn’t create a new trial, but when I tried to call it again in the afternoon, it adds a new trial with a different trial ID. I think this might be a bug.

Hi,

There is a limitation in trials related to fingerprint matching. On the client, it honours the fingerprinting strategy (fuzzy, exact etc.) but on the server side, the match is always exact in case of trials. So a small change in hardware config can result in a new trial activation. We will try to improve this behaviour in future.

1 Like

Hi @adnan-kamili just following up on this issue. Are there any updates on this?

Hi,

We are working on a new flow. Will keep you posted.

1 Like

Hi,

I am writing to inquire if there is any update on the timeline for the resolution of the reported issue. This functionality would be incredibly beneficial for my work.

Thank you for your help!

Hello,

Could you please describe your use case? What is the reason for calling this function multiple times?

We want to add a feature to our product that allows us to extend the trial period. To ensure the client-side application receives information about the extension, we need to obtain the latest trial data. According to a suggestion on the forum: Cryptlex forum - Reset Verified Trial remotely, the only solution is to create a mechanism that periodically calls the ActivateTrial() function to fetch the current data.

Hello @Dominika

Thanks for sharing the use case. This feature is already on our roadmap. We ensure to keep you updated.

Your understanding and patience are highly appreciated.

Thank you!

Hi just following up, is there any updates on how to call ActivateTrial() correctly after the trial extension?

Hi @Mingbo,

I will get in touch with our team and keep you posted here. Thank you for your understanding!

Thanks @AneesKhan for your help, and since this issue has been there for about 2 years and I do understand there might be some difficulties of fixing the root problem. Is it possible to provide us a guidance of a get-around workflow on how to get the trial extension on the user side?

Hi @Mingbo,

Thanks for your patience!

Currently, if the trial period is extended from the admin portal, the only way for the client application to fetch the updated trial details is to call ActivateTrial(). However, as trials use exact fingerprint matching on the server side, any small change in hardware could cause the server to treat it as a different machine and create a new trial activation instead of updating the existing one.

We completely understand this is not ideal for your workflow, but the good news is that in v5, we are introducing a separate function that will allow the client to just update the trial activation details (such as the extended expiry).

Until then, the workaround is:

  • If the fingerprint remains identical, calling ActivateTrial() will reflect the updated expiration date.
  • If the fingerprint differs, unfortunately, it will trigger a new trial activation for now.

We’ll keep you posted as soon as the new function is available!

Thank you again for your continued patience and understanding!

Thank you @AneesKhan for your updates.

This is good news, is there a rough timeline when the v5 will be ready? It would be great to know so that we could align our new version release timeline with your v5, otherwise it would be extremely hard to get our clients’ IT department constantly updates our versions.

Yes, I noticed that in my dev tests, ActivateTrial() would sometime reactivate a new trial in the next day on the same machine, and I am not sure how the fingerprint is determined. It seems a bit of unreliable, and I don’t think we could ActivateTrial() for updating the updated expiration date, which could potentially provide a way for a user to use the trial unlimited.

Please do keep us posted with the new v5, and thanks again for your help.

Hi @Mingbo,

Yes, I noticed that in my dev tests, ActivateTrial() would sometime reactivate a new trial in the next day on the same machine, and I am not sure how the fingerprint is determined.

As informed above, trials use exact fingerprint matching on the server side, any small change in hardware details could cause the server to treat it as a different machine. So, calling ActivateTrial() will create a new trial activation instead of updating an existing one if there is any change in the hardware.

is there a rough timeline when the v5 will be ready?

While we don’t have any timeline at the moment, but it’s on our roadmap and planned for future implementation. We’ll be sure to keep you updated here. Thank you for your understanding.

Hi @AneesKhan, I see there is an update with the License Subscription, and it provides full control over license expiration even after creation. But it seems only available for the regular license.

Would this Subscription feature be available for the trial license as well? I checked the admin portal, and there isn’t any update on the trial license page.

Hi @Mingbo,

Thank you for your question.

At the moment, subscriptions are not supported in trial activations. However, I will make sure to pass this feedback along to our product team.

In the meantime, I would like to clarify that trials and licenses are two distinct entities in Cryptlex. Trials are node-locked by default, managed entirely on the server side, and unlike licenses, they do not perform recurring syncs. Therefore, if any changes are made to a trial activation, they will only be reflected on the client machine after calling ActivateTrial() function again.

On the other hand, licenses can be configured to sync with the server at defined intervals using the ServerSyncInterval property. This allows dynamic control over expiration, renewals, and other license parameters even after activation. There is no need to fetch the details manually in this case, as the server sync automatically handles it.

If you require more granular control over trial behavior, such as adjusting duration, suspending trials, or automating renewals, and much more, a common workaround is to simulate a trial using a subscription-based license. For example:

  1. Issue a license with a 15-day subscription interval to represent the trial period.
  2. When the trial period ends, update the license subscription parameters to convert it into a full license, or revoke or delete the activation as needed.

If you need any further assistance, please feel free to reach out to us at support@cryptlex.com.

Thank you @AneesKhan for your detailed explanations and I am aware of the difference between trial and the regular license.

The reason I asked about the subscription feature for trial is I thought that’d be the same feature your team is going to add to address this issue:

we are introducing a separate function that will allow the client to just update the trial activation details (such as the extended expiry).

@Mingbo The above discussed function will retrieve the latest trial activation details from the server to the client, including updates such as extended expiration of a trial activation.

Please note that subscriptions within trials are not currently supported. However, we have noted your feedback for future consideration. We will keep you informed should we decide to proceed with any implementation related to this in the future. In the meantime, you may consider using a workaround involving licenses to simulate trial like functionality.