Category: For Publishers

Various topics pertaining to the technology of license management, both internal to license managers and the use of license managers in software products.

Using RLM Activation Pro to Support Subscription Licensing

Subscription Licensing

Software publishers are adopting subscription licensing models at an increasing rate. Subscriptions help to smooth license revenue from recurring fees while attracting customers with lower entry costs.

Using RLM Activation Pro, an ISV can sell subscription licenses that have expiration dates years into the future. When users are connected to the Internet, applications can periodically request the status of the subscription from the Activation Pro service.  If the subscription is valid, the application runs as normal. But, if the user cancels his subscription or fails to renew, the ISV marks the activation key as “disabled” so that the application can know to shutdown.  The activation record can be re-enabled if the customer reinstates his subscription later.

This method minimizes the ISV workload because action only needs to be taken when the user cancels the subscription, or fails to renew.

RLM licenses that support a subscription model should include the activation key in the license itself.  This way the application checks out the license at runtime to determine if it is valid, retrieves the activation key and the hostid from the license, then checks the status of the subscription. The application will find out whether the license is still valid, or whether the activation key is disabled.

Implementation details of the method described here can be found in the RLM and Activation Pro Reference Manual.

Integrating License Activation with an Ecommerce System

Integrating license activation with an ecommerce system using RLM Activaiton Pro

Software vendors, especially those selling low-cost products that require little tech support, often want to know about integrating license activation with an Ecommerce system.

Here are 4 simple steps to integrate RLM Activation Pro with a typical Ecommerce system.

1. With RLM Activation Pro, interactively define your products in terms of the licenses that you want to issue. You will need to do this only once for each different license type that you plan to issue to enable your product. In this step you will decide the duration of the license (some number of days, a fixed date, or permanent), and license type (node-locked, single, etc), and any other licensing options.

2. With RLM Activation Pro, interactively generate a batch of activation keys that correspond to the product that you defined in step 1. You must specify how many activations are allowed for each activation key, usually “1”.  Optionally, you can set an expiration date for each key which will disable the key after that date. By default, RLM Activation Pro creates activation keys that look like 16-digit credit card numbers. If you wish to add some context to each key, you can provide a prefix for the batch which will result in each key being preceded by the prefix, as in the “prod1” sample set below. You can create up to 9,999 activation keys per batch.

3. Export the batch of keys you just created to a tab-delimited or comma-separated file.  Sample set of keys below:

4. Import the activation key list into your ECommerce system as a set of “external, pre-generated” serial numbers.

When your customer orders and downloads your software from the Ecommerce system, it will assign the next unused activation key to this transaction and send it to the customer in an email message.  When the customer runs your software for the first time, it will prompt for the user for this key.  The RLM api used to activate the application will take care of the rest by connecting to the RLM Activation Pro site to retrieve the right license, and store it locally for the user.

ECommerce systems will let you know by email when the count of unused activation keys is running low, at which point you will repeat steps 2-4 above.

Recommended RLM Installation Steps

Reprise Software’s Recommended RLM Installation Steps

[Note: This information is in the RLM Reference manual, in the “End-User Installation” chapter, but we felt it was important enough to repeat here.]

Installing your product with RLM should be very straightforward, and should require no configuration of environment variables, etc.


On the client side, ie, on the machines where your application is going to run, place the license file in your product hierarchy. For nodelocked licenses, this should be the actual, signed license file, and nothing needs to be done to this license file. For floating, this license file will be used only to locate the license server host.

If you ship floating licenses, install the server binaries and license file on the server node. The server license file doesn’t need to be modified.

Nothing in this set of recommendations requires the use of environment variables, and the install-time editing of license files is kept to a minimum (No editing of license files for nodelocked licenses, and only the server hostname needs to be set on the client side for floating licenses).


During development:

  • establish a directory in your installed product tree for license file(s). This could be the same directory where your product is installed.
  • Pass the directory from the step above as the first argument to rlm_init().

When you ship a nodelocked license:

  • If you are shipping uncounted or single node-locked licenses, put the actual licenses into the license file. Install in the default directory. You’re done.

When you ship a floating license:

  • If you are shipping floating licenses, use a single HOST line in the license file for the client side. Use the default RLM port (5053) – which means you do not need a port number in this license file, and fill in the hostname with the name of the server computer at installation time. This license file should look like this:

HOST server-hostname

  • On the server node, place the rlm binary, your ISVsettings file (or ISV server binary), and the license file in a directory. This license file should have the real, signed licenses. The server hostname in this file can be “localhost”, meaning that it doesn’t have to be edited by the end-user. The server license file’s first two lines should look like this:
    • HOST localhost hostid
      ISV your-isvname

By configuring the license file this way, it does not need to be edited by your customer. These lines tell RLM to:

  • use the default port (5053)
  • use the ISV server settings or binary from the same directory as the rlm binary

Of course, you would include all your signed LICENSE lines in this file as well.

  • Start the rlm server from the directory in the step above

If your customer already has another RLM server running:

  • Install your ISV settings or server binary and the license file in the same directory as the other product’s copy of the server binaries and license files, and do a “reread” operation on the running rlm. That’s it, however:
  • If your version of RLM is newer than the installed version, update the installed version to your version, then shut down the running rlm and start the new one.

If you ship new, additional licenses to your customer:

  • Put the new license file in the same directory as the old one. If they are nodelocked licenses, put them on the client system. If they are floating licenses, put them into the directory with your other licenses and do an rlmreread on the license server.

When do I need the RLM License Server?

The Reprise License Manager product is capable of supporting many license types. Some are appropriate for standalone, single-user licensing models and others are used to support more complex network licensing and pricing scenarios. Determining when a license server must be installed is not always clear.

So, let’s spend a few minutes talking about the various jobs a license server performs, and when it is needed to support various license types.

Uncounted v. Counted Licenses

The biggest factor that determines whether a license server is required is whether licenses are counted or uncounted.  Counted licenses require a license server because it must “count” concurrent licenses. Counted licenses are used whenever the ISV wants to limit or record concurrent license usage. Counted licenses can be identified by a positive integer in the “count” field of the license.

Uncounted licenses, on the other hand, do not require a license server because there is no need to count usage. Uncounted licenses can be identified by the word “uncounted” or or the number “0” in the license count field of the license. Each uncounted license must be node-locked to a hostid. For ease of administration at larger sites, uncounted licenses for multiple computers may reside in a license file that is managed by a central license server, but this is not required.

The other license type that does not require a license server is the “single” license type. This is also a node-locked license, but it can be used by only one user at a time (concurrent count of “1”). The enforcement of “single” licenses is done via file locking, not by license servers.

The RLM License Server

The basic job of the RLM License Server is to service license requests from RLM-enabled client applications over the network. Based on the needs of the application, the license server redirects license requests to the ISV-specific license server which actually grants or denies the request based on what is specified in the license and on the current usage conditions.

License servers also manage “roaming,” named-user, and token-based licenses. They manage held and shared licenses, and offer an admin interface, diagnostic tools, and are responsible for writing debug and report logs.

Licensing Mobile Users with RLM

Roaming Licenses with RLM

If you sell floating licenses for your software products, you can increase the value of your licenses by allowing them to be removed from the network when your users hit the road.

With RLM, you can give users a license that will allow them to remain in compliance even after they’ve disconnected their laptop from the corporate network.  Whether for a few hours, a few days or a few weeks, “roaming” licenses can be valuable to your users, and set you apart from your competition.

Increasingly, users want to take their work “on the road.” RLM’s built-in license roaming capability allows users to check out a license from a server, physically disconnect from the server and continue to use the license for a specified number of days, after which the license is automatically returned to the server when it expires on the mobile computer.

As an ISV, you control whether licenses are allowed to roam, and how long they can be checked-out in the disconnected state. No API changes are required beyond providing a special rlm_roam license to your customer.

RLM license roaming was designed to allow ‘disconnected’ use for short durations up to a few weeks.

Using Dongles with RLM

Using dongles with RLM

The Reprise License Manager (RLM) comes with built-in USB dongle support, meaning that using dongles with RLM could not be easier.  Dongles purchased from Reprise can be used as a standard “hostid” to which licenses can be locked.  The principal advantage of using dongles is to provide a convenient way for your customers to transfer licenses when machines are replaced or upgraded. Software applications, with a valid license, can be used on any machine as long as the dongle specified in the license is attached.

ISV-Defined Hostids

ISVs who prefer to support their own dongles with RLM can do so by way of an ISV-defined host ID.  ISVs can choose a simple, low-cost dongle because RLM needs only the dongle’s serial number at runtime. ISVs then write a routine to retrieve the dongle’s ID and include that routine within the RLM libraries so whenever a license is tied to the dongle, RLM knows how to call the ISV’s routine to obtain the dongle serial number. Example code is provided with the standard RLM SDK to show how ISV-defined hostids can be integrated into RLM.

Reprise Announces License Usage Reporting Toolset

Reprise Announces License Usage Reporting ToolsetReprise Software has expanded its product line to address license usage reporting and pay-per-use needs of current RLM and FLEXlm/FLEXnet ISVs.

Reprise Software has recently become a global reseller of LicenseTracker’s LT-Analyzer license usage analysis tool enabling your customers to understand their license usage and for you to implement usage based pricing models.

This new product supports both RLM and FLEXlm/FLEXnet. RLM’s report log format is supported as is, and FLEXlm ISVs can take advantage of this new product simply by integrating a small piece of open source enhanced reporting code into their existing FLEXlm/FLEXnet vendor daemon.

By delivering reporting tools, ISVs can let their customers produce license usage reports to support current pricing models. Reports can be used as hard evidence to support fact-based software pricing negotiations, especially at the largest customers.

Usage based pricing can complement current license models.  Time or some other metric that fits your licensing strategy can be measured to ensure that customers pay for what they use.

This tool also allows end customers to assign costs to licenses and to monitor usage versus a set budget, and to assign costs across departments or business units who share common pools of floating licenses.

For those ISVs planning to host license servers for “in-the-cloud” customers, LT-Analyzer can be used in-house to collect license data to produce billing reports based on actual cloud-based usage.

The LT-Analyzer product imports RLM report logs and/or enhanced debug log records produced by modified FLEXlm license servers. Useful reports are produced by aggregating logged usage data during the billing cycle.

Global licenses for LT-Analyzer are based on a scaled-revenue tiers, much like RLM and FLEXlm/FLEXnet.

Please contact Reprise Software for more information about functionality or pricing, or to arrange a demonstration.

Managing Renewable Licenses – A Practical Approach

Using RLM refresh-type activation to support short-term renewable licenses

Consider these licensing system requirements:

  • The system must be able to generate a time limited and trial licenses.
  • The trial version will automatically become a “full version” when the customer purchases a license.
  • Full licenses are also “time limited”, i.e. customers can purchase packages of 30, 60, or 90 days.
  • Each time the application starts, it must validate that its license has not yet expired.
  • The application must be able to operate “off line” for a specified period of time: if the license cannot be reactivated at the expiration of the allowed off-line period, then the license is suspended and the application cannot start.
  • Upon first reconnection, if the user still has a valid license (has not been terminated), the license is reactivated, the off-line allowed time is restored and the application can be run again.

Supporting the Concepts

Using the optional RLM add-on product, RLM Activation Pro, a refreshable license is one that is intended to be reactivated frequently and receive a license with a new expiration date with each reactivation. Refreshable licenses are typically of short duration (days). The ISV is assured that the maximum period during which the end user can run the licensed application is the duration of the refreshable license, say 30 days.

For example, if the ISV specifies a 30-day refreshable license, then the license will be good for 30-days after each activation. If the refresh operation fails for any reason, such as the lack of Internet connectivity, then the license is still good until the end of the 30 day period – enough time to resolve any connectivity issues.  This allows the customer to operate off-line until the license needs to be refreshed.

Refreshable licenses also give the ISV a way to revoke a license should that user fail to meet contractual obligations, for example. The ISV can simply disable the user’s license on the activation server, and refresh attempts of that license will fail from that point forward, or until it is re-enabled by the ISV.

The client side of refreshing can be automated, so it can be performed without an undue burden on the end-user. Reprise supplies a “Refresh API” for license refreshing, which the ISV can use from within the application itself, or within a separate standalone utility. Reprise supplies a generic refresh utility that can be supplied to the end-user by the ISV. The generic utility, “refresh_util”, is meant to be set up to run daily as a scheduled task.

ISV-Defined Hostids

Defining new Hostids within RLM

RLM comes with a comprehensive set of integrated hostids, but there are times when ISVs need to lock their software licenses to something else. The three most common reasons for ISV-defined hostids are:

  1. Supporting non-Reprise dongles
  2. Tying licenses to peripheral hardware devices
  3. Combining various identifying elements of the computer.

ISV-Defined Hostid

RLM provides the ability to extend the native set of hostids by using your own routines to obtain host identification which is unique to you.

In order to do this, you use the rlm_add_isv_hostid() call in your application. If you want to support multiple instances of your hostid type on a single computer, you would use the rlm_add_isv_hostid_multiple() call.

For more information on ISV-defined hostids, please consult the latest RLM Reference Manual or contact Reprise Software.