Creates an activation key on the License Server.

Note that to call this function, you must:

  • Enable the Server Property enableCreateActivationKey
  • Set the AdminEncryptionKey
  • Call DefineProduct
void CreateActivationKeyWithExpiryDateEx8(string webServiceUrl, string email,
                                          int[] features, int numKeysToCreate, 
                                          int numSeats, int numFloatingSeats, 
                                          bool useMultipleActivationsKey, string qlmVersion, 
                                          string vendor, string userData1, 
                                          string affiliateID, DateTime expiryDate, 
                                          int expiryDuration, DateTime maintenancePlanExpiryDate, 
                                          bool generic, ELicenseModel licenseModel, 
                                          string comment, EOrderStatus orderStatus, 
                                          string productProperties, string orderID, 
                                          out string response)


webServiceUrlstringURL to the QLM License Server.
emailstringemail address to associate with to the license key - can be empty
featuresint[]4 element array of features. Each element in the array represents a feature set and the value of each element is the OR'ed value of all the enabled features in this feature set. For example:

int[] features = new features[4];

features[0] = 1 + 2 + 4; // In feature set 1, Feature 1, Feature 2 and Feature 4 are enabled

features[1] = 1 + 4; // In feature set 2, Feature 1 and Feature 4 are enabled

features[2] = 2 + 4 + 8; // In feature set 3, Feature 2, Feature 4 and Feature 8 are enabled

features[3] = 0; // In feature set 4, no features are enabled
numKeysToCreateintthe number of licenses to create. Use this option to create large batches of license keys.
numSeatsintthe number of licenses to embed in the key. This controls how many activations are allowed per key.
numFloatingSeatsintthe number of floating seats for concurrent licensing (requires QLM Enterprise).
useMultipleActivationsKeyboolif set to true and quantity > 1, one license key will be generated for all required licenses. The number of licenses will be embedded in the license key
qlmVersionstringversion of the QLM Engine
vendorstringeCommerce vendor to use when generating the key
userData1stringuser data to associate with the license key
affiliateIDstringID of affiliate
expiryDateDateTimeexpiry date of the key. Set this value to DateTime.MinValue to not set an expiry date.
expiryDurationintExpiry duration of the key. Set this value to -1 to not set an expiry duration.
maintenancePlanExpiryDateDateTimeexpiry date of the maintenance plan
genericboolset to true to create a generic license key. Generic license keys are designed for enterprise customers who purchase hundreds of licenses and do not want to have to activate licenses on every single computer. They activate a single license and get back a Generic Computer Key. Then on every other computer in the organization, they use the Generic Computer Key (not recommended).
licenseModelELicenseModelset the one of the allowed values: permanent | trial | subscription
commentstringcomment to be added to the license record
orderStatusEOrderStatusset the order status of the license to one of the allowed values: EInProgress | EComplete | EUpgraded | EReleased
productPropertiesstringXML string representing the product properties to set. The XML string can be created by calling IQlmProductProperties.Serialize.
orderIDstringID of the order
responsestringXML fragment containing the result of the call.

Response XML format

<?xml version='1.0' encoding='UTF-8'?>

Example error response

<?xml version='1.0' encoding='UTF-8'?>
<error>Details about the error</error>


Use ParseResults to interpret the results of the call and load the returned data into an ILicenseInfo object.

ILicenseInfo li = new LicenseInfo();
string message = string.Empty;
if (lv.QlmLicenseObject.ParseResults(response, ref li, ref message))
  // The operation  was successful  
  // The operation failed