Marcel den Ouden · Mar 29, 2016 2m read

My license key does not work - common causes

As some customers recently received new license keys, I received some questions why their new license does not seem to work, other than the expiration date being reached. So far I was able to solve all of them with this short list of things to look at.

1. Is the date on your laptop set properly?

2. For Europe (and possibly other regions): the expiration date in the cache.key file is in US format, MM/DD/YYY, while most people there are used to DD/MM/YYY. This is obvious if you have an expiration date like 11/30/2016, but not with dates like 3/12/2016 (expires in March, not December).

3. Check the location of your Cache installation. Sometimes there is a leftover folder structure from inactive or uninstalled versions of Cache, which do contain an MGR folder. You need to put the cache.key in the MGR folder of your active installation.

4. Check if your key matches the platform which your working on. Keys can be platform independent, which shows as plain text in the cache.key file (Platform Independent). Beware that 32 and 64 bits of the "same" OS are considered different platforms, so if your key states "x86 - 32 bit (Windows)" it will not work on your brand-new laptop with Windows 10 64-bit preinstalled.

5. You opened your cache.key (which is a text file) in an editor, and accidently saved it which caused in to be stored in a slightly different format  (other encoding and/or it now contains control characters). If you open it, it still looks like the original key visually, but it still doesn't work. Find the original cache.key, which you probably received in a mail message and use that one. If you want to look at it with a text editor that's OK, but don't save it.

If you have other tips, please add them as a comment!



0 1,220
Discussion (5)4
Log in or sign up to continue

In Cache 2015+ you need not put a new cache.key in MGR directory manually any more, as SMP>Activate New License page has got an option to browse server's file system. After you have chosen the key file, SMP checks it up and copies to MGR automatically. This option simplifies much the searching of right directory, especially for new users.

Also, if you are using the System Management Portal to activate a new key, make sure to double check the capabilities of the new key. You will be presented with a popup that displays the new key, so you can make sure that you really selected the correct key for activation (e.g. correct platform, all required features).

Activating a new key does not require a system restart unless there are major differences between the old and the new key. As an example: If the new key enables the same number of users (or more) a restart is not required. Downgrading the user count will require a system restart. 

In troubleshooting with license, very useful tool is $system.License

You  may check validity any key for current instance.

s sc=$system.License.IsValidKey("C:\InterSystems\Ensemble14\mgr\cache.key",.restart,.reason)
if 'sc { d $system.OBJ.DisplayError(sc) } else { w sc }

command to see all available functions

 Do $System.License.Help()

Another useful method for cache.key analyzing is: 

do $system.License.DecodeAuth("<AuthorizationKey>")

which displays the capabilities encoded in the <AuthorizationKey> field of a given cache.key file (should be copy-pasted from the file). Argument-less method:

do $system.License.Decode()

does the same for active license key.

If you are on Caché 2008.2 or higher, there is another license decoding utility:

do DiagnoseKey^%SYS.LICENSE

This will decode the active license key just like $System.License.Decode(), but it also looks at the current system and compares it with the license key.  It will list out any problems it finds with the key and is pretty good at catching most of the common issues already discussed.  The results are also a good summary to give support or a sales representative if you need to report a license related problem.

If you want to use this on a non-active license key, this tool can be pointed at a particular cache.key file with the syntax:

do DiagnoseKey^%SYS.LICENSE("<FullPathAndKeyFileName>")