License generator

This application generates and manages license keys for our products

Purpose

This project is meant to replace the existing license key generator AND to improve current licensing mechanism

License keys are used to control the usage of our product.

The application will generate commercial and test license keys.

The generated keys will be associated to pre-existing customers and prospects.

It will provide the ability to display and report generated licenses and license usage

License key generator

Description

This application will be developped in the cockpit source code base

The code must be modular, allowing to safely include or remove it from the application via maven

The availability of this application will be controlled by at least two factor:

If the application lib has been included in the cockpit package

If the application has been activated by superadmin via a specific mean, like a license key

When enabled, the application will be reachable from left menu, within a CRM section

The CRM section will contain all apps relative to CRM:

License generator

Customer accounts

Update server, etc...

Use cases

Manage customer

It must be possible to create/update customer accounts

A Customer accounts defines a company which will use our license and are defined the following:

Company name

A unique ID

Contact details for licensing

Contact details for upgrades

Other contact details (Name, email, role)

Open properties

Type: Customer/opportunity

API keys

A list of generated API keys allowing an account to retreive its license information (from Cockpit or collector)

Generate custom license keys

The generator will allow to generate license keys based on parameters such as

host IP

expiration date

system count

product type: NETWEAVER/HANA/BUSINESSOBJECTS/AGENT/DATADOG

mode: Expire (default)/Perpetual

Each license creation will be associated with:

A creation date

Creation user

Description

Usage type: Commercial/test

All fields are mandatory

A license must always be associated with an account

Licenses used for internal usage will use a specific internal flag

Quick generate test keys

It must be possible to quickly generate a license key with default parameters

Reflecting the most common use cases, some action button will help to fast track license creation using default parameters

Usage type: test

Duration quick choice between 15/30 days

Reason:

POC

POC extension

IP: *

License count: TBD

License table

It must be possible to list, sort and filter licenses by multiple filters

Account

Expiration

Days left

Creator

Usage

Type

filter by Open text (matching the whole object)

By example

List commercial licenses expiring in less than 60 days

List accounts with valid commercial licenses

License dashboard

The license dashboard allows to display license information through multiple tabs or views:

Current list of valid commercial licenses per account

List of expiring licenses (and maybe recently expired)

List of valid accounts (having a valid license)

Notification

An email notification mechanism must be implemented to notify when a license is going to expire.

This system will be configured with the following parameters:

Internal recipients

Remaining days Warning notification (To notify when a license is about to expire)

Once a day, the system will send an email listing all licenses which are about to expire or expired today

Account name, license type, license count, creator, creation date

Authorizations

authorization objects will be defined allowing to control user actions

Allow access to license generator

Allow license creation

Allow account create/update

License keys

The license key is an encrypted set of properties:

Customer account

IP

Expiration date

Type

Count

Mode

Licensing mechanism improvement

Renew cryptographic to latest standards.

latest algorithms.

stop using the old crypto libraries in back office.

Allow larger license payload.

Example: Can be achieved by using a symmetric key for content, and then ciphering the symmetric key via public/private key.

Enable the use of our “future” license server.

By registering customer API key, our product would fetch its license keys from our license server.

The application could also report its “usage” and we would be able to control it.

Create a new license model for the cockpit to avoid having to set individual licenses on each collector.

When a collector is connected to the cockpit, the cockpit would transfer a SAAS license allowing to monitor anything, but preventing to create any configuration on the collector.