# CreateActivationKeyWithExpiryDateEx

### Description

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](https://docs.soraco.co/docs/api-reference/.net-api/qlmlicense/client-side-methods/defineproduct)

{% code overflow="wrap" %}

```csharp
void CreateActivationKeyWithExpiryDateEx(string webServiceUrl, string email, 
                                         int [] features, int quantity, 
                                         bool useMultipleActivationsKey, string qlmVersion, 
                                         string vendor, string userData1, 
                                         string affiliateID, DateTime expiryDate, 
                                         int expiryDuration, out string response)
```

{% endcode %}

### Parameters

| Parameter                 |   Type   | Description                                                                                                                                              |
| ------------------------- | :------: | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| webServiceUrl             |  string  | URL to the QLM License Server.                                                                                                                           |
| email                     |  string  | email address to associate with to the license key - can be empty                                                                                        |
| features                  |  int\[]  | array of feature sets. each feature set is an or'ed value of the features to enable in the feature set                                                   |
| quantity                  |    int   | the number of licenses to embed in the key                                                                                                               |
| useMultipleActivationsKey |   bool   | if 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 |
| qlmVersion                |  string  | version of the QLM Engine                                                                                                                                |
| vendor                    |  string  | eCommerce vendor to use when generating the key                                                                                                          |
| userData1                 |  string  | user data to associate with the license key                                                                                                              |
| affiliateID               |  string  | ID of affiliate                                                                                                                                          |
| expiryDate                | DateTime | expiry date of the key. Set this value to DateTime.MinValue to not set an expiry date.                                                                   |
| expiryDuration            |    int   | Expiry duration of the key. Set this value to -1 to not set an expiry duration.                                                                          |
| response                  |  string  | XML fragment containing the result of the call.                                                                                                          |

### Response XML format

```xml
<?xml version='1.0' encoding='UTF-8'?>
<QuickLicenseManager>
<keys>A062E-9D0CC-6DC80-0D6A0-E0701-000A0;A062E-9D0CC-6DC80-0D6A0-E0701-000A0</keys>
</QuickLicenseManager>
```

### Example error response

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

## Remarks

Use [ParseResults ](https://docs.soraco.co/docs/api-reference/.net-api/iqlmcustomerinfo/methods/parseresults)to interpret the results of the call and load the returned data into an [ILicenseInfo ](https://docs.soraco.co/docs/api-reference/.net-api/ilicenseinfo)object.

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