Skip to main content
Skip table of contents

S 39

Bitte beachten Sie: Seit Release 39.5.25 (mind. DB 25.0.0, mind. S 39.0.0) stellt PLANTA sämtliche Software-Komponenten (Ausnahme: Desktop-Client) als Container-Lösungen bereit. Für die Installation / den Betrieb der Server-Versionen ab 39.0.0 bzw. das Update auf diese Versionen ist eine OCI kompatible Container Runtime bzw. Plattform, z.B. Docker notwendig. Mehr dazu siehe unter Installation von PLANTA Project.

S 39.2.0 (worker)

Features

Schlüssel

Beschreibung

1002

Über den API-Aufruf ppms.set_client_url(url) kann aus dem Customizing heraus die Browser-URL im Web-Client gesetzt werden. Der Server leitet die URL dabei lediglich an den Web-Client weiter. Damit lässt sich beim Öffnen eines Planungsobjekts automatisch die Deeplink-URL in der Adressleiste anzeigen, sodass Benutzer diese kopieren, teilen oder als Lesezeichen speichern können. Die URL muss ein relativer Pfad sein (z. B. /deeplink/project/12345).

1326

Der Worker baut beim Start die Verbindung zum Manager (Session-Link) auf. Schlägt der Aufbau fehl, wird der Versuch bis zu einer einstellbaren maximalen Anzahl wiederholt, jeweils nach einer einstellbaren Pausenzeit. Konfiguriert wird das über die neuen Parameter --session_link_retry_max (maximale Anzahl Versuche, Standardwert 60) und --session_link_retry_time (Pausenzeit in Sekunden, Standardwert 5). Diese Parameter lassen sich nicht über die ENV-Parameter im Manager setzen, sondern müssen explizit am Worker gesetzt werden. Im Helm-Chart sind die Werte unter worker.sessionLink.retryMax bzw. worker.sessionLink.retryTime konfigurierbar.

1624

Ein Datenfeld kann jetzt ein anderes Modul als Steuerelement einbetten. Das Datenfeld-Verhalten mc zeigt das Modul an, das in der DF-Konfiguration unter ModuleControl hinterlegt ist. Damit lassen sich Bausteine wie ein Diagramm oder ein Dashboard-Element in mehreren Modulen wiederverwenden, statt sie je Modul erneut zu konfigurieren.

1688

Serverseitige Python-Skripte können dem angemeldeten Benutzer über ppms.download_file(file_bytes, file_name) eine Datei direkt als Browser-Download übergeben. Voraussetzung ist eine aktive Web-Client-Sitzung, deren Client das Kommando FileDownload unterstützt. Skripte ohne Web-Client-Sitzung, etwa in Batch-Jobs oder im Scheduler, erhalten den Fehler ppms.FileDownloadError mit dem Code NoClient.

1696

Aktion bei Datenfeldänderung:

Für Datenfelder mit einem Eingabeverhalten (i, li, le, mi) kann in der Aktions-ID (DI027481) der Name einer Methode der Modul-Subklasse hinterlegt werden. Der Server ruft diese Methode automatisch auf, sobald der Benutzer den Wert des Datenfelds ändert – durch Eingabe oder durch Auswahl eines Listbox-Eintrags. Damit lassen sich Aktionen wie das Neuaufbauen eines Diagramms nach Auswahl eines anderen Filters ohne zusätzlichen Button auslösen. Die Methode wird auf der Subklasse des Moduls aufgerufen, zu dem das Datenfeld gehört, und erhält das geänderte Datenfeld als Parameter. Es sind nur Methoden der Modul-Subklasse möglich, keine Makro-Module und keine freien Funktionen.

1731

Module mit der Modulklasse 3 werden dem Web-Client jetzt immer als Benutzermenü gemeldet. Bisher wurde nur das in der Skin hinterlegte Benutzermenü als solches übertragen, sodass weitere Benutzermenü-Module vom Client nicht als solche erkannt wurden. Serverseitig verhalten sich Module der Klasse 3 weiterhin wie gewöhnliche Module, insbesondere besitzen sie ein Panel und werden nicht dauerhaft offen gehalten.

1875

Die Performance für die Ausführung von Python- und Jython-Funktionen wurde verbessert, indem die Customizing-Verzeichnisse einmalig beim Start der Container kopiert werden.

1957

Mit dem Parameter Name Basis MV besteht die Möglichkeit der Basis-Modulvariante eine individuelle Bezeichnung zu vergeben beziehungsweise die defaultmäßige Bezeichnung Basis zu überschrieben.

2161

Performance-Verbesserung für Module mit Filtern auf Datenfeldern: Die Filter nutzen jetzt vorhandene Datenbank-Indizes. Das Ergebnis bleibt unverändert. Gilt für Oracle, SQL Server und PostgreSQL.

2260

Erste Ausbaustufe der Konfigurationsmatrix im Worker: Ein Datenbereich der neuen Klasse 12 verknüpft zwei Achsen und eine Faktentabelle. Der Server stellt deren Schnittpunkte als Kontrollkästchen dar.

2318

Die agile Aufgabenstatistik pulse.get_card_statistics(task_ids, archived) liefert zusätzlich zur Gesamtzahl sowie zu abgeschlossenen Aufgaben nun auch die Anzahl der überfälligen Aufgaben (rot markiert). Überfällig sind offene Aufgaben, deren Fälligkeitsdatum in der Vergangenheit liegt.

Python-API-Parameter

1300

Der API-Parameter Module.set_title(title) ersetzt den Titel eines Moduls zur Laufzeit vollständig. Bisher ließ sich über Module.set_title_suffix(suffix) nur ein Zusatz anhängen. Der Titel kann zusätzlich direkt beim Öffnen über Module.open_module(title=...) gesetzt werden, damit er bereits im ersten Bildaufbau erscheint. Ein leerer Titel hebt die Überschreibung wieder auf, die Angabe wirkt nur für die aktuelle Sitzung.

1570

Die API-Parameter DataField.set_df_config(configuration) und DataFieldCustomizing.set_df_config(configuration) übergeben eine Konfiguration als df_script_settings an den Client. Die Angabe wirkt für alle Datenfelder, die dem jeweiligen Datenfeld-Customizing zugeordnet sind.

1686

Der API-Parameter ppms.pdf_export(module_list, options) steht nun zur Verfügung. Die angegebenen Module werden vom Web-Client gerendert und zu einer PDF-Datei zusammengefasst. Die Ausgabe entspricht damit der Darstellung im Browser und nicht der serverseitigen PDF-Erzeugung.

1700

Der API-Parameter Panel.set_title(title) ersetzt den Titel eines Panels zur Laufzeit vollständig, analog zu Module.set_title(title). Bisher stand auf Panel-Ebene nur Panel.set_title_suffix(suffix) für einen angehängten Zusatz zur Verfügung.

2211

Der API-Parameter ppms.count_pulse_cards(task_ids, completed, archived) liefert die Anzahl der agilen Aufgaben zu einem oder mehreren Vorgängen. Das Customizing muss dafür nicht mehr per SQL auf interne Agile-Tabellen zugreifen, wodurch Auswertungen unabhängig vom internen Schema werden.

Bugfixes

Schlüssel

Beschreibung

29

Fehler behoben, bei dem die Auslastungsdiagramme im Laufe des Tages nach mehreren Terminrechnungen falsche Werte angezeigt haben. Bisher ließ sich das nur durch eine Neuplanung beheben.

1286

Bei aktiviertem Splitting konnte in bestimmten Datenkonstellationen das berechnete Vorgangsende vor dem berechneten Vorgangsbeginn liegen. Start- und Endtermine werden nun in allen Fällen konsistent berechnet.

1366

Das Problem, dass bei bestimmtem Customizing im Zusammenhang mit Pre-Events der Versuch, DIs fremder Tabellen zu aktualisieren, zu einer Exception führte, wurde behoben.

1416

PLANTA lässt sich nun auch in einer Umgebung mit schreibgeschütztem Dateisystem installieren und aktualisieren. Die temporären Dateien des Migrations-Frameworks werden dazu in dem Verzeichnis abgelegt, das über planta__server__writeable_path konfiguriert ist.

1544

In bestimmten Konstellationen ist der Restaufwand in den Belastungskurven für Woche, Monat, Quartal und Jahr nicht vollständig aufsummiert worden, sodass Werte fehlen konnten. Die Aufsummierung erfolgt nun für alle Verdichtungsstufen korrekt.

1546

Fehler behoben, bei dem der Server beim Warten auf die Web-Client-Verbindung nicht auf die ProxyToken-Nachricht geprüft hat. Dadurch war ein Login über OIDC (z. B. Microsoft Entra) nicht möglich. Der Server prüft nun korrekt auf die ProxyToken-Nachricht und führt den Login entsprechend durch.

1658

Performance-Verbesserung bei SQL-Statements mit sehr vielen UUID-Parametern: Die Reduzierung über eine temporäre Tabelle greift jetzt in allen Fällen. Damit entfällt auch der Datenbankfehler ORA-01795 bei mehr als 1000 UUID-Parametern.

1920

Anmeldungen ohne OIDC (z. B. LDAP oder interaktiv) bleiben nicht mehr hängen: Der Server erkennt beim Sitzungsstart am neuen Attribut oidcEnabled des Web-Clients, ob er auf ein ProxyToken warten muss. Nur bei oidcEnabled="true" wird gewartet.

2003

Boolean-Werte der Worker-Konfiguration werden jetzt korrekt ausgewertet: Nur „1" und „true" aktivieren bzw. nur „0" und „false" deaktivieren. Andere Werte wie „yes" oder „on" führen zum Standardwert. Es wird empfohlen die Konfigurationswerte auf abweichende Schreibweisen zu überprüfen. Im Manager gilt eine erweiterte Werteliste, siehe Schlüssel 307.

2031

Der Worker fährt bei SIGTERM und SIGINT (z. B. docker stop) jetzt kontrolliert herunter, statt abzustürzen: Verbindungen werden geordnet geschlossen und der Manager informiert. Ein Zeitlimit von standardmäßig 30 Sekunden (planta__server__session_shutdown_timeout) verhindert, dass der Shutdown hängen bleibt.

2115

Der Startvorgang der Session wird in der Performance-Historie (DT324, Ereignis ST/STARTUP) nun vollständig erfasst: Die Startzeit wird millisekundengenau gemessen. Bisher wurde sie nur sekundengenau erfasst, wodurch Startzeiten unter einer Sekunde als 0 ms bzw. 1000 ms erschienen und für Auswertungen unbrauchbar waren. Zusätzlich enthält der Startdatensatz jetzt die vollständige Aufschlüsselung (DB-Wartezeit, DTP-Selektion, MTS-Aufbau, Serialisierung, Speicherverbrauch usw.) statt nur des Gesamtwerts – wie bereits alle übrigen Ereignisse der Performance-Historie.

2141

Das Problem, dass ein Modul mit einem virtuellen Bild-Datenfeld in einem Gruppierungsbereich zum Absturz der Sitzung führte, wurde behoben.

2322

Meldet sich ein Benutzer ohne zugeordnete Rolle an, wird die Sitzung nicht mehr kommentarlos beendet. Vor dem Beenden der Sitzung wird ein Dialog mit dem Hinweis angezeigt, dass dem Benutzer keine Rolle zugeordnet wurde und man sich an den Administrator wenden soll.

2497

Neu eingefügte Datensätze bleiben jetzt erhalten. Bisher wurden sie in manchen Fällen intern verworfen und ließen sich nicht speichern, obwohl sie an der Oberfläche weiterhin sichtbar und bearbeitbar waren.

S 39.2.0 (manager)

Features

Schlüssel

Beschreibung

933

Mit diesem Release entfällt die separate MongoDB: PLANTA pulse speichert seine Daten vollständig in der PLANTA-Datenbank – Boards, Karten, Checklisten und Aktivitäten in eigenen PULSE_-Tabellen, dynamische Inhalte wie benutzerdefinierte Felder und Einstellungen als JSON-Spalten. Das vereinfacht Installation, Betrieb und Backup deutlich. Bestehende Daten werden einmalig beim Update über ein Migrationswerkzeug übernommen.

307

Boolesche Konfigurationswerte werden im Manager jetzt einheitlich ausgewertet. Neben “true” und “false” werden auch “yes”/”no”, “on”/”off”, “ja”/”nein”, “an”/”aus”, “enable”/”disable”und “enabled”/”disabled” sowie “1”/”0” akzeptiert, jeweils ohne Berücksichtigung der Groß- und Kleinschreibung und umgebender Leerzeichen. Ein nicht interpretierbarer Wert wird im Server-Log als Warnung protokolliert, es gilt dann der Standardwert des jeweiligen Parameters. Am Worker gilt eine eingeschränkte Werteliste, siehe Schlüssel 2003.

915

Log-Level einzelner Logger lassen sich jetzt über Umgebungsparameter setzen, ohne die logback-Konfigurationsdatei zu ändern: planta__server__logback__level__<logger>=<level>. Gültige Werte sind “OFF”, “ERROR”, “WARN”, “INFO”, “DEBUG” und “TRACE” sowie “INHERITED”, um ein gesetztes Level zu entfernen und wieder vom übergeordneten Logger zu erben. Für den Root-Logger wird ROOT als Loggername angegeben. Der Loggername lässt sich mit Punkten schreiben, was in Docker Compose und Kubernetes zulässig ist, oder mit Unterstrichen, was einen gültigen Shell-Variablennamen ergibt. Ohne gesetzte Parameter ändert sich das bisherige Verhalten nicht.

1394

Der Server-Parameter planta__server__gui__host wird nun ausschließlich als externer Host-Name verwendet. Zum Steuern der Netzwerk-Schnittstelle, auf der der Server lauscht, steht der neue Parameter planta__server__gui__interface zur Verfügung. Außerdem kann der Parameter planta__server__secure__stream__default_host nun gesetzt werden, um die automatische Ableitung aus der Worker-IP-Adresse zu überschreiben. Dies ermöglicht korrekte Deployments in Kubernetes und ähnlichen Umgebungen, in denen automatische Host-Erkennung nicht zuverlässig funktioniert.

1739

Der Server-Parameter planta__server__webservices__grpc__host heißt nun planta__server__webservices__grpc__interface. Er legt die Netzwerk-Schnittstelle fest, auf der der gRPC-Server für PLANTA pulse lauscht, und ist damit genauso benannt wie planta__server__webservices__generic_service__interface und planta__server__gui__interface. Der Standardwert bleibt “0.0.0.0”, also alle Schnittstellen. In der Konfigurationsdatei web.conf lautet der Schlüssel nun grpc_interface statt grpc_host. Der alte Name wirkt weiterhin. Ist er gesetzt, wird sein Wert übernommen und eine Deprecation-Warnung mit dem neuen Namen ins Log geschrieben. Sind beide Namen gesetzt, gilt der neue. Der alte Name wird in einem künftigen Release entfernt und sollte in Deployments umbenannt werden.

1841

1842

Helfer- und Session-I/O-Threads des Managers (ForcedMessageInjector, MetaMessageInjector, Scheduling-Session Reader und Writer, SessionLink Reader und Writer sowie die BOSH-Threads requestExtractor und responseInjector) laufen nun auf Java-21-Virtual-Threads. Gesteuert wird dies über den neuen Parameter planta__server__maintain__virtual_threads_enabled, die Voreinstellung ist “true”. Wer weiterhin klassische Plattform-Threads verwenden möchte, setzt den Parameter auf “false”. Dies dient zugleich als Rollback ohne Code-Änderung. Voraussetzung ist JDK 21 oder höher.

1861

Apache Olingo wurde von Version 4.9.0 auf 5.0.0 aktualisiert. Damit wird die OData-Verarbeitung nun über jakarta.servlet statt javax.servlet abgewickelt, was nach der Jetty-12-Migration erforderlich war. Zusätzlich wurden die abhängigen Bibliotheken commons-codec (auf 1.22.0) und commons-io (auf 2.22.0) aktualisiert.

1875

Die Performance für die Ausführung von Python- und Jython-Funktionen wurde verbessert, indem die Customizing-Verzeichnisse einmalig beim Start der Container kopiert werden.

1928

2328

Im agilen Bereich gelten die Berechtigungen des jeweiligen Projekts: Wer im Projekt Änderungsrecht hat, kann agile Ansichten und die dazugehörigen Aufgaben bearbeiten und neu anlegen. Ressourcen können die ihnen zugeordneten Aufgaben bearbeiten. Alle übrigen Aufgaben sehen sie nur lesend.

1943

Beim LDAP-Benutzerimport können nun auch Benutzer aus untergeordneten Gruppen importiert werden. Referenziert der ldapUserFilter eine Gruppe, werden deren untergeordnete Gruppen serverseitig rekursiv aufgelöst und alle darin enthaltenen Benutzer über beliebig viele Verschachtelungsebenen importiert.

Neue Parameter in der secure.conf:

  • secure__service__ldap_resolve_nested_groups (Standard: “false”)

  • secure__service__ldap_ignore_partial_result (Standard: “true”)

2010

Beim Erreichen des Sitzungslimits (systemweit über parallel_sessions oder pro Benutzer) wird die Ablehnung einer neuen Sitzung über eine eigene Log-Meldung (0100093, WARN) protokolliert. Die Meldung enthält den Geltungsbereich (systemweit oder benutzerbezogen), das konfigurierte Limit, die aktuelle Sitzungsanzahl und im benutzerbezogenen Fall den betroffenen Benutzer. SaaS-Betreiber können damit gezielt auf das Sitzungslimit reagieren und alarmieren. Die neue Log-ID ist unter Beschreibungen für Log-Meldungen dokumentiert. Zusätzlich stehen zwei neue Prometheus-Zähler (planta_server_count_sessionlimit_overall_reached_total und planta_server_count_sessionlimit_user_reached_total) zur Verfügung.

2012

Bei fehlgeschlagenen Backend-Verbindungen im PLANTA Secure-Tunnel wird jetzt die genaue Ursache (Ziel-Host:Port sowie Fehlertyp wie z. B. Verbindung abgelehnt, Timeout oder keine Route) als WARN-Meldung protokolliert. Zuvor enthielt das Log nur „remote backend connection failed“ ohne weiteren Kontext.

2187

Der Schreibpfad beim LDAP-Import und beim LDAP-Login wurde optimiert. Pro Benutzer wird nur noch eine Datenbank-Sitzung bzw. Transaktion statt zwei geöffnet. Bestehende Attribute werden mit einer Bulk-Anweisung statt einzeln gelöscht, wodurch die Datenbanklast reduziert wird. Dies wirkt sowohl bei großen Benutzerverzeichnissen als auch bei jedem einzelnen LDAP-Login. Konfiguration und Bedienung bleiben unverändert.

Bugfixes

Schlüssel

Beschreibung

443

Datengesteuerte Events können wieder bei Änderungen an der View V_DT430_DT472 ausgelöst werden, speziell im Bereich PM-History-Booking. Voraussetzung sind Anpassungen in Datenbank und Customizing. Wenn Sie diese Funktionalität verwenden möchten, wenden Sie sich bitte an Ihren PLANTA-Kundenberater.

1323

Die Terminrechnung sperrt Ressourcen nun nur noch dann, wenn diese tatsächlich parallel genutzt werden. Dies ermöglicht den Betrieb mehrerer Server auf derselben Datenbank, ohne dass sich die Server gegenseitig blockieren.

1531

Der Server brach beim Start im Migrationsmodus mit dem Exit-Code 255 und der Meldung IllegalFormatConversionException ab, sodass keine Migration durchgeführt werden konnte. Die Formatangabe wurde korrigiert.

1635

Enthält ein Wörterbuch-Parameter eines Moduls eine Liste von Wörterbüchern, werden nun alle Listenelemente korrekt umgewandelt.

1935

Bei hoher Last wird der Manager durch reduzierte Protokollierung entlastet.

2064

Ein Missing table in DB oder Missing column in DB wurde als tatsächlich fehlende Tabelle bzw. Spalte gemeldet, obwohl sie vorhanden war und lediglich die Leserechte des Datenbankbenutzers auf den Katalog fehlten. Dies wird nun korrekt unterschieden.

2075

Interne clientless-Sessions – etwa die persistente Scheduler-Session – werden nun nicht mehr auf das Limit paralleler Benutzer-Sessions angerechnet. Zum Anpassen dieses Limits steht der neue Parameter parallel_sessions (Umgebungsvariable planta__server__globals__parallel_sessions) zur Verfügung. Dies verhindert, dass Anmeldungen am Web-Client mit der Meldung „Session-Limit erreicht" abgewiesen werden, obwohl kein Benutzer angemeldet ist.

2129

Der Server-Parameter planta__server__config__logback akzeptiert den Dateinamen jetzt wahlweise mit oder ohne config/-Präfix. Ein reiner Dateiname (z. B. logback_only_console_debug.xml) wird automatisch im Verzeichnis config/ gesucht. Bestehende Konfigurationen mit config/-Präfix sowie absolute Pfade funktionieren unverändert weiter.

2180

Bei großen Verzeichnissen (z. B. Active Directory) hat der LDAP-Import bisher nur die ersten ca. 1000 Benutzer eingelesen, da die Abfrage ohne Paging erfolgte. Der Import verwendet jetzt eine seitenweise LDAP-Abfrage (Simple Paged Results, RFC 2696) und liest alle Benutzer unabhängig von ihrer Anzahl vollständig ein. Die serverseitige Obergrenze pro Seite (z. B. MaxPageSize im Active Directory, Standard 1000) wird durch das Paging automatisch überwunden.

Neue Parameter:

  • ldap__attributes__ldapPageSize (Standard: “500”): Anzahl der Einträge pro LDAP-Abfrageseite. Der Wert beeinflusst nur die Anzahl der Roundtrips. Unabhängig vom gewählten Wert werden immer alle Benutzer eingelesen.

  • secure__service__ldap_ignore_size_limit_exceeded (Standard: “false”): Steuert das Verhalten, wenn der Verzeichnisserver eine Gesamt-Ergebnisgrenze erzwingt und das Ergebnis abschneidet. Bei “false” wird der Import mit einer eindeutigen Fehlermeldung abgebrochen, statt eine unvollständige Benutzerliste zu importieren. Bei “true” wird das abgeschnittene Teilergebnis wie bisher übernommen.

2286

Die Dateiablage von PLANTA pulse greift nun nativ auf die Hyperlink-Tabelle DT460 zu. ein Schemafilter verhindert dauerhaft, dass die Hibernate-Schemagenerierung PLANTA-eigene Tabellen verändert. Zuvor konnte die gemeinsam genutzte Tabelle DT460 dabei beschädigt werden.

2369

Bei gesetztem Parameter database__persistent_db_session sind Webservice-Sessions nicht geschlossen worden, sodass Datenbank-Sessions unbeabsichtigt offen geblieben sind. Sessions (insbesondere Web-Sessions) werden nun unabhängig von diesem Parameter geschlossen. Der Wert des Parameters wird nun auch korrekt ausgewertet: Die Werte “1” und “true” werden als “true” und die Werte “0” und “false” als “false” interpretiert.

Sicherheitsupdates

Schlüssel

Beschreibung

1536

Sicherheitsupdates für Java-Bibliotheken:

  • c3p0 von 0.9.5.5 auf 0.12.0 aktualisiert

  • mchange-commons-java von 0.2.19 auf 0.4.0 aktualisiert

  • OpenTelemetry Java Agent auf v2.26.1 aktualisiert inkl. API 1.60.0 und neuer Dependency opentelemetry-common (GHSA-72hv-8253-57qq)

1609

Die Netty-Bibliotheken wurden von Version 4.1.74.Final auf 4.1.132.Final aktualisiert.

1698

Migration von Jetty 10.0.x (End of Life) auf Jetty 12.0.34 mit EE10-Profil. Gleichzeitig wurden Jersey (2.x → 3.1.9), Hibernate Validator (6.x → 8.0.x) und die Prometheus-Servlet-Abhängigkeit auf die Jakarta-EE-10-Varianten migriert. Alle internen javax.-Importe wurden auf jakarta. umgestellt.

2005

Die Java-Bibliotheken Jersey (3.1.10) und Netty (4.1.135.Final) sowie der PostgreSQL-JDBC-Treiber (42.7.11) wurden auf CVE-bereinigte Versionen aktualisiert, ebenso das OS-Paket libssl3t64 im Basis-Image.

2106

Der Microsoft-SQL-Server-JDBC-Treiber wurde von mssql-jdbc-13.2.1.jre11 auf 13.4.0.jre11 aktualisiert.

2107

Jackson Databind wurde von 2.21.2 auf 2.21.4 aktualisiert. Der XML-Parser Xerces wurde von xercesImpl 2.12.0 auf 2.12.2 aktualisiert.

2364

Mehrere als „Hoch“ eingestufte CVEs in gebündelten Java-Bibliotheken wurden durch Aktualisierung auf bereinigte Versionen behoben:

  • PostgreSQL-JDBC-Treiber 42.7.11 → 42.7.12

  • Netty (gesamter Modulsatz) 4.1.135.Final → 4.1.136.Final

  • Jetty (gesamter Modulsatz) 12.0.34 → 12.0.36

S 39.1.7 (worker)

Bugfixes

Schlüssel

Beschreibung

2497

Die Fehlerursache, bei der ein neu eingefügter Datensatz intern verworfen wurde (Meldung DeletedDataItemError), obwohl er in der Oberfläche sichtbar und bearbeitbar blieb, und sich nicht mehr speichern ließ, wurde behoben. Betroffen war ein seltener Sonderfall, der nur in speziellen Customizing-Konstruktionen auftritt: Datenbereiche mit einem per Standardwert vergebenen Primärschlüssel (1:1-Schlüssel), der vor dem zugehörigen N:1-Schlüssel gefüllt und anschließend erneut geschrieben wurde (nicht bei Auto-ID). Neue Datensätze bleiben jetzt erhalten.

S 39.1.7 (manager)

Bugfixes

Schlüssel

Beschreibung

2381

Mehrere als „Hoch" eingestufte CVEs in den im Manager-Image gebündelten Java-Bibliotheken werden durch Aktualisierung auf bereinigte Versionen behoben:

  • PostgreSQL-JDBC-Treiber: 42.7.11 → 42.7.12

  • Netty (gesamter Modulsatz): 4.1.135.Final → 4.1.136.Final


Für Anwender ändert sich das Verhalten nicht. Es handelt sich um reine Bibliotheks-Updates zur Schließung von Sicherheitslücken. Ein Eingriff bei Installation oder Betrieb ist nicht erforderlich.

S 39.1.6 (worker)

Features

Schlüssel

Beschreibung

2412

Die Python-API ppms.download_file(file_bytes, file_name) steht nun zur Verfügung. Funktionsumfang, Argumente, Rückgabewert und Fehlercodes entsprechen der bestehenden Implementierung. Voraussetzung ist eine aktive Web-Client-Sitzung, deren Web-Client das Kommando FileDownload unterstützt. Skripte ohne Web-Client-Sitzung – etwa in Batch-Jobs oder im Scheduler – erhalten weiterhin den Fehler ppms.FileDownloadError mit dem Code NoClient. Ablauf, XML-Schnittstelle und Fehlercodes sind in der Datei doc/README_file_download_flow.md im Worker-Repository dokumentiert.

2414

Die Python-API ppms.pdf_export(module_list, options) steht nun zur Verfügung. Die angegebenen Module werden vom Web-Client gerendert und zu einer PDF-Datei zusammengefasst. Die Ausgabe entspricht damit der Darstellung im Browser und nicht der serverseitigen PDF-Erzeugung. Verhalten, Optionen, Rückgabewerte und Fehlercodes entsprechen der bestehenden Implementierung. Ablauf und XML-Schnittstelle sind in der Datei doc/README_pdf_export_flow.md im Worker-Repository dokumentiert.

S 39.1.6 (manager)

Features

Schlüssel

Beschreibung

2245

Beim LDAP-Benutzerimport können nun auch Benutzer aus untergeordneten Gruppen importiert werden. Referenziert der ldapUserFilter eine Gruppe, werden deren untergeordnete Gruppen serverseitig rekursiv aufgelöst und alle darin enthaltenen Benutzer über beliebig viele Verschachtelungsebenen importiert.

Neue Parameter:

  • secure__service__ldap_resolve_nested_groups(Standard: “false”): Aktiviert die serverseitige Auflösung verschachtelter Gruppen. Bei “true” werden verschachtelte Gruppen auf Serverseite aufgelöst und in die Suchanfrage einbezogen. Bei “false” bleibt das bisherige Verhalten unverändert: Verschachtelte Gruppen lassen sich dann nur über die in Active Directory bzw. Entra ID enthaltene Regel LDAP_MATCHING_RULE_IN_CHAIN (1.2.840.113556.1.4.1941) nutzen. In Verzeichnisdiensten ohne diese Regel ist die Verwendung verschachtelter Gruppen nicht möglich.

  • secure__service__ldap_ignore_partial_result(Standard: “true”): Steuert, dass der Benutzerimport nicht mehr abbricht, wenn Active Directory Verweise auf weitere Verzeichnisbereiche (Continuation References) zurückgibt. Verzeichnisdienste begrenzen die Anzahl der pro Suchanfrage zurückgegebenen Einträge. In Active Directory bzw. Entra ID liegt dieses Limit bei 1000 Einträgen und kann nur verringert werden. Bei “true” werden diese Verweise ignoriert und der Import wird vollständig durchgeführt.

Bugfixes

Schlüssel

Beschreibung

2316

Manager bezieht das ProtoInterface-Image unabhängig von der eigenen Build-Konfiguration (debug/testing/release) nun immer als Release-Image, da ProtoInterface ausschließlich als Release veröffentlicht wird. Zuvor sind Builds mit abweichender Konfiguration fehlgeschlagen, weil kein dazu passendes ProtoInterface-Image mehr vorhanden ist.

2369

Bei gesetztem Parameter database__persistent_db_session sind Webservice-Sessions nicht geschlossen worden, sodass Datenbank-Sessions unbeabsichtigt offen geblieben sind. Sessions (insbesondere Web-Sessions) werden nun unabhängig von diesem Parameter geschlossen. Der Wert des Parameters wird nun auch korrekt ausgewertet: Die Werte „1” und „true” werden als „true” und die Werte “0” und “false” als “false” interpretiert.

2373

Wenn in einem SQL-Statement sehr viele UUID-Parameter stehen, werden diese (wie bei anderen Parameter-Typen) durch Verwendung einer temporären Tabelle reduziert. Dies hat in einigen Fällen nicht funktioniert, wodurch es zu Performance-Problemen und bei mehr als 1000 UUID-Parametern zu dem Datenbankfehler ORA-01795 gekommen ist.

S 39.1.5 (manager)

Features

Schlüssel

Beschreibung

2225

Der Schreibpfad beim LDAP-Import und beim LDAP-Login wurde optimiert. Pro Benutzer wird nur noch eine Datenbank-Sitzung/Transaktion statt zwei geöffnet. Bestehende Attribute werden mit einer Bulk-Anweisung statt einzeln gelöscht, wodurch wird die Datenbanklast reduziert wird. Konfiguration und Bedienung bleiben unverändert.

2104

Die Performance für Datenbank-Konfigurationen mit höherer Latenz (z. B. durch eine Firewall zwischen Server und Datenbank) wurde verbessert.

  • Der Default-Wert des Parameters hibernate__contextInfo_Enable wurde auf “false” geändert.

  • Der Parameter hibernate__connection__autocommit wurde hinzugefügt.

Die Default-Werte dieser Parameter sind bereits für optimale Performance eingestellt. Eine Anpassung ist in der Regel nicht erforderlich.

Bugfixes

Schlüssel

Beschreibung

2208

Der LDAP-Import verwendet jetzt eine seitenweise LDAP-Abfrage. Alle Benutzer werden nun unabhängig von ihrer Anzahl vollständig eingelesen. Da die Abfrage ohne Paging erfolgte, wurden bisher bei großen Verzeichnissen (z. B. Active Directory) nur die ersten ca. 1000 Benutzer eingelesen. Serverseitige Obergrenzen pro Seite (z. B. MaxPageSize im Active Directory, Standard 1000) werden durch das Paging automatisch überwunden.

Neue Parameter:

  • ldap__attributes__ldapPageSize (Standard: 500): Anzahl der Einträge pro LDAP-Abfrageseite. Der Wert beeinflusst nur die Anzahl der Roundtrips. Unabhängig vom gewählten Wert werden immer alle Benutzer eingelesen.

  • secure__service__ldap_ignore_size_limit_exceeded (Standard: “false”): Steuert das Verhalten, wenn der Verzeichnisserver eine Gesamt-Ergebnisgrenze erzwingt und das Ergebnis abschneidet. Bei “false” wird der Import mit einer eindeutigen Fehlermeldung abgebrochen, statt eine unvollständige Benutzerliste zu importieren. Bei “true” wird das abgeschnittene Teilergebnis wie bisher übernommen.

S 39.1.5 (worker)

Features

Schlüssel

Beschreibung

1907

Beim Update können nun vor (Pre-Import) und nach (Post-Import) dem Customizing-Deployment kundenspezifische SQL-Skripte ausgeführt werden. Die Skripte werden aus den folgenden Verzeichnissen ausgeführt:

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

2104

Die Performance für Datenbank-Konfigurationen mit höherer Latenz (z. B. durch eine Firewall zwischen Server und Datenbank) wurde verbessert.

  • Der Default-Wert des Parameters hibernate__contextInfo_Enable wurde auf “false” geändert.

  • Der Parameter hibernate__connection__autocommit wurde hinzugefügt.

Die Default-Werte dieser Parameter sind bereits für optimale Performance eingestellt. Eine Anpassung ist in der Regel nicht erforderlich.

S 39.1.4 (worker)

Bugfixes

Schlüssel

Beschreibung

1979

Die Ursache einer Endlosschleife beim Container-Update (UPDATE=1) in Kubernetes- und OpenShift-Umgebungen wurde behoben. Docker-Compose-Umgebungen sind nicht betroffen.

S 39.1.4 (manager)

Features

Schlüssel

Beschreibung

1910

Individuelles Customizing lässt sich nun als Container-Image ausliefern. Das individuelle Image wird auf Basis des Standard-Customizing-Images erstellt und kann alle Inhalte des Standard-Customizings überschreiben. Die neue Umgebungsvariable CUSTOMIZING_DEPLOY=1 am Manager-Container aktiviert den Deployment-Lauf. Die Kombination mit der Standard-Update-Installation wird unterstützt. Bei Fragen wenden Sie sich bitte an Ihren PLANTA-Kundenberater.

S 39.1.3 (manager, worker)

Features

Schlüssel

Beschreibung

1394

Der Server-Parameter planta__server__gui__host wird nun ausschließlich als externer Host-Name verwendet. Zum Steuern der Netzwerk-Schnittstelle, auf der der Server lauscht, steht der neue Parameter planta__server__gui__interface zur Verfügung. Außerdem kann der Parameter planta__server__secure__stream__default_host nun gesetzt werden, um die automatische Ableitung aus der Worker-IP-Adresse zu überschreiben. Dies ermöglicht korrekte Deployments in Kubernetes und ähnlichen Umgebungen, in denen automatische Host-Erkennung nicht zuverlässig funktioniert.

1875

Die Performance wurde verbessert, indem keine Customizing-Links zu Python und Jython mehr verwendet werden. Diese können beim Start neuer Sessions zu massiver Latenz führen, wenn der Transferserver langsam ist. Stattdessen werden die Customizing-Verzeichnisse nur einmal beim Start des Containers kopiert.

S 39.1.2 (manager, worker)

Sicherheitsupdates

Schlüssel

Beschreibung

1559

Sicherheitsupdates für Java-Bibliotheken:

  • c3p0 von 0.9.5.5 auf 0.12.0 aktualisiert (CVE-2026-27830)

  • mchange-commons-java von 0.2.19 auf 0.4.0 aktualisiert (CVE-2026-27727)

  • OpenTelemetry Java Agent auf v2.26.1 aktualisiert inkl. API 1.60.0 und neuer Dependency opentelemetry-common (GHSA-72hv-8253-57qq, behebt jackson-core CVE)

Bugfixes

Schlüssel

Beschreibung

1546

Fehler behoben, bei dem der Server beim Warten auf die Web-Client-Verbindung nicht auf die ProxyToken-Nachricht geprüft hat. Dadurch war ein Login über OIDC (z. B. Microsoft Entra) nicht möglich. Der Server prüft nun korrekt auf die ProxyToken-Nachricht und führt den Login entsprechend durch.

S 39.1.1 (manager, worker)

Features

Schlüssel

Beschreibung

1107

Die OIDC- Implementierung wurde überarbeitet und die benötigten Parameter wurden reduziert. Hierzu siehe Server-Parameter.

Die Konfiguration des IdP wird aus dem well_known Konfigurations-Endpunkt ausgelesen, wodurch die Verwendung von verschiedenen IdP erleichtert wird. Ablauf:
Der Server validiert die Token, die den userId-Token, der vom Web-Client geschickt wird, mittels der konfigurierten Parameter.
Ist die Validierung erfolgreich, wird das Attribute, das in planta__server__secure__oidc__token_user_attribute konfiguriert ist, als userId zurückgegeben und der Benutzer damit eingeloggt.

Zum Verwenden mit der Cloudflare siehe den folgenden Punkt.

1283

Für PLANTA-Server wurde ein neuer Authentifizierungs-Mechanismus Cloudflare Access implementiert. Damit lässt sich jetzt die Authentifizierung mit OIDC und Cloudflare als Provider direkt über den Web-Client ab Version 3.6. ohne zusätzlichen Proxy realisieren. Mehr dazu siehe unter OIDC/Cloudflare mit PLANTA secure

Die entsprechenden Umgebungsvariablen stehen nun auch zur Verfügung:

planta__server__secure__cloudflare__team_domain
planta__server__secure__cloudflare__audience
planta__server__secure__cloudflare__token_user_attribute

1253

Der Server hält die Reihenfolge der Authentifizierungsmethoden ein, wie sie in den Konfigurationseinstellungen definiert ist.

  • Dabei wird das vorzeitige Zurückgreifen auf die nächste Authentifizierungsmethode zuverlässig verhindert, solange die erste Methode noch ausgeführt wird.

  • Das Zurückgreifen auf die nächste Authentifizierungsmethode wird erst ausgelöst, wenn die aktuelle Methode eindeutig fehlgeschlagen ist.

1267

Debug-Logging für die OIDC-Konfigurationen wurde erweitert.

1342

JDBC-Treiber auf die neueste Version Oracle ojdbc11-23.26.0.0.0 upgedated.
Dieser Treiber behandelt CLOBs strikter in Bezug auf die Längenbeschränkung (das Limit von 4000 Zeichen) für den Datentyp VARCHAR2 verschärft. Bei Überschreitung wird der Fehler ORA-01461 angezeigt.

1291

Die Zeitzone kann nun im manager- und worker-Container konfiguriert werden:
ENV TZ=Europe/Berlin

Bugfixes

Schlüssel

Beschreibung

944

Migrations-Hilfstabellen werden nur bei Serverstart im Migrationsmodus angelegt, nicht mehr bei jedem Serverstart.

1149

Die Projektionswerte unter der Skala des Terminplans werden nun richtig aktualisiert, nachdem die Werte in den entsprechenden Feldern geändert wurden und die Terminrechnung durchgeführt wurde.

S 39.1.0 (manager, worker)

Features

Schlüssel

Beschreibung

711

Es können nun auch Attribute als Binärdaten ausgelesen und Base64-codiert gespeichert werden.
Dazu muss das betreffende Attribut im Bereich ldap in der manager-Konfiguration des PLANTA-Servers zur Liste plantaUserData hinzugefügt und als Wert "base64" hinterlegt werden.
Zusätzlich ist das Attribut im Eintrag java.naming.ldap.attributes.binary zu ergänzen. Dieser Eintrag kann eine durch Leerzeichen getrennte Liste enthalten.

1128

Die Performance wurde verbessert, da die Standardeinstellung des Parameters planta__server__database__max_parameters_in_statement auf "500" erhöht wurde.
Dadurch wird verhindert, dass bei kleinen Abfragen die Parameter in eine temporäre Tabelle ausgelagert werden.

1158

Der JDBC-Treiber wurde auf die neueste Version aktualisiert: mssql-jdbc-13.2.1.jre11
Mit dieser Version ist die Verschlüsselung standardmäßig aktiviert.

1194

Im aktuellen Microsoft JDBC-Treiber ist die Verschlüsselung standardmäßig aktiviert. Zur gezielten Steuerung der Verschlüsselung stehen nun neue Parameter zur Verfügung:
planta__server__hibernate__connection__encrypt = true
planta__server__hibernate__connection__trustServerCertificate = true
planta__server__hibernate__connection__trustStore = ""
planta__server__hibernate__connection__trustStorePassword = ""

1064

Es lassen sich nun Parameter definieren, die für den Server neu und "unbekannt" sind.
Alle Parameter, die mit planta__server__ beginnen und noch nicht definiert sind, werden einer neue Parametergruppe "unrelated" zugeordnet, die sich im worker und customizing abrufen lässt.
Den Parameter kann man über den vollständigen Namen abfragen.

704

Parameter in SQL-Statements werden nun in temporären Tabellen übergeben. Dies umgeht auch die Begrenzung der maximalen Parameter-Anzahl sowohl in MSSQL als auch in Oracle.

875

Hibernate Lib auf Version 5.6.15 und Hibernate Validator Lib auf 6.2.5 upgedated

1130

Der Default-Wert der Umgebungsvariable planta__server__webservices__apikey_auth_filter_generic wurde von "true" auf "false" korrigiert.

1197

Es gibt einen neuen Server-Parameter planta__server__database__typename, mit dem ein Datenbanktyp gesetzt werden kann.
Mögliche Werte: "mssql", "oracle", "postgres"
Hierüber werden die anhängigen Parameter automatisch richtig gesetzt:

  • planta__server__database__type

  • planta__server__hibernate__dialect

  • planta__server__hibernate__connection__driver_class

Der Parameter: planta__server__database__type soll zukünftig nicht mehr benutzt werden und wird auf "Deprecated" gesetzt. Es soll nur noch planta__server__database__typename benutzt werden.

1197

Der Endpunkt der Prometheus-Schnittstelle lässt sich über den Parameter planta__server__webservices__prometheus__entrypoint ändern.

Das Präfix der Metriken ist jetzt planta_server und nicht mehr prometheus. Dies vereinfacht die Zuordnung.

680

Prometheus Lib auf die Version V1.3.10 upgedatet

  • Geänderter Metrikname:
    Alt: planta_server_native_memory_pool_allocated_bytes_total
    Neu: planta_server_native_memory_pool_allocated_bytes

  • Geänderte Labels:
    Altes Format: Labels immer mit einem abschließenden Komma, z. B.
    planta_server_track_active_sessions_by_mode{threadType="scheduler",} 0.0
    Neues Format: Labels ohne abschließendes Komma, z. B.
    planta_server_track_active_sessions_by_mode{threadType="scheduler"} 0.0

684

Die Behandlung von eigenen Deprecation-Meldungen wurde verbessert.

1019

ExitCode 253 wurde hinzugefügt. Dieser zeigt an, dass nach dem Datenimport die Constraints nicht wieder aktiviert werden konnten.

38

Der Web-Client kann sich nun auch per OIDC JWToken authentifizieren. Hierfür sendet der Web-Client den User- und AccessToken an den Server. Dieser validiert die Token und nutzt die enthaltenen Daten für die Anmeldung.

Hierfür wurden neue Umgebungsvariablen implementiert:

  • 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

Die URL des idToken-Endpunkts wird wie folgt zusammengesetzt:
authority_prefix + tenantId + idTokenEndpoint_suffix

Die URL des jwks-Endpunkts wird wie folgt zusammengesetzt:
authority_prefix + tenantId + jwksEndpoint_suffix

1203

Es ist wieder möglich, in einem Fehlerfall coredumps im Container erzeugen zu lassen.
Diese werden im worker im writeable_path unter /coredumps abgelegt.

1147

Aufgrund einer Fehlerkorrektur werden DDL-Statements nie mit Bindevariablen ausgeführt.

S 39.0.4 (manager) und S 39.0.3 (worker)

Features

Schlüssel

Beschreibung

1024

Mit dem neuen Konfigurationsparameter planta__server__database__use_underscore_as_wildcard wurde die Möglichkeit implementiert, die standardmäßige Verwendung des Unterstrichs _ als Platzhalter in Suchabfragen optional zu deaktivieren. In diesem Fall wird das Zeichen _ als normales Zeichen interpretiert. Dadurch werden die Suchabfragen präzise ausgeführt und somit kann die Performance verbessert werden. Die Option eignet sich besonders für Kunden, die z.B. Unterstriche in den Objekt-IDs verwenden.

Voraussetzung für die Nutzung dieser Option ist das Update beider Serverkomponenten, also des Managers und des Workers.

S 39.0.2 (worker)

Bugfixes

Schlüssel

Beschreibung

910

Die Entfernung von virtuellen DIs aus SQL-Statements wurde verbessert.

S 39.0.3 (manager)

Bugfixes

Schlüssel

Beschreibung

930

Entfernt eine Sicherheitslücke durch das Update der verwendeten Bibliotheken für LDAP

S 39.0.2 (manager)

Bugfixes

Schlüssel

Beschreibung

880

Der Worker startet nun korrekt, auch wenn die Variable planta__server__gui__host nicht den Eintrag 0.0.0.0, sondern den Service-Hostnamen aufweist.

890

Für die MSSQL-Datenbank wird das Zeichen-Encoding eingeschaltet und auf utf-8-Format gesetzt.
Hierfür wurden neue Umgebungsvariablen implementiert, die für die MSSQL-Datenbank automatisch gesetzt werden:

  • 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)

Bugfixes

Schlüssel

Beschreibung

661

Hibernate wurde auf die Version 5.6.5 upgedated

672

Sicherheitslücken wurden geschlossen.

S 39.0.0 (manager, worker)

Features

Schlüssel

Beschreibung

323

Interne Server-Kommunikation wurde verbessert: Die Protobuf-Nachrichten können optional im Log ausgegeben werden und ermöglichen so eine bessere Nachverfolgbarkeit.

171

Die Metriken des Prometheus-Interfaces beginnen nun konsistent mit „planta__server__" für eine einheitliche Benennung.

37

Der Server nutzt nun eine aktuelle CPython-Version 3.12.9 für verbesserte Stabilität und Sicherheit.

332

Die Authentifizierung unterstützt nun den Login via JWT-Token.

110

Die Speicherung der Versionsinformation wurde vereinheitlicht. Versionsinformation wird im JSON-Format erzeugt mit den Attributen:

  • Server-Version (Major/Minor/Patch) - Datum - Commit-Hash.

Für jede Komponente wird ein eigener Node erzeugt: (manager / worker / client)
Diese lassen sich aus dem Customizing über die Funktion ppms.version_information auslesen.

532

Exitcodes aus Linux/Signals wurden ergänzt und mit verständlichen Beschreibungen versehen, die beim Abbruch ausgegeben werden.

440

Das Logging beim Start einer Client-Session wurde aufgeräumt und unnötige Meldungen entfernt.

293

Mit der Python-Funktion set_user_clipboard(content, mime_type) können Objekte bequem in die Zwischenablage kopiert werden.

272

Der Effekttyp „Round" wurde in die Liste der verfügbaren Effekte aufgenommen.

365

Die Ausführung von Migrationen wurde beschleunigt, indem irrelevante Pakete ausgeklammert werden.

255

Parameter an Clientless-Sessions können jetzt verschachtelte Dictionaries enthalten und bieten so mehr Flexibilität.

680

Die Monitoring-Schnittstelle wurde auf depricated gesetzt. Stattdessen ist künftig die Prometheus-Schnitstelle bzw. der Health-Endpunkt zu verwenden.

Bugfixes

Schlüssel

Beschreibung

29

Fehler behoben, bei dem die Auslastungsdiagramme im Laufe des Tages nach mehreren Terminrechnungen falsche Werte angezeigt haben. Bisher ließ sich das nur durch eine Neuplanung beheben.

281

Beim LDAP-Import bleiben die UUIDs jetzt konsistent erhalten und sorgen für eine eindeutige Identifizierung.

76

Die Benutzer-ID wird beim Einsatz des Serveradapters ohne LDAP oder OIDC zuverlässig übermittelt, um eine korrekte Authentifizierung sicherzustellen.

601

Das Modul Abweichungen verarbeitet Daten jetzt stabil und ohne Python-Exception.

300

Das Erstellen von Statements mit virtuellen Dataitems und Relationen zu Oberbereichen funktioniert jetzt wie vorgesehen.

90

Das Parsen von Statements wurde optimiert, sodass Literale nur an den richtigen Stellen ersetzt werden.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.