Reference
Licenses
License models and SDK variants of the OPC UA .NET SDK, and how the license key unlocks the SDK, how it is validated, and how to keep it secure.
Reference
Licenses
License models
The OPC UA .NET SDK is available in two license models, and both are royalty-free: with a license, you can develop and distribute any number of applications, with no per-unit costs and no runtime fees. You must not use the licensed SDK to develop your own SDK-like products.
Perpetual license
One-time payment, valid indefinitely. Support and updates are included for 12 months and can be renewed.
Subscription license
Annual payment. Support, updates, and new features are always included during the subscription. You need an active subscription for further development and debugging. Applications you have already distributed keep running after the subscription ends.
Regardless of the model, the license type determines how many people can develop with the SDK:
- Single developer: one person at one workstation
- Site license: everyone who develops at one site
- Enterprise license: everyone who develops at the company's registered sites
For the full terms, see the page SDK Licensing. Our current license terms contain further information, and we are happy to send them to you in advance.
SDK variants and packages
The SDK for developing OPC UA applications comes in different packages. Depending on the package, the range of functions is smaller or larger. Regardless of the package you use, the matching license unlocks the interfaces that the package provides.
Client: OPC UA Client SDK
A client license lets you use the interfaces that the SDK provides exclusively for client development. The SDK supports OPC UA (Unified Architecture) and all client facets that OPC UA defines for it, for example Data Access (DA), Historical Data Access (HDA), and Alarms & Events (AE) or Alarms & Conditions.
For development, you can use the packages Opc.UaFx.Client and Opc.UaFx.Advanced. The class Opc.UaFx.Client.Licenser unlocks the client interfaces. You can also purchase the OPC Classic add-on for this license.
Server: OPC UA Server SDK
A server license lets you use the interfaces that the SDK provides exclusively for server development. The SDK supports OPC UA (Unified Architecture) and all server facets that OPC UA defines for it, for example Data Access (DA), Historical Data Access (HDA), and Alarms & Events (AE) or Alarms & Conditions.
For development, you can use only the package Opc.UaFx.Advanced. The class Opc.UaFx.Server.Licenser unlocks the server interfaces.
Bundle: OPC UA SDK (Client & Server)
A bundle license lets you use the interfaces that the SDK provides for client and for server development. The SDK supports OPC UA (Unified Architecture) and all client and server facets that OPC UA defines for it, for example Data Access (DA), Historical Data Access (HDA), and Alarms & Events (AE) or Alarms & Conditions.
For client development, you can use the package Opc.UaFx.Client or the package Opc.UaFx.Advanced. For server development, you can use only the package Opc.UaFx.Advanced. The class Opc.UaFx.Licenser unlocks the client and server interfaces. You can also purchase the OPC Classic add-on for this license.
OPC Classic add-on
With the OPC Classic add-on, you can develop client applications for OPC Classic. For this, the client interfaces use an internal wrapper server for OPC Classic. The add-on is supported on Windows only, because OPC Classic uses the Microsoft DCOM interfaces for communication between client and server. The target system also needs the OPC Classic runtime of the OPC Foundation (see OPC Classic runtime).
For client development with OPC Classic, you can use only the package Opc.UaFx.Advanced. With a client license with the OPC Classic add-on, the class Opc.UaFx.Client.Licenser unlocks the client interfaces for OPC Classic. With a bundle license with the OPC Classic add-on, the class Opc.UaFx.Licenser does.
License key
How it works
After you purchase the license, you receive a license key that unlocks the interfaces and options you purchased. The license key is an encoded, contiguous string. Enter it in your application through the LicenseKey property of the matching Licenser class. The interfaces and options you purchased are available only once the Licenser class has received a valid license key.
If a bundle license key is entered through Opc.UaFx.Licenser, the SDK checks against this license only. A key entered in addition through Opc.UaFx.Client.Licenser or Opc.UaFx.Server.Licenser is then ignored. The LicenseInfo property returns which license the SDK uses. The page Set up the license describes how to enter the key and check the license at runtime.
Contents of the license key
Your license key contains all information about the license you purchased. This includes the data of the licensee and the licensor, the serial number, the product information, and the product features and options. It also contains the intended use, together with data on the term, the deployment, the validity, and the end of support. Our products use this information to unlock the functions you purchased.
Validity check
The SDK checks the validity of a license at runtime. For this, it does not use any remote services or similar interfaces that go beyond the local hardware. Apart from hardware-bound licenses, it uses no other parameters for validation. Whether you can use a particular version of the product follows from comparing its release date with the end-of-support date.
Passing on the license key
The license key is the proof of the license agreement that Traeger and you have concluded for using a product with the functions you purchased. Passing on the license key therefore amounts to sublicensing. The license agreement does not provide for sublicensing, and the right to sublicense belongs exclusively to the licensor. Using a wrapper product and passing it on to third parties also amounts to sublicensing and is therefore also prohibited.
Protection in the application
You receive the license key as a contiguous, encoded string. Strings embedded in an application can always be read from the application's memory and thus copied. Every other method can be transferred in the same way, for example branding the product for a licensee or providing a license file. This is why providing the license as a string is common practice. Its use can only be ensured through trust and random checks.
Measures against passing on the key
Under the license agreement, the customer is obliged to take all technically reasonable measures to secure the license key and to prevent it from being passed on to third parties. The licensor neither prescribes requirements nor makes recommendations for such measures. If you already obfuscate an application, you can also obfuscate the license key without restriction and embed it encrypted in the application resources like other strings. Less technical measures can also protect against passing on the key. One such option is to prohibit, in your own license agreements, reverse engineering of your products by their users.
Negligent disclosure
The licensee is responsible for keeping the license key confidential. Obviously (deliberately) passing on the license to third parties breaches the license terms and leads to the consequences described there. If a license key becomes publicly known, its information can be used to identify the original licensee and hold them responsible. Negligence exists in particular if the license key is stored in (easily) publicly accessible places. These include, for example, public repositories, download pages, forums, social media, file-sharing networks, and similar platforms.
Checks by Traeger
Through the licensee information it contains, a license key can be traced back to the real licensee at any time. This makes it possible to check whether the license is used validly. We also check license rights at random for support requests. While we verify the contact data of the person asking, our support may ask for further information. To help us process your request faster, we recommend that you send the serial number of the license with it or have it ready.

