# License setup

Choose one of the following three license setup options based on your deployment model:

<table><thead><tr><th width="249">Deployment Model</th><th width="191">Internet Connectivity</th><th width="267">Recommended Option</th></tr></thead><tbody><tr><td>Fixed or dynamic configuration</td><td>Available</td><td><a href="#cloud-license-service">Cloud license service</a></td></tr><tr><td>Fixed configuration with known servers</td><td>Not Available</td><td><a href="#node-locked-license-file">Node-locked license file</a></td></tr><tr><td>Dynamic configuration with containers or Kubernetes</td><td>Not Available</td><td><a href="#local-license-server">Local license server</a></td></tr></tbody></table>

## Cloud license service

Use a cloud license service (CLS) to run Pentaho software on machines that have internet connectivity.

### When to choose a CLS <a href="#when-to-choose-cls" id="when-to-choose-cls"></a>

Choose a CLS if your environment meets the following conditions:

* Has stable outbound internet connectivity.
* Does not require locally managed license files or licensing infrastructure.

### How CLS works <a href="#how-it-works" id="how-it-works"></a>

1. You receive a license URL in an activation email from Pentaho Support.
2. You apply the license URL to activate your Pentaho software.
3. Pentaho validates the license online when you startup Pentaho software and during scheduled checks.

### Apply your license

For instructions on applying a license URL from a CLS to activate your Pentaho software, see [Apply a license URL](#apply-a-license-url).

## Node-locked license file

Use a node-locked license to run Pentaho software fully offline. A node-locked license ties Pentaho software to a single designated node, which can be a physical or virtual machine.

### When to choose a node‑locked license <a href="#when-to-choose-node-locked" id="when-to-choose-node-locked"></a>

* Your systems are in a *locked‑down network* with no or limited internet access.
* Your infrastructure is *static* (no frequent hardware changes, no ephemeral instances).

### How a node-locked license works <a href="#how-it-works.1" id="how-it-works.1"></a>

1. You retrieve the `<hostid>` for the node where you installed Pentaho software.
2. You provide the `<hostid>` to Pentaho Support.&#x20;
3. Pentaho Support uses the `<hostid>` to generate a license file that is tied to the node and specifies the licensed features and CPU core count.&#x20;
4. Pentaho Support sends the node-locked license file to you.&#x20;
5. You apply the node-locked license file to activate your Pentaho software on the associated node.

{% hint style="info" %}
**Note**: A node-locked license file can be used only on the associated node. To install Pentaho on another node, you must obtain a new license file.&#x20;
{% endhint %}

### Apply your license

For instructions on applying a node-locked license to activate your Pentaho software, see [Apply a node-locked license](#how-it-works.1-1).

## Local license server

Use a local license server (LLS) if your environment cannot reach the CLS and node-locked license files are impractical due to dynamic deployments.

{% hint style="info" %}
**Note**: An LLS cannot be deployed within a Docker container.
{% endhint %}

### Why an LLS is needed <a href="#why-its-needed" id="why-its-needed"></a>

In containerized or orchestrated deployments such as Docker or Kubernetes:

* Containers or nodes are frequently recreated and do not have a persistent identity.
* Hardware identifiers are transient, which makes node-locked licensing unsuitable.
* Capacity scales dynamically based on workload, which requires flexible license allocation.

### When to choose an LLS <a href="#when-to-choose-lls" id="when-to-choose-lls"></a>

* Your environment cannot reach the CLS.
* You run Pentaho instances in containers or Kubernete&#x73;**.**
* Your environment is elastic, adding or removing capacity frequently.
* You cannot use a node-locked license but still need offline licensing.

### How an LLS works <a href="#how-it-works.2" id="how-it-works.2"></a>

1. You deploy and activate an LLS in your environment.&#x20;
2. Your Pentaho instances connect to the LLS to obtain a license that specifies the licensed features and CPU core count. When you stop or remove a Pentaho instance, the license is made available for other Pentaho instances.&#x20;

### Apply your license

For instructions on applying a license URL from an LLS to activate your Pentaho software, see [Apply a license URL](#apply-a-license-url).

### Install and manage an LLS

The LLS manages Pentaho license entitlements and related admin tasks and is deployed within your environment.

During setup, you get a license URL that products use to connect. Example: `http://<server_ip_address>:7070/api/1.0/instances/~`.

To avoid downtime, consider configuring license server failover to a backup license server. See [Revenera License Server Failover](https://docs.revenera.com/fne/2022_02/adminguide/Content/helplibrary/License_Server_Failover.htm#lagfunctionality_2657120275_1032675).

#### Requirements for an LLS

* CPU: 2 GHz, 2 cores
* RAM: 4 GB
* Disk: 200 MB
* Set `JAVA_HOME`.
* Open port `7070`.

You also need:

* Linux: `sudo` privileges for installation and service management.
* Windows: Administrator privileges for service management.

If you enable SSL, open port `1443`. See [Set up a self-signed certificate for an LLS](#set-up-a-self-signed-certificate-for-an-lls).

#### Install an LLS on Linux

To use Pentaho software, a user must have a valid license in a CLS or LLS that can be verified by the license manager.

If you cannot access a cloud license service, install an LLS behind your firewall.

The LLS is a command-line tool. It activates acquired licenses and performs administrative tasks.

You can install the LLS on the same server or VM that hosts the Pentaho Server. It requires limited resources.

**Before you begin**

If you are installing on Red Hat Linux with FIPS mode enabled, configure Java:

* [Configuring Red Hat build of OpenJDK 11 on RHEL with FIPS](https://docs.redhat.com/en/documentation/red_hat_build_of_openjdk/11/html-single/configuring_red_hat_build_of_openjdk_11_on_rhel_with_fips/index)
* [Configuring Red Hat build of OpenJDK 17 on RHEL with FIPS](https://docs.redhat.com/en/documentation/red_hat_build_of_openjdk/17/html-single/configuring_red_hat_build_of_openjdk_17_on_rhel_with_fips/index)

**Install an LLS and activate license on Linux**

1. Download the LLS file from the [Support Portal](https://support.pentaho.com/hc/en-us).
   1. Sign in with the support credentials from your Pentaho Welcome Packet.
   2. In the Pentaho card, select **Download**.
   3. In the **11.0** list, select **Pentaho 11.0 GA Release**.
   4. Scroll to the bottom of the release page.
   5. Go to `Utilities and Tools/Local License Server`.
   6. Download the license server file, `enterprise-local-license-server-11.0.0.0-<build version>.tar.gz.`
2. Set permissions for the license server.
   * For `enterprise-local-license-server-11.0.0.0-<build version>.tar.gz`:

     <pre class="language-shellscript" data-overflow="wrap"><code class="lang-shellscript">chmod 777 enterprise-local-license-server-11.0.0.0-&#x3C;build_version>.tar.gz
     </code></pre>
3. Extract the `enterprise-local-license-server-11.0.0.0-<build_version>.tar.gz` file:
   * <pre class="language-shellscript" data-overflow="wrap"><code class="lang-shellscript">tar -xvzf enterprise-local-license-server-11.0.0.0-&#x3C;build_version>-linux-&#x3C;jdk_version>.tar.gz -C &#x3C;destination_folder>
     </code></pre>
4. Go to the server directory.

   <pre class="language-shellscript" data-overflow="wrap"><code class="lang-shellscript">cd /&#x3C;destination_folder>/enterprise-local-license-server/server
   </code></pre>
5. Run the installer.
   * If Java can use the default temp directory:

     ```shellscript
     sudo ./install-systemd.sh
     ```
   * If access to Java's temp directory is restricted:

     <pre class="language-shellscript" data-overflow="wrap"><code class="lang-shellscript">sudo ./install-systemd.sh --tmpdir=&#x3C;full_path_to_temp_directory>
     </code></pre>

     You can also configure this later. See [Change the Java temporary directory on Linux](#change-the-java-temporary-directory-on-linux).
6. If prompted with `Install VMUUID license daemon?`, choose:

   * `y` for a VM
   * `n` for physical hardware

   <div data-gb-custom-block data-tag="hint" data-style="info" class="hint hint-info"><p><strong>Note:</strong> This prompt can appear for Java version <code>2025.02.0</code> or newer.</p></div>
7. Start the service.

   <pre class="language-shellscript" data-overflow="wrap"><code class="lang-shellscript">sudo systemctl start flexnetls-pentaho
   </code></pre>
8. Go to the enterprise admin tools directory.

   <pre class="language-shellscript" data-overflow="wrap"><code class="lang-shellscript">cd /&#x3C;destination_folder>/enterprise-local-license-server/enterprise
   </code></pre>
9. Change the admin password.

   <pre class="language-shellscript" data-overflow="wrap"><code class="lang-shellscript">./flexnetlsadmin.sh -server http://&#x3C;server_ip_address>:7070/api/1.0/instances/~ -authorize &#x3C;defaultAdminName> {&#x3C;defaultAdminPassword>|-&#x3C;passwordConsoleInput>} -users -edit admin {&#x3C;newAdminPassword>!|-&#x3C;passwordConsoleInput>}
   </code></pre>

   Default admin credentials are in `producer-settings.xml`:

   * Username: `admin`
   * Password: `Password!01`

   For details, see `FNE_LicenseServerAdminGuide.pdf` in `/enterprise-local-license-server/documentation`.
10. Verify status:
    1. Verify the `systemd` status:

       <pre class="language-shellscript" data-overflow="wrap"><code class="lang-shellscript">sudo systemctl -l status flexnetls-pentaho
       </code></pre>
    2. Verify the FlexNet server status:

       <pre class="language-shellscript" data-overflow="wrap"><code class="lang-shellscript">./flexnetlsadmin.sh -authorize admin &#x3C;password> -server http://&#x3C;server_ip_address>:7070/api/1.0/instances/~ -status
       </code></pre>
11. Activate licenses using the activation ID emailed by Hitachi Vantara:

    <pre class="language-shellscript" data-overflow="wrap"><code class="lang-shellscript">./flexnetlsadmin.sh -authorize &#x3C;admin_name> &#x3C;password> -server http://&#x3C;server_ip_address>:7070/api/1.0/instances/~ -activate -id &#x3C;activation_id> -count &#x3C;number_of_entitlements_to_activate>
    </code></pre>

    `<number_of_entitlements_to_activate>` must be an integer. It must be less than or equal to the purchased quantity.

    <div data-gb-custom-block data-tag="hint" data-style="info" class="hint hint-info"><p><strong>Note</strong>: If the license server cannot reach the back office URL, use <a href="#activate-offline-entitlements">Activate offline entitlements</a>.</p></div>

**Verify activated licenses on Linux**

Use this command to confirm what you activated:

{% code overflow="wrap" %}

```shellscript
./flexnetlsadmin.sh -authorize admin <password> -server http://<server_ip_address>:7070/api/1.0/instances/~ -licenses -verbose
```

{% endcode %}

For instructions on applying a license from your LLS, see [Apply a license URL](#apply-a-license-url).

#### Install an LLS on Windows

To use Pentaho software, a user must have a valid license in a CLS or LLS that can be verified by the license manager.

If you cannot access a cloud license service, install an LLS behind your firewall.

The LLS is a command-line tool. It activates acquired licenses and performs administrative tasks.

You can install the LLS on the same server or VM that hosts the Pentaho Server. It requires limited resources.

**Install an LLS and activate license on Windows**

1. Download the LLS file from the [Support Portal](https://support.pentaho.com/hc/en-us).
   1. Sign in with the support credentials from your Pentaho Welcome Packet.
   2. In the Pentaho card, select **Download**.
   3. In the **11.x** list, select **Pentaho 11.0 GA Release**.
   4. Scroll to the bottom of the release page.
   5. Go to `Utilities and Tools/Local License Server`.
   6. Download the license server file, `enterprise-local-license-server-11.0.0.0-<build_version>.zip`.
2. Unzip the file to your install folder. Example: `<installation_path>\enterprise-local-license-server-<pentaho_version>-<build_version>`.
3. Go to the unzipped folder.
4. Install the license server as a Windows service:
   1. Go to `<installation_path>\enterprise-local-license-server\server`.
   2. Run:

      <pre class="language-shellscript" data-overflow="wrap"><code class="lang-shellscript">flexnetls.bat -install
      </code></pre>
5. Start the service:

   <pre class="language-shellscript" data-overflow="wrap"><code class="lang-shellscript">flexnetls.bat -start
   </code></pre>
6. Change the admin password:
   1. Go to `<installation_path>\enterprise-local-license-server\enterprise`.
   2. Run:

      <pre class="language-shellscript" data-overflow="wrap"><code class="lang-shellscript">flexnetlsadmin -server http://&#x3C;server_ip_address>:7070/api/1.0/instances/~ -authorize admin &#x3C;old_password> -users -edit admin &#x3C;new_password>
      </code></pre>

      Default admin credentials are in `producer-settings.xml` in `<installation_path>\enterprise-local-license-server\server`:

      * Username: `admin`
      * Password: `Password!01`

      For details, see `FNE_LicenseServerAdminGuide.pdf` in `/enterprise-local-license-server/documentation`.
7. Verify status:
   1. Verify the license server:

      <pre class="language-shellscript" data-overflow="wrap"><code class="lang-shellscript">flexnetls.bat -status
      </code></pre>

      If the server is running, it reports `Service running`.
   2. Run `services.msc`.
   3. Confirm that `FlexNet License Server - <admin_name>` is started.
8. Activate licenses using the activation ID emailed by Hitachi Vantara:
   1. Go to `<installation_path>\enterprise-local-license-server\enterprise`.
   2. Run:

      <pre class="language-shellscript" data-overflow="wrap"><code class="lang-shellscript">flexnetlsadmin.bat -authorize &#x3C;admin_name> &#x3C;password> -server http://&#x3C;server_ip_address>:7070/api/1.0/instances/~ -activate -id &#x3C;activation_id> -count &#x3C;number_of_entitlements_to_activate>
      </code></pre>

**Verify activated licenses on Windows**

Use these commands:

* Server status:

  <pre class="language-shellscript" data-overflow="wrap"><code class="lang-shellscript">flexnetlsadmin.bat -authorize admin &#x3C;password> -server &#x3C;licenseServer_baseURL> -status
  </code></pre>
* Activated licenses:

  <pre class="language-shellscript" data-overflow="wrap"><code class="lang-shellscript">flexnetlsadmin.bat -authorize admin &#x3C;password> -server &#x3C;licenseServer_baseURL> -licenses -verbose
  </code></pre>

For instructions on applying a license from your LLS, see [Apply a license URL](#apply-a-license-url).

#### Administrative commands and files for license management

You can use CLI commands to perform basic license management operations.

{% hint style="info" %}
**Note**: If security is enabled (it is enabled by default), include credentials with each command:

```shellscript
-authorize admin <password>
```

{% endhint %}

Default credentials:

* Username: `admin`
* Password: `Password!01`

**Logs for license management**

| File                 | Location                                 | Description                  |
| -------------------- | ---------------------------------------- | ---------------------------- |
| `access_request.log` | `/var/opt/flexnetls/<identityName>/logs` | Server endpoint request logs |
| `flexnetls.log`      | `/var/opt/flexnetls/<identityName>/logs` | Server logs                  |

**Common commands for license management**

| Command                                                                                                                          | Description                 |
| -------------------------------------------------------------------------------------------------------------------------------- | --------------------------- |
| `./flexnetlsadmin.sh -authorize admin <password> -server http://<server_ip_address>:7070/api/1.0/instances/~ -status`            | Check service status        |
| `./flexnetlsadmin -authorize admin <password> -server http://<server_ip_address>:7070/api/1.0/instances/~ -config`               | Check server configuration  |
| `./flexnetlsadmin.sh -authorize admin <password> -server http://<server_ip_address>:7070/api/1.0/instances/~ -licenses -verbose` | List activated entitlements |
| `./flexnetlsadmin.sh -authorize admin <password> -server <licenseServer_baseURL> -activate -id <activation_id> -count <count>`   | Activate entitlements       |

**Other files and commands for license management**

| File/command                       | Location                 | Description                                    |
| ---------------------------------- | ------------------------ | ---------------------------------------------- |
| `local-configuration.yaml`         | `/opt/flexnetls/pentaho` | LLS configuration                              |
| `producer-settings.xml`            | `/opt/flexnetls/pentaho` | Server configuration set up by Hitachi Vantara |
| `sudo systemctl daemon-reload`     | Not applicable           | Run after you update the service configuration |
| `sudo systemctl stop flexnetls`    | Not applicable           | System-wide command                            |
| `sudo systemctl enable flexnetls`  | Not applicable           | System-wide command                            |
| `sudo systemctl disable flexnetls` | Not applicable           | System-wide command                            |
| `sudo systemctl status flexnetls`  | Not applicable           | System-wide command                            |

#### Set up a self-signed certificate for an LLS

You can configure self-signed certificate (SSL) for the LLS.

{% hint style="info" %}
**Note**: Refer to [Components Reference](https://docs.pentaho.com/install/components-reference) for the supported Java version.
{% endhint %}

Open port `1443` for communication with the LLS.

1. Go to the Java security folder:

   <pre class="language-shellscript" data-overflow="wrap"><code class="lang-shellscript">cd /usr/lib/jvm/&#x3C;java_installation_folder>/lib/security
   </code></pre>

   Example: `/usr/lib/jvm/java-<version>-openjdk-amd64/lib/security`
2. Generate the self-signed certificate:

   <pre class="language-shellscript" data-overflow="wrap"><code class="lang-shellscript">sudo keytool -genkey -keyalg RSA -alias selfsigned -keystore keystore.jks -storepass changeit -validity 3600 -ext san=ip:&#x3C;ip_address>,ip:&#x3C;local_host>
   </code></pre>
3. Export the certificate:

   <pre class="language-shellscript" data-overflow="wrap"><code class="lang-shellscript">sudo keytool -export -alias selfsigned -keystore keystore.jks -rfc -file server_cert.cert
   </code></pre>
4. Import the certificate:

   <pre class="language-shellscript" data-overflow="wrap"><code class="lang-shellscript">sudo keytool -import -trustcacerts -keystore /usr/lib/jvm/java-&#x3C;version>-openjdk-amd64/lib/security/cacerts -storepass changeit -alias selfsigned -file server_cert.cert
   </code></pre>
5. Update `/opt/flexnetls/pentaho/local-configuration.yaml`:

   <pre class="language-yaml" data-overflow="wrap"><code class="lang-yaml"># HTTPS server mode
   https-in:
     # Set to true to enable
     enabled: false
     # HTTPS listening port
     port: 1443
     # Path to keystore
     keystore-path: &#x3C;path-to-your-keystore>
     # Keystore password. You can obfuscate this with java -jar flexnetls.jar -password &#x3C;your-password>
     keystore-password: changeit

     # Choice of TLS cipher suites. One of MODERN, COMPATIBLE or WEAK.
     tlsCipherSuites: COMPATIBLE

   # HTTPS client mode. You generally don't need to specify this, unless you have an in-house CA chain.
   https-out:
     # Set to true to enable
     enabled: false
     # Path to truststore containing server certificate.
     truststore-path: &#x3C;path-to-your-truststore>
     # Truststore password. You can obfuscate this with java -jar flexnetls.jar -password &#x3C;your-password>
     truststore-password: changeit
     # Switch off if you're having host validation problems (not recommended)
     host-verify: true
     # Set to true if you're using self-signed certificates (not recommended)
     self-signed: false
   </code></pre>

SSL is now configured.

#### Activate offline entitlements

Use offline activation if a security restriction prevents the license server from reaching the back-office URL.

1. Obtain the activation ID from the sales support team.
2. Create a request file (`capabilityRequest.bin`) on the license server:

   <pre class="language-shellscript" data-overflow="wrap"><code class="lang-shellscript">cd /&#x3C;destination_folder>/enterprise-local-license-server/enterprise

   # Linux:
   ./flexnetlsadmin.sh -server http://&#x3C;license_server_ip_address>:7070/api/1.0/instances/~ -authorize admin Password!01 -activate -id &#x3C;activation_id> -count &#x3C;number_of_entitlements_to_activate> -o capabilityRequest.bin

   # Windows:
   ./flexnetlsadmin.bat -server http://&#x3C;license_server_ip_address>:7070/api/1.0/instances/~ -authorize admin Password!01 -activate -id &#x3C;activation_id> -count &#x3C;number_of_entitlements_to_activate> -o capabilityRequest.bin
   </code></pre>
3. Send `capabilityRequest.bin` to Pentaho customer support.

   Customer support generates `capabilityResponse.bin` and sends it back.
4. Load `capabilityResponse.bin`:
   * Linux:

     <pre class="language-shellscript" data-overflow="wrap"><code class="lang-shellscript">./flexnetlsadmin.sh -server http://&#x3C;license_server_ip_address>:7070/api/1.0/instances/~ -authorize admin Password!01 -activate -load capabilityResponse.bin
     </code></pre>
   * Windows:

     <pre class="language-shellscript" data-overflow="wrap"><code class="lang-shellscript">./flexnetlsadmin.bat -server http://&#x3C;license_server_ip_address>:7070/api/1.0/instances/~ -authorize admin Password!01 -activate -load capabilityResponse.bin
     </code></pre>
5. Verify activated licenses:

   <pre class="language-shellscript" data-overflow="wrap"><code class="lang-shellscript">./flexnetlsadmin.sh -authorize admin &#x3C;password> -server http://&#x3C;server_ip_address>:7070/api/1.0/instances/~ -licenses -verbose
   </code></pre>

Your entitlements are now activated.

#### Change the Java temporary directory on Linux

The LLS must be able to access Java's temporary directory.&#x20;

If access is restricted, create a new temp directory and configure the service to use it.

1. Create a new temp directory:

   <pre class="language-shellscript" data-overflow="wrap"><code class="lang-shellscript">sudo mkdir /&#x3C;temp_directory_name>
   sudo chmod 777 /&#x3C;temp_directory_name>
   sudo chown root:root /&#x3C;temp_directory_name>
   </code></pre>
2. Stop the service:

   <pre class="language-shellscript" data-overflow="wrap"><code class="lang-shellscript">sudo systemctl stop flexnetls-pentaho
   </code></pre>
3. Open the service config file:

   <pre class="language-shellscript" data-overflow="wrap"><code class="lang-shellscript">sudo vi /etc/systemd/system/flexnetls-pentaho.service.d/flexnetls.conf
   </code></pre>
4. Add `-Djava.io.tmpdir=<full_path_to_temp_directory>` to the end of the `JVMOPTS` value.

   Example:

   `Environment="JVMOPTS=... -Djava.io.tmpdir=/<full_path_to_temp_directory>"`
5. Save the file.
6. Verify SELinux is permissive.

   If it is not permissive, see [Change SELinux to permissive mode](https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/8/html/using_selinux/changing-selinux-states-and-modes_using-selinux#changing-to-permissive-mode_changing-selinux-states-and-modes).
7. Reload and restart the service:

   <pre class="language-shellscript" data-overflow="wrap"><code class="lang-shellscript">sudo systemctl daemon-reload
   sudo systemctl start flexnetls-pentaho
   </code></pre>

#### Uninstall an LLS on Linux

To uninstall the LLS from Linux, complete these steps.

{% hint style="warning" %}
**Important**: If a device is associated with your machine in FlexNet Operations and you have activated entitlements on that device, you must set the device state to `obsolete` before reinstalling. Otherwise, activation might fail due to an activation ID mismatch.
{% endhint %}

1. Stop the service:

   <pre class="language-shellscript" data-overflow="wrap"><code class="lang-shellscript">sudo systemctl stop flexnetls-pentaho
   </code></pre>
2. Disable auto-start:

   <pre class="language-shellscript" data-overflow="wrap"><code class="lang-shellscript">sudo systemctl disable flexnetls-pentaho
   </code></pre>
3. Remove service files:

   <pre class="language-shellscript" data-overflow="wrap"><code class="lang-shellscript">sudo rm /etc/systemd/system/flexnetls-pentaho.service
   sudo rm -r /etc/systemd/system/flexnetls-pentaho.service.d
   </code></pre>
4. Optional clean reinstall cleanup:
   * Trusted storage: `rm -rf /var/opt/flexnetls/pentaho`
   * Logs: `rm -rf /var/opt/flexnetls/pentaho/logs`

#### Uninstall an LLS on Windows

To uninstall the LLS from Windows, complete these steps.

1. Stop the service:

   <pre class="language-shellscript" data-overflow="wrap"><code class="lang-shellscript">flexnetls.bat -stop
   </code></pre>
2. Uninstall the service:

   <pre class="language-shellscript" data-overflow="wrap"><code class="lang-shellscript">flexnetls.bat -uninstall
   </code></pre>
3. Clean up the service entry:

   <pre class="language-shellscript" data-overflow="wrap"><code class="lang-shellscript">sc delete FNLS-pentaho
   </code></pre>
4. Delete the files in the license server installation directory.
5. Optional clean reinstall cleanup:
   * Trusted storage: `C:\Windows\ServiceProfiles\NetworkService\flexnetls\pentaho` (`.ks`, `.db`, and `.0`)
   * Logs: `C:\Windows\ServiceProfiles\NetworkService\flexnetls\pentaho\logs`

{% hint style="info" %}
**Note:** Trusted storage and log file locations are defined by `server.trustedStorageDir` and `logging.directory`. Your server might use different paths.
{% endhint %}

## Apply a license

To use Pentaho software, you must apply a license that specifies the features and CPU core count that you are licensed to use on your physical or virtual machine. For instructions on applying a license, see one of the following sections:

* [Apply a license URL](#apply-a-license-url)

  Apply a license URL if you use Pentaho software with a CLS or LLS.
* [Apply a node-locked license](#how-it-works.1-1)

  Apply a node-locked license file to use Pentaho software fully offline on a single, designated physical or virtual machine.

### Apply a license URL

Apply a license URL to activate features and CPU core counts if you use Pentaho software with a CLS or LLS.

* [Apply a license URL using PUC](#apply-a-license-url-using-puc)
* [Apply a license URL using the PDI client](#apply-a-license-url-using-the-pdi-client)
* [Apply a licenses using the command line interface](#apply-licenses-using-the-command-line-interface)\\

{% hint style="info" %}
**Note**: You can use a node-locked license to run Pentaho fully offline.&#x20;
{% endhint %}

#### Apply a license URL using PUC

To use Pentaho software, you must install enterprise licenses that can be verified by your organization's license server. You can install licenses using the Pentaho User Console (PUC).

Before installing Pentaho Server licenses using PUC, you must complete the following prerequisites:

* Obtain the URL for requesting a license from the license server. Your organization might use the Pentaho license server or an LLS.
* Download the Pentaho Server to your environment.
* Verify that you have administration privileges.

Complete the following steps to install Pentaho Server licenses by using PUC.

1. Log in to the Pentaho User Console. See the **Pentaho Business Analytics** document for instructions on logging in to PUC.
2. If you do not have valid licenses, the **License** page appears the first time you log in.

   ![](https://2345962715-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqfaQ2p0JAZrP8b3cpM9a%2Fuploads%2Fgit-blob-9ed5a1ba674c7c6eb7716736586be88c48fd8f3f%2FPUC_Missing_Licenses_Notification.png?alt=media)
3. Click the plus sign (**+**) to open the Add License window.
4. Select **License Server**, enter either the cloud license service URL or the LLS URL, and then click **OK**.

   The URL for requesting a license from the LLS looks like the following example:

   ![](https://2345962715-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqfaQ2p0JAZrP8b3cpM9a%2Fuploads%2Fgit-blob-becb44ddad1d00511b4d64a4c0481bd0a4bb15b3%2FAdd_License_dialog.png?alt=media)
5. Review the license summary to see which components you are now entitled to use, and then click **Close**.

   ![](https://2345962715-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqfaQ2p0JAZrP8b3cpM9a%2Fuploads%2Fgit-blob-c59eacbf1f16b3bbbeacd9fe7499e7e11330f145%2FPentaho_License_Manager_available_licenses.png?alt=media)

#### Apply a license URL using the PDI client

To use Pentaho products, you must install enterprise licenses that can be verified by your organization's license server. You can install licenses using the PDI client.

Before installing licenses using the PDI client, you must complete the following prerequisites:

* Obtain the URL for requesting a license from the license server. Your organization might use the Pentaho license server or an LLS.
* Download the PDI client to your environment.

Complete the following steps to install your licenses using the PDI client (also called Spoon).

1. Start the PDI client.

   See the **Pentaho Data Integration** document for more information about the PDI client. If no valid license for the PDI client exists, the Pentaho License Manager dialog box appears.
2. In the Pentaho License Manager, click the plus sign (**+**) to open the Add License window.
3. Select the **License Server** option, enter either the cloud license service URL or the LLS URL, and then click **OK**.

   The URL for requesting a license from the LLS looks like the following example:

   ![](https://2345962715-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqfaQ2p0JAZrP8b3cpM9a%2Fuploads%2Fgit-blob-becb44ddad1d00511b4d64a4c0481bd0a4bb15b3%2FAdd_License_dialog.png?alt=media)
4. Review the license summary to see which components you are now entitled to use, and then click **Close**.

   ![](https://2345962715-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqfaQ2p0JAZrP8b3cpM9a%2Fuploads%2Fgit-blob-c59eacbf1f16b3bbbeacd9fe7499e7e11330f145%2FPentaho_License_Manager_available_licenses.png?alt=media)

#### Apply licenses using the command line interface

You can set the license path environment variable, or you can install, update, list, or remove license files.

#### Install or update license from the command line

To install or update license, follow the steps below.

1. Navigate to the `/license-installer/` directory where the Pentaho PDI tool is installed (the `license-installer` subfolder).
2. Run the license installation script as follows to see examples of how to use it:
   * Linux:

     <pre class="language-shellscript" data-overflow="wrap"><code class="lang-shellscript">install_license.sh --help
     </code></pre>
   * macOS:

     <pre class="language-shellscript" data-overflow="wrap"><code class="lang-shellscript">install_license.sh --help
     </code></pre>
   * Windows:

     <pre class="language-shellscript" data-overflow="wrap"><code class="lang-shellscript">install_license.bat --help
     </code></pre>

#### Set the license path environment variable

Pentaho Server maintains a license information file to track your license information. This file is named `.elmLicInfo.plt`. The default location of the license information file is the `.pentaho` folder in the Pentaho user account's home directory. If you need to change this location you must create a `PENTAHO_LICENSE_INFORMATION_PATH` system environment variable for your Pentaho user account and set it to the location where you want the license information file stored. It does not matter what location you choose; however, the location needs to be available to the account(s) that run the Pentaho Server.

**Set the license path environment variable on Linux**

Perform the following steps to set the environment variable for the license path in Linux.

1. Open the `/etc/environment` file with any text editor.
2. Add this line in a convenient place (changing the path if necessary):

   ```
   export PENTAHO_LICENSE_INFORMATION_PATH=/home/pentaho/.elmLicInfo.plt
   ```
3. Log out and log back into the operating system for the change to take effect.
4. Verify that the variable is properly set using the following command.

   ```shellscript
   env | grep PENTAHO_LICENSE_INFORMATION_PATH
   ```

The `PENTAHO_LICENSE_INFORMATION_PATH` variable is now set.

**Set the license path environment variable on Windows**

Perform the following steps to set the environment variable for the license path in Windows.

1. Under Windows settings, locate and open the Windows system environment variables file for editing.
2. In the System Variable section, click **New**.

   A dialog box will ask for a variable name and value.
3. Type `PENTAHO_LICENSE_INFORMATION_PATH` into the **Name** field and specify the directory where you intend to store license information in **Value**.&#x20;
4. In the parent window, click **Apply Changes**.
5. Restart your computer for the change to take effect.
6. Verify that the variable is properly set, using the following command at the command prompt:

   ```shellscript
   echo %PENTAHO_LICENSE_INFORMATION_PATH%
   ```

The `PENTAHO_LICENSE_INFORMATION_PATH` variable is now set.

If you run Tomcat automatically as a Windows service, you must also configure it to run on a Windows account that has access to the location of the `.elmLicInfo.plt` file. This means that if you have set `PENTAHO_LICENSE_INFORMATION_PATH` then the account must have access to the location specified by `PENTAHO_LICENSE_INFORMATION_PATH` .

### Apply a node-locked license <a href="#how-it-works.1" id="how-it-works.1"></a>

To run Pentaho software fully offline, you must apply a node-locked license that ties Pentaho software to a single designated node, which can be a physical or virtual machine.

{% stepper %}
{% step %}

#### **Provide the host ID to Pentaho Support to obtain a license file**

1. On the node where you installed Pentaho software, open a command prompt or shell.
2. Navigate to `%PENTAHO_HOME%/license-installer`.
3. Retrieve the `<hostid>` for the node by running the command for your operating system:

   * For Windows:

     ```shellscript
     install-license.bat hostid
     ```
   * For Linux or MacOS:

     ```shellscript
     install-license.sh hostid
     ```

   The response displays the following message: `Please provide the following hostId to your support/sales team: <hostid>`
4. Provide the `<hostid>` to Pentaho Support.&#x20;

Pentaho Support uses the `<hostid>` to generate a license file that is tied to the node and specifies the licensed features and CPU core count. Pentaho Support then provides the license file to you.
{% endstep %}

{% step %}

#### Place the license file in the default Pentaho directory

On the node where you installed Pentaho software, place the `license.bin` file that you received from Pentaho Support in the default directory:

* For Windows:  &#x20;`%USER_HOME%/.pentaho`
* For Linux and MacOS: `%USER_HOME%\.pentaho`

{% hint style="info" %}
**Note:** If you place the license file in a custom location, you must update the startup script with the full path to the license file.
{% endhint %}
{% endstep %}

{% step %}

#### Set environment variables in the startup script

1. Open your startup script in a text editor.   &#x20;Pentaho software comes with the following startup scripts:

   For Windows:

   * Pentaho Data Integration (PDI) Client (Spoon, Pan, Kitchen, and Carte): `<PENTAHO_INSTALL_DIR>\data-integration\Spoon.bat`&#x20;
   * Pentaho Server: `<PENTAHO_INSTALL_DIR>\pentaho-server\start-pentaho.bat`

   For Linux and MacOS:

   * PDI Client (Spoon, Pan, Kitchen, and Carte): `<PENTAHO_INSTALL_DIR>/data-integration/Spoon.sh`&#x20;
   * Pentaho Server: `<PENTAHO_INSTALL_DIR>/pentaho-server/start-pentaho.sh`
2. Add the `pentaho.license.filetype` environment variable and set it to `NODE_LOCKED`.&#x20;
3. (Optional) To specify a custom location for the license file, add the `pentaho.license.file` environment variable and set it to the full path of the license file.
   {% endstep %}

{% step %}

#### Restart and review license entitlements

1. Restart Spoon, Pan, Kitchen, Carte, and the Pentaho Server for the license to take effect.
2. To see which components you are now entitled to use, review the license summary in the Pentaho User Console or the PDI client (Spoon).

You can now operate Pentaho fully offline.
{% endstep %}
{% endstepper %}
