Using “REPLACE =” and “UPGRADE”
Probably the most basic of all licensing policy methodologies is the ability to control the duration of the license with an expiration date in the license. At times, as in demo or trial modes, you may want your licenses to have a short duration, 30 days or so. Still other times, you may sell usage rights on a periodic basis, monthly or annually, requiring a new license to be issued upon renewal.
In many cases however, you want your licenses to be perpetual, with no expiration date. What happens if over time you want to do a radical overhaul of your license policies or you have negotiated a new contract with a customer that requires issuing of new licenses that would replace the existing licenses? Perhaps you issued licenses that were only good for a defined version of your product and now you are upgrading to a newer version. The permanent licenses do not expire so how do you make the necessary changes?
Replacement and Upgrade Licenses to the Rescue
The way to render ineffective one or more licenses which you have already issued is to use the REPLACE[=product-list] option in the new license. REPLACE= causes RLM to ignore the “replaced” or old RLM license(s).
Upgrading licenses to a new version. There are a couple approaches you can take if you are upgrading existing licenses that are valid for a previous version of your software to a new version release. If you are upgrading all instances of the existing licenses to a new version then the REPLACE= option works very effectively.
But, what if you want to upgrade only a subset of the existing licenses to the new version and leave the rest unchanged? The UPGRADE license type was created for this very situation. Using a an UPGRADE license type, you can upgrade a limited number of the existing licenses to a newer version and the remaining licenses will run under the older version. UPGRADE does not grant any new license rights, it only upgrades the specified number of existing licenses to a new version.
“UPGRADE” and “REPLACE=” are specified in the license file, external to the application, with no modification to the source code being necessary.