Skip to content

Configuration Changes

This page provides you with instructions on version-specific configuration changes that you need to implement when updating your UPPS!E version from a prior release. If you are skipping versions, ensure that all configuration changes of each intermediate version was also performed.

Version 1.11.0

Supports Polarion 2410

UPPS!E now supports Polarion 2410.

Required polarion.properties changes

Add following configuration to your polarion.properties file if you use Polarion 2410:

ini
# Enable limited sql commands which are by default disabled in Polarion 2410 and are required by the UPPS! Extensions.
com.polarion.platform.sql.restrictedQueryCommandsLevel=NONE

SALT licensing support

UPPS!E now includes support for Polarion installations that are licensed with SALT. Be aware that due to technical challenges, the Grace Period granted by UPPS!E licenses is not supported with SALT licenses. Grace period is a timeframe where an UPPS!E license is still considered valid for 30 days. The grace period starts from the date where the license factor of a Polarion license is not covered by the license factor granted by the UPPS!E license. This usually occurs if Polarion is (re-)activated using a Polarion license with a higher license factor.

Version 1.10.1

Support dropped for Polarion releases older than 2304

Due to the changed Polarion development baseline for UPPS!E, only Polarion releases 2304 to 2404 are supported.

Intelligent Navigator feature "Navigation Optimizer" now experimental

Due to technical challenges in Polarion as well as the different browser behaviors, the Navigation Optimizer feature is now in experimental state. This leads to following user-observable changes:

  • The UPPS!E IN user configuration option Enable Navigation Optimizer is disabled by default for new users.
  • If a user made changes to the user configuration in earlier releases and the Navigation Optimizer feature was enabled, it will stay enabled for that user.
  • Information about the experimental state of this feature has been added to the the UPPS!E IN user configuration menu.

Version 1.8.1

License Monitor configuration changes

Configurations related to the UPPS!E feature License Monitor were changed to implement the ability to show peak stats of concurrent licenses as well as to improve performance and security. If you deployed the License Monitor using the configuration from a previous release, then you need to follow the instructions of all following four sections.

Make a backup!

Before implementing any of the following configuration changes, create a backup of your database volume as the database table structure will be updated.

How to create database backup
  • Using the cli, change into the directory where the docker-compose.yml file of your deployed directus is located.
  • Stop the containers via docker compose stop (docker compose v2) or docker-compose stop (docker compose v1).
  • Create a copy of the data directory.
  • You may start the containers with docker compose start or docker-compose start.

You can then simply restore the backup by stopping the containers and swap the data with your backup.

1. Update docker compose configuration

This release ships with an updated docker compose configuration implementing the following:

  • Make the PostgreSQL container accessible to Polarion.
  • Update the directus image version to the newest release, 10.8.2.
  • Make the port-forwarding configuration more secure by only allowing access from localhost.
  • Remove unnecessary volumes configuration as file uploads with directus are not in use by UPPS!E.
  • Add a default PUBLIC_URL value to suppress a warning message in the directus logs.
  • Rename environment variable from CACHE_REDIS to REDIS due to directus version update.

Implement the changes as follows in your docker-compose.yml file.

Show docker-compose.yml changes
yml
services:
  database:
    container_name: database
    image: 'postgis/postgis:13-master'
    ports: 
      - '127.0.0.1:5431:5432'
    ...
  directus:
    container_name: directus
    image: directus/directus:9
    image: directus/directus:10.8.2
    ports:
      - '8055:8055'
      - '127.0.0.1:8055:8055'
    volumes: 
      - './uploads:/directus/uploads'
    environment:
      PUBLIC_URL: 'http://localhost:8055'
      TZ: ${TIMEZONE}
      ...
      CACHE_REDIS: 'redis://cache:6379'
      REDIS: 'redis://cache:6379'

If you deploy your containers with different host/port configurations, adapt accordingly.

In the cli, change into the directory of your compose file and recreate the containers via

sh
docker compose down
docker compose up -d
sh
docker-compose down
docker-compose up -d

2. Update database table structure

The database table structure will be updated via the directus API and requires a running directus container.

On the host that runs the directus container, create a file add-peak-column.js with following content.

Show add-peak-column.js content
js
/* Adapt according to your configuration */
const HOST = 'http://directus:8055';
const ADMIN_EMAIL = 'admin@directus.local.com';
const ADMIN_PASSWORD = 'your_password_here';

/* Do not change any of the following */
const LOGIN_URL = `${HOST}/auth/login`
const LM_HISTORY_DATA_COLLECTION_URL = `${HOST}/fields/lm_history_data`;
const LOGIN_REQUEST_DATA = { "email": ADMIN_EMAIL, "password": ADMIN_PASSWORD };
const CREATE_LM_HISTORY_DATA_FIELD_REQUEST_DATA = { "field": "peak", "type": "integer" };

async function fetchToken() {
    const tokenJsonPayload = await performJsonPost(LOGIN_URL, LOGIN_REQUEST_DATA);
    throwOnErrorsResponse(tokenJsonPayload);
    return tokenJsonPayload.data.access_token;
}

async function createLmHistoryDataField(token) {
    const creationResultJsonPayload = performJsonPost(
        LM_HISTORY_DATA_COLLECTION_URL,
        CREATE_LM_HISTORY_DATA_FIELD_REQUEST_DATA,
        { 'Authorization': `Bearer ${token}` }
    );
    throwOnErrorsResponse(creationResultJsonPayload);
}

async function performJsonPost(url, payload, headers = {}) {
    const mergedHeaders = Object.assign({ "Content-Type": "application/json" }, headers)
    const response = await fetch(url, {
        method: 'POST',
        headers: mergedHeaders,
        body: JSON.stringify(payload)
    });
    return response.json();
}

function throwOnErrorsResponse(payload) {
    if (payload?.errors) {
        const allErrorMessages = payload.errors.map(({ message }) => message ).join(",\n");
        throw new Error(allErrorMessages);
    }
}

async function run() {
    try {
        const token = await fetchToken();
        await createLmHistoryDataField(token);
        console.log("Successfully updated lm_history_data table");
    } catch(err) {
        console.error("Error(s) occurred during update attempt:", err.message);
    }
}

run();

Change the HOST, ADMIN_EMAIL and ADMIN_PASSWORD values according to your configuration if required. If you used the default provided configuration, the HOST and ADMIN_EMAIL require no change. The initial ADMIN_PASSWORD value is specified in the [DIRECTUS_FOLDER]/.env file.

Then, in the cli, change into the directory where the add-peak-column.js file was created and run following command.

powershell
docker run --rm --network container:directus -v .\add-peak-column.js:/add-peak-column.js node:20-alpine node /add-peak-column.js
sh
docker run --rm --network container:directus -v "$(pwd)/add-peak-column.js:/add-peak-column.js" node:20-alpine node /add-peak-column.js

3. Update polarion properties configuration

Add following properties to your polarion.properties configuration.

ini
eu.cipalpha.upps.licensemonitor.postgre.host=localhost:5431
eu.cipalpha.upps.licensemonitor.postgre.user=directus
eu.cipalpha.upps.licensemonitor.postgre.pw=sutcerid

If you deployed the database container with a different configuration, adapt your configuration accordingly. (Re-)Start Polarion to make the property changes effective.

4. Update license monitor scheduler configuration

The new default license monitor scheduler configuration is to trigger every 5 minutes in order to create a more precise statistical progression of license usage.

xml
<job
  cronExpression="0 */20 * * * ?"
  cronExpression="0 */5 * * * ?"
  disabled="false"
  id="upps.license.monitor.job"
  name="UPPS!E License Monitor Ticker"
  scope="system">
</job>