Infralution Support Forum Index Infralution Support
Support groups for Infralution products
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Authenticated licenses with a Maintenance Plan
Goto page 1, 2  Next
 
Post new topic   Reply to topic    Infralution Support Forum Index -> Licensing Support
View previous topic :: View next topic  
Author Message
Javier



Joined: 09 Oct 2009
Posts: 215

PostPosted: Wed Mar 14, 2018 9:45 pm    Post subject: Authenticated licenses with a Maintenance Plan Reply with quote

I want to add a Maintenance Plan to my licenses. It means that the user will need to purchase an annual plan in order to receive tech support and free upgrades.

I saw the expiry date feature for time-limited subscriptions, but this is not exactly what I want. If after a year the user doesn't renew the Maintenance Plan, then the license will continue working, but some features of the application will not work anymore, and in addition the user will not be able to move the license to another computer.

How can I implement this? Thank you.
Back to top
View user's profile Send private message
Javier



Joined: 09 Oct 2009
Posts: 215

PostPosted: Thu Mar 15, 2018 12:47 am    Post subject: Reply with quote

I was reading your answers to similar posts, and probably the best way to do it is entering the expiry date as Authentication Data, and then compare to today's date internally. My question is what format is the information in Authentication Data? Is it a string? Can I enter the expiry date as mm/dd/yyyy format? Not sure how to get that value in my application once the license is authenticated.

How can I check that the clock has not been tampered? Thank you.

Thank you.
Back to top
View user's profile Send private message
Infralution



Joined: 28 Feb 2005
Posts: 5027

PostPosted: Thu Mar 15, 2018 7:03 am    Post subject: Reply with quote

You can put your maintenance expiry date in the AuthenticationData like you suggest or you can use the built in ExpiryDate and uncheck the "Disable Expired Licenses" option in the Product Dialog. In this case you can continue using the license once the expiry date is reached and your code can just read the AuthenticatedLicense.ExpiryDate property and make decisions based on this. The only drawback with this approach is that you can't then also use the ExpiryDate as a true license expiry date.

The AuthenticationData is just a string. If you go down this approach then you should ensure that you convert the date to/from a string using a fixed format or InvariantCulture to ensure you don't get issues with customers who have different culture settings to you.

You can use an instance of the RegistryEvaluationMonitor to check for clock winding. The Invalid property will be set to True if the evaluation monitor detects clock winding.
_________________
Infralution Support
Back to top
View user's profile Send private message Visit poster's website
Javier



Joined: 09 Oct 2009
Posts: 215

PostPosted: Sat Mar 17, 2018 4:56 pm    Post subject: Reply with quote

I will use the AuthenticationData approach.

Regarding the question about limiting the ability to move the license to another computer, how can I do this? I think it has to do with the number of authentications / deauthentications, but how do I control this from my application if it detects that the maintenance is expired?

If the user renews his maintenance subscription, do I have to send another license key to this user? If not, how do I change the expiry date in a license that was already authenticated?
Back to top
View user's profile Send private message
Infralution



Joined: 28 Feb 2005
Posts: 5027

PostPosted: Sun Mar 18, 2018 1:57 am    Post subject: Reply with quote

Quote:
Regarding the question about limiting the ability to move the license to another computer, how can I do this? I think it has to do with the number of authentications / deauthentications, but how do I control this from my application if it detects that the maintenance is expired?


Personally I would not limit customers from transferring their license to another computer in this circumstance. If part of the software licensing agreement is a perpetual license then my expectation as a customer would be that I could transfer that to another computer if required. If you really did want to go down this path then to implement it would probably require a modification to the Authentication Server to prevent users deauthenticating once the maintenance expiry date was reached. This effectively would prevent them from transferring a license.

Quote:
If the user renews his maintenance subscription, do I have to send another license key to this user? If not, how do I change the expiry date in a license that was already authenticated?


You can just update the AuthenticationData for their existing key. They can either reinstall their existing key - or if you are using Background Reauthentication this should happen automatically when they are next reauthenticated.
_________________
Infralution Support
Back to top
View user's profile Send private message Visit poster's website
Javier



Joined: 09 Oct 2009
Posts: 215

PostPosted: Sun Mar 18, 2018 2:43 pm    Post subject: Reply with quote

Quote:
Personally I would not limit customers from transferring their license to another computer in this circumstance. If part of the software licensing agreement is a perpetual license then my expectation as a customer would be that I could transfer that to another computer if required.

I can see your point, but somehow I have to limit the capacity of the user to do certain things, otherwise he will simply ignore the maintenance renewal, and probably also will ignore to purchase the upgrade. One of my competitors is currently doing this, by limiting the capacity to move to another computer, so I won't be the first one.

The idea behind the maintenance plan is precisely to create a sense of necessity and therefore commit yourself with the software provider. If not completely eliminate the capacity to move the license, I do want to limit the number of license transfers, maybe one transfer per year or so. What do you think? I would like to hear the opinion of other developers as well. Thank you.
Back to top
View user's profile Send private message
Infralution



Joined: 28 Feb 2005
Posts: 5027

PostPosted: Mon Mar 19, 2018 3:43 am    Post subject: Reply with quote

If you are selling maintenance then I wouldn't sell upgrades separately. If they want an upgrade (or any bug fixes) then your customers have to purchase maintenance. I think this generally provides enough incentive for customers to upgrade. Most customers don't appreciate being forced into upgrades or maintenance for things that they feel like they should be entitled to anyway. You may lose more customers then the small increase in revenue is worth.

If you do want to proceed with this then you could change the Authentication Server source code so that if the maintenance contract has expired then the number of allowed deauthentications is reduced or set to zero.
_________________
Infralution Support
Back to top
View user's profile Send private message Visit poster's website
Javier



Joined: 09 Oct 2009
Posts: 215

PostPosted: Mon Mar 19, 2018 2:20 pm    Post subject: Reply with quote

Quote:
If you are selling maintenance then I wouldn't sell upgrades separately.

I agree, but now I'm in the transition to maintenance-only approach. For the new users this is absolutely right, but all the existing users that purchased a license last year for example, will not expect to pay an additional maintenance fee now. They purchased a perpetual license of a certain version of the application and nobody told them about maintenance at the time of purchasing. I'm curious how this transition should be done to avoid bad feelings among users. Your opinion is well appreciated. Thank you.
Back to top
View user's profile Send private message
Infralution



Joined: 28 Feb 2005
Posts: 5027

PostPosted: Tue Mar 20, 2018 12:44 am    Post subject: Reply with quote

I would consider giving existing customers 1 year maintenance from the time that they purchased. This is fairly common - you bundle the price of the first years maintenance into the initial purchase price.
_________________
Infralution Support
Back to top
View user's profile Send private message Visit poster's website
Higdon



Joined: 20 Mar 2018
Posts: 1

PostPosted: Fri Mar 30, 2018 4:37 pm    Post subject: Reply with quote

Infralution wrote:
I would consider Crazy Bulk and giving existing customers 1 year maintenance from the time that they purchased. This is fairly common - you bundle the price of the first years maintenance into the initial purchase price.


This makes a lot of sense. It really makes my decisions easier when I see an offer like that. Means I'll have a lot less headache the first year of use, which is often times the hardest as well.


Last edited by Higdon on Wed Oct 19, 2022 10:52 am; edited 2 times in total
Back to top
View user's profile Send private message
Javier



Joined: 09 Oct 2009
Posts: 215

PostPosted: Mon Apr 22, 2019 1:56 pm    Post subject: Reply with quote

Quote:
The AuthenticationData is just a string. If you go down this approach then you should ensure that you convert the date to/from a string using a fixed format or InvariantCulture to ensure you don't get issues with customers who have different culture settings to you.

Would you mind to share the required lines of code to do this comparison? Thank you.
Back to top
View user's profile Send private message
Infralution



Joined: 28 Feb 2005
Posts: 5027

PostPosted: Wed Apr 24, 2019 3:45 am    Post subject: Reply with quote

Here is some code:

Code:
DateTime writeDate = DateTime.Now;
string dateString = writeDate.Value.ToString("u")
DateTime readDate = DateTime.Parse(dateString, CultureInfo.InvariantCulture).ToUniversalTime()

_________________
Infralution Support
Back to top
View user's profile Send private message Visit poster's website
Javier



Joined: 09 Oct 2009
Posts: 215

PostPosted: Wed Apr 24, 2019 4:00 am    Post subject: Reply with quote

I stored the date when the license was issued in AuthenticationData. Could you please share the code to get that string in the application? Thank you.
Back to top
View user's profile Send private message
Infralution



Joined: 28 Feb 2005
Posts: 5027

PostPosted: Wed Apr 24, 2019 4:05 am    Post subject: Reply with quote

The AuthenticationData is just a property on the license object eg

Code:
if (_licenseProvider.IsValid(_license))
{
    string authenticationData = _license.AuthenticationData;
   _licenseProvider.StartBackgroundReauthentication();
}

_________________
Infralution Support
Back to top
View user's profile Send private message Visit poster's website
Javier



Joined: 09 Oct 2009
Posts: 215

PostPosted: Fri Aug 09, 2019 1:24 pm    Post subject: Reply with quote

I'm using ILS 5.11. It seems that AuthenticationData is a property of _localLicense, but not a property of _floatingLicense. Not sure if this has changed in the latest version. Is it possible to read the AuthenticationData in a floating network license? Thank you.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Infralution Support Forum Index -> Licensing Support All times are GMT
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group