Technology/Installation

S 39

Please note: Since release 39.5.25 (min. DB 25.0.0, min. S 39.0.0) PLANTA provides all software components (except the Desktop Client) as container solutions. For the installation / operation of server versions from 39.0.0 onwards or the update to these versions, an OCI-compatible container runtime or platform, e.g. Docker, is required. For more information see Installation of PLANTA Project.

S 39.2.1 (manager)

Bugfixes

Key

Description

2803

In the manager's console output, the column indicating the session type now displays the actual type of the row again: MA for the master thread, CW for a web client session, and CL for a client session. Threads not associated with a session (e.g., Jetty or timer threads) now display GL. The Jetty request log (LinkWebService.log) is now written asynchronously. If the system is overloaded, individual lines are discarded.

2808

The new parameter planta__server__hibernate__connection__sendStringParametersAsUnicode allows you to specify the format in which the database driver passes strings to the database. This parameter is relevant only for SQL Server databases:

  • “true” (driver default): Each string parameter is sent to the server as NVARCHAR (Unicode).

  • “false” (default value in PLANTA): Strings are sent as VARCHAR (ANSI, server code page).

S 39.2.0 (worker)

Features

Key

Description

1002

The API call ppms.set_client_url(url) allows the browser URL in the web client to be set from the Customizing. The server only forwards the URL to the web client. This makes it possible to automatically display the deeplink URL in the address bar when a planning object is opened, so that users can copy it, share it, or save it as a bookmark. The URL must be a relative path (e.g. /deeplink/project/12345).

1326

When starting, the worker establishes the connection to the manager (session link). If this fails, the attempt is repeated up to a configurable maximum number of times, in each case after a configurable pause. This is configured via the new parameters --session_link_retry_max (maximum number of attempts, default value 60) and --session_link_retry_time (pause in seconds, default value 5). These parameters cannot be set via the ENV parameters in the manager and must be set explicitly on the worker. In the Helm chart, the values can be configured under worker.sessionLink.retryMax and worker.sessionLink.retryTime.

1624

A data field can now embed another module as a widget. The mc data field behavior displays the module that is stored in the DF configuration under ModuleControl. This allows components such as a chart or a dashboard element to be reused in several modules instead of being configured again for each module.

1688

Server-side Python scripts can pass a file directly to the logged-in user as a browser download via ppms.download_file(file_bytes, file_name). An active web client session is required, and its client must support the FileDownload command. Scripts without a web client session, for example in batch jobs or in the scheduler, receive the ppms.FileDownloadError error with the code NoClient.

1696

Action on data field change: For data fields with an input behavior (i, li, le, mi), the name of a method of the module subclass can be stored in the action ID (DI027481). The server calls this method automatically as soon as the user changes the value of the data field, either by entering a value or by selecting a list box entry. Actions such as rebuilding a chart after a different filter has been selected can thus be triggered without an additional button. The method is called on the subclass of the module to which the data field belongs and receives the changed data field as a parameter. Only methods of the module subclass are possible, no macro modules and no free functions.

1731

Modules with module class 3 are now always reported to the web client as a user menu. Previously, only the user menu stored in the skin was transferred as such, so that further user menu modules were not recognized as such by the client. On the server side, modules of class 3 continue to behave like ordinary modules. In particular, they have a panel and are not kept open permanently.

1875

Performance for the execution of Python and Jython functions has been improved by copying the Customizing directories once when the containers start.

1957

The Name Base MV parameter makes it possible to assign an individual name to the base module variant or to override the default name Base.

2161

Performance improvement for modules with filters on data fields: The filters now use existing database indexes. The result remains unchanged. This applies to Oracle, SQL Server, and PostgreSQL.

2260

First stage of the configuration matrix in the worker: A data area of the new class 12 links two axes and a fact table. The server displays their intersections as checkboxes.

2318

In addition to the total number of activities and the completed activities, the agile activity statistics pulse.get_card_statistics(task_ids, archived) now also return the number of overdue activities (marked in red). Open activities whose due date lies in the past are overdue.

Python API Parameters

1300

The API parameter Module.set_title(title) completely replaces the title of a module at runtime. Previously, Module.set_title_suffix(suffix) only allowed an addition to be appended. The title can also be set directly when opening the module via Module.open_module(title=...) so that it already appears in the first screen output. An empty title cancels the override again, and the setting applies to the current session only.

1570

The API parameters DataField.set_df_config(configuration) and DataFieldCustomizing.set_df_config(configuration) pass a configuration to the client as df_script_settings. The setting applies to all data fields that are assigned to the respective data field Customizing.

1686

The API parameter ppms.pdf_export(module_list, options) is now available. The specified modules are rendered by the web client and combined into a single PDF file. The output thus corresponds to the display in the browser and not to server-side PDF generation.

1700

The API parameter Panel.set_title(title) completely replaces the title of a panel at runtime, analogously to Module.set_title(title). Previously, only Panel.set_title_suffix(suffix) was available at panel level for an appended addition.

2211

The API parameter ppms.count_pulse_cards(task_ids, completed, archived) returns the number of agile activities for one or more tasks of the schedule. The Customizing no longer has to access internal agile tables via SQL, which makes evaluations independent of the internal schema.

Bugfixes

Key

Description

29

Fixed a bug where the utilization charts displayed incorrect values over the course of the day after several scheduling calculations. Previously, this could only be corrected by replanning.

1286

With splitting activated, the calculated task end could lie before the calculated task start in certain data constellations. Start and end dates are now calculated consistently in all cases.

1366

The issue where, with certain Customizing in connection with pre-events, the attempt to update DIs of other tables led to an exception has been fixed.

1416

PLANTA can now also be installed and updated in an environment with a read-only file system. For this purpose, the temporary files of the migration framework are stored in the directory that is configured via planta__server__writeable_path.

1544

In certain constellations, the remaining effort was not totaled in full in the load curves for week, month, quarter, and year, so that values could be missing. The totaling is now carried out correctly for all aggregation levels.

1546

Fixed a bug where the server did not check for the ProxyToken message while waiting for the web client connection. As a result, login via OIDC (e.g. Microsoft Entra) was not possible. The server now correctly checks for the ProxyToken message and performs the login accordingly.

1658

Performance improvement for SQL statements with a very large number of UUID parameters: The reduction via a temporary table now takes effect in all cases. This also eliminates the database error ORA-01795 with more than 1,000 UUID parameters.

1920

Logins without OIDC (e.g. LDAP or interactive) no longer hang: At session start, the server uses the new oidcEnabled attribute of the web client to determine whether it has to wait for a ProxyToken. It only waits if oidcEnabled="true".

2003

Boolean values of the worker configuration are now evaluated correctly: Only "1" and "true" enable, and only "0" and "false" disable. Other values such as "yes" or "on" result in the default value. We recommend checking the configuration values for deviating notations. An extended list of values applies in the manager, see key 307.

2031

On SIGTERM and SIGINT (e.g. docker stop), the worker now shuts down in a controlled manner instead of crashing: Connections are closed in an orderly fashion and the manager is informed. A time limit of 30 seconds by default (planta__server__session_shutdown_timeout) prevents the shutdown from hanging.

2115

The startup of the session is now recorded in full in the performance history (DT324, event ST/STARTUP): The start time is measured to the millisecond. Previously, it was only recorded to the second, which meant that start times of less than a second appeared as 0 ms or 1000 ms and were unusable for evaluations. In addition, the start record now contains the complete breakdown (database wait time, DTP selection, MTS setup, serialization, memory consumption, and so on) instead of only the total value, as is already the case for all other events of the performance history.

2141

The issue where a module with a virtual image data field in a grouping area caused the session to crash has been fixed.

2322

If a user without an assigned role logs in, the session is no longer ended without notice. Before the session is ended, a dialog is displayed stating that no role has been assigned to the user and that the administrator should be contacted.

2497

Newly inserted data records are now preserved. Previously, they were discarded internally in some cases and could not be saved, although they remained visible and editable in the user interface.

S 39.2.0 (manager)

Features

Key

Description

933

With this release, the separate MongoDB is no longer required: PLANTA pulse stores its data entirely in the PLANTA database. Boards, cards, checklists, and activities are stored in dedicated PULSE_ tables, and dynamic content such as custom fields and settings is stored in JSON columns. This considerably simplifies installation, operation, and backup. Existing data is transferred once during the update by means of a migration tool.

307

Boolean configuration values are now evaluated uniformly in the manager. In addition to “true” and “false”, the values “yes”/”no”, “on”/”off”, “ja”/”nein”, “an”/”aus”, “enable”/”disable”, and “enabled”/”disabled” as well as “1”/”0” are accepted, in each case regardless of upper and lower case and of surrounding blanks. A value that cannot be interpreted is logged as a warning in the server log, and the default value of the respective parameter then applies. A restricted list of values applies on the worker, see key 2003.

915

Log levels of individual loggers can now be set via environment parameters without changing the logback configuration file: planta__server__logback__level__<logger>=<level>. Valid values are “OFF”, “ERROR”, “WARN”, “INFO”, “DEBUG”, and “TRACE”, as well as “INHERITED” in order to remove a level that has been set and inherit it from the parent logger again. For the root logger, ROOT is specified as the logger name. The logger name can be written with periods, which is permitted in Docker Compose and Kubernetes, or with underscores, which results in a valid shell variable name. If the parameters are not set, the previous behavior remains unchanged.

1394

The server parameter planta__server__gui__host is now used exclusively as an external host name. To control the network interface on which the server listens, the new parameter planta__server__gui__interface is available. In addition, the parameter planta__server__secure__stream__default_host can now be set to override the automatic derivation from the worker IP address. This enables correct deployments in Kubernetes and similar environments where automatic host detection does not work reliably.

1739

The server parameter planta__server__webservices__grpc__host is now called planta__server__webservices__grpc__interface. It defines the network interface on which the gRPC server for PLANTA pulse listens and thus has the same naming as planta__server__webservices__generic_service__interface and planta__server__gui__interface. The default value remains “0.0.0.0”, that is, all interfaces. In the web.conf configuration file, the key is now grpc_interface instead of grpc_host. The old name continues to work. If it is set, its value is applied and a deprecation warning with the new name is written to the log. If both names are set, the new one applies. The old name will be removed in a future release and should be renamed in deployments.

1841

1842

Helper and session I/O threads of the manager (ForcedMessageInjector, MetaMessageInjector, scheduling session reader and writer, SessionLink reader and writer, as well as the BOSH threads requestExtractor and responseInjector) now run on Java 21 virtual threads. This is controlled via the new parameter planta__server__maintain__virtual_threads_enabled, the default setting is “true”. If you want to continue using classic platform threads, set the parameter to “false”. This also serves as a rollback without a code change. JDK 21 or higher is required.

1861

Apache Olingo has been updated from version 4.9.0 to 5.0.0. OData processing is thus handled via jakarta.servlet instead of javax.servlet, which was necessary after the migration to Jetty 12. In addition, the dependent libraries commons-codec (to 1.22.0) and commons-io (to 2.22.0) have been updated.

1875

Performance for the execution of Python and Jython functions has been improved by copying the Customizing directories once when the containers start.

1928

2328

In the agile area, the permissions of the respective project apply: Users with change permission in the project can edit and create agile views and the associated activities. Resources can edit the activities assigned to them. They only have read access to all other activities.

1943

When importing users via LDAP, users from child groups can now also be imported. If the ldapUserFilter references a group, its child groups are resolved recursively on the server side, and all users contained within them are imported across any number of nesting levels. New parameters in secure.conf: secure__service__ldap_resolve_nested_groups (default: “false”), secure__service__ldap_ignore_partial_result (default: “true”)

2010

When the session limit is reached (system-wide via parallel_sessions or per user), the rejection of a new session is logged via a dedicated log message (0100093, WARN). The message contains the scope (system-wide or user-related), the configured limit, the current number of sessions, and, in the user-related case, the affected user. SaaS operators can thus respond to the session limit and raise alerts in a targeted manner. The new log ID is documented under Descriptions for Log Messages. In addition, two new Prometheus counters (planta_server_count_sessionlimit_overall_reached_total and planta_server_count_sessionlimit_user_reached_total) are available.

2012

For failed backend connections in the PLANTA Secure tunnel, the exact cause (target host:port as well as the error type, such as connection refused, timeout, or no route) is now logged as a WARN message. Previously, the log only contained “remote backend connection failed” without further context.

2187

The write path for LDAP import and LDAP login has been optimized. Only one database session or transaction is now opened per user instead of two. Existing attributes are deleted with a bulk statement instead of individually, which reduces the database load. This takes effect both for large user directories and for every individual LDAP login. Configuration and operation remain unchanged.

Bugfixes

Key

Description

443

Data-driven events can again be triggered by changes to the V_DT430_DT472 view, in particular in the PM History Booking area. Adjustments in the database and in the Customizing are required. If you would like to use this functionality, please contact your PLANTA consultant.

1323

The scheduling calculation now locks resources only if they are actually used in parallel. This makes it possible to operate several servers on the same database without the servers blocking each other.

1531

The server aborted at startup in migration mode with exit code 255 and the message IllegalFormatConversionException, so that no migration could be carried out. The format specification has been corrected.

1635

If a dictionary parameter of a module contains a list of dictionaries, all list elements are now converted correctly.

1935

Under high load, the manager is relieved by reduced logging.

2064

A Missing table in DB or Missing column in DB was reported as an actually missing table or column, although it existed and only the read permissions of the database user on the catalog were missing. This is now distinguished correctly.

2075

Internal clientless sessions, such as the persistent scheduler session, are no longer counted towards the limit of parallel user sessions. The new parameter parallel_sessions (environment variable planta__server__globals__parallel_sessions) is available for adjusting this limit. This prevents logins to the web client from being rejected with the message “Session limit reached” although no user is logged in.

2129

The server parameter planta__server__config__logback now accepts the file name either with or without the config/ prefix. A plain file name (e.g. logback_only_console_debug.xml) is automatically searched for in the config/ directory. Existing configurations with the config/ prefix as well as absolute paths continue to work unchanged.

2180

For large directories (e.g. Active Directory), the LDAP import previously only read the first approximately 1,000 users, because the query was performed without paging. The import now uses a page-by-page LDAP query (Simple Paged Results, RFC 2696) and reads all users in full, regardless of their number. The server-side upper limit per page (e.g. MaxPageSize in Active Directory, default 1,000) is automatically overcome by the paging. New parameters: ldap__attributes__ldapPageSize (default: “500”): Number of entries per LDAP query page. The value only affects the number of round trips. Regardless of the selected value, all users are always read. secure__service__ldap_ignore_size_limit_exceeded (default: “false”): Controls the behavior when the directory server enforces a total result limit and truncates the result. If set to “false”, the import is aborted with a clear error message instead of importing an incomplete user list. If set to “true”, the truncated partial result is imported as before.

2286

The PLANTA pulse file storage now accesses the DT460 hyperlink table natively. A schema filter permanently prevents the Hibernate schema generation from changing PLANTA-owned tables. Previously, the shared table DT460 could be damaged in the process.

2369

When the database__persistent_db_session parameter was set, web service sessions were not closed, causing database sessions to remain open unintentionally. Sessions (especially web sessions) are now closed regardless of this parameter. The value of the parameter is now also evaluated correctly: The values “1” and “true” are interpreted as “true”, and the values “0” and “false” are interpreted as “false”.

Security Updates

Key

Description

1536

Security updates for Java libraries: c3p0 updated from 0.9.5.5 to 0.12.0 mchange-commons-java updated from 0.2.19 to 0.4.0 OpenTelemetry Java Agent updated to v2.26.1 incl. API 1.60.0 and new dependency opentelemetry-common (GHSA-72hv-8253-57qq)

1609

The Netty libraries have been updated from version 4.1.74.Final to 4.1.132.Final.

1698

Migration from Jetty 10.0.x (end of life) to Jetty 12.0.34 with the EE10 profile. At the same time, Jersey (2.x → 3.1.9), Hibernate Validator (6.x → 8.0.x), and the Prometheus servlet dependency were migrated to the Jakarta EE 10 variants. All internal javax. imports were changed to jakarta..

2005

The Java libraries Jersey (3.1.10) and Netty (4.1.135.Final) as well as the PostgreSQL JDBC driver (42.7.11) have been updated to CVE-patched versions, as has the OS package libssl3t64 in the base image.

2106

The Microsoft SQL Server JDBC driver has been updated from mssql-jdbc-13.2.1.jre11 to 13.4.0.jre11.

2107

Jackson Databind has been updated from 2.21.2 to 2.21.4. The XML parser Xerces has been updated from xercesImpl 2.12.0 to 2.12.2.

2364

Several CVEs rated “High” in bundled Java libraries have been resolved by updating to patched versions: PostgreSQL JDBC driver 42.7.11 → 42.7.12 Netty (entire module set) 4.1.135.Final → 4.1.136.Final Jetty (entire module set) 12.0.34 → 12.0.36

S 39.1.7 (worker)

Bugfixes

Key

Description

2497

The issue causing a newly inserted data record to be internally discarded (message: DeletedDataItemError)—even though it remained visible and editable in the user interface but could no longer be saved—has been resolved. This affected a rare special case that occurs only in specific Customizing configurations: data ranges with a primary key assigned by default (1:1 key) that was populated before the associated N:1 key and subsequently overwritten (not in the case of Auto-ID). New records are now preserved.

S 39.1.7 (manager)

Bugfixes

Key

Description

2381

Several CVEs rated “High” in the Java libraries bundled in the manager image are resolved by updating to patched versions:

  • PostgreSQL JDBC driver: 42.7.11 → 42.7.12 (CVE-2026-54291)

  • Netty (entire module set): 4.1.135.Final → 4.1.136.Final (CVE-2026-59901, CVE-2026-55831, CVE-2026-55833, CVE-2026-56745)

There is no change in behavior for users. These are purely library updates to address security vulnerabilities. No action is required during installation or operation.

S 39.1.6 (worker)

Features

Key

Description

2412

The Python API ppms.download_file(file_bytes, file_name) is now available. Its functionality, arguments, return value, and error codes correspond to the existing implementation. An active web client session is required, and the web client must support the FileDownload command. Scripts running without a web client session—such as in batch jobs or in the scheduler—will continue to receive the ppms.FileDownloadError error with the code NoClient. The workflow, XML interface, and error codes are documented in the file doc/README_file_download_flow.md in the Worker repository.

2414

The Python API ppms.pdf_export(module_list, options) is now available. The specified modules are rendered by the web client and combined into a single PDF file. The output thus corresponds to the display in the browser and not to server-side PDF generation. Behavior, options, return values, and error codes correspond to the existing implementation. The workflow and XML interface are documented in the file doc/README_pdf_export_flow.md in the worker repository.

S 39.1.6 (manager)

Features

Key

Description

2245

When importing users via LDAP, users from child groups can now also be imported. If the ldapUserFilter references a group, its child groups are resolved recursively on the server side, and all users contained within them are imported across any number of nesting levels.

New parameters:

  • secure__service__ldap_resolve_nested_groups (default: “false”): Enables server-side resolution of nested groups. If set to “true”, nested groups are resolved on the server side and included in the search query. If set to “false”, the previous behavior remains unchanged: Nested groups can then only be used via the LDAP_MATCHING_RULE_IN_CHAIN rule (1.2.840.113556.1.4.1941) contained in Active Directory or Entra ID. In directory services without this rule, the use of nested groups is not possible.

  • secure__service__ldap_ignore_partial_result (default: “true”): Ensures that the user import no longer aborts when Active Directory returns references to additional directory scopes (continuation references). Directory services limit the number of entries returned per search query. In Active Directory and Entra ID this limit is 1,000 entries and can only be reduced. When set to “true”, these references are ignored and the import is completed in full.

Bugfixes

Key

Description

2316

Manager now always retrieves the ProtoInterface image as a release image, regardless of its own build configuration (debug/testing/release), since ProtoInterface is released exclusively as a release. Previously, builds with different configurations failed because there was no longer a matching ProtoInterface image available.

2369

When the database__persistent_db_session parameter was set, web service sessions were not closed, causing database sessions to remain open unintentionally. Sessions (especially web sessions) are now closed regardless of this parameter. The parameter’s value is now also evaluated correctly: The values “1” and “true” are interpreted as “true”, and the values “0” and “false” are interpreted as “false”.

2373

If an SQL statement contains a large number of UUID parameters, these are reduced (as with other parameter types) by using a temporary table. In some cases (when there were more than 1,000 UUID parameters) this did not work, resulting in performance issues and database error ORA-01795.

S 39.1.5 (manager)

Features

Key

Description

2225

The access path for LDAP import and LDAP login has been optimized. Instead of two, only one database session/transaction is now opened per user. Existing attributes are deleted using a bulk statement rather than individually, which reduces the database load. Configuration and operation remain unchanged.

2104

Performance has been improved for database configurations with higher latency (e.g., due to a firewall between the server and the database).

  • The default value of the hibernate__contextInfo_Enable parameter has been set to “false”.

  • The hibernate__connection__autocommit parameter has been added.

These parameters are already set to their default values for optimal performance. Adjustment is generally not necessary.

Bugfixes

Key

Description

2208

The LDAP import now performs a page-by-page LDAP query. All users are now imported in full, regardless of their number. Since the query was previously performed without paging, only the first approximately 1,000 users were imported for large directories (e.g., Active Directory). Server-side limits per page (e.g., MaxPageSize in Active Directory, default 1,000) are automatically bypassed by paging.

New parameters:

  • ldap__attributes__ldapPageSize (default: 500): Number of entries per LDAP query page. This value only affects the number of round trips; regardless of the selected value, all users are always retrieved.

  • secure__service__ldap_ignore_size_limit_exceeded (Default: “false”): Controls the behavior when the directory server enforces a total result limit and cuts off the result. If set to “false”, the import is aborted with a clear error message instead of importing an incomplete user list. If set to “true”, the truncated partial result is imported as before.

S 39.1.5 (worker)

Features

Key

Description

1907

During the update, customer-specific SQL scripts can now be executed before (pre-import) and after (post-import) the customizing deployment. The scripts are executed from the following directories:

• Pre-import: /mnt/transfer/SQL/customer/<dbms>/pre/
• Post-Import: /mnt/transfer/SQL/customer/<dbms>/post/

2104

Performance has been improved for database configurations with higher latency (e.g., due to a firewall between the server and the database).

  • The default value of the hibernate__contextInfo_Enable parameter has been set to false.

  • The hibernate__connection__autocommit parameter has been added.

These parameters are already set to their default values for optimal performance. Adjustment is generally not necessary.

S 39.1.4 (worker)

Bugfixes

Key

Description

1979

The cause of an infinite loop during container updates (UPDATE=1) in Kubernetes and OpenShift environments has been resolved. Docker Compose environments are not affected.

S 39.1.4 (manager)

Features

Key

Description

1910

Custom configurations can now be deployed as a container image. The custom image is created based on the standard customizing image and can override all content from the standard customizing. The new environment variable CUSTOMIZING_DEPLOY=1 on the manager container activates the deployment run. Integration with the standard update installation is supported. If you have any questions, please contact your PLANTA consultant.

S 39.1.3 (manager, worker)

Features

Key

Description

1394

The server parameter planta__server__gui__host is now used exclusively as an external host name. To control the network interface on which the server listens, the new parameter planta__server__gui__interface is available. In addition, the parameter planta__server__secure__stream__default_host can now be set to override the automatic derivation from the worker IP address. This enables correct deployments in Kubernetes and similar environments where automatic host detection does not work reliably.

1875

Performance is improved by no longer using customizing symlinks to Python and Jython. These can cause massive latency when starting new sessions if the transfer server is slow. Instead, the customizing directories are copied only once when the container starts.

S 39.1.2 (manager, worker)

Security Updates

Key

Description

1559

Security updates for Java libraries:

  • c3p0 updated from 0.9.5.5 to 0.12.0 (CVE-2026-27830)

  • mchange-commons-java updated from 0.2.19 to 0.4.0 (CVE-2026-27727)

  • OpenTelemetry Java Agent updated to v2.26.1 incl. API 1.60.0 and new dependency opentelemetry-common (GHSA-72hv-8253-57qq, fixes jackson-core CVE)

Bug Fixes

Key

Description

1546

Fixed a bug where the server did not check for the ProxyToken message while waiting for the web client connection. As a result, login via OIDC (e.g. Microsoft Entra) was not possible. The server now correctly checks for the ProxyToken message and performs the login accordingly.

S 39.1.1 (manager, worker)

Features

Key

Description

1107

The OIDC implementation was revised and the required parameters were reduced. See Server Parameters.

The IdP configuration is read from the well_known configuration endpoint, which makes it easier to use different IdPs. Flow:
The server validates the tokens, including the userId token sent by the web client, using the configured parameters.
If validation is successful, the attribute configured in planta__server__secure__oidc__token_user_attribute is returned as userId and the user is logged in.

For use with Cloudflare, see the following point.

1283

A new authentication mechanism, Cloudflare Access, has been implemented for the PLANTA server. This enables authentication with OIDC and Cloudflare as a provider directly via the web client from version 3.6 onwards without an additional proxy. For more information see Cloudflare mit PLANTA secure

The corresponding Environment Variables are now also available:

planta__server__secure__cloudflare__team_domain
planta__server__secure__cloudflare__audience
planta__server__secure__cloudflare__token_user_attribute


1253

The server respects the order of authentication methods as defined in the configuration settings.

  • Premature fallback to the next authentication method is reliably prevented as long as the first method is still being executed.

  • Fallback to the next authentication method is only triggered when the current method has clearly failed.

1267

Debug logging for OIDC configurations has been extended.

1342

JDBC driver updated to the latest version Oracle ojdbc11-23.26.0.0.0.
This driver handles CLOBs more strictly regarding the length limit (the 4000 character limit) for the VARCHAR2 data type. If exceeded, the error ORA-01461 is displayed.

1291

The timezone can now be configured in the manager and worker containers:
ENV TZ=Europe/Berlin

Bug Fixes

Key

Description

944

Migration helper tables are only created when the server starts in migration mode, no longer on every server start.

1149

The projection values below the schedule scale are now correctly updated after the values in the corresponding fields have been changed and the scheduling calculation has been performed.

S 39.1.0 (manager, worker)

Features

Key

Description

711

Attributes can now also be read as binary data and stored Base64-encoded.
To do this, the relevant attribute in the ldap section of the manager configuration of the PLANTA server must be added to the list plantaUserData and the value "base64" must be set.
In addition, the attribute must be added to the entry java.naming.ldap.attributes.binary. This entry can contain a space-separated list.

1128

Performance has been improved, as the default value of the parameter planta__server__database__max_parameters_in_statement has been increased to "500".
This prevents parameters from being outsourced to a temporary table for small queries.

1158

The JDBC driver has been updated to the latest version: mssql-jdbc-13.2.1.jre11
With this version, encryption is enabled by default.

1194

In the current Microsoft JDBC driver, encryption is enabled by default. New parameters are now available for targeted control of encryption:
planta__server__hibernate__connection__encrypt = true
planta__server__hibernate__connection__trustServerCertificate = true
planta__server__hibernate__connection__trustStore = ""
planta__server__hibernate__connection__trustStorePassword = ""

1064

Parameters that are new and "unknown" to the server can now be defined.
All parameters beginning with planta__server__ that are not yet defined are assigned to a new parameter group "unrelated", which can be retrieved in the worker and customizing.
The parameter can be queried via its full name.

704

Parameters in SQL statements are now passed in temporary tables. This also bypasses the maximum parameter count limitation in both MSSQL and Oracle.

875

Hibernate lib updated to version 5.6.15 and Hibernate Validator lib to 6.2.5

1130

The default value of the environment variable planta__server__webservices__apikey_auth_filter_generic has been corrected from "true" to "false".

1197

There is a new server parameter planta__server__database__typename,, with which a database type can be set.
Possible values: "mssql", "oracle", "postgres"
The dependent parameters are automatically set correctly via this:

  • planta__server__database__type

  • planta__server__hibernate__dialect

  • planta__server__hibernate__connection__driver_class

The parameter planta__server__database__type should no longer be used in the future and is set to "Deprecated". Only planta__server__database__typename should be used.

1197

The endpoint of the Prometheus interface can be changed via the parameter planta__server__webservices__prometheus__entrypoint.

The metric prefix is now planta_server and no longer prometheus. This simplifies the assignment.

680

Prometheus lib updated to version V1.3.10

  • Changed metric name:
    Old: planta_server_native_memory_pool_allocated_bytes_total
    New: planta_server_native_memory_pool_allocated_bytes

  • Changed labels:
    Old format: Labels always with a trailing comma, e.g.
    planta_server_track_active_sessions_by_mode{threadType="scheduler",} 0.0
    New format: Labels without trailing comma, e.g.
    planta_server_track_active_sessions_by_mode{threadType="scheduler"} 0.0

684

The handling of custom deprecation messages has been improved.

1019

ExitCode 253 has been added. This indicates that after the data import, the constraints could not be re-enabled.

38

The web client can now also authenticate via OIDC JWToken. For this purpose, the web client sends the user and access token to the server. The server validates the tokens and uses the contained data for login.

New Environment Variables have been implemented:

  • planta__server__secure__oidc__clientSecret

  • planta__server__secure__oidc__tenantId

  • planta__server__secure__oidc__jwksEndpoint_suffix

  • planta__server__secure__oidc__authority_prefix

  • planta__server__secure__oidc__idTokenEndpoint_suffix

  • planta__server__secure__oidc__scope

  • planta__server__secure__oidc__access_token_scope

  • planta__server__secure__oidc__issuer_prefix_1

  • planta__server__secure__oidc__issuer_prefix_2

  • planta__server__secure__oidc__issuer_prefix_3

  • planta__server__secure__oidc__jwksEndpoint_suffix_alternate

The URL of the idToken endpoint is composed as follows:
authority_prefix + tenantId + idTokenEndpoint_suffix

The URL of the jwks endpoint is composed as follows:
authority_prefix + tenantId + jwksEndpoint_suffix

1203

It is again possible to generate coredumps in the container in the event of an error.
These are stored in the worker under writeable_path at /coredumps.

1147

Due to a bug fix, DDL statements are never executed with bind variables.

S 39.0.4 (manager) and S 39.0.3 (worker)

Features

Key

Description

1024

With the new Configuration Parameter planta__server__database__use_underscore_as_wildcard, the option has been implemented to optionally disable the default use of the underscore _ as a wildcard in search queries. In this case, the character _ is interpreted as a normal character. This allows search queries to be executed precisely, which can improve performance. The option is particularly suitable for customers who use underscores in object IDs.

A prerequisite for using this option is updating both server components, i.e. the manager and the worker.


S 39.0.2 (worker)

Bug Fixes

Key

Description

910

The removal of virtual DIs from SQL statements has been improved.

S 39.0.3 (manager)

Bug Fixes

Key

Description

930

Removes a security vulnerability by updating the libraries used for LDAP

S 39.0.2 (manager)

Bug Fixes

Key

Description

880

The worker now starts correctly, even if the variable planta__server__gui__host does not contain the entry 0.0.0.0 but the service hostname.

890

For the MSSQL database, character encoding is enabled and set to utf-8 format.
New environment variables have been implemented for this, which are set automatically for the MSSQL database:

  • planta__server__hibernate__connection__useUnicode = true

  • planta__server__hibernate__connection__characterEncoding = utf-8

  • planta__server__hibernate__connection__CharSet = utf-8


S 39.0.1 (manager, worker)

Bug Fixes

Key

Description

661

Hibernate updated to version 5.6.5

672

Security vulnerabilities have been fixed.

S 39.0.0 (manager, worker)

Features

Key

Description

323

Internal server communication has been improved: Protobuf messages can optionally be output in the log, enabling better traceability.

171

The metrics of the Prometheus interface now consistently start with "planta__server__" for unified naming.

37

The server now uses an up-to-date CPython version 3.12.9 for improved stability and security.

332

Authentication now supports login via JWT token.

110

The storage of version information has been standardized. Version information is generated in JSON format with the following attributes:

  • Server version (Major/Minor/Patch) - Date - Commit hash.

A separate node is created for each component: (manager / worker / client)
These can be read from the customizing via the function ppms.version_information.

532

Exit codes from Linux/Signals have been added and provided with descriptive messages that are output when the process is aborted.

440

Logging at the start of a client session has been cleaned up and unnecessary messages removed.

293

With the Python function set_user_clipboard(content, mime_type), objects can be conveniently copied to the clipboard.

272

The effect type "Round" has been added to the list of available effects.

365

The execution of migrations has been accelerated by excluding irrelevant packages.

255

Parameters for clientless sessions can now contain nested dictionaries, providing more flexibility.

680

The monitoring interface has been set to deprecated. Instead, the Prometheus Interface or the Health Endpoint should be used.

Bug Fixes

Key

Description

29

Fixed a bug where the utilization charts displayed incorrect values over the course of the day after various scheduling calculations, which could previously only be corrected by rescheduling.

281

During the LDAP import, UUIDs are now consistently preserved, ensuring unique identification.

76

The user ID is reliably transmitted when using the server adapter without LDAP or OIDC, to ensure correct authentication.

601

The Deviations module now processes data stably and without Python exceptions.

300

Creating statements with virtual data items and relations to parent areas now works as intended.

90

Statement parsing has been optimized so that literals are only replaced at the correct positions.