Managing License Files

Protection PLUS 5 SDK license files contain all the license data and parameters needed by your application. License Manager categorizes the data to make it easier to manage and edit. Each category has a set of fields, and the license file schema describes each field in detail. Before configuring the license fields, it is important that you have an understanding of licensing and have defined your licensing requirements.

The field descriptions in this topic are also displayed at the bottom of License Manager's window for each category and field.

Categories

Category Description
License In SOLO Server, each license record is created from a Product Option, and always belongs to a customer record. Without SOLO Server, each license file is created by License Manager without a corresponding license record.
User-Defined Dates User-defined date fields 1 through 5, which may be used for arbitrary dates when needed for additional, customized license data.
User-Defined Floats User-defined float fields 1 through 5, which may be used for arbitrary decimal values when needed for additional, customized license data.
User-Defined Numbers User-defined number fields 1 through 5, which may be used for arbitrary integer values when needed for additional, customized license data.
User-Defined Strings User-defined string fields 1 through 5, which may be used for arbitrary alpha-numeric values when needed for additional, customized license data.
Author You or your company is the "Author" of the software or application being licensed.
Customer The Customer represents your customer, for whom one or more licenses have been issued.
Distributor In SOLO Server, a distributor represents a company or individual that resells your products or applications, or an affiliate which refers customers and prospects to your web site. The distributor information can be particularly useful in scenarios when the distributor acts like a reseller, and also provides its customers with technical support.
Product Each Product defined typically represents the Product or application being licensed (i.e. "XYZ Product"). Products must contain one or more Product Options, as all licenses are created from Product Options.
ProductOption Product Options define licensing or purchasing options available under a Product. These can reflect any number of unique licensing and/or purchasing options, for example: "1 Year Subscription", "1 Year Subscription with Backup CD", or "1 Year Subscription Renewal".

Fields of Primary Interest

The following fields are important when you are using License Manager, and most licensing implementations will need data in these fields. If you are using the Protection PLUS 5 SDK samples, it will be expecting data in some of these fields (see below).

Field Description
LicenseID A unique, numeric identifier for the license issued (typically issued by SOLO Server). If you are using License Manager without SOLO Server, you will want to keep track of what License ID you issue to each customer.
ProductID A unique, numeric identifier used to identify the Product for which a license was issued. This value is typically generated by SOLO Server. If you are only using License Manager, you can choose your own value for the Product ID. You can choose to verify this value in your source code.
ProdOptionID A unique, numeric identifier used to identify the Product Option for which a license was issued. This value is typically generated by SOLO Server. If you are only using License Manager, you can choose your own value for the ProductOptionID.
SignatureDate The date in which the license file itself was created and signed by License Manager or SOLO Server. This is automatically set when you save the license file with License Manager.
EffectiveStartDate The date in which the license is effective. This is typically the date in which the license was created in License Manager or added in SOLO Server.
EffectiveEndDate This typically reflects the date in which the license expires (for time-limited licenses), but it is also possible for your application to use this date for other purposes when the license is not time-limited, such as notifying customers when support/maintenance subscription periods are about to expire. When using SOLO Server, this field corresponds with the "Download Until" date of the license record.
LastUpdated Only available when using writable license files, this reflects the last date and time in which the application was run. This is automatically set when you save the license file with License Manager.
InstallationID When using SOLO Server, an Installation ID is created when the application is activated so that Electronic License Management (ELM) may be leveraged on the individual system. Activation done through SOLO Server uses a License ID and Password, which are not necessarily required when using License Manager. An Installation ID will not be auto-generated by License Manager
InstallationName An optional, human-readable description of an Installation ID.  This is typically specified by the user to help describe which of several systems he or she owns is being activated (a user could enter something like "Home Desktop" or "Work Laptop").
ActivationData Contains the system identifiers used to identify the system which is authorized to use the license file.
TriggerCode The Trigger Code number is a numeric value between 1 and 50, and is typically used to reflect the type of license being issued (i.e. non-expiring, time-limited, etc...). This value is configured manually in License Manager or in a Product Option in SOLO Server, and can be passed during a trigger code activation.
TriggerCodeFixedValue The Trigger Code Fixed Value is a numeric value up to 14 bits in size (or a maximum value of 16383), which is typically used to conditionally enable application features, or distinguish between different product or application editions (i.e. "Express Edition" and "Enterprise Edition", etc...). This value is configured manually in License Manager or in a Product Option in SOLO Server, and can be passed during a trigger code activation.

You can use the LicenseCustomData field or the User-Defined* fields to store whatever custom data or parameters you want. This data will be available to your licensed application just like any other field.

Configuring the license fields

When you are updating a license file or processing manual activation requests, you can edit the values of the license file that your customer will receive. Certain values in the license file can be validated against values in the source code. The license file can also contain other data or parameters needed by your application. The following list will detail which license file fields need to be configured in License Manager to activate or run the Protection PLUS 5 SDK samples:

Field Value Description
License ID any positive integer If you are not using SOLO Server, this can be any positive integer and should be unique for each license.
Product ID 212488

The sample projects use the default value of 212488 for the ProductID which it uses to validate against the license file.

Signature Date

any date in the format:

YYYY-MM-DDTHH:MM.SSZ

This is set automatically when you save the license file with License Manager. This date will be before the customer's system date if they haven't altered their system clock.
Installation ID any non-empty string When using SOLO Server, an Installation ID is created when the application is activated so that Electronic License Management (ELM) may be leveraged on the individual system. Activation done through SOLO Server uses a License ID and Password, which are not necessarily required when using License Manager. An Installation ID will not be auto-generated by License Manager, but the samples expect any non-empty string.

You can configure different fields, including the TriggerCode field, the User-Defined* fields, or the LicenseCustomData fields to pass custom information for your application to utilize. This data is typically used to determine things such as the type of license being issued (e.g. perpetual/non-expiring or time-limited), the version/edition of your application being licensed (e.g. "Express Edition" or "Enterprise Edition"), or details about specific features or modules that should be enabled or disabled. Other fields, such as EffectiveEndDate and LicenseCounter, can be used to restrict the use of you application based on date, number of users, etc.

Field Value Result
Trigger Code 1 - 50 Your application can set the license type based on the Trigger Code it reads from the license file. In our sample projects, a Trigger Code value of 11 designates a time-limited license type, but you are free to use the Trigger Code values however you want. The Trigger Code is sent during a trigger code activation.
TriggerCodeFixedValue int This integer value can be read as bits enable features, or possibly designate which edition of the software should be activated. The TriggerCodeFixedValue is sent during a trigger code activation.
EffectiveStartDate

any date in the format:

YYYY-MM-DDTHH:MM.SSZ

For a time-limited license, this field sets the beginning of the license period
EffectiveEndDate

any date in the format:

YYYY-MM-DDTHH:MM.SSZ

For a time-limited license, this field sets the expiration of the license period
LicenseCustomData any string

Custom string or XML formatted data specific to the license. Note that using long strings (anything over a KB or two) can cause performance degradation, and excessively long strings can also cause other problems.

User-Defined* custom date, number or string

These fields can contain custody data. If also using SOLO Server, there is a 50 character limit on the size of the User Defined string/char fields. The LicenseCustomData field can potentially provide more flexibility, as it accepts XML formatted data.

LastUpdated

any date in the format:

YYYY-MM-DDTHH:MM.SSZ

If using a writable license file, this field needs to be updated so that it is not overwritten on the user's machine by an alias file with a later date. This is set automatically when you save the license file with License Manager.

LicenseCounter any positive integer

This will set the number of allowed network seats when using network floating licensing. It can also function as a usage counter that gets decremented or incremented.