Product Portal


Orion License Server Resources

Getting Started With Orion License Server

Getting Started With Orion License Server

Walk through the steps to get started with Orion.

Orion Application Integration Guide

Orion Application Integration Guide

Walk through integrating your application with the Orion Client Library.

Product Documentation

Product Documentation

View product documentation online or download the documentation pdf.

White Papers

White Papers

Tips and strategies on how to best license your software.

Webinars

Webinars

Key strategies for using Orion across different licensing scenarios.

Demonstration Videos

Demonstration Videos

Orion in action across different licensing scenarios.


?

Click on a section header below to expand or collapse it. Or type a query above to search — multiple words are ANDed, and anything in double quotes is matched literally. Hover the ? icon for the full search grammar.

Developers
Application Integration
What are our options for integrating our Java application with the Orion client library – which Orion client library should we use?
You can use either the core Java Orion library or the high-level-API Java Orion client library, depending on the level of flexibility you need vs programming simplicity.

If you use the core library, you will need to write code for any dialog boxes as well as persistent storage management for the license activation record.  You will also need to write code to adapt to scenarios where network connectivity is sparse or non-existent, as well as scenarios where license leases need to automatically be renewed.

These functions are automatically handled in the high-level-API Java Orion client library, which offers one-to-two-lines-of-code integration for a wide range of license models and licensing scenarios including named / anonymous-user product activation, named / anonymous-user floating licensing, leased licensing, offline activation and deactivation, and more.  Although the library provides built-in dialog boxes and persistent storage mechanisms, these may be overridden by you if desired.  The high-level library also provides built-in mechanisms for rendering forms and browser windows at the time of activation, for example to capture user registration data or display promotional messages.

Notwithstanding the high-level-API Orion client library’s built-in dialog boxes and one-line-of-code integration capabilities, it can be used in any context where the core Orion client library is used, including server applications where user interaction is not an option, and scenarios where some of the core client library’s API calls are needed.

It is therefore highly recommended that you use the high-level-API Orion client library unless you have compelling reasons to do otherwise.

We want to use leased checkouts but at the same time we want to implement metered licensing based on client-side operations. How do we accomplish this? In particular, how do we prevent license lease renewals from artificially bumping up usage counts?
By default, a checkout consumes one quota unit, and a weighted checkout of N points consumes N units.  A license lease renewal is a checkout.  This is not what you want.  You can suppress quota consumption by defining the ILS:CHECKOUT-NO-QUOTA system option at the product, domain or named-user level.

There is also an explicit upQuotaUse() Orion client library API call that can bump the quota consumption up or down by a specified number of points.  This what you want to use in your application logic in response to events pertaining to usage in your application (for example, timer ticks, to count hours of use).

To summarize: your application uses the upQuotaUse() Orion client library API call to manipulate quota consumption, and you configure the license in the Orion server with the ILS:CHECKOUT-NO-QUOTA system option to inhibit checkouts from consuming quota points.

What is the quickest way to get started with application integration, without having to read the entire documentation from end to end?
The approach that works best is to

  1. Identify and read the minimum viable amount of documentation.
  2. Identify the highest-functionality-level Orion client library available for your platform, and use this highest possible level of abstraction.
  3. Identify the demo application closest to your usage scenario, and use the source code as a head start for your application integration.

Reviewing the minimum viable documentation set:

  1. Orion server documentation: Concepts chapter.  This is the very first and most essential stop, as it describes the core concepts that anyone working with Orion in any capacity needs to be aware of.  As an application developer, you can access this documentation by logging on to your Orion server (which an administrator has already set up for you) and then clicking on the Documentation button towards the top right-hand corner of the screen.
  2. Orion client SDK documentation: ISV Application Development Guide chapter.  The chapter describes client-side programming concepts and detailed steps for application integration for a number of scenarios, with available client libraries.  The levels of client library and the criteria for selecting one are described here.

Selecting the appropriate client library:

  • Java applications:  most likely, the high-level client library will meet your needs.  It is capable of handling a wide range of functionality, and substantially eliminates both the volume of coding and the level of integration know-how needed to accomplish the task.  One line of code can handle all levels of network connectivity, product activation, floating licensing, offline activation and deactivation, and provides built-in dialog boxes and storage management for license activation records, as well as built-in dynamic form rendering and screen data capture at license activation time.  For unique requirements, core library functionality is passed through ie. it is available with the high level client.  In the rare instances that the high-level client cannot be used or is overkill for the most basic requirements (eg. very simple traditional floating licensing), you can resort to the core Java client library.
  • C/C++ applications: on all but Windows platforms, the core library is the only available option.  For Windows applications, the ActiveX client library may be used if high-level functionality with one-line-of-code integration similar to the Java high-level library is required.
  • .NET applications on Windows: the high-level ActiveX client library is the only available option.

Selecting the most appropriate demo application as a role model or starting point:

Demo applications are available under the demo folder of the client SDK for a number of licensing scenarios and integration use cases (for brevity, filename suffixes are removed):

    • Basic anonymous-user floating licensing with core client  library: simpledemo.
    • Basic online and offline product activation with core client library:  sneakernetdemo (which can be run in two modes).  To drive the demo through multiple phases, use the dosneakernetdemo command script and follow the prompts.
    • Floating anonymous-user licensing of a long-running batch application of unknown duration with core client library: simplebatchdemo.
    • Named-user registration with core client library: registeruserdemo.
    • Operational aggregate report execution with core client library: reportdemo.
    • Offline and online product activation with offline state management for secure offline metering with core client library: sneakernetdemoms
    • One-line-of-code integration for any license model and network topology with high-level client library: HybridApiDemo.

In addition, the ActiveX client SDK includes demos for a range of .NET languages, as well as demos for license protecting Microsoft Office documents.

Resources for performing more advanced and / or nuanced integrations:

The test folder contains various tests that were originally designed for regression testing APIs by Agilis.  They are included so that you can run them as well, for example to understand the behavior and semantics of various APIs.  The source code for the tests are also included, and serve as a resource for showing how API’s can be used in their various nuances.  The files of interest are:

    • Running ad-hoc checkouts to experiment with various checkout modes: checkoutcheckin
    • Using the fuzzy machine fingerprinting library: TestFingerprint
    • Illustration of client library API usage with complete coverage of the API calls and their usage in various modes: BasicTest
    • Running performance tests to measure scalability, throughput and response time: MultiuserTest
License Architecture
How do we code for anonymous trial licensing, and at the same time prevent “serial evaluators” and “parallel evaluators”?
Anonymous trial licensing (where the end user downloads your software or installs it from a CD/DVD and is not required to interact with your operations personnel in order to obtain a trial license (unless you want to require them to do so)) can be accomplished as follows:

Externally visible functionality as experienced by the end user (assumes the end user’s email address is used as their userid):

The first time the user attempts to activate your software for trial licensing, they are required to enter their email address in a form / provide it in a configuration file.  The activation succeeds, and the software continues to run until the expiration period. In the interim, or in parallel, if the end user attempts another installation and activation under the same email address, the activation fails, and your sales personnel are alerted in real time with details.  Should your sales personnel decide to allow multiple evaluations, they can locate the evaluator’s license on the license server and enable it for multiple trials.

License schema: you would maintain a “trial licenses” named-user (not anonymous-user) domain that has a maximum checkout duration equal to the maximum trial period.  The domain would have an administrator user account with a password known to your application.

Application: your application code would, at the time of trial activation, first attempt to register the customer email address or equivalent as a named user in the Orion server with a quota limit equal to the maximum number of serial trials permitted on that machine / email address (typically 1).  This would be via the “registerUser” API call in the Orion client library, under the auspices of the domain’s administrator account.  If registration fails because the user already exists, it is not (yet) an error; however, the current state of the user license is left unperturbed.  Following registration, the trial license is activated via a “checkout” followed by a “saveCheckoutState” to save the activation record.  The checkout will fail if the quota limit recorded in the server is exceeded.

The above protects against reusing an email address for multiple activations, but requires the user to input an email address.  A simplification that does not require the user to input anything is to introspect the user machine’s machine fingerprint and use that as the named-user name instead.  Then, multiple serial activations on the same machine are prevented.

Of course, none of the above approach will prevent a determined serial evaluator from simply using different email addresses on multiple machines; the intent is to make it harder for serial evaluators and to limit their ability to do so, as well as utilize a mechanism that enables tracking and accountability (the email address).

How do we view and identify users in an Orion server when we’re using anonymous-user licensing where usernames aren’t pre-registered in the Orion server?
Orion lets you specify an explicit username at the time of checkout, even if the checkout is from an anonymous-user domain.  This is to simplify management and auditing.  The active user list that is displayed under the anonymous-user domain in the administration UI will display the names specified by the checkouts, and audit trail entries will be tagged with these explicit usernames.

There are a couple of points to be aware of:

  1. If no explicit username is provided by the application, the Orion server invents a unique name beginning in “anon”.
  2. In the application, if you are using the default domain name, normally you’d pass in a null value for the domain name.  However, in this scenario, since there are two default domains (one for named-user and one for anonymous-user), Orion assumes you mean the default named-user domain if you specify an explicit username.  Therefore, when specifying explicit usernames for checkouts from the default anonymous-user domain name, it is necessary to explicitly provide the default anonymous-user domain’s name (“default_nuser”).
If we host floating license pools for our enterprise customers instead of redistributing license servers, how do we ensure only users in the enterprise customer organization can check out licenses from the Internet-hosted pool using our application?
Assuming you’re referring to anonymous-user floating licenses (where you don’t pre-register users and optionally assign them passwords), you can achieve this objective in one of the following ways:

  • If feasible and realizable, use the host access control mechanism.  Your application can qualify the machine name with an identifier that is uniquely associated with your enterprise customer.  A simple example is to qualify the machine name with the network domain name (works only for on-site users), or with a designated and configured enterprise customer ID.  On the server, your administrator can define a host access control rule that permits access to an enterprise customer’s domain only for machine ID’s having the enterprise customer’s network domain name or enterprise customer ID.
  • Use an encoded domain name that is hard to guess – in essence a “password” known only to your administrator and your end customer’s administrator.
  • Define an auxiliary “pool authorization” named-user domain and register under the domain a named user together with a password.  Your application can be coded to first perform a password-qualified named-user checkout from the domain’s representative named user under “pool authorization”, and only if that succeeds, proceed with the anonymous-user checkout.  Of course this only solves the problem of access from your specific application.

Of course, if you’re offering a floating named-user model to your customers, the named user can have a password for authentication.  Nevertheless, even in this scenario, it is desirable to have an enterprise-wide identification / authentication mechanism.

If we host enterprise license pools for our enterprise customers instead of redistributing license servers, how do we ensure only users in the enterprise customer organization can activate licenses from the Internet-hosted pool using our application?
The considerations as well as the solution are identical to the case for hosted floating licensing, discussed in the previous question.
We want to implement a “trust but verify” metered-licensing policy where we merely track usage but we don’t impose limits. How can we accomplish this in a hosted-Orion environment?
This is automatic, as Orion always tracks usage – all you need to do is to ensure that the corresponding license  is not set to quota limited, so that no limits are specified and therefore no out-of-quota error is raised.   You can even set an initial usage count if you don’t want it to start at 0.  You can also reset the count at any time, for example to start a new billing cycle.

If you want to define a soft limit and alert your customer / be alerted in the event the soft limit is exceeded without preventing the user from continuing to use your product or service, you can configure the license to be quota limited, and set the quota limit value to the soft limit, and define a generous quota expiration grace parameter.  Then configure your event alerter to email the necessary alerts in the event that the soft user limit is exceeded.

How do we prevent a customer using a redistributed Orion server and metered usage based licensing from resetting metered usage state by restoring from an old license database backup taken at the start of the subscription period?
When you generate your redistributed Orion product license, set the ILS:INHIBIT-DB-RESTORE system option to true.  This will prevent your customer from being able to restore database backups and thus rolling back usage state.

Of course, this also means your customer’s sole resort for recovering from a corrupted database is to reinstall the Orion database from a gold master and obtain a new license from you.

It is far more convenient and secure to offer usage based enterprise licensing as a hosted license pool.

When we redistribute the Orion server, how do we implement subscription and metered licensing such that metered usage is reset at the time of subscription renewal?
When Orion is redistributed, subscription licensing is implemented by re-issuing product licenses at the start of each subscription period.

Normally, updating the product license does not reset the cumulative usage count, so ordinarily you’d have to issue subscription licenses with progressively higher quota limits, which is both cumbersome and inaccurate because you don’t know what the usage count was at the end of the prior subscription.

The problem with quota limits is avoided by specifying the ILS:RESET-QUOTA-USAGE-ON-PROD-UPD system option to true in the product license.  This will automatically reset the quota usage to 0 at the product license and default domain levels.  Your end customer’s administrator has the appropriate privileges to reset current quota usage levels of individual domains and named users.

 

How do we issue time-limited licenses such that the active time period for each customer starts when they respectively activate their license, rather than when the license is created?
You can define named-user licenses to be “relative time-limited” instead of “absolute time limited”, and specify a number of days to expiration.  For example if you created a 30 day relative time-limited license 1 year ago, and the license was activated by a customer 28 days ago, then the license would expire 2 days from today.

Similarly, you can define domains used for floating licensing to be relative-time-limited, so that the expiration date for a specific domain is determined upon occurrence of the first checkout from it.

How do we restrict sharing of named-user subscription licenses for our Orion-enabled cloud mobile application, so that each user in a business is forced to count as a separate user?
You can force the user to stay checked out for a minimum duration by configuring the “minimum checkout duration” parameter at the domain level under which the users are registered.  Then your proxy checkout on your cloud server application on behalf of the user, which will be proxy-node-locked to the user’s mobile device via the server-side session handle parameter, will not be able to perform a successful checkin until the minimum duration has elapsed.  Note that this is a configuration step – no application integration programming is required.
If our server application has thin-clients (eg. browsers, iPhones, Android phones, tablets, Citrix thin client, etc.) connected to it and we need to implement floating named-user or anonymous-user licensing, where do we get the thin-client platform Orion client libraries to do the integration?
You don’t need to perform the integration at the thin-client device level.  Furthermore, the standard Orion product distributions don’t provide client libraries for mobile devices, not even for Android (even though it is based on Java).

Because your devices connect to your server application, all you need to do is to integrate your server with the appropriate Orion client library, and perform the appropriate checkouts by proxy.  The Orion client library allows you to specify a logical machine name (ie. it is not required that the parameter be derived from the machine on which the server is running) as well as a logical user name (ie. it is not required that the parameter be derived from the operating system user account under which the server is running).  Therefore, for fully connected mobile applications, anything that would ordinarily be done on the mobile device can be done on the server by proxy.  This includes specification of a machine name corresponding to the remote device, which could map to its IP address or server-side session handle.

Troubleshooting
We’ve implemented an offline activation mechanism that seems to work when testing on a local machine. But when the application and the Orion server are on different machines, we are getting an error complaining that the client clock is suspect. The clocks on both machines generally look good. Where should we be looking for the source of the problem?
When the application and the license server are on separate machines, the two systems’ clocks might not be 100% precisely in sync right down to the millisecond.  Therefore, in the restoreCheckoutState() API call used for activation, it is important to specify a non-zero value for the time-tolerance parameter – at least a few hours is recommended for offline activation.  Even for local operation, a non-zero time tolerance parameter should be specified in order to account for clock drift over time.

Of course, the first place to check is the machines’ system clocks themselves, to verify that they are in fact in sync.  In particular, verify that you are checking the combination of the time and timezone settings.  Note also that system clock checking is not sensitive to time zones.  For example, if your application is running on a machine whose clock shows noon Pacific Standard Time, and the license server is running on a machine whose clock shows 3pm. Eastern Standard Time, nothing is amiss and the time tolerance is not required to be greater than 3 hrs merely owing to the timezone differences.  But if either machine has the above times with the wrong timezone setting (eg. both are at Pacific Standard Time but the machine in San Francisco shows noon and the machine in New York City shows 3pm.) then you will of course encounter the error.

Why are multiple anonymous-user checkouts from our server application appearing as just one checkout? We need each checkout to represent a separate user connected to our server, and impose a concurrent limit.
That’s most likely because your checkout is specifying a common checkout machine ID and session ID combination for all the checkouts.  The semantics of a checkout are that if a checkout is active and you perform another checkout with the same machine ID and session ID, Orion merely extends the current checkout.

The remedy is to assign a separate session identifier parameter for each distinct user.  This could be the operating system thread ID, for example.  Alternatively, if you have the information available, you can specify the user’s remote client machine as the machine ID.  In either case, you’re defining a unique (machine ID, session ID) parameter pair for each distinct user.

When a license server administrator tries to update a product option value at the domain or user level, we get a “Invalid options specification” error. Why?
This will only happen for (a) domain and user level option updates, for redistributed Orion servers for which you (as an Orion License Server customer) explicitly generated and distributed product licenses, and (b) user-level option updates while logged in as domain administrator for the corresponding domain, for hosted Orion servers where you defined the ILS:RESTRICT-DOMADMIN for the domain.  It will happen under any of the following scenarios:

  1. the end customer’s administrator attempts to change the value of a string-valued option in any way
  2. the end customer’s administrator attempts to increase the value of an integer-valued option
  3. the end customer’s administrator attempts to add a new option of their own

The restriction is intentional.  The product options control available features.  Integer-valued product options define feature levels (the higher the value, the higher the functionality level).  The above restrictions enable you to prevent your end customers from upgrading the functionality you have defined for them, and at the same time permits your redistributed-Orion end customers to define more-restricted sub-policies for domains that they set up (which they are allowed to do).

ISV Operations
Procedures and Processes
How do we back up and restore Orion service database files? Should we copy the database file ending in “.backup”?
The Orion server’s backup manager automatically generates clean backups and saves them in a designated directory that is configured in the Orion Administration UI’s system control panel, which is also used to define a backup schedule.  By default, a service database is backed up daily.

The backup files are conventional zip files ending in “.zip”, in the designated database backup directory.  Files ending in “.backup” are part of the set of files comprising a live database instance – notwithstanding their name, they are not backups!  Please do not copy or overwrite such database files (or any other database files for that matter), or you will end up with a corrupt database.

In the event that you need to recover from a database corruption due to media failure or any other reason, take the latest “.zip” database backup file, and unzip it in place in the database file directory, taking care to specify to the unzip utility the appropriate directive to disregard the directory path information that is recorded in the zip file in the event that you are relocating the database location to a different directory path / different machine (assuming the licenses installed in the database permit you to do so).  In other words, restoring from a database backup is a simple unzip using any zip-compatible utility.

Our enterprise customer, who is running a redistributed Orion server, forgot their sysadmin password. How can we help our customer recover from this situation?
Prior to Orion 2.5:

Orion didn’t provide a password recovery / reset mechanism.

Do they have a database backup going back to a date when they had a password they do remember?

If so, they should bring the Orion server to a quiescent state by having all customers checkin licenses if any, then shut down the server, and restore the database to the old state.  Note that they will be able to do this provided you did not issue your product licenses with the ILS:INHIBIT-DB-RESTORE system option set to true.

If not, they will have to bring the Orion server to a quiescent state, reinstall Orion and obtain a fresh set of floating license keys from you.

In either case, audit trail and registered-user data is lost.

Effective Orion 2.5:

A system operator (an individual with operating system access to the account under which the Orion server is running) can run the ilssyspwdutil password management utility to retrieve or update the system administrator password.

Effective Orion 2.5.10:

The system operator can use the newly-introduced ilssvcutil service database management utility to retrieve or update the system administrator password. ilssyspwdutil is still supported.

How do we automatically drop expired time-limited users, for example expired trial-license users? Better yet, how do we only drop users that have expired more than 60 days ago?
The expiration checker job can be configured to run on a schedule to periodically check named users matching specific product, domain and named-user patterns. You can associate an expiration specifier with a pattern, directing that matching named users are automatically dropped.  You can qualify the expiration specifier with a grace period eg. 60 days, to suppress the drop if less than the grace period has elapsed since the users expired.

For further details, please refer to the section on the License Expiration Checker job daemon in the “Job Control System Administration Guide” chapter of the product documentation.

Troubleshooting
When we access the Orion server, we get a “database already in use” error – why is this, and what do we do about it?
By default, the Orion server is configured to access its embedded database in “in-process” mode.  In this mode, only one process may access the database files.  If you have multiple Orion server instances simultaneously active and configured to reference common database files in in-process mode, then only requests to the first-accessed Orion server instance will succeed – any request to the second Orion server instance will yield the “database already in use” error.  The same is true when the entity accessing the database files is another process running an Orion administration utility, whether using Orion’s command line tools or your own utility built on top of the Orion administration APIs.

The simplest solution to bypass the issue is to configure the database for access in server mode, as explained in the “Setup, Management and Deployment Guide” chapter of the Orion server product documentation.  There is however a drawback to configuration in server mode – the Orion server’s backup management job will be unable to perform backups on such a database.  It is therefore preferable to architect the system to avoid the need for multiple processes to access a common Orion database.

It should also be noted that sometimes abnormal termination of an Orion server process, especially on Windows, leaves a spawned Java process running and maintaining its lock on the database.  When this happens, attempting to start and use a new Orion server instance will produce this error as well.  The remedy is to identify the zombie process (a “java” process) and force-kill it, or at worst reboot the server machine.

We’re getting weird slowdowns in the Orion server, and odd null-pointer exception errors. We’re not doing anything different from before. What could be wrong and what can we do about it?
The root cause is most likely an out-of-memory condition in the Orion server.  This could be an out-of-physical-memory condition, or an out-of-Java-virtual-memory condition.  Unfortunately, the Java runtime isn’t always very good at raising a straightforward and understandable “out of memory” error (or better yet, an early warning alert) under extreme conditions.

The root cause for the out-of-memory condition may be any of the following:

  1. A straightforward out-of-Java-memory condition owing to insufficient memory for your user license population and / or audit trail retention period.  For your workload, the default Java virtual memory setting (or a setting you explicitly specified) for the Tomcat servlet engine or other J2EE application server on which you have deployed the Orion server application needs to be increased.  Refer to the “Setup, Management And Deployment Guide” chapter of the Orion server documentation for instructions on how to tune the Java virtual machine memory setting.  Ensure that your Java virtual memory setting is comfortably below the available physical memory on the machine.  For extremely large user license populations in the millions, a 1GByte virtual memory setting is ample.  For more common user license populations in the 1000′s or 10′s of 1000′s, a 256 Mbyte virtual memory setting suffices.  And for simple low-end configuration (for example what you’d use for conventional enterprise floating licensing), the default memory configuration is ample provided your audit trail cleaner job is enabled to run on a reasonable schedule (see below).
  2. A disabled or mis-configured audit trail cleaner job.  If the audit trail cleaner job is disabled or its frequency is curtailed, or the audit retention period is set to an excessively long duration (eg. years), audit trail entries accumulate over time until any attempt to perform searches or run reports on the audit trail bring the server to a grinding halt.  The remedy is to enable the audit trail and ensure it is configured to run with an appropriate frequency.  Also ensure that the cleaner does not retain an excessive number of records online.  Note that the audit trail cleaner can be configured so that cleaned-out audit trail entries can be archived in sequential files, and that the archive retention period is limited only by the amount of disk space available.
We / our customer is getting a “database is not in its original location” error from the Orion server in response to an administration command when logged in as product or domain administrator. The application also gets the same error when attempting a checkout. But logging in as sysadmin and accessing the products and domains works fine. What could be wrong?
This means the license database was moved from its original installation after an Orion server license enabling directory via the ILS:LOCK-DIR system option was installed and active.  By default (ie. if the system option is not specified at the time of license generation), directory locking defaults to “deferred”, which means the directory is locked upon the first command from an application.  Directory locking is for the ISV’s protection when redistributing Orion, as it protects from multiple licensed installations on the same machine and under the same operating system user account.  See the “License Administration User Guide” chapter of the product documentation for the semantics of directory locking.
Our customers complain they get a “machine fingerprint mismatch” error when we issue them an EasyLicenser-based floating license key node-locked with fuzzy machine fingerprinting. They did run the fingerprinting utility and they did provide us the output, and they did assure us the Orion server is on the same machine. What went wrong?
For fuzzy machine fingerprinting, both the Orion server and the fingerprinting utility (which are implemented in Java) rely on C/C++ fingerprinting library that is included with the Orion server distribution.  But the C/C++ library does need to be installed.  In particular, the DLL / shared-library (whose name ends in “.dll”, “.so”, “.dylib” depending on your platform) needs to be reachable from the PATH / LD_LIBRARY_PATH / other platform-specific environment variable.  And if the Java code can’t successfully load the library at the time of fingerprint generation / checking, it gracefully degrades to generating / checking a platform-independent hostname-only fingerprint.

The root cause for the symptom is that in instance the environment was set up correctly for loading the C/C++ fuzzy fingerprinting library and in the other case it wasn’t.  For example, the fingerprinting utility may have generated a complete fingerprint because the logged-in user had the correct environment, whereas the Orion server may not have been able to find the fingerprinting library because its operating environment may not have been configured correctly.  Check both environments, and verify the node-lock fingerprint file that you receive from your customer prior to generating their floating license key.

Of course, if you use Orion product activation technology for distributing floating licenses to your customers (available with the latest Orion server release), the above will not be an issue since node locking is hidden and automatic.

When we perform administration actions on the Orion server using Orion Admin Web Services or our own servlet installed on the same Orion server, we’re not seeing our updates when viewed from the Orion admin UI or accessed from our application. What’s up with that?
When the Orion server uses its embedded database in its recommended in-process configuration (which is also the configuration for the default zero-configuration database), part of the database is cached in memory for access by all threads in the servlet engine under which the Orion server application runs. However, the servlet engine maintains a separate memory heap for each configured servlet application context.  Both the Orion runtime access and the built-in Orion admin UI operate under a common “ils” servlet application context.  If an external service is added, it too must be configured to operate under this same servlet context, otherwise the two contexts won’t be able to see a common state.  This is true even when using Agilis’ old SOAP-based Administration Web Services, although not an issue for Agilis’ new REST-based Administration Web Services.

The recommended fix is to configure the servlet engine so that everything is under Orion’s “ils” servlet application context, per standard J2EE procedures.  If for some reason this is not an option, the issue can be worked around by configuring the database to operate in server mode – instructions for how to do so are in the “Setup, Management And Deployment Guide” chapter of the Orion server product documentation.

When using the Orion admin UI or API to cancel an in-progress checkout, an “Insufficient privilege for cancelling an in-progress checkout.” error is reported. What could be the problem?
This means that your administration privileges don’t allow you to cancel checkouts.  In a hosted environment, this is because the domain your’re logged in to as domain administrator has the ILS:RESTRICT-DOMADMIN system option set.  In a redistributed environment, your customer may get this if you set ILS:CANCEL-CHECKOUT-PRIV in their Orion key to an administration level and your customer logged in as a lower-privilege administrator.  For further details, refer to the respective system options defined in the “License Administration User Guide” in the Orion server product documentation.
When deregistering, disabling or dropping a user with an admin tool or UI or API, an error message is reported about insufficient privileges for disabling / dropping a user having an in-progress checkout. Why?
This means that the user being dropped / disabled is currently in a checked-out state, and your administration privileges don’t allow you to cancel checkouts – so the operation is not allowed to proceed.  In a hosted environment, this is because the domain your’re logged in to as domain administrator has the ILS:RESTRICT-DOMADMIN system option set.  In a redistributed environment, your customer may get this if you set ILS:CANCEL-CHECKOUT-PRIV in their Orion key to an administration level and your customer logged in as a lower-privilege administrator.  For further details, refer to the respective system options defined in the “License Administration User Guide” in the Orion server product documentation.

The remedy is to either wait for the checked-out users to check their licenses back in, or (if it is an option) perform the administration operation with a higher level privilege that is permitted to cancel checkouts.

When attempting to disable or drop a domain, a “insufficient privileges to drop domain having checked-out users” error is reported. Why is this disallowed?
This means that the domain being dropped or disabled currently has one or more checked-out users, and your administration privileges don’t allow you to cancel checkouts.  This can only happen in a redistributed environment, and your customer may get this if you set ILS:CANCEL-CHECKOUT-PRIV in their Orion key to an administration level and your customer logged in as a lower-privilege administrator.  For further details, refer to the respective system options defined in the “License Administration User Guide” in the Orion server product documentation.
When attempting to disable or drop a product, a “insufficient privileges to drop product having checked-out users” error is reported. Why is this disallowed?
This means that your system administration privileges don’t allow you to cancel checkouts, and the product you are attempting to drop or disable has at least one domain that has at least one user checked out.  This can only happen in a redistributed environment, and your customer may get this if you set ILS:CANCEL-CHECKOUT-PRIV in their Orion key to NONE.  For further details, refer to the respective system options defined in the “License Administration User Guide” in the Orion server product documentation.

The remedy is to wait for all checked-out users to check their licenses back in before retrying.

Some of our customer application installations cannot seem to be able to connect to our Internet-hosted Orion server but others can, and the server seems to be up. Where is the problem?
Most likely, customers having difficulty connecting to your license server over the Internet have a DMZ or an HTTP proxy server based firewall configured in their corporate environment.  They need to be using the appropriate license server URL specification that specifies their http proxy server.  If they installed (and, if needed, configured) an Orion license proxy server in a DMZ at their premises, then the license server URL needs to be specified to route through the Orion license proxy server.  Hopefully your developers ensured the license server URL specification was parameterizable so it can be set appropriately by your respective individual end customers, and hopefully your development team made the proxy configuration information available as part of your product documentation.

For complete details on the syntax and semantics of license server URL specifications as they pertain to HTTP proxy servers and / or Orion license proxy servers, please see your product documentation, or (if this information didn’t make into your product documentation) ask your developers to see the “ISV application development guide” and “Orion client library API reference” chapters of the respective client library SDK.  If using the Orion license proxy server, also see the “License proxy server user guide” chapter of the Orion server product documentation.

Our license database keeps increasing in size, and our auditing operations keep getting progressively slower. Isn’t there a way to prevent this from happening?
The license database will increase over time because the audit trail is populated with events over time.  Ensure your audit trail cleaner job is enabled to run on a regular schedule (its default is a 24-hour period).  For details, see the “Job control system administration guide” chapter of the Orion server product documentation.

If the audit trail is growing too quickly and / or you need to maintain an unusually long online audit trail retention period, you can slow the population of the audit trail by enabling auditing for just the products, domains and named users of interest, and turning it off for all others.  See the “License administration user guide” chapter of the Orion server product documentation for details on how / where to set the ILS:AUDIT system option to achieve this objective.

Why do we / our enterprise customer see a “cannot find the configuration or default database mapping for the service ‘default’” error when performing checkouts / activations?
Most likely, the redistributed Orion server was using the default zero-configuration mode but was not started while positioned at the expected ils2.0/web/bin folder, so it could not locate the default database at the expected “../database” relative-path folder.  The remedy is to shut down Orion, position to the above folder and then start Orion again.

Another possible explanation is if a service with name “default” was defined in the wdoprops.ini configuration file in the user home folder, but its mapping was incorrectly specified eg. to a non-existent folder.

Why is the Orion server all of a sudden responding to checkout requests with an invalid-license error conditions after we moved our license server installation to a new machine or location?
If the corresponding product’s Orion license key was node-locked or directory-locked, the Orion license database cannot be relocated – a new Orion license needs to be issued.

The above is when the Orion server is license-protected with EasyLicenser.  If it is license-protected with a hosted Orion server using product activation technology, a node-locked installation can be relocated by disabling the product(s) prior to shutting down and relocation, and then re-enabling the product(s).  The rest is automatic.

License Administrators
Procedures
Can we directly query the license database with SQL to generate our own reports?
The short answer is no.  The good news is that it is unnecessary.

With Orion’s administration APIs, you’re completely shielded from low-level mechanics such as SQL, database connectivity parameters, etc., and at the same time using the administration API’s enable you to pull tabular data in the expected format, with search predicates and higher-level abstractions.  Furthermore, the license database stores certain fields in encrypted format and includes a number of internal structures that you don’t want to know about because they aren’t pertinent at your level of abstraction.

You can of course import the exported Orion data into any analytic tool including Excel for thorough analytics – you just won’t be able to do get at Orion’s data using SQL.

Orion Product Downloads

Click on a section header below to expand or collapse it.

Orion Server – Minimal-distribution Edition: Version 2.5.14-042719

Download Orion Server – Minimal-distribution Edition: Version 2.5.14-042719

The Orion License Server Minimal Distribution includes the elements of the Orion license server necessary for deploying to a J2EE application server, including a WAR file and standalone utilities and product documentation. The same download is used for a new installation as well as for upgrades from previous versions.

Review the What’s New In Orion 2.5 and Orion 2.5.x Release Notes chapters in the product documentation for a description of new features and bug fixes. Orion server packaging does not include the client library SDK’s – these are available as separate downloads.

Note that this download does not bundle the built-in Tomcat servlet engine. if you wish to perform a zero-configuration installation, use the full / upgrade edition downloads instead.

Orion Server – Full Edition: Version 2.5.14-04/27/19

Download Orion Server – Full Edition: Version 2.5.14-04/27/19

Notes: Review the What’s New In Orion 2.5 and Orion 2.5.x Release Notes chapters in the product documentation for a description of new features and bug fixes. Orion server packaging does not include the client library SDK’s – these are available as separate downloads. The common Orion server packaging is used for redistribution to end customers, as a license proxy server at ISV and end customer sites, as well as for hosted licensing and internal development by the ISV.

This download is required if the Orion server is being installed for the first time and the default preconfigured Tomcat server is used (the default). The download is optional if the ISV deploys the Orion server application to a different J2EE application server or servlet engine installation – the upgrade-edition Orion server may be downloaded instead. The download should not be used if upgrading an existing Orion server installation that utilizes the default preconfigured Tomcat server, otherwise the existing default license database and Tomcat server configuration will be overwritten – use the upgrade-edition Orion server download instead.

You do not have to use the download if deploying the Orion server to a third party J2EE application server – instead, you can use the more compact “Minimal Installation” download, which includes a WAR file.

Orion Server – Upgrade Edition: Version 2.5.14-04/27/19

Download Orion Server – Upgrade Edition: Version 2.5.14-04/27/19

Notes: Review the What’s New In Orion 2.5 and Orion 2.5.x Release Notes chapters in the product documentation for a description of new features and bug fixes. Note that Orion 2.5.12 is a maintenance release, and Orion 2.5.10 is a new release with major new features. Before upgrading your production system, be sure to perform a test-upgrade in your development environment and confirm there are no regressions. Orion server packaging does not include the client library SDK’s – these are available as separate downloads. The common Orion server packaging is used for redistribution to end customers, as a license proxy server at ISV and end customer sites, as well as for hosted licensing and internal development by the ISV.

This download is required if upgrading an existing Orion server installation that utilizes the default preconfigured Tomcat server – if the full-edition download is used, the default license database and Tomcat server configuration will be overwritten. The download is optional if the ISV deploys the Orion server application to a different J2EE application server or servlet engine installation – the full-edition Orion server may be downloaded instead.The download should not be used if the Orion server is being installed for the first time and the default preconfigured Tomcat server is used – otherwise the default database and Tomcat web configuration will not be set up.

Do not use the download if upgrading an existing Orion server installation that is deployed to a third party J2EE application server – instead, use the “Minimal Installation” download.

Orion Java Client Library SDK: Version 2.5.12-01/11/18

Download Orion Java Client Library SDK: Version 2.5.12-01/11/18

Notes: Review the product documentation for a description of new features and bug fixes. Note that the Orion Java client SDK is packaged separately from the Orion server.

Orion Multiplatform Orion C/C++ Client Library SDK: Version 2.5.12-08/08/2018

Download Orion Multiplatform Orion C/C++ Client Library SDK: Version 2.5.12-08/08/2018

Notes: Review the README and Release Notes in the product documentation for a description of new features and bug fixes. Note that the Orion C/C++ client SDK is packaged separately from the Orion server. Note also that as of version 2.5.12, the standard distribution no longer includes Solaris on Intel / SPARC, or Mac OS X on PowerPC (Intel continues to be supported). If you wish to use a platform that is no longer supported, please continue to use version 2.0.11 version of the Orion client library.

Orion Multiplatform C/C++ Client Library SDK: Version 2.0.11-02/05/09

Download Orion Multiplatform C/C++ Client Library SDK: Version 2.0.11-02/05/09

Notes: This is the older release of the Orion C/C++ client library, and is posted for the benefit of customers who wish to continue using the Solaris and PowerPC-MacOS platforms whose support has been discontinued in subsequent releases. Review the README and Release Notes in the product documentation for a description of new features and bug fixes. Note that the Orion C/C++ client SDK is packaged separately from the Orion server.

Orion ActiveX Client Library SDK: Version 2.0.10-01/21/08

Download Orion ActiveX Client Library SDK: Version 2.0.10-01/21/08

Notes: Review the product documentation for a description of new features and bug fixes. Note that the Orion ActiveX client SDK is packaged separately from the Orion server, and is compatible with all versions of the Orion server starting with Orion server version 2.0.10.

Important Licensing Note: Support for this download is subject to inclusion of the ActiveX client library in the definition of Licensed Product in your license agreement with Agilis.

Orion Administration Web Services SDK: Version 2.0-03/03/08

Download Orion Administration Web Services SDK: Version 2.0-03/03/08

Notes: Note that the Orion Administration Web Services SDK is packaged separately from the Orion server, and is compatible with all versions of the Orion server starting with Orion server version 2.0.10.

Important Licensing Note: Support for this download is subject to inclusion of the Orion Administration Web Services in the definition of Licensed Product in your license agreement with Agilis.

**Important Note: You will need the downloads below for the purpose of generating floating license keys if you are redistributing Orion to your enterprise customers, and you are using EasyLicenser license key method instead of the activation method introduced in Orion 2.0.10. It is not needed if you are using a hosted Orion server installation and / or you use a host activation service for managing your redistributed Orion server floating licenses.

EasyLicenser Product Downloads

Click on a section header below to expand or collapse it.

EasyLicenser eCommerce Installation: Version: 2.5.11

Download EasyLicenser eCommerce Installation: Version: 2.5.11

Notes: Use the eCommerce installation if you want to install or upgrade your existing eCommerce EasyLicenser installation with the latest version of the software. The eCommerce distribution has just the code required for Java-API-based key generation, and does not include the Java or C/C++ SDK’s, sample code or HTML documentation. Your existing data files are preserved, and an ezlic2.5 or other root directory is not created.

After downloading the upgrade file ezlicmgrecom.zip, unzip it directly into your eCommerce working directory. Follow the instructions in readme to run the license manager GUI or use the programmatic API’s to recharge the installation with production keys to enable key generation.

If you are using EasyLicenser to generate network license keys, you will need the Orion Network Licensing Platform for your runtime environment. Please contact us directly to obtain a copy of Orion.

Please see the readme file for further instructions and late-breaking news.

EasyLicenser Upgrade Installation: Version: 2.5.11

Download EasyLicenser Upgrade Installation: Version: 2.5.11

Notes: Use the upgrade installation if you want to upgrade your existing non-eCommerce EasyLicenser installation with the latest version of the software. The upgrade distribution has code but no data, and preserves your existing data files. It does not create an ezlic2.5 or other root directory. Important note: if you were an EasyLicenser 2.0 customer and you do not have a subscription license agreement in effect with Agilis, do not upgrade your installation to EasyLicenser 2.5, otherwise you may lose some of your license units.

After downloading the upgrade file ezlicmgrupgrd.zip, unzip it directly into your existing product installation root directory. Please see the readme file for further instructions and late-breaking news.

For technical support, please email techsupport@agilis-sw.com or call +1 415-890-6834.