Retrieving Information from CodeMeter License Central
Many software developers favor CodeMeter as a licensing system because of its easy and reliable integration with a vast range of software platforms and its ability to link up flexibly with different processes and back-office solutions. The essential solution provided by Wibu-Systems for this purpose is CodeMeter License Central, as the master tool for creating, delivering, and managing licenses in tandem with established ERP, CRM, and e-commerce solutions.
CodeMeter License Central also offers other simple means to transfer licenses to the end users’ devices. In the normal run of things, this would be an asynchronous process, i.e. it would happen at a point in time chosen by the user. However, it is oftentimes essential for information about the activation status and the CmContainers of each license to also be known by the back-office systems of the software developer.
The challenge: How best to ensure that this information makes its way back from CodeMeter License Central?
Custom Internet Extensions
This approach works by calling an interface provided by the software developer whenever licenses are processed in WebDepot or Gateways. That interface would then report the new license status to the back-office system, although the reported data would be limited to the activation status and the serial number of the chosen CmContainer.
The necessary mechanisms are easily established, but they suffer from the lack of an integrated cache in the Internet extensions. To prevent any loss of data, the back-office system would have to provide a redundant and always available interface with integrated cache to receive the incoming data. Since this is not the norm, this mechanism is not overly popular among practitioners.
For most projects, we recommend querying the data directly from CodeMeter License Central to be safe and sure that the correct status for each license is reported to the back-office.
One straightforward, but labor-intensive option would be to integrate a form of pull mechanism in the back-office system, which regularly contacts CodeMeter License Central to retrieve certain information to copy into the relevant internal objects.
If the back-office system in question uses direct SOAP communication to create licenses, it would already have all the details needed to access the other API interfaces of CodeMeter License Central. If, on the other hand, other PHP applications are placed in between, such as GenericConnector.php, the mechanism would need a suitable expansion to retrieve the necessary information from CodeMeter License Central and translate it into the right format.
In both cases, care must be taken to define precisely which information is needed and how it would be mapped to the data on the back-office system.
With push mechanisms, the system with CodeMeter License Central would run a process at regular intervals that defines which new data is available and then publishes it in a defined format, using a separate interface put in place by the developer. That interface could be a SOAP or REST interface or WebHooks, and its job would be to send the data back to the back-office system. The relevant data would usually be mapped with a defined criterion that is identical on both origin and target system.
The Solution: NotificationDispatcher
NotificationDispatcher is a special expansion of CodeMeter License Central that springs into action at freely configurable intervals to retrieve the information you need and process it to your stipulations. The retrieved data is temporarily stored in a local database to ensure that everything is transmitted correctly to its destination, even if that target system is perchance not available at that specific moment. With this cache, queries to CodeMeter License Central can be limited to the new data added since the last cycle.
The data to be retrieved can be selected in the configuration to keep the number of queries to CodeMeter License Central to the minimum that is required. The configuration also lets you choose how the data is processed, with a choice of standard processing or transmitting the data further with a custom expansion to a separate service chosen for that purpose.
This module can process new orders, which is particularly relevant for software developers that have different ways to create orders in CodeMeter License Central. These would usually have to be brought together to be processed further in a lead system. One typical example of this would be a third-party e-commerce solution that is not structurally integrated with the vendor’s ERP system.
This module lets you process new licenses e.g. to assign the internal license numbers to each order item in the lead system. This can be the backbone for relevant sales processes, like retrieving or changing already delivered licenses.
There is also the option of transmitting individual license properties, such as expiry dates or license numbers. Expiry dates are a particularly interesting tool if they are calculated dynamically from the date of the first activation of a license.
The Activation module can be used to manage the current activation state of licenses, allowing the lead system to display accurately whether a license has been activated and which CmContainer it has been placed in.
The level of detail for the data can be configured precisely for this module:
All completed activations This mode reports all completed license transactions to the lead system, creating a log of when licenses were placed in which CmContainers.
One transaction per ticket If all licenses on a ticket are processed in a single transaction, this mode would only report back one set of data per license transaction. Even with this less granular data, this information suffices to keep a log of license transactions.
Current Status In this mode, only the most recent transaction is reported back to the lead system. This information lets you see the current activation status and the serial number of the CmContainer in use, but it cannot be used to create a running log.
INFORMATICS SAP Module
NotificationDispatcher supports the automatic transmission of data to the SAP module provided by our partner INFORMATICS, Austria. This is a good choice of back-office integration, as it makes it very easy to create a back channel with the SAP system, with all settings easily configured without any additional adjustments.
WebHooks let you send the retrieved data to defined URLs in the JSON format. Software developers can then pick up and process the data in their own systems. All relevant settings can be easily added in the configuration, without any need for further adjustments to the system.
In this mode, the data is handled by a client-specific expansion e.g. to match custom templates, transmitted by another means of transmission.
This could take the form of a web service called by the software developer or an additional web service provided by CodeMeter License Central to retrieve the relevant data.
NotificationDispatcher uses a modular design to handle a variety of modules and options.
Core The Core module is responsible for all communications with CodeMeter License Central and stores all retrieved data in an internal database to make sure that all the data only must be processed once and can indeed be processed even if the chosen target system is not available. The module also provides all the functions needed for the established means of transmission.
Common The Common module provides all internal structures required for the custom processing of the data.
Custom The Custom module handles the custom processing of the data itself.
Reporting On top of these means for transmitting data, a reporting interface will be added at a later point. Its job is to prepare automatic overview reports for defined periods of time, e.g. tracking the number of new licenses or license transactions, and to publish these reports e.g. by email.
The NotificationDispatcher represents the perfect addition to CodeMeter License Central processes, creating a return channel to retrieve relevant data. For more information, please contact our Professional Services Team.