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.

Time to Talk about Timeouts in the Reprise License Manager (RLM)

Technical article on timeouts in the Reprise License Manager

There are two types of timeout events in RLM: connection timeouts, and idle timeouts. Let’s dig into each of them a little bit deeper.

Connection Timeouts

Connection timeouts occur when a client application takes too long to connect to one or more RLM license servers. Users can change the default connection timeout value from 10 seconds to as low as 5 seconds by setting an environment variable. If set to a negative value, the connect timeout will be its absolute value, and if any particular server connection times out, no further attempts will be made to that server. If set to a positive value, a connection will be attempted to the server even if it timed out on the last attempt. The latter example is the default behavior in RLM.

Skipping over License Servers

RLM also keeps track of which license servers in its license path list have an ISV’s server running on them. If either there is no ISV line for that ISV in a local license file, or an attempt is made to check out a license from a server and the RLM server returns a status indicating that this ISV is not present, then the server is flagged as not having that ISV server.

In a multi-server environment, it doesn’t make sense for an application to repeatedly attempt checkouts from servers that are known not to be serving its licenses. So, application developers may choose to “skip” these license servers. Note that by default, RLM will attempt all operations on all servers.

Idle Timeouts and Heartbeats

Most users want the license server to reclaim licenses from applications that become idle for too long. This ensures maximum utilization of floating (shared) license pools.

The RLM license server expects to hear from client applications periodically as a way for applications to tell the server that they are still active. Normally, this is done by sending “heartbeats” from clients to the server either automatically or under the direct control of the application itself.

Some software vendors may decide to inform the server that an interactive application is idle while waiting for user input. This allows the application’s license to be reclaimed by the server when the application waits too long for user input. When the user eventually “wakes up” the formerly idle application, it will attempt to reclaim any lost licenses from the server.

When licenses are timed out by the server, they are essentially checked back into the pool for use by others.  This event can be recorded in a server report log, if desired.

User Control of Idle Timeouts

An end-user can specify a TIMEOUT value for any idle license. If the license remains idle for this amount of time, the license server performs an automatic check-in of the license and informs the application (if it is still running).

Software vendors can set a MIN_TIMEOUT keyword in a license that specifies the lowest value that an end-user can set for the timeout value of a license. If not specified in the license, the RLM default minimum of 3600 seconds (1 hour) is used.

Why Experience Matters in Software your Software Vendor

We've been lucky enough to be around software licensing for 20 years; combined, we have over 70 years of software licensing experience under our roof. It's safe to say that in that time we've seen it all, and then some. Whether it's enterprise end users wanting the best tools to maximize the usage of their valuable software assets, or software vendors wanting that next creative approach to licensing and selling their software, we've been there and done that.

Read more

Dynamic Named-User Licensing

Let your License Manager build user lists dynamically

Floating licenses are the most versatile of the license types. If floating licenses are available, anyone on the network with the application software product and access to the license server can get a license to run. This is tremendously powerful for software user organizations. But, there are times when software publishers (ISVs) want to sell the convenience of floating licenses while enforcing a more restricted named_user license model.

In the named_user model, the idea is to restrict license access to only users who are on a list.

Business Benefits
The benefit of named_user licenses to the software user community is that their regular software users will not have to contend with other users for licenses. The licenses are in effect dedicated to the group of named users.  These licenses may also be less expensive than floating licenses. The ISV, on the other hand, benefits because he can sell named_user licenses, perhaps at a lower cost, that better match the spirit of his license agreement.  If he chooses, the ISV can still sell unrestricted floating licenses, but at a premium to the named_user type.

Names can be Dynamically Assigned
In Reprise Software’s RLM, named_user licenses allow ISVs to require that user names be included on a list in order to use the licenses. The list can be assigned by the system administrator, or RLM can create the list “on the fly.” The number of users in the list can be less than, equal to, or greater than the number of licenses available. Once a user is added to the list, he can be deleted, but once deleted, he must remain off the list for a minimum number of hours (24 hours by default). This prevents the manipulation of the system in an effort to defeat the named_user license policy.

If the number of named users is smaller than the number of licenses, then this small group will share the larger pool (assumes that it’s feasible for a single user to consume more than one license at a time).  If the number of named_users is greater than the number of licenses, then the larger pool of named_users will contend for the available licenses.

The “How To”

To deploy a named_user licensing model, the ISV does not need to modify his RLM-enabled application at all; it’s controlled in the license certificate itself.  To create a named user license a named_user keyword is simply added to a standard floating license certificate, in one of the three following ways:
named_user – to require the same # of users as there are licenses
or
named_user=n – to require a maximum of n users to be named
or
named_user=”n min_hours” – to require a maximum of n users to be named, and to specify the minimum number of hours before the deleted user name can be re-added back to the list.

Managing the List
As was mentioned earlier, the license server can construct the list of users automatically as license checkouts occur, or the list can be entered via the RLM web interface by the end-user administrator. If entered manually, either individual user names or GROUP names (as defined in the ISV server options file) can be used.

Named_user licenses utilize the INCLUDE functionality of the license server, and do not need a fully populated list of users before the licenses can be used. In fact, no users need to be specified since the license server will add users who do not appear on the list if the current list size is less than the number of allowed named users.

Expanding your Software Licensing Policies

RLM’s Simple API makes executing tactical adjustments to pricing and licensing policies easy

In these tough economic times it is critical to have the flexibility to address complex licensing policies quickly and easily. In a previous article RLM’s ‘Policy is in the License’ methodology was discussed, explaining how the RLM license policy is largely removed from your application. Since the license policy is defined in the license keys, a single binary can support many license policies.. Once RLM is implemented, you can address ever-changing business rules by simply varying the type of keys that you issue.  RLM can support a wide range of licensing options and policies.  Many of these policies have been covered in previous articles and are summarized here (with link to original article):

  • Trial and Evaluation Licenses are implemented using a license with an expiration date, and possibly a “demo” flag, to make your product accessible to would-be buyers.  Since eval/demo/trial licenses can also be easily turned into full, “purchased” licenses, a trial version of your product is the logical first step in a successful sales process.  Well-designed eval/demo/trial licensing programs will reduce your cost of sales, increase customer satisfaction and productivity, all while expanding your reach into wider geographies and attracting new types of users.
  • Floating and Node Locked Licenses can be implemented as needed and depend largely on how your software is intended to be used, shared or unshared.  Floating licenses are free to “float” across the network to users who need them. The license manager controls access to these floating licenses via a central server that enforces the maximum license count that you have set for this site. Node-locked licenses, on the other hand, are usually uncounted, allowing an unlimited number of copies to run on a specified host.
  • NAMED_USER, or USER_BASED Licenses are a class of floating licenses that must be assigned to user names so that they cannot be used as widely as unrestricted floating licenses. With a named_user license, the license server can construct the list of users automatically as license checkouts occur, or the list can be entered/modified via the RLM web interface by the end-user administrator.  Gives you more pricing depth.
  • Token Based Licenses are among the more-advanced features that provide a license model to your customers to enable license alternates. This is the case where you sell a single product that consists of many separately licensable components (product and sub-product model).  If you sell product bundles at a special discounted price, then customers can purchase a combination of both the bundles and the components of the bundles in order to match their requirements.  Token based licensing allows you to define product rights in terms of relative value between your products, or allow a user to consume a mix of your products up to a pre-determined level of value.  This model also allows you to introduce new products into your customers easily since the new products consume the same licenses (tokens) that are already installed.
  • WAN/Time Zone Licenses use time zones in the license file to increase your pricing options. Your biggest customers usually connect their geographically dispersed sites via a WAN. When they do that, they can potentially share your floating licenses across the globe. For a variety of reasons you may want your licenses to be used only within a particular time zone.
  • Subscription based Licenses are supported using the start and expiration dates in the license file.  Subscription licenses are priced so that they provide a lower initial cost in order to attract both new customers and those customers who are trying to preserve short term cash.
  • Version based Licenses can be implemented to support versioning control by either version number or version release date.  License requests beyond the version number or release date would be denied, presenting an opportunity to remind the customer that access to that version requires a new license obtained only via a support contract extension, again providing an avenue for maximizing ongoing revenue.
  • Licensing on Virtual Machines is supported in RLM via a parameter in the license itself that controls whether it will or will not run under VM.  Vendors can deliver both kinds of licenses to their customers – disabled and enabled – allowing them to, for example, issue short-term VM-capable licenses for testing and evaluation purposes, but disabling other licenses for long-term production deployment, or allow certain customers, but not all, to run their licenses on VMs.

The remainder of this article will briefly discuss a few other optional license fields. The following license keywords can be classified as ‘vendor defined’ options as they are not used by RLM to determine policy, but can be accessed by your application to further restrict usage rights or present information to the end-user:

  • License Options field specification is used to encode options for the product.  Do you have the need to restrict information access or usage within you application?  Do you want to limit the number of database records that can be created or accessed, the number of accounts that can be open, the number of portals that can be accessed, etc.?   This information can be entered into the ‘Options’ field and extracted by your application to further limit or define the applications internal processes.
  • Contract field can be used to hold the customer’s purchase information or software agreement number.  This can be displayed to the end-user to validate a support contract, etc.
  • Issuer field would be used to identify the organization which issued the license, such as a third party distributor etc.
  • Customer field can be used to identify the customer of the software and can be displayed by your application to the end-user. This can be an added incentive to keep honest users honest.  It is unlikely that Mega South-East Airlines would want to use a license that was issued to Main St. Bank.

Even though it is wise when starting out to keep the implementation relatively simple, it is very important to have options to address the changes due to market pressure, economic stress or customer feedback. RLM’s licensing methodology gives you the flexibility to address the ever-changing business rules. Reprise Software’s experts can help you plan your optimal approach. Please feel free to contact us to discuss.

Best Practices for the Reprise License Manager (RLM) Integration

Consider your end user and long term support implications when designing your licensing implementation

In this article we attempt to provide a framework for how well-behaved applications use RLM. Adherence to these guidelines will be greatly appreciated by your end-users who will see more consistent implementations across their RLM ISVs. This will also translate into support savings for you, as applications from different RLM ISVs will behave in a more consistent fashion.

Read more