Transferring Licenses to Another Server

RLM has the ability to transfer a set of licenses from one license server to another. This is useful, for example, in situations where a temporary project involves a number of users who need access to the software and the primary license server is across a WAN with a high-latency connection. In this case, a number of licenses can be moved to a server on the part of the WAN with the users. Once the project is complete, the licenses can be returned to the primary server.

When licenses are transferred from the primary (source) license server, they are no longer available at the source server, and are then available at the destination server. The licenses are available at the destination server as long as the source server is up; in other words, if the source server goes down or the network loses connectivity, the destination server will lose its complement of transferred licenses.

License transfers are always initiated by the destination server - the server which is going to receive the licenses. The license transfer is specified in the RLM administration GUI on the destination server.


Setting up a license transfer

Any platform which your ISV supports can be used as the destination for a license transfer. The particular machine does not need to have any RLM-licensed applications present - all you need is the RLM (or rlm.exe) binary as well as an ISV server binary or settings file.

License transfers are accomplished by creating a set of transfer definitions. Each transfer definition describes the source license server, the licenses you wish to transfer, and some parameters of those licenses.

To set up the license transfer, do the following:

  • Place the RLM and ISV servers into a directory, and create a license file that specifies the HOST and ISV lines:

        HOST hostname any port
        ISV isvname isvname
    
    (Note that we used "any" as the hostid. The hostid is irrelevant, because this license server
    will act as a client of the source server and check out licenses from it - these transferred
    licenses are not ever going to be locked to the destination server.)
    
  • Next, start RLM - RLM will start up, and start the ISV server.

  • Next, point your browser to the RLM admin page (hostname:5054), and select Status from the menu on the left-hand side.

  • Next, select Transfer from the right-hand side of the list of buttons for the ISV for which you wish to edit a transfer definition. This will bring up the Edit License Transfer Definitions page, which will indicate that no license transfers have been defined. Select Add New Transfer Definition… at the bottom of the page, and you will be able to specify the license transfer parameters:


Add License Transfer Definition for ISV isvname

Transfer server type: Choicelist: {RLM | ISV-defined}
Source Server Hostname:
Source Server Port:
Backup Server Hostname:
Backup Server Port:
Product:
Minimum Version:
Count:
Days to hold license;

Fill out this form as follows:

  • In the first section of this form, you select the type of license server on which the transferred licenses are served. “RLM” indicates an RLM license server. “ISV-defined” indicates another licensing system for which your ISV has added support, if applicable.

  • Next, you specify the source license server with a hostname and a port number. (Some other licensing systems will use a backup server name and port # - RLM does not use this).

  • Next, you specify the product name, minimum allowable version, and the number of licenses you would like to transfer to this (the destination) server.

  • Finally, if you have RLM v10.0 or later, you have the option to specify “Days to hold license”. If you specify this as a non-zero value, the license transferred is a “disconnected (roamed)” license. This license can be used even when the destination license server is not in communication with the source license server. For this to work, your ISV must have provided you with an “rlm_roam” license, or enabled this capability in their license server.

  • Finally, click Add Transfer at the bottom of the form. The transfer specification will be saved.

If you would like these licenses to be transferred immediately, select Reread/Restart Servers on the left-hand side of the main form. This will cause the ISV server to reread its license files and transfer definitions, and process the license transfer. If you have already transferred licenses of this product to this destination server and you wish to change the number of licenses, you must delete the first transfer definition and re-create it with the new number of licenses, then perform a reread on the server. When you delete the old transfer definition, all clients using that license will receive an error on their next heartbeat (RLM_EL_SERVER_LOST_XFER, -51). In most cases, you will be able to delete the old transfer, create the new one, and perform a reread on the server within the time the client does its next heartbeat to the server.

Once transfer definitions are present, pressing the Transfer button on the status page will display a list of transfer definitions. Each of these can be independently enabled/disabled or deleted.


Restrictions on License Transfer

Not all licenses can be transferred to another server. In particular, the following licenses cannot be transferred:

  • User-based licenses

  • Host-based licenses

  • Named-user licenses

  • Token licenses

Note that any license to be transferred must be able to be checked-out on the destination license server. In particular, this means that most node-locked licenses cannot be transferred (unless you set up a separate destination server on each node-locked host to accept the licenses). Other license restrictions, such as platforms= will restrict licenses which can be transferred as well.

Transferred licenses cannot roam. If you attempt to roam a transferred license, you will receive a -31 (RLM_EL_TOOMANY_ROAMING - “too many licenses roaming”) error (pre RLM v10.0), or a -57 (RLM_EL_NONE_CANROAM - “This license not allowed to roam”) on RLM v10.0 or later.

When you disable a transfer, the licenses are returned to the source server immediately. All clients will be notified that the licenses are no longer available on their next heartbeat check. In this sense, disabling a transfer is identical to deleting the transfer, with the exception that the transfer can be reinstated by re-enabling it and doing a reread on the server.


Additional notes on disconnected (roamed) transfers

If your Software Provider allows it, license transfers can happen onto a disconnected server node. For disconnected (roamed) transfers, the GUI also presents a “Refresh” option, if the transfer is enabled. If “Refresh” is pressed, the transferred license will be checked back in and then checked back out again, in order to refresh the roam time to the specified number of days. Note that the server performs this refresh action each time it is started (but not on a reread). The “Refresh” button allows you to reset the # of days of disconnected operation at any point that the server is running, and the source license server is up.

Both “disable” and “delete” operations on disconnected (roamed) transfers cause the transferred license to be returned to the source server. You should always delete or disable a disconnected (roamed) transfer when the source server is up, so that the destination server can return the licenses cleanly. RLM makes every attempt to catch errors in the return of roamed license, but any error here will cause the transferred license to remain checked-out on the source server. Note that when RLM detects any error in returning the license, it keeps the transfer definition in place, so that you can return it when the source server is up. So the source server must be up to return the license, anyway.


Additional notes on ISV-defined transfers

For the ISV-defined transfer type, each individual ISV may impose other restrictions on what types of licenses can be transferred. This, of course, can vary for other license managers as well.