1. Home
  2. Technical Documentation
  3. Security – Warewolf License.secureconfig

Security – Warewolf License.secureconfig

The Warewolf subscription/licence is stored in a Warewolf License.secureconfig file. On the full Warewolf server this file lives in %programdata%\Warewolf\Server Settings and is written by Warewolf Studio when you register your Chargebee subscription. The Lightweight Execution Engine reads the same file format, but loads it from the engine’s bin directory (alongside the application binaries) because it is registered through the engine’s app.config as a configSource:

<configSections>
<section name="subscriptionSettings" type="System.Configuration.NameValueSectionHandler" />
</configSections>
<subscriptionSettings configSource="Warewolf License.secureconfig" />

If the file is missing, the engine treats the instance as a broken/unlicensed installation: the subscription Status resolves to a non-active default, so the engine is not licensed. While the license gate is enabled (the default — see WAREWOLF_LICENSE_CHECK_ENABLED below), every workflow execution is refused with a failure response (“Execution blocked: a valid Warewolf license/subscription is required.”) and the workflow does not run. This is a safe-by-default behaviour.

File format

The file is a small UTF-8 XML document. A single <subscriptionSettings> element contains one <add key="..." value="..." /> entry per setting. The recognised keys are:

Key Description
CustomerId Chargebee customer ID. May be empty for a development/test licence.
SubscriptionId Chargebee subscription ID. May be empty for a development/test licence.
Status Subscription status. The engine considers the instance licensed only when this is Active or InTrial. Valid values: NotActive, Future, InTrial, Active, NonRenewing, Paused, Cancelled.
PlanId The subscribed plan, e.g. developer.
SubscriptionKey The Chargebee site API key used to refresh subscription state.
SubscriptionSiteName The Chargebee site name, e.g. warewolf-test.
StopExecutions true/false. A server-side flag (set when a subscription lapses) that halts executions independently of Status.

Each value may be supplied as plain text or encrypted (see below). The engine auto-detects which form each value is in. Empty values (for example an unset CustomerId) are left as-is.

A plain-text test licence with Status=Active — the easiest form to author and review. This is the form Warewolf ships for testing.

<?xml version="1.0" encoding="utf-8"?>
<subscriptionSettings>
<add key="CustomerId" value="Customer ID for testing with" />
<add key="SubscriptionId" value="" />
<add key="Status" value="Active" />
<add key="PlanId" value="candice.daniel@dev2.co.za" />
<add key="SubscriptionKey" value="Dev2-test-account" />
<add key="SubscriptionSiteName" value="warewolf" />
<add key="StopExecutions" value="false" />
</subscriptionSettings>

A trial licence — Status=InTrial also counts as licensed, so executions are permitted.

<?xml version="1.0" encoding="utf-8"?>
<subscriptionSettings>
<add key="CustomerId" value="cust_abc123" />
<add key="SubscriptionId" value="sub_xyz789" />
<add key="Status" value="InTrial" />
<add key="PlanId" value="developer" />
<add key="SubscriptionKey" value="your-chargebee-api-key" />
<add key="SubscriptionSiteName" value="warewolf" />
<add key="StopExecutions" value="false" />
</subscriptionSettings>

A fully encrypted licence as produced for production — every non-empty value is an AES Base64 blob.

<?xml version="1.0" encoding="utf-8"?>
<subscriptionSettings>
<add key="CustomerId" value="" />
<add key="SubscriptionId" value="" />
<add key="Status" value="aT/AoVWEMyf6OPvaYp47Gw==" />
<add key="PlanId" value="qj2HmQwVsUt12btj/iXadA==" />
<add key="SubscriptionKey" value="ml420y+ZHMiv8CoQJxF1XMsYXXxCcDgNkvFkZSJHQB+m3EdlYIeUAP8oEIl9Z29b" />
<add key="SubscriptionSiteName" value="tWPn5xcpWET9NX3yt+uPHQ==" />
<add key="StopExecutions" value="r/EOk8xFEhRno3TYRCvIKQ==" />
</subscriptionSettings>

Encrypting the licence file

See https://warewolf.io/knowledge-base/articles/security-encryption/

Placing the file during deployment

The licence file must land in the engine’s application directory (next to the binaries) as Warewolf License.secureconfig — the exact name, including the space, matters because app.config references it by that literal name.

If you deploy with StartAsAzureFunction.ps1, pass your pre-built, encrypted file with -LicenseConfigPath; it is copied into the function directory for you. When the parameter is omitted, the script generates a test licence (Status=Active) so /IsLicensed returns true — convenient for smoke tests, but not for production:

.\StartAsAzureFunction.ps1 `
-LicenseConfigPath "C:\deploy\Warewolf License.secureconfig"

For a zip / CI-CD deploy, include the encrypted Warewolf License.secureconfig in the package root so it is unpacked alongside the engine binaries, e.g.:

az functionapp deploy `
--resource-group rg-warewolf-prod `
--name func-warewolf-prod `
--src-path warewolf-func.zip `
--type zip

You can confirm the licence loaded by calling the anonymous GET /IsLicensed endpoint, which returns the local status without contacting Chargebee:

{ "isLicensed": true, "status": "Active", "planId": "developer", "stopExecutions": false }

Engine configuration

Variable Required in Azure Default Description
WAREWOLF_LICENSE_CHECK_ENABLED No true Controls the per-execution licence gate. When unset or any value other than false/0, unlicensed instances refuse to run workflows. Set to false to disable the gate — development only.

Unlike the Key Vault source-encryption feature, the licence file needs no environment variables to be read or decrypted — the engine loads and decrypts it at startup using its built-in key.

Troubleshooting

Symptom Likely cause Fix
Every workflow returns “Execution blocked: a valid Warewolf license/subscription is required.” Warewolf License.secureconfig is missing, or its Status is not Active/InTrial. Deploy a valid encrypted licence with Status=Active to the engine’s bin directory. For local testing only, set WAREWOLF_LICENSE_CHECK_ENABLED=false.
/IsLicensed returns isLicensed: false Wrong Status, an expired subscription, or values mangled by double-encryption. Run Protect-LicenseConfig.ps1 -Decrypt -OutPath - to inspect the values; re-author and re-encrypt if needed.
stopExecutions: true and executions are halted despite an active status The StopExecutions flag is set (typically after a lapsed/cancelled subscription). Resolve the subscription state, then set StopExecutions back to false and redeploy the licence file.
Plain-text licence works locally but reverts to unlicensed in Azure The engine could not write the re-encrypted file back to a read-only app directory. Pre-encrypt with Protect-LicenseConfig.ps1 -Encrypt before deploying so no runtime write is required.

 

FacebookTwitterLinkedInGoogle+Email
Updated on June 18, 2026

Was this article helpful?

Related Articles

Enjoying Warewolf?

Write a review on G2 Crowd
Stars