Licensing
Using the library requires a free or paid license and license key. This article first describes different types of licenses, followed by License Key Location details and other technical information.
Please also see the Software License Agreement.
Developer Licenses
Developing any software that uses the actionETL library requires an actionETL Developer license. Each license is dedicated to one named developer, and is tied to the domain/computer account of the developer.
The license also gives the developer the right to contact support and get help with issues, as described in the support documentation.
Software developed with an actionETL Developer license can then be executed on any computer within the organization that purchased the developer license, using any domain/computer account.
Developer Licence Account
You provide the developer account name (without any domain part) to envobi to generate the license. When logged in to the target account, you can get the account name by executing the command (on either Windows or Linux):
whoami
Note
You can also execute an actionETL application without a license to get the exact account name. Check the start of the log file, which includes a line with:
... System.Environment | HostName='MyHostName' UserName='MyAccountName' ...
License Level
Licenses are either Community, Standard or Pro level, where Community is the least capable, Standard is more capable, and Pro has full capabilities. More capable levels include all the features of lower levels.
Trial licenses are Pro level.
License levels support the following:
Community | Standard | Pro | |
---|---|---|---|
Data Volumes | Unlimited | Unlimited | Unlimited |
Number of Applications | Unlimited | Unlimited | Unlimited |
Worker Systems per Application | 1 | Unlimited | Unlimited |
Distinct Worker Types per Worker System | 15 | 50 | Unlimited |
Port Pass-through Dataflow Workers | - | - | Unlimited |
Suitable for Applications of Up To | Low Complexity | Medium Complexity | High Complexity |
Cost | Free | Paid | Paid |
Note
- actionETL Community edition is a completely free version of the library, including for commercial use, and we provide best-effort support for it. Please get a perpetual Community license for each account that will use it.
- To evaluate the paid actionETL Pro edition, please get a free 30-day trial license.
Max Worker Systems per Application
Community licenses allow a maximum of 1
worker system per application.
Standard and Pro levels are unlimited.
Max Distinct Worker Types
actionETL tracks how many distinct worker types are created in each worker system invocation, and the limit applies within each worker system. Standard and higher can have multiple worker systems within one application, and all license levels can use multiple applications, which can be used to partially work around this limit. This can however be inconvenient, in which case an unlimited Pro license is a better choice.
- Each worker type, including generics, count as a distinct type, e.g.
CopyFileWorker
,XlsxSource<Product>
, andXlsxSource<Sales>
would count as three types. The same applies to any user custom worker type. - Each worker type, e.g.
CopyFileWorker
, is only counted once per worker system, and can be created an unlimited number of times.- The same set of worker types can therefore be created and run an unlimited number of times, e.g. processing millions of files.
- The number of worker types used is logged at the end of each worker system invocation e.g.: "WorkerTypesUsed=7"
This example for instance creates 13 workers, but for licensing purposes this only counts as 7 distinct worker types, since some worker types are used multiple times.
Port Pass-through Dataflow Workers
All licenses allow creating custom reusable (parent) workers by composing (i.e. combining) existing (dataflow and non-dataflow child) workers. See e.g. the Custom SCD Worker example.
Unlike lower level licenses, Pro licenses furthermore allow using port pass-through dataflow workers. This enables creating custom reusable dataflow (parent) workers that have dataflow inputs and/or outputs, and have their dataflow child workers implement the actual dataflow processing (as opposed to having to re-implement the dataflow processing of existing dataflow workers).
This feature is both powerful and useful, see Custom Dataflow Pass-through Workers for details.
License Key Location
By default, actionETL applications look for a license file named "actionetl.license.json" in the BaseDirectory, which is normally the same directory as the executable.
Alternatively, set either or both of the following license configuration settings which will be processed in the below order; if these explicit license locations contain any license, then the default location will not be automatically read:
LicenseText - Verbatim license text. This allows the application to read the license text by any arbitrary means, using it to set this configuration.
LicenseFileNames - Semi colon separated list of license (absolute or relative) file names.
Important
Setting a non-default license location must be done before the worker system is created, i.e. using option 1 or 2 in AConfig Configuration Facility.
License Expiration
The expiration is defined by the license "expiration" and "endDate" fields.
Perpetual
License
Each release has a version number that generally follows NuGet with SemVer 2.0 standards, i.e. a "Major.Minor.Patch[-Prerelease]" version, e.g. "1.13.0" or "1.14.0-beta.1", where "Major" increments on breaking changes, "Minor" increments on backward compatible new features, and "Patch" increments on backward compatible bug fixes.
Each initial (non-pre-release) "Minor" release (i.e. version X.Y.0) defines the MinorVersionReleaseDate, a date that remains unchanged for new "Patch" releases until the "Minor" or "Major" version is incremented.
For licenses with an active support subscription, you may use any available release, including new “Major” and “Minor” versions released after your license purchase.
Paid licenses are perpetual, and are valid indefinitely for any release with a MinorVersionReleaseDate not greater than the end date of your last active support subscription for the license. This includes any “Patch” releases where the “Major” and “Minor” versions have not changed since the end date of your support subscription.
For instance, a new perpetual license with an "endDate" one year in the future
allows running any (including any new "Major" and "Minor") actionETL
versions released within one year, as well as any later "Patch" releases that
still have a MinorVersionReleaseDate
not greater than the license "endDate".
The license never expires, but doesn't support "Minor" or "Major" releases
released after "endDate". To use these even newer releases, a new license is
required, normally received via a support subscription.
Note
Big advantages of this approach include:
- An existing commercial license running an existing actionETL version will never expire - it's only when upgrading to a newer "Major" or "Minor" version that the license could potentially become invalid.
- Even if you let your support subscription lapse, you will still get access to any later "Patch" releases of your existing "Minor" version.
Community licenses are also perpetual and follow the same validity rules as the paid licenses, except that renewing the license is free of charge.
TimeLimited
License
Trial and Beta licenses are TimeLimited
, where the license is valid
(for any contemporary or older actionETL version) up to and including the
"endDate", and invalid after that date.
License Content
Here is a sample license file, with one Perpetual
Standard license for the
"stewartp" named account, and one TimeLimited
Pro Trial license
for the "nickc" named account.
In this way, multiple license files and groups can be combined in a single file
by adding the individual license group JSON objects to the top level
"licenseGroups" JSON array. Note that otherwise the only user editable properties
are the "comment" properties, which can be added and used for e.g. contact details.
{
"licenseGroups": [
{
"comment": "Comment, can be modified.",
"watermark": "ACME Inc",
"id": "EAAAA",
"licenses": [
{
"comment": "Comment, can be modified.",
"id": "EAAAA-AAADS-AZZIE",
"product": "actionETL Developer Standard Account",
"expiration": "Perpetual",
"endDate": "2021-07-20",
"account": "stewartp"
"description": "Stewart Pendragon"
},
{
"id": "EAAAA-ABAES-ZZZRS",
"product": "actionETL Execution Standard",
"expiration": "Perpetual",
"endDate": "2021-07-20"
}
],
"signature": "fwefbhjOUBUGu87676jhbkjhVKhgvkhgv876hgJBVKJhvkvgkKHJVkhvg87678HGF32+1Vze97652hkgvwHGVF8756mq2SI2OLKhxmwTrqZFrx2YoVGPMnLOWjVdR98vrICUd5CLZwGojKBOYebuHpYbKZ/l1DyYJrihvqGlxcMOMmci+8R5lMictJ7o4ujtPILorT88q5NuOjf/mY/oVALqASB1/TMWKAJL76fVKjwXqWL47Uavfl5dGnv4hXq5FXzKRDG5RKp/ymKA6cLmB8pAjsG+P6GJGdyZUYkajo00fD48li5qKzCiw/kOJUC8kRXHN/TcTuRQ0PdcWWmhBQ9dfuBasx0m+vWNoeWBcQ4cOHNJrR7BrZ6gJjW/Z/ZVgabvBLRWV8u74T/VR/m1tJt64XSQHJELy8OxHrhM0rsFcx7mcsHDY0uL9GAwZscit7lgUrGNDJEEE44dVRTzpBkVCUcobP7Zzx8F4hVJiGo4P6cuMzNr7TtqeZ9RfJvo"
},
{
"id": "EAAAB",
"watermark": "ACME Inc Trial",
"licenses": [
{
"comment": "Comment, can be modified.",
"id": "EAAAB-AAADP-ATZIBB",
"product": "actionETL Developer Pro Account Trial",
"expiration": "TimeLimited",
"endDate": "2020-03-25",
"account": "nickc"
"description": "Nick Carter"
},
{
"id": "EAAAB-ABAEP-TZZRS",
"product": "actionETL Execution Pro Trial",
"expiration": "TimeLimited",
"endDate": "2020-03-25"
}
],
"signature": "fkaeisfIHJI9878076LIGHJUhgfjyft876890756DSRESsertyrJVkhvg87678HGF32+1Vze97652hkgvwHGVF8756mq2SI2OLKhxmwTrqZFrx2YoVGPMnLOWjVdR98vrICUd5CLZwGojKBOYebuHpYbKZ/l1DyYJrihvqGlxcMOMmci+8R5lMictJ7o4ujtPILorT88q5NuOjf/mY/oVALqASB1/TMWKAJL76fVKjwXqWL47Uavfl5dGnv4hXq5FXzKRDG5RKp/ymKA6cLmB8pAjsG+P6GJGdyZUYkajo00fD48li5qKzCiw/kOJUC8kRXHN/TcTuRQ0PdcWWmhBQ9dfuBasx0m+vWNoeWBcQ4cOHNJrR7BrZ6gJjW/Z/ZVgabvBLRWV8u74T/VR/m1tJt64XSQHJELy8OxHrhM0rsFcx7mcsHDY0uL9GAwZscit7lgUrGNDJEEE44dVRTzpBkVCUcobP7Zzx8F4hVJiGo4P6cuMzNr7TtqeZ9RfJvo"
}
]
}