CRM 8.5 Release Notes 🇩🇪

2026-10-27

Server

Improvement

Migration von Java 21 zu Java 25

Java 25 ist das neue LTS-Release (Nachfolger von Java 21). Die gesamte Build- und Laufzeit-Toolchain wurde ĂĽber alle Serverkomponenten hinweg aktualisiert.

New feature

Monatliches Rate-Limiting fĂĽr Geo-API-Anfragen

Die neue Umgebungsvariable PSA_GEO_SERVICE_QUOTA ermöglicht ein optionales Rate-Limiting aller ausgehenden Geo-API-Aufrufe. Die Variable akzeptiert drei Parameter:

  • LIMIT — maximale Anzahl der pro Zeitraum erlaubten Aufrufe (Standard 0 = kein Limit)
  • SEQUENCE — Name der als Zähler verwendeten Datenbanksequenz (Standard GEO_SVC)
  • MODE— Verhalten bei Erreichen des Limits:
    • ERROR (Standard) — blockiert den Aufruf und wirft einen dem Benutzer angezeigten Fehler
    • WARN — erlaubt den Aufruf, schreibt aber eine Warnung in die Sitzung und das Server-Log
    • DEBUG — erlaubt den Aufruf stillschweigend

Die Quotenprüfung (PsaGeoQue.checkServiceQuota()) wird vor jeder ausgehenden Geo-API-Anfrage aufgerufen: Adressabfragen, Autovervollständigung von Adressfeldern und Routenberechnung.

Der Reset-Mechanismus ist auf Plattformebene implementiert: Eine neue Spalte in der Sequenztabelle ermöglicht es jeder DB-Sequenz, sich automatisch zurückzusetzen, wenn sich der Zeitraum ändert (z. B. neuer Monat). Bei jedem Aufruf der „nächsten Sequenz“ wird die aktuelle Zeitraum-Zeichenfolge mit dem gespeicherten Wert verglichen. Unterscheiden sich diese, wird der Zähler vor dem Hochzählen auf sein Minimum zurückgesetzt. Dies funktioniert bei allen unterstützten Datenbanken (Oracle, PostgreSQL, SQL Server).

Improvement

Vorab-PrĂĽfung auf vorhandene Geo-Koordinaten vor dem API-Aufruf

Bevor eine Geo-API-Anfrage für eine Adresse gesendet wird, prüft das System nun, ob eine identische Adresse (übereinstimmend bei Straße, Postleitzahl, Ort und Land) mit bereits gespeicherten Koordinaten in PSA_ADR existiert. Wird eine solche gefunden, werden die gespeicherten Breiten- und Längengrade wiederverwendet. Der externe API-Aufruf findet nur statt, wenn keine verwendbaren Koordinaten gefunden werden.

Improvement

Projektauswahl im Besuchsbericht-Assistenten

Der Besuchsbericht-Assistent, der beim Abschließen eines Termins geöffnet wird, enthält nun einen sechsten Auswahlschritt für die dem Termin zugewiesenen Projekte. Die ausgewählten Projekte werden als Dialog-Tag (kommagetrennte Liste) angezeigt. Ein Klick auf das Feld öffnet den standardmäßigen Mehrfachauswahl-Dialog für Projekte, der auch die Option bietet, ein Hauptprojekt zu markieren.

New feature

Kennzeichnung von Marketing-Case-Teilnehmern

Dem Datenobjekt PSA_PRO_CON wurde ein neues Feld LBL (bis zu 2000 Zeichen) hinzugefĂĽgt. Mehrere Kennzeichnungen werden durch Semikolons getrennt in einem einzigen Feld gespeichert.

Benutzer können Kennzeichnungen direkt in das Feld eingeben oder einen modalen Auswahldialog öffnen, der alle im aktuellen Projekt bereits verwendeten Kennzeichnungen aufführt. Das Feld ist einsprachig und erfordert keine zentrale Verwaltung.

Improvement

Neues Kennzeichen „Erneut testen“ bei Testdefinitionen

Wenn ein Customizer eine Korrektur für einen gemeldeten Fehler einarbeitet — oder den Umfang einer Funktion ändert —, hat der Benutzer, der den Fehler ursprünglich gemeldet hat, kein klares Signal, dass auf seiner Seite eine neue Aufgabe anfällt. Das neue Kennzeichen „Erneut testen“ an der Testdefinition schließt diese Lücke: Der Customizer setzt es auf ein, um dem Benutzer zu signalisieren, „diesen Test bitte erneut durchzuführen“, und das Kennzeichen ist am Testdatensatz deutlich sichtbar.

Ein Administrator (oder jeder Benutzer mit den erforderlichen Berechtigungen fĂĽr die Testdefinition) kann das Kennzeichen umschalten. Wenn eine TestdurchfĂĽhrung erfasst oder ein Ergebnis fĂĽr den Test eingetragen wird, wird das Kennzeichen automatisch auf aus zurĂĽckgesetzt, sodass es nur so lange gesetzt bleibt, bis der Benutzer reagiert.

Improvement

Strukturkopie von Mailinglisten und Ad-hoc-Listen kopiert nun alle Mitglieder

Bisher wurde eine Strukturkopie einer Mailingliste über den geöffneten Dialog durchgeführt und replizierte daher nur die Datensätze, die zu diesem Zeitpunkt im Reiter „Mitglieder“ geladen waren. War der Dialog auf 1000 sichtbare Zeilen begrenzt, enthielt die Kopie einer Liste mit 10.000 Mitgliedern am Ende nur diese 1000 Mitglieder.

Die Strukturkopie für beide Listentypen wird nun serverseitig durchgeführt, nach dem Vorbild der bereits vorhandenen spezialisierten Kopierfunktionen für Projekte, Dokumente, Serviceobjekte, Vorlagen und Fragebögen. Die Strukturkopie kopiert den Basisdatensatz und alle Beziehungen zu Kontakten.

Nach Abschluss der serverseitigen Kopie öffnet sich ein modaler Ergebnisdialog, in dem der Benutzer den kopierten Datensatz bearbeiten und den Vorgang bestätigen oder abbrechen kann. Da die Kopie nicht mehr durch den Dialog läuft, ist sie bei Listen mit vielen Kontakten deutlich schneller.

8.4 Patch 10

Bug fix

@LATEST_DATE-Makro aktualisiert auf Jahr 9999

Die vom Makroprozessor verwendete interne Konstante LATEST_DATE wurde bisher zu 2035-01-01 00:00:00 aufgelöst — ein Datum, das sich inzwischen nähert. Der Wert wurde auf 9999-01-01 00:00:00 UTC aktualisiert (interne Darstellung 99990101000000).

Die letzte mögliche Sekunde (9999-12-31 23:59:59) wurde bewusst nicht verwendet, um Überläufe bei der Zeitzonenumrechnung zu vermeiden, wenn Datumsangaben über Zeitzonengrenzen hinweg verschoben werden.

Improvement

Vereinfachte Konfiguration der Plattformprodukte

Bisher benötigten Automations, Planning Board und GenAI jeweils eigene URL-Umgebungsvariablen (psa.neoletter.url, psa.planning_board.url, psa.gen.ai.instance.id). Alle JustRelate-Plattformprodukte verwenden dasselbe Basis-URL-Muster (https://api.justrelate.com/<product>/instances/<id>), sodass diese separaten Einträge redundant waren.

Nach dieser Änderung schreibt der Konfigurationsdialog nur noch vier Werte:

  • psa.iam.instance — die gemeinsame Instanz-ID
  • psa.iam.account — die gemeinsame IAM-Account-ID
  • psa.iam.id / psa.iam.secret — die IAM-Client-Zugangsdaten

Produktclients (PsaClient.getUrl()) leiten ihre vollständige Endpunkt-URL automatisch aus psa.iam.instance ab, wenn keine explizite URL-Eigenschaft gefunden wird.

Neue Eigenschaft / Umgebungsvariableersetzt
psa.iam.instance / PSA_IAM_INSTANCEpsa.neoletter.url
psa.planning_board.url
psa.gen.ai.instance.id
psa.iam.account / PSA_IAM_ACCOUNTpsa.rst.api.iam.acc.id

Migration

Bestehende Installationen, bei denen noch die alten produktspezifischen Umgebungsvariablen konfiguriert sind, funktionieren weiterhin — der Code fällt auf die alten Schlüssel zurück.

8.4 Patch 10

Bug fix

Portal-API-Volltextsuche: Kundenfilter im EUREKA-Index

Die Volltextsuche der Portal-REST-API leitet Anfragen über EUREKA und wendet anschließend einen zweiten Filter an, um die Ergebnisse auf den aufrufenden Kunden einzuschränken. EUREKA begrenzt die Ergebnisse auf 1000 Treffer. Trifft eine Anfrage über alle Kunden hinweg auf mehr als 1000 Datensätze, könnten die kundenspezifischen Datensätze außerhalb dieser Grenze liegen — mit der Folge, dass der Aufrufer zu wenige oder gar keine Ergebnisse erhält.

Die Korrektur führt ein neues Indexfeld POR_KEY_001 ein, das die Kunden-GID (CON_GID) für alle indizierten Projekttypen speichert. Bei Serviceobjekten werden außerdem die GIDs von Lieferant und Betreiber gespeichert. Die Portalsuche übergibt nun den Kundenschlüssel des Aufrufers als zusätzlichen Filter auf POR_KEY_001 direkt an EUREKA, sodass von Anfang an nur Datensätze dieses Kunden berücksichtigt werden und die Begrenzung auf 1000 Ergebnisse nicht mehr dazu führt, dass Daten fehlen.

Nach dem Upgrade ist eine administrative MaĂźnahme erforderlich, da das neue Feld in bestehenden Indexdokumenten nicht vorhanden ist. Bis ein Datensatz neu indiziert wird, fehlt das Feld, und die Suche findet ihn nicht. FĂĽhren Sie nach dem Upgrade eine partielle Neuindizierung der betroffenen DTO-Typen durch. Kopieren Sie den EUREKA-Indexierungsjob und setzen Sie die Parameter:

8.4 Patch 10

New feature

Eigenes KI-Chatfenster

Bisher fand die Unterhaltung mit der KI (SalesBot/ChatBot) über die reguläre Nachrichten-Oberfläche statt, indem Nachrichten an einen speziellen Bot-Benutzer gesendet wurden. Ein Hintergrundjob erzeugte eine Antwort und postete sie als Chat-Nachricht zurück. Das funktionierte, war aber umständlich — es belastete das Nachrichtenprotokoll, bot keine eigene Konversations-Oberfläche und koppelte den Chat-Ablauf an die allgemeine Nachrichteninfrastruktur.

Ein neuer, eigener Dialog ersetzt diesen Workaround. Der Dialog ist in der Seitenleisten-Navigation verfĂĽgbar und bietet eine echte Chat-Erfahrung, die direkt auf dem GenAI-Dienst aufbaut.

Funktionen

  • Chat-Oberfläche — Eine gestaltete Chat-Ansicht mit unterschiedlichen Sprechblasen fĂĽr Benutzer- („Ich“) und Agentennachrichten sowie einer animierten Tippanzeige, während die KI „nachdenkt“.
  • Asynchrone KI-Anfragen — Nachrichten werden ĂĽber einen Hintergrund-Thread gesendet, sodass die Oberfläche reaktionsfähig bleibt. Ergebnisse werden an den Client zurĂĽckgesendet.
  • Kontextbewusstsein — Der Dialog erkennt den aktuell aktiven Datensatz und ĂĽbergibt ihn als Kontext an die KI. Ă„ndert sich der aktive Datensatz mitten in der Unterhaltung, wird eine Warnmeldung in den Chatverlauf eingefĂĽgt, damit der Benutzer erkennt, dass sich der Kontext der KI geändert hat.
  • Mehrstufiger Verlauf — Der vollständige Konversationsverlauf wird ĂĽber mehrere Fragen hinweg beibehalten, sodass die KI fĂĽr Anschlussfragen einen durchgehenden Kontext hat.
  • Werkzeug zum Ă–ffnen von Datensätzen — Ein benutzerdefiniertes Werkzeug wird beim KI-Agenten registriert, mit dem dieser einen CRM-Datensatz direkt in der Client-Sitzung des Benutzers öffnen kann.
  • Behandlung des Antwortformats — KI-Antworten werden als HTML, Markdown oder Klartext erkannt und vor der Anzeige entsprechend umgewandelt.
  • Als Memo speichern — Der Chat kann als Memo gespeichert werden, das mit dem aktiven Kontakt oder Projekt verknĂĽpft ist. Als Betreff des Memos wird eine von der KI erzeugte Zusammenfassung verwendet.
  • Theming — Chat-Farben (Hintergrund, Sprechblasen) lassen sich ĂĽber die Umgebungsvariable PSA_AI_CHAT_CLR konfigurieren.

Voraussetzungen

  • Nur Web Client — erfordert den Web Client und die VerfĂĽgbarkeit von Server-Push.

8.4 Patch 9

Bug fix

SOAP-UnterstĂĽtzung in ein optionales Modul ausgelagert

Die SOAP-Integration im Kernserver verwendete Apache Axis 1.2, dessen Lebenszyklus schon lange beendet ist. Ein Upgrade auf Axis 2 würde eine vollständige Neuimplementierung erfordern, und nur eine kleine Anzahl von Kunden nutzt SOAP noch — daher wurde die Integration aus dem ausgelieferten Server herausgelöst, anstatt sie zu migrieren. Neue SOAP-basierte Integrationen sollten stattdessen REST verwenden.

Was sich geändert hat

  • Die auf Axis 1.2 basierende SOAP-Implementierung wurde aus dem Server entfernt.
  • Die Cluster-Kommunikation verwendet jetzt ausschlieĂźlich REST — die SOAP-Fallback-Pfade wurden entfernt.
  • Der ausgelagerte Code wurde in ein neues Projekt verschoben (gebaut als PscSoap_1.0.0.jar). Die folgenden Abhängigkeits-Jars, die zuvor im Kern enthalten waren, sind nun nur noch Abhängigkeiten des optionalen Moduls: axis.jar, commons-discovery-0.5.jar, jaxrpc-pisa.jar, saaj-impl-1.5.1.jar.
  • Die ifax-Schnittstelle ist nicht mehr Teil des ausgelieferten Server-Jars.

SOAP wieder installieren (für Kunden, die es noch benötigen)

Der Release-Ordner enthält soap.zip, das PscSoap_1.0.0.jar zusammen mit seinen referenzierten Drittanbieter-Jars (Axis 1.2 u. a., verdrahtet über den Manifest-Classpath des Jars) bündelt. So aktivieren Sie SOAP wieder:

  1. Entpacken Sie soap.zip in das ext-Verzeichnis des Servers.
  2. FĂĽgen Sie PscSoap_1.0.0.jar dem Classpath hinzu.

Das ausgelagerte Modul wird nicht weiter gepflegt. Die Nutzung findet auf eigenes Risiko statt.

Improvement

Mehrsprachige Unterstützung für das Projektfeld „Verlustgrund“

Bisher speicherte das Feld LST_REA bei Projekten (z. B. Angeboten) nur eine einzige, nicht lokalisierte Zeichenfolge, obwohl die Stammdatentabelle „Verlustgrund“ (PSA_LST_REA) bereits übersetzte Bezeichnungen pro Sprache verwaltete. In mehrsprachigen Umgebungen sahen Benutzer, die in unterschiedlichen Sprachen arbeiteten, dadurch immer den Rohwert statt ihrer eigenen Übersetzung.

Das Feld wird nun pro konfigurierter Benutzersprache gespeichert und aufgelöst.

Während des Upgrades migriert eine Funktion in der SQL-Administration das Feld automatisch zur Mehrsprachigkeit.

Bug fix

Hauptkontakt wird Duplikaten beim Auflösen über E-Mail vorgezogen

Bei der Suche eines Kontakts über die E-Mail-Adresse läuft die Suche nun in zwei Phasen ab. Zunächst ignoriert die Abfrage als Duplikat markierte Kontakte und berücksichtigt nur Hauptdatensätze. Nur wenn diese erste Phase kein Ergebnis liefert, greift die Suche auf Duplikatkontakte zurück.

War eine E-Mail-Adresse zuvor nicht eindeutig, aber bis auf einen alle passenden Kontakte als Duplikate markiert, konnte die Suche ein Duplikat statt des Hauptdatensatzes zurĂĽckgeben. Dadurch wurden z. B. eingehende E-Mails dem Duplikatkontakt zugeordnet statt dem fortbestehenden Hauptkontakt.

New feature

MCP-Server fĂĽr Classic CRM

Das Classic CRM stellt einen REST-Endpunkt /mcp bereit, der das Model Context Protocol implementiert und es KI-Coding-Assistenten und -Agenten (z. B. Claude Code) ermöglicht, CRM-Daten per natürlicher Sprache abzufragen und zu bearbeiten.

Architektur

  • Der Endpunkt /mcp liegt auĂźerhalb des Standardpfads /salesportal und verteilt JSON-RPC-Anfragen des Typs tools/list und tools/call.
  • Die Authentifizierung findet ĂĽber IAM-Proxy-Header (X-IAM-Client-ID / X-IAM-Secret) statt: Der Server ruft serverseitig ein IAM-Token ab und validiert es, sodass auf Client-Seite keine Sitzung erforderlich ist.
  • Werkzeuge werden in einer neuen Administrationstabelle (REST-API-Administration → MCP Tools) definiert und beim Serverstart geladen. Es werden drei Arten von Werkzeugimplementierungen unterstĂĽtzt:
    1. Freistil-Werkzeuge — jede Klasse, die de.pisa.psa.com.genai.mcp.json.MCPTool implementiert.
    2. REST-API-Werkzeugadapter (de.pisa.psa.com.genai.mcp.adapter.RestApiToolAdapter) — bildet einen vorhandenen Sales-Portal-REST-Endpunkt automatisch auf ein MCP-Werkzeug ab. Der Parameter ENDPOINT:=GET salesportal/order ist alles, was benötigt wird. Der Adapter leitet das JSON-Schema aus dem Datenobjekt und dem Event-Handler des Endpunkts ab und übersetzt Enum-Codes in ihre lesbaren Bezeichnungen und zurück.
    3. GenAI/SalesBot-Werkzeugadapter (de.pisa.psa.salesbot.mcp.ToolAdapter) — kapselt ein bestehendes SalesBotToolFactory-Werkzeug als MCP-Werkzeug.

Integrierte Werkzeuge (als Standard-Datenmodell ausgeliefert)

  • Wer bin ich — Identität des aufrufenden CRM-Benutzers
  • Personen / Firmen — CRUD auf Kontakte (Person, Firma, Adresse, soziales Netzwerk, Firma-Person-Beziehung)
  • Aktivitäten — CRUD auf Aktivitäten und Aktivität-Kontakt-Beziehungen
  • Nachrichten — Nachrichten lesen und neue Pinnwand-Nachrichten posten
  • Opportunities / Angebote / Aufträge — CRUD auf Vertriebsobjekte
  • Listen / Listen-Kontakt-Status — CRUD auf Listen und Kontaktmitgliedschaften
  • Projekte — CRUD auf Aktivität-Projekt- und Kontakt-Projekt-Beziehungen
  • Tickets — CRUD auf Service-Tickets

Einrichtung fĂĽr 8.4

Importieren Sie die beiden Loader-Pakete PSA_MCP_BAS_EXP.zip und PSA_MCP_DAT_EXP.zip (verfĂĽgbar auf S3 unter s3://pisa-releases/08.04-20251126) ĂĽber den Repository-Upgrade-Assistenten in der Entwickler-Toolbox.

Claude Code verbinden

Erzeugen Sie in der JustRelate Console fĂĽr Ihre Instanz einen API-SchlĂĽssel (Client-ID + Secret) und fĂĽhren Sie dann Folgendes aus:

Führen Sie nach einem Neustart von Claude Code /mcp aus, um die registrierten Werkzeuge zu sehen. Ein schneller Funktionstest: „Wer bin ich im CRM?“

8.4 Patch 8

New feature

Diagramme liefern JSON statt eines vorgerenderten PNG

Cockpit-Diagrammkacheln (Zeiger, Balken, gestapelte Balken, Linie+Balken, Kreis, Trichter) und einige verwandte eigenständige Diagrammformulare haben bisher unabhängig vom Client immer ein serverseitiges PNG-Bild gerendert. Ein Client, der signalisiert, dass er Diagramme selbst rendern kann (das Fähigkeitsflag JSC „JSON charts“), erhält das Diagramm nun stattdessen als strukturierte JSON-Daten — dasselbe Datenmodell, das bereits von der REST/NeoDXP-Cockpit-API verwendet wird — und rendert es clientseitig, anstatt ein statisches Bild anzuzeigen.

Was auf JSON umgestellt wurde (wenn der Client es anfordert)

  • Alle Cockpit-Diagrammdialoge, die auf der gemeinsamen Basisklasse PsaCcpDiaSciApp aufbauen (Gauge, Balken, gestapelte Balken, Linie+Balken, Kreis und die Vertriebstrichter-Cockpit-Kachel).
  • Die eigenständigen Diagrammformulare fĂĽr Vertriebstrichter und Projekt-Kontaktstatus (PsaProSalFnlApp, PsaProConStaFnlApp, PsaProConStaDiaApp), die in Projekt-/Vertriebsdialogen auĂźerhalb des Cockpits eingebettet sind.

Was weiterhin bewusst als PNG gerendert wird

  • Druck-/Exportberichtsdialoge (Fragebogenbericht, Ăśbersichtsbericht zu Aktivitätsanfragen) — dies sind Dokumente, keine interaktiven Kacheln.
  • Touch-/Pad-/Telefon-Dialoge, die bereits konzeptionell aus ihrem eigenen (älteren) JSON-Format rendern.
  • Die Drill-Down-Vergleichsdetailansicht, die vier Diagramme zu einer Bitmap zusammenfĂĽgt — eine zusammengesetzte JSON-Darstellung fĂĽr diesen Fall ist als Folgeschritt geplant.

Mit der Formatänderung gebündelte Korrekturen der Diagrammdatengenauigkeit

Die JSON-Nutzlast enthält nun denselben Größenordnungs-/Währungssuffix (z. B. "T€" für Tausend), Wertskala und Legendeninformationen (Position sowie Sichtbarkeit bei kleiner Kachel vs. maximiert), die der PNG-Renderer bereits anzeigte, sodass ein Diagramm unabhängig von der verwendeten Darstellung gleich aussieht.

Anpassung

  • de.pisa.psa.ifc.dia.PsaDiaUti bĂĽndelt die relevanten Hilfsmethoden (isUseJSONData(PscFrm), getChartViewType(PscFrm)) fĂĽr jeden Dialog, der ein Diagramm rendert, sodass auch benutzerdefinierte Dialoge auf die gleiche Weise mitziehen können.
Improvement

Verbindungs-Timeouts werden mit exponentiellem Backoff wiederholt

Bisher fĂĽhrte eine SocketTimeoutException bei einem ausgehenden HTTP-Aufruf an einen externen JustRelate-Dienst zum sofortigen Fehlschlagen des Vorgangs. Die Korrektur fĂĽgt den REST-Clients an drei Stellen eine ExponentialBackoffStrategy hinzu, die fĂĽr Wiederholungen bei TimeoutException konfiguriert ist:

  • Automations — Mailing-Synchronisationsaufrufe an die Automations-API
  • IAM-Userinfo — die fĂĽr die Token-Validierung verwendete IAM-/userinfo-Anfrage
  • Ausgehende REST-Event-Handler (PsaRstApiEvtHdlOut) — von Event-Handler-Implementierungen initiierte REST-Aufrufe
  • GenAI — Aufrufe des KI-Agenten

8.4 Patch 8
8.3 Patch 21
8.2 Patch 35

Improvement

Alle 5xx-Fehler lösen eine Wiederholung mit exponentiellem Backoff aus

Die Wiederholungsstrategie des REST-Clients wiederholte bisher nur bei HTTP 429 (zu viele Anfragen). AWS Bedrock (und andere Dienste) liefern unter hoher Last auch HTTP 503, was nicht wiederholt wurde und zu sofortigen Fehlern fĂĽhrte.

Die Standardmenge der Auslöser für Wiederholungen umfasst nun 429 sowie den gesamten 5xx-Bereich (500–599). Alle Verbraucher der Wiederholungsstrategie — IAM, Automations, GenAI und das Planning Board — erhalten dieses Verhalten automatisch, ohne jegliche Konfigurationsänderung.

8.4 Patch 7
8.3 Patch 20
8.2 Patch 34

Bug fix

Automations: Empfängerdaten vor der Übermittlung an Automations validiert

Bei der Synchronisation einer Mailingliste werden Empfängerdatensätze in einem einzigen Übermittlungsblock an Automations übertragen. Überschritt ein Feldwert das von der Automations-API akzeptierte Limit (z. B. eine Anrede mit mehr als 50 Zeichen), gab Automations erst nach Verarbeitung des gesamten Blocks einen Fehler zurück, was einige Zeit dauern konnte.

Empfängerdaten werden nun vor dem Senden des Übermittlungsblocks gegen die Feldlängenbeschränkungen der Automations-API validiert. Ein ungültiger Empfänger wird sofort mit einer verständlichen Warnung abgelehnt, die den betroffenen Datensatz anhand von Name und E-Mail-Adresse identifiziert.

Angewendete Feldbeschränkungen (gemäß der Automations-API-Spezifikation)

FeldMax. Länge
email120
salutation, gender, phone_number50
given_name, family_name, middle_name, name, company250
url1000

8.4 Patch 8

Bug fix

Drill-Down: Dropdown-Auswahl nicht mehr auf 100 Einträge begrenzt

Dropdown-Felder in Drill-Downs (z. B. die Auswahl „Anlass“) waren auf 100 Einträge begrenzt. Die Ursache lag darin, dass beim Abrufen der eindeutigen Werte für das Dropdown der auf dem sichtbaren Feld gesetzte Filter nicht in das für den Distinct-Abruf geklonte Datenobjekt kopiert wurde. Dadurch lief die Distinct-Abfrage ungefiltert und stieß sofort auf das Standardlimit von 100 Datensätzen, unabhängig davon, was der Benutzer eingegeben hatte.

Die Korrektur kopiert die Abfrage des sichtbaren Felds vom Quelldatenobjekt in das geklonte Datenobjekt, bevor der Distinct-Abruf ausgeführt wird, sodass der Filter korrekt angewendet wird und die vollständige passende Ergebnismenge zurückgegeben wird.

8.4 Patch 7

Bug fix

Umbenennung einer Organisation: Fehler bei Firma als Planer behoben

Die Funktion „Namen der Organisation ändern“ schlug mit einem Fehler „ungültiges Feld“ fehl, wenn die Firma einem Objekt als Planer zugewiesen war. Bei einer Umbenennung durchläuft die Funktion alle verknüpften Objekte, um das Kontaktreferenzfeld zu aktualisieren. Bei Planer-Objekten trug der während der Umbenennung geladene Datenobjekttyp das Kontaktbeziehungsfeld nicht direkt — daher warf das Setzen der Daten einen Fehler.

Die Korrektur prĂĽft, ob das Feld vorhanden ist, bevor versucht wird, es direkt zu setzen. Ist das Feld nicht vorhanden, wird die passende Datenobjektklasse fĂĽr das Objekt ermittelt, der Datensatz unter dieser Klasse geladen und anschlieĂźend die Aktualisierung angewendet.

8.4 Patch 7

Bug fix

Pinnwand: EinfĂĽgen von @Kollegen bei HTML-Nachrichten korrigiert

Ein Klick auf den Avatar eines Kollegen, um ihn in einer Pinnwand-Nachricht zu adressieren, führte dazu, dass das Kürzel @benutzername unabhängig davon, ob das Nachrichtenfeld HTML-Inhalt enthielt, als Klartext angehängt wurde. In einer HTML-Nachricht führte dies dazu, dass das Kürzel — und das umgebende Markup — als rohes HTML im geposteten Text erschien.

Die Korrektur erkennt, ob der aktuelle Nachrichtentext HTML-Markup ist. Falls ja, wird das Kürzel innerhalb des <body> in einem neuen <div>-Element eingefügt, anstatt als einfache Zeichenfolge angehängt zu werden. Bei Klartext-Nachrichten bleibt das bisherige Verhalten erhalten.

Improvement

MS SQL Server: Primärschlüsselindizes auf CLUSTERED geändert

Auf Microsoft SQL Server wurden Primärschlüsselindizes bisher als NONCLUSTERED angelegt. Dies war wahrscheinlich eine Altlast aus der Zeit, als GIDs UUIDv4 (vollständig zufällig) waren, was bei Inserts zu starker Fragmentierung geclusterter Indizes führte. Mit den nun zeitlich geordneten UUIDv7-GIDs entfällt dieses Fragmentierungsproblem.

NONCLUSTERED-Primärschlüssel auf SQL Server haben zwei Nachteile: Sie führen zu einer separaten Heap-Struktur für die Tabellendaten, die bei jedem Lookup verknüpft werden muss, und sie können zu Deadlocks bei gleichzeitiger Schreiblast beitragen.

Die Korrektur besteht darin, dass neu erstellte Tabellen auf SQL Server nun PRIMARY KEY CLUSTERED verwenden. Bestehende Tabellen sind davon nicht betroffen — nur nach dieser Änderung erstellte Tabellen erhalten einen geclusterten Primärschlüssel.

8.4 Patch 6

Bug fix

Serviceobjekt: Produkt kann nach der Erstellung nicht mehr geändert werden

Die Schaltfläche, mit der das Produkt eines bestehenden Serviceobjekts geändert werden konnte, wurde entfernt. Die Auswahl eines Produkts bewirkt weit mehr als nur das Setzen einer Beziehung. Sie kann Einträge in der Produktklassentabelle erzeugen, kopiert Feldwerte vom Produkt auf das Serviceobjekt und verhält sich unterschiedlich, je nachdem, ob das Objekt neutral, projektspezifisch oder eine Produktklassenvariante ist. Eine Änderung des Produkts nach der Erstellung würde nur einen Teil dieser Daten aktualisieren, während andere abgeleitete Felder unverändert blieben — das Ergebnis wäre ein inkonsistenter Zustand, bei dem das alte Produkt das Serviceobjekt weiterhin in seiner Unterliste zeigt und das neue Produkt nicht.

Um ein Serviceobjekt einem anderen Produkt zuzuweisen, muss ein neues Serviceobjekt ĂĽber die dafĂĽr vorgesehenen MenĂĽfunktionen (neutral, projektspezifisch oder Produktklasse) erstellt werden.

8.4 Patch 6
8.3 Patch 19

Improvement

Fragebogenberichte: Markierte Fragen vom Druck ausgeschlossen

Fragebogenfragen, die mit „Nicht drucken“ markiert sind, werden bei der Erstellung von Fragebogenberichten nun ausgelassen. Diese Fragen sind typischerweise offene Freitext-Eingaben, bei denen es keinen Sinn ergibt, alle individuellen Antworten in einem Bericht zu drucken.

Der Filter DOC_INV=n wurde zum Datenobjekt PSA_QST_QUE in den folgenden Berichts-Loadern hinzugefĂĽgt:

  • PSA_RPT_QST_BRT — Datenblatt am Fragebogen
  • PSA_RPT_ACT_REA_BRT — Termin-Besuchsbericht
  • PSA_RPT_PRS_EXT_BRT — Datenblatt einer Person
  • PSA_RPT_PRO_MKT_BRT — Datenblatt fĂĽr ein Marketingprojekt
Improvement

Benachrichtigung „Neue E-Mail“ kann pro Benutzer deaktiviert werden

Der Hintergrundjob „Mailbox: count unread mails“ (PSA_MBX_CNT_UNR) prüft regelmäßig auf ungelesene E-Mails und zeigt dem Benutzer einen Benachrichtigungsdialog an. Benutzer können diese Benachrichtigung nun individuell deaktivieren.

Eine neue benutzerspezifische Variable PSA_MBX_UNR_DSK_NFY („Soll eine Benachrichtigung angezeigt werden, wenn neue ungelesene E-Mails im Postfach gefunden werden?“) steuert das Verhalten. Sie ist im Dialog „Meine Einstellungen“ konfigurierbar. Wird sie auf n gesetzt, wird das Popup unterdrückt, ohne die Anzahl der ungelesenen E-Mails selbst zu beeinflussen.

8.4 Patch 10

New feature

Export/Import fĂĽr Favoriten

Benutzer können ihren Favoritenbaum nun in eine JSON-Datei exportieren und wieder importieren. Diese Funktion ist über das Kontextmenü am obersten Knoten (alles exportieren) oder an einem ausgewählten Unterknoten (Teilbaum exportieren) verfügbar.

Die exportierte JSON-Datei enthält keine systemeigenen Felder (keinen Primärschlüssel, keinen Besitzer), sodass sie von jedem Benutzer importiert werden kann. Die Datei enthält Metadaten darüber, wann und von wem der Export erstellt wurde.

Beim Import wird der Benutzer gefragt, ob nur neue Einträge eingefügt oder vorhandene auch überschrieben werden sollen. Der Abgleich findet anhand des Namens des Favoriten und der Schlüsseldaten statt (Dialog, Datensatz-ID, Filter-ID usw.) und nicht anhand des Primärschlüssels, wodurch die Übertragung zwischen Benutzern zuverlässig funktioniert.

Anwendungsfälle

  • Sicherung der Favoriten eines Benutzers vor versehentlichem Löschen
  • Ăśbertragung einer Favoritenstruktur von einem Benutzer auf einen anderen
  • Kopieren von Favoriten von einem Testsystem auf die Produktion

Anpassung

  • Die Export-/Importlogik befindet sich in PsaTreFvrExp, die ĂĽber PsaObjFac.newPsaTreFvrExp() instanziiert wird. Diese Klasse kann beispielsweise verwendet werden, um einen nächtlichen Sicherungsjob zu implementieren, der die Favoriten aller Benutzer automatisch exportiert.
Bug fix

Objektfabrik: Erkennung veralteter Instanzen nach Class-Loader-Aktualisierung

Wenn der Repository-Class-Loader aktualisiert wird (z. B. nach dem Deployment neuer IPL-Klassen), würde jede zwischengespeicherte Objektfabrik-Instanz, die mit dem alten Class Loader erstellt wurde, eine ClassCastException auslösen. Dies geschah, weil die zwischengespeicherte Fabrik Klassenreferenzen des alten Loaders hielt, während neue Instanzen über den aktualisierten Loader erzeugt wurden — beide sind für das Casting inkompatibel.

Die Korrektur fügt zum Class Loader einen Erstellungszeitstempel hinzu. Der Getter der Objektfabrik vergleicht seine eigene Erstellungszeit mit der des Class Loaders — ist die Fabrik älter, wird sie verworfen und transparent eine neue Instanz erstellt.

8.4 Patch 3
8.3 Patch 16
8.2 Patch 30

Improvement

UUIDv4 → UUIDv7 für die GID-Erzeugung

Alle neuen GIDs (globale IDs / Primärschlüssel) werden nun als UUIDv7 statt UUIDv4 erzeugt. UUIDv7 bettet einen Millisekunden-Zeitstempel in die höchstwertigen Bits ein, sodass neue Datensätze chronologisch sortiert und in denselben B-Baum-Blattseiten wie aktuelle Datensätze landen, statt zufällig über den Index verteilt zu werden.

Vorteile

  • Schnellere Inserts (neue Zeilen werden nahe dem Ende des Index angehängt)
  • Weniger Indexfragmentierung und weniger B-Baum-Seitenteilungen
  • Kleinere Indizes, geringere I/O, bessere Cache-Nutzung
  • GIDs sind nach Erstellungszeit sortierbar

UUIDv7-Werte sind vollständig kompatibel mit dem bestehenden 32-stelligen GID-Format.

8.4 Patch 6

Improvement

Drill-Down: Standardmäßig manueller Abruf

Der Drill-Down berechnet und ruft Ergebnisse nicht mehr automatisch ab, wenn ein Filter geändert wird. Der Standardwert der Variable PSA_DRL_DWN_AUT_FET wurde auf OFF geändert, sodass Ergebnisse erst geladen werden, wenn der Benutzer den Abruf ausdrücklich auslöst. Dies vermeidet unnötige Datenbanklast, wenn ein Drill-Down zwar bereits konfiguriert, das Ergebnis aber noch nicht sofort benötigt wird.

Konfiguration

  • Setzen Sie PSA_DRL_DWN_AUT_FET auf ON, um das bisherige automatische Abrufverhalten wiederherzustellen.

8.4 Patch 3

New feature

Textmodule

Textmodule sind wiederverwendbare Textbausteine, die Benutzer in E-Mails und Pinnwand-Nachrichten einfügen können. Sie werden unter „Administration > Service > Textmodule“ verwaltet und sind in zwei Ebenen organisiert: eine Gruppe (erste Ebene) und ein Betreff (zweite Ebene). Jedem Textmodul kann eine Sprache zugewiesen werden.

Beim Verfassen einer E-Mail oder einer Pinnwand-Nachricht öffnet eine neue Schaltfläche einen modalen Baumauswahl-Dialog. Der Baum ist nach Gruppe und Betreff gegliedert; die Auswahl eines Blatts fügt den Text in das Textfeld ein.

Anpassung

  • Die Auswahlmethode PsaTxtModChcTreApp.chc akzeptiert zusätzliche Abfrageparameter, die es Integrationen erlauben, den Dialog vorzufiltern — zum Beispiel, um den Baum auf bestimmte Gruppen zu beschränken.
New feature

KI-Agenten-Hook fĂĽr CLOB-Felder

Neuer Hook callAiAgent(PscUsxPar) in PsaFrmIpl, ausgelöst durch die Dialogfunktion AIA_PRC. Er erhält die Anfrage-Nutzlast als PscUsxPar — den Anfragetext (TXT), ein optionales Kennzeichen HTM, das angibt, ob dieser Text HTML ist, und einen optionalen PEV-Wert („Prompt Environment Value“), der den Umgebungswert benennt, der die Prompt-Vorlage liefert (mit Rückfall auf PSA_CLOB_AIA_PROMPT). Der Name des Prompt-Umgebungswerts kann über die Eigenschaft PAR des DAT-Tags eines CLOB-Felds konfiguriert werden, mit der Syntax PEV:=<Name des Umgebungswerts>. Der Hook liefert ein Optional<PscUsxPar> mit der Antwort (TXT, optional HTM) oder ein leeres Optional, um einen Abbruch zu signalisieren.

Anpassung

  • Ăśberladen Sie den Umgebungswert PSA_CLOB_AIA_PROMPT, um einen benutzerdefinierten Standard-Prompt bereitzustellen. UnterstĂĽtzte Platzhalter sind ${language} (die vermutete Sprache des Textes) und ${format} (das Textformat, z. B. HTML oder Klartext).
  • Geben Sie im Parameterfeld des DAT-Tags einen anderen Umgebungswert (statt PSA_CLOB_AIA_PROMPT) an, mit der Syntax PEV:=<Name des Umgebungswerts>.
  • Ăśberschreiben Sie die Java-Methode callAiAgent(PscUsxPar) in einer benutzerdefinierten Dialogimplementierung fĂĽr die volle Kontrolle ĂĽber den Aufruf des KI-Agenten.
New feature

KI-Funktionen

Ăśberblick

JR CRM Classic führt eine Reihe von KI-gestützten Funktionen ein, die Benutzern helfen, effizienter mit Kundendaten zu arbeiten. Diese Funktionen umfassen Textverbesserung, automatisierte Erstellung von E-Mail-Entwürfen, Besprechungszusammenfassungen, tägliche Übersichten und einen interaktiven Chat-Assistenten — alles angetrieben vom GenAI-Dienst.

FĂĽr Endbenutzer

Die folgenden KI-Funktionen sind direkt im CRM verfügbar. Sie finden sie als Schaltflächen oder Menüaktionen in den jeweiligen Bildschirmen.

Beautify

Wo: Termin, Aufgabe, Anruf

Verbessert die Qualität von Texten, die Sie in Aktivitätsfeldern geschrieben haben (Besuchsberichte, Notizen, E-Mails). Die KI korrigiert Grammatik und Rechtschreibung, verbessert die Struktur und formatiert das Ergebnis als HTML — unter Beibehaltung aller wichtigen Inhalte wie Termine, Aufgaben und Zusagen. Die Originalsprache bleibt immer erhalten.

Text vorschlagen

Wo: E-Mail

Erstellt einen Antwortvorschlag für eine E-Mail. Die KI sammelt Kontext aus dem Konversationsverlauf, den Kontaktdetails, der Firmenhistorie und den letzten Aktivitäten, um einen Entwurf in Ihrem eigenen Stil und Ihrer Sprache zu verfassen. Der erzeugte Text wird in den E-Mail-Text eingefügt, damit Sie ihn vor dem Senden prüfen können.

Transkript

Wo: Termin

Wandelt ein VTT-Besprechungstranskript (als Memo oder Datei angehängt) in einen strukturierten HTML-Besuchsbericht um. Die KI kennzeichnet Sprecherblöcke und erzeugt eine übersichtliche Zusammenfassung, die in das Aktivitätsinhaltsfeld geschrieben wird.

Suche FAQs

Wo: E-Mail

Extrahiert Schlüsselwörter aus der aktuellen E-Mail und durchsucht die Wissensdatenbank nach relevanten FAQ-Einträgen. Werden passende Artikel gefunden, fragt das System, ob diese angezeigt werden sollen — nützlich, um schnell Antworten auf Kundenfragen zu finden.

Erzeuge FAQ

Wo: E-Mail

Liest den Inhalt einer E-Mail und bittet die KI, einen Titel, eine Frage, eine Antwort und Schlüsselwörter für einen neuen Wissensdatenbank-Artikel zu extrahieren. Das Ergebnis füllt den Dialog zur FAQ-Erstellung vorab aus, sodass Sie es in einem Schritt prüfen und speichern können.

Account Management Zusammenfassung

Wo: Firma, Opportunity, Angebot, Auftrag

Erstellt ein KI-Briefing zu einer Firma oder einem Projekt. Es sammelt bis zu einem Jahr an E-Mail-Konversationen und aktuellen Terminen und fasst dann offene Themen, Risiken (Budget, Umfang, Eskalation), interne Aufgaben und die Kundenstimmung aus der Perspektive eines Account Directors zusammen. Die Zusammenfassung wird in einem Dialog angezeigt und kann als mit dem Firmendatensatz verknĂĽpftes Memo gespeichert werden.

Daily Digest: Sales

Wo: Meine Daten, interne Person

Erzeugt eine personalisierte tägliche Übersicht über Ihre zugewiesenen Accounts. Die KI durchsucht die jüngste Kundenkommunikation und hebt relevante Signale und Entwicklungen hervor. Die Übersicht wird als In-App-Benachrichtigung zugestellt und als Memo gespeichert. Sie kann auch manuell aus Ihrer persönlichen Ansicht oder einem internen Personendatensatz ausgelöst werden.

Daily Digest: Management

Wo: Zugestellt per In-App-Benachrichtigung (Job-Ausgabe)

Eine tägliche Zusammenfassung auf Management-Ebene über alle Accounts hinweg. Die KI verwendet einen zweistufigen Ansatz. Zunächst durchsucht sie die jüngste Kommunikation jeder Firma nach geschäftlichen Risikosignalen (Abwanderungsrisiko, Budget- und Umfangsprobleme, Eskalationsdrohungen, Upselling-Chancen) und konsolidiert die Erkenntnisse anschließend in einem priorisierten Bericht mit empfohlenen Maßnahmen. Wird als Memo an alle abonnierten Management-Empfänger zugestellt.

Morning Briefing

Wo: Zugestellt per In-App-Benachrichtigung (Job-Ausgabe)

Ein personalisiertes, kompaktes Briefing, das jeden Morgen für abonnierte Benutzer erstellt wird. Es umfasst die Top-5-Aufgaben für den Tag, offene Nachfassaktionen aus der vergangenen Woche, die wichtigsten Opportunities und Angebote sowie kritische Tickets. Das Briefing ist rollenspezifisch (Vertrieb, Account Director oder andere) zugeschnitten und enthält Deep-Links zu den referenzierten CRM-Objekten.

Ticket Zusammenfassung

Wo: Servicemeldung

Fasst den Meldungsbetreff, Notizen, die Pinnwand und den verknüpften Aktivitätsverlauf zusammen und bittet die KI, eine HTML-Zusammenfassung zu erstellen. Das Ergebnis wird in einem schreibgeschützten Dialog angezeigt, um sich schnell über den Status zu orientieren.

SalesBot

Wo: Interne Nachrichten, Pinnwand

Ein KI-Chat-Assistent, der CRM-bezogene Fragen beantwortet. Senden Sie eine Nachricht an den SalesBot-Benutzer oder stellen Sie eine Frage auf der Pinnwand — der Bot liest Ihre Nachricht, fragt das CRM nach Kontext ab und antwortet direkt im Konversationsverlauf.

FĂĽr Administratoren

Geplante Jobs

Die folgenden Jobs müssen in der Job-Administration konfiguriert und aktiviert werden. Alle Jobs können mit Standardeinstellungen ausgeführt werden. Die untenstehenden Einträge weisen auf erforderliche Einrichtungsschritte hin.

Job-IDNameHinweise
AI_SALESBOTAI: SalesBotErfordert einen eigenen internen CRM-Benutzer. Legen Sie eine interne Person mit einem Login an. Das Passwort kann absichtlich auf einen ungültigen Wert gesetzt werden, damit das Konto nicht interaktiv genutzt werden kann. Geben Sie diesen Benutzer in der Job-Konfiguration an. Der Job läuft kontinuierlich und startet jeden Tag automatisch neu.
AI_DAILY_DIGEST_SALESAI: Daily Digest (Sales)Läuft einmal täglich. Erzeugt Übersichten für alle abonnierten Vertriebsbenutzer.
AI_DAILY_DIGEST_MANAGEMENTAI: Daily Digest (Management)Läuft einmal täglich. Stellt einen konsolidierten Bericht für alle abonnierten Management-Benutzer bereit.
AI_MORNING_BRIEFINGAI: Morning BriefingLäuft einmal täglich am Morgen. Stellt allen abonnierten Benutzern ein Briefing bereit.
Modellkonfiguration

Alle Funktionen verwenden standardmäßig jr-auto/standard. Das Modell für alle Funktionen kann über die Variable PSA_GEN_AI_MODEL konfiguriert werden. Um für eine bestimmte Funktion ein anderes Modell zu verwenden, setzen Sie die entsprechende Umgebungsvariable auf die gewünschte Modellkennung.

FunktionVariable
BeautifyPSA_GEN_AI_MODEL_BEAUTIFY
Text vorschlagen
PSA_GEN_AI_MODEL_EMAIL_SUGGESTION
TranskriptPSA_GEN_AI_MODEL_MEETING_TRANSCRIPT
Suche FAQsPSA_GEN_AI_MODEL_SEARCH_FAQS
Erzeuge FAQPSA_GEN_AI_MODEL_CREATE_FAQ
Account Management ZusammenfassungPSA_GEN_AI_MODEL_ACCOUNT_MANAGEMENT_SUMMARY
Daily Digest: SalesPSA_GEN_AI_MODEL_DAILY_DIGEST_SALES
Daily Digest: ManagementPSA_GEN_AI_MODEL_DAILY_DIGEST_MANAGEMENT
Morning BriefingPSA_GEN_AI_MODEL_MORNING_BRIEFING
Ticket ZusammenfassungPSA_GEN_AI_MODEL_TICKET_SUMMARY
SalesBotPSA_GEN_AI_MODEL_SALESBOT
Anpassung der Prompts

Alle Prompts sind sprachsensitiv und können angepasst werden. Das System löst einen Prompt in dieser Reihenfolge auf:

  1. Umgebungsvariable PSA_GEN_AI_PROMPT_<FUNKTION>_<POSTFIX> — falls gesetzt, wird ihr Wert als Name eines BLOBs verwendet, das den benutzerdefinierten Prompt-Text enthält.
  2. Sprachspezifische Ressource — es wird nach einer Ressource mit dem Namen <FUNKTION>_<POSTFIX>_<SPRACHE> (z. B. daily_digest_sales_usr_ger.txt) gesucht.
  3. Sprachneutrale Ressource — eine Ressource mit dem Namen <FUNKTION>_<POSTFIX> (z. B. daily_digest_sales_usr.txt) wird als letzte Möglichkeit verwendet.

Prompts werden als UTF-8-kodierte Textdateien (BLOBs) gespeichert. Die Standard-Prompts werden mit dem Produkt ausgeliefert und automatisch verwendet, wenn keine Anpassung vorhanden ist.

Prompt-Variablen nach Funktion

FunktionVariable(n)
BeautifyPSA_GEN_AI_PROMPT_BEAUTIFY_USER
PSA_GEN_AI_PROMPT_BEAUTIFY_APM_DEV
PSA_GEN_AI_PROMPT_BEAUTIFY_CPD_DEV
Text vorschlagenPSA_GEN_AI_PROMPT_EMAIL_SUGGESTION_DEV
PSA_GEN_AI_PROMPT_EMAIL_SUGGESTION_USER
PSA_GEN_AI_PROMPT_EMAIL_SUGGESTION_CONTEXT
TranskriptPSA_GEN_AI_PROMPT_MEETING_TRANSCRIPT_DEV
Suche FAQsPSA_GEN_AI_PROMPT_SEARCH_FAQS_DEV
PSA_GEN_AI_PROMPT_SEARCH_FAQS_USER
Erzeuge FAQPSA_GEN_AI_PROMPT_CREATE_FAQ_DEV
Account Management ZusammenfassungPSA_GEN_AI_PROMPT_ACCOUNT_MANAGEMENT_SUMMARY_DEV
Daily Digest: SalesPSA_GEN_AI_PROMPT_DAILY_DIGEST_SALES_DEV
Daily Digest: ManagementPSA_GEN_AI_PROMPT_DAILY_DIGEST_MANAGEMENT_DEV
PSA_GEN_AI_PROMPT_DAILY_DIGEST_MANAGEMENT_PRE_DEV
Morning BriefingPSA_GEN_AI_PROMPT_MORNING_BRIEFING_ROLES
PSA_GEN_AI_PROMPT_MORNING_BRIEFING_DEV
PSA_GEN_AI_PROMPT_MORNING_BRIEFING_USER
Ticket ZusammenfassungPSA_GEN_AI_PROMPT_TICKET_SUMMARY_DEV
SalesBotPSA_GEN_AI_PROMPT_SALESBOT_CONTEXT
PSA_GEN_AI_PROMPT_SALESBOT_DEV
Weitere Konfigurationsvariablen
VariableStandardBeschreibung
PSA_AI_SALESBOT_FUNCTION_FACTORY—Klassenname einer benutzerdefinierten Fabrik, die SalesBotFunctionFactory erweitert. Verwenden Sie dies, um einzelne KI-Funktionen anzupassen oder zu erweitern.
PSA_AI_MORNING_BRIEFING_MEMO_NAME"Morning Briefing"Name des vom Morning-Briefing-Job erstellten Memos.
PSA_AI_ACCOUNT_MANAGEMENT_SUMMARY_MEMO_NAME"Account Management Summary"Name des von der Funktion Account Management Zusammenfassung gespeicherten Memos.
PSA_AI_ACCOUNT_MANAGEMENT_SUMMARY_DATE_FIELDPSC_CREFeld in PSA_CON_ACT_REF, das verwendet wird, um die fĂĽr die Zusammenfassung geladene Korrespondenz zu sortieren und zu begrenzen.
PSA_AI_ACCOUNT_DAILY_DIGEST_SALES_MEMO_NAME"Daily Digest (Sales)"Name des vom Sales-Daily-Digest-Job erstellten Memos.
PSA_AI_ACCOUNT_DAILY_DIGEST_SALES_DATE_FIELDPSC_CREFeld, das zum Sortieren und Begrenzen der Korrespondenz fĂĽr den Sales Daily Digest verwendet wird.
PSA_AI_ACCOUNT_DAILY_DIGEST_MANAGEMENT_MEMO_NAME"Daily Digest (Management)"Name des vom Management-Daily-Digest-Job erstellten Memos.
PSA_AI_ACCOUNT_DAILY_DIGEST_MANAGEMENT_DATE_FIELDPSC_CREFeld, das zum Sortieren und Begrenzen der Korrespondenz fĂĽr den Management Daily Digest verwendet wird.
GenAI-Nutzungsprotokoll

Alle KI-Anfragen werden automatisch protokolliert. Das Protokoll ist unter „Administration / Werkzeuge / GenAI-Protokoll“ zugänglich.

New feature

PsaGenAI-Standardbibliothek

Die Bibliothek PsaGenAI verbindet serverseitigen CRM-Code mit dem GenAI-Dienst der JustRelate-Plattform. Sie unterstĂĽtzt mehrstufige Chat-Konversationen mit Text-, Bild- und Dateiinhalten sowie Werkzeug-/Funktionsaufrufe.

Konfiguration

  • Legen Sie die Mandanten-Instanz ĂĽber die Servereigenschaft psa.iam.instance oder die Variable PSA_IAM_INSTANCE fest.
  • Ăśberschreiben Sie die Dienst-URL mit psa.gen.ai.url oder PSA_GEN_AI_URL (Standard: der JustRelate-Lambda-Endpunkt).
  • Ăśberschreiben Sie den Header User-Agent mit psa.gen.ai.agent oder PSA_GEN_AI_AGENT (Standard: Classic CRM).

UnterstĂĽtzte Sprachmodelle

Diese können sich mit der Zeit ändern, aber der Dienst bietet einige Aliase an, falls Sie kein bestimmtes Modell verwenden möchten:

  • jr-auto/fast
  • jr-auto/standard
  • jr-auto/powerful

Einfaches Chat-Beispiel

Werkzeugaufrufe

8.4 Patch 1
8.3 Patch 14
8.2 Patch 28

Web Client

Upgrade auf Eclipse RAP 4.7 und Umstieg auf Jakarta EE (Java 21)

Der Web Client wechselt von Eclipse RAP 3.29 zu 4.7, einer Jakarta-basierten Plattform (Servlet API 6.0). Dies sind effektiv zwei Migrationen gleichzeitig, der Versionssprung der RAP/RWT-Plattform und die Namensraumänderung von javax.servlet zu jakarta.servlet, zusammen mit einem Wechsel von Java 17 zu Java 21. Für Endbenutzer ändert sich nichts; der Gewinn ist eine unterstützte, aktuelle Plattform und eine Laufzeitumgebung, die auf Tomcat 10.1 oder neuer gehostet werden kann. Tomcat 9.x kann für diese Version nicht verwendet werden.

Info

Java 21 ist eine erforderliche Mindestversion. Sie können den Web Client auch mit Java 25 betreiben, je nachdem, wie es der Server erfordert.

UnterstĂĽtzung fĂĽr weitere Bildtypen, vor allem WebP

WebP-Bilder werden nun im gesamten Web Client unterstützt. Ob als Artikel- oder Serviceobjekt-Bilder verwendet oder in Rich-Text eingebettet — WebP-Bilder werden jetzt genauso angezeigt wie jedes andere Bildformat.

Gleichzeitig wurde die Bildkonvertierung deutlich robuster gemacht (inhaltsbasierte Formaterkennung bei falsch gekennzeichneten Uploads, transparente Dekomprimierung gzip-komprimierter Bilder, zügige Freigabe von Decoder-Ressourcen und eine konfigurierbare maximale Bildgröße).

Hinweis zum Deployment (Bild-Decoder und das gemeinsame JVM-Bild-Dekoder-Register)

Die Bild-Dekoder sind Java-ImageIO-Plugins, die sich in das globale Bild-Dekoder-Register des JDK eintragen, das von allen Webanwendungen im selben Servlet-Container / derselben JVM gemeinsam genutzt wird. Daraus ergeben sich zwei Konsequenzen:

  • Starten Sie nach dem (Neu-)Deployment oder der Deinstallation des Web Clients den Servlet-Container neu, anstatt sich auf ein Hot-Redeploy zu verlassen. Ein Hot-Redeploy kann dazu fĂĽhren, dass die Bild-Decoder-Plugins der vorherigen Version im gemeinsamen Register registriert bleiben, was bei ihrem Aufruf fehlschlagen kann. (Der Client toleriert ein solches veraltetes Plugin — er greift stattdessen auf ein Platzhalterbild zurĂĽck, statt den Dialog fehlschlagen zu lassen —, aber ein saubererer Neustart vermeidet diese Situation von vornherein.)
  • Beim gleichzeitigen Betrieb von zwei Versionen des Web Clients im selben Container (z. B. eine Produktivversion 8.x und eine Testversion 8.y, unter unterschiedlichen Namen bereitgestellt) registrieren beide ihre Bild-Decoder im selben gemeinsamen Register. Das funktioniert im Allgemeinen, fĂĽr eine saubere Trennung sollten Sie jedoch separate Container / JVMs bevorzugen (zum Beispiel separate Docker-Container oder separate Tomcat-Instanzen auf einer On-Premises-VM). Dies betrifft hauptsächlich On-Premises-Installationen. Container-basierte Deployments, die pro Version neu erstellt werden, sind davon nicht betroffen.

Zellenweise Formatierung fĂĽr Tabellen im CLOB-Editor

Der CLOB-Editor bietet nun eine Option zur Formatierung einzelner Tabellenzellen, sodass eine Formatierung auf Zellenebene innerhalb einer Tabelle angewendet werden kann, statt auf die gesamte Tabelle oder den gesamten Absatz beschränkt zu sein.

Klarere RĂĽckmeldung, wenn die Desktop Integration keine Verbindung herstellen kann

Wenn die Desktop Integration (PSADIM) keine Verbindung herstellen kann — wegen eines Konfigurationsfehlers, eines Netzwerkproblems usw. —, sieht der Benutzer nun mehr als nur das rote Warnsymbol auf der Login-Seite des Web Clients. Die Desktop Integration öffnet zusätzlich ein Fenster mit einer detaillierteren Fehlerbeschreibung, was die Diagnose des Verbindungsfehlers deutlich erleichtert.

CKEditor: Bearbeiten des Werts eines Platzhalters

Der CLOB-Editor unterstützt Platzhalter: Wird eine neue E-Mail aus einer Vorlage erstellt, werden Platzhalter wie {NAME} beim Anwenden der Vorlage aus den aktuellen (Meta-)Daten — Empfänger, Signatur des Absenders usw. — aufgelöst. Der Editor bietet zwei Modi — einen Platzhaltermodus, in dem die eigentlichen Platzhalter ({NAME}, {TITLE}, …) angezeigt und über eine Symbolleistenliste eingefügt oder entfernt werden können, und einen Wertemodus, in dem die aufgelösten Werte („Herr Schmidt“ statt {NAME}) als nicht editierbare Fragmente angezeigt werden. Diese Änderung erlaubt es dem Benutzer, den Wert eines solchen Fragments im Wertemodus zu bearbeiten.

Individuelle ID pro Backend-Knoten in der Anfrage-URL

Jedem Backend-Knoten kann nun eine individuelle ID zugewiesen werden, die Teil jeder Anfrage-URL wird. Load Balancer und Reverse Proxys können diese ID direkt aus der URL lesen, um den Backend-Knoten zu bestimmen, zu dem eine Anfrage gehört, und sie entsprechend weiterleiten, ohne Cookies oder den Sitzungszustand prüfen zu müssen. Dies macht Sticky-Session-Routing in Multi-Node-Deployments einfacher und robuster.

Durchsuchbare / filterbare Popup-MenĂĽs, zuerst eingesetzt bei der Feldauswahl des QuickFinders

Das Dropdown zur Feldauswahl im QuickFinder kann eine große Anzahl von Feldern enthalten, was die Suche nach dem gewünschten Feld mühsam macht. Das Dropdown verfügt nun über ein Filterfeld („Felder filtern“): Während der Eingabe wird die Liste auf die Felder eingeschränkt, deren Titel mit der Eingabe übereinstimmt. Es filtert die vorhandene Liste, anstatt eine Abfrage auszuführen — daher „Filter“ und nicht „Suche“. Die gefilterte Liste ist vollständig per Tastatur navigierbar (Pfeiltasten, Pos1/Ende/Bild-auf/Bild-ab, Eingabe zur Auswahl), und das Eingabefeld besteht neben der normalen Mausinteraktion des Menüs.

Flexible Spalten-Tooltips fĂĽr numerische Spalten

Ein Tooltip einer numerischen Spalte kann nun Statistik-Platzhalter enthalten, die beim Überfahren der Kopfzeile mit der Maus aufgelöst werden: Die referenzierten Statistiken werden über die aktuell ausgewählten Zellen berechnet, mit dem Zahlenformat der Spalte formatiert und in den Tooltip-Text eingefügt. Unterstützte Platzhalter:

PlatzhalterAliasBedeutung
${sum}—Summe der ausgewählten Werte
${average}${avg}Arithmetisches Mittel
${median}${med}Median
${minimum}${min}Kleinster Wert
${maximum}${max}Größter Wert
${count}${cnt}Anzahl der ausgewählten Werte

Nur die im Template tatsächlich vorhandenen Platzhalter werden berechnet (jeweils höchstens einmal). Enthält der Tooltip keinen Platzhalter, bleibt das bisherige Verhalten erhalten, d. h. die Summe wird dem Spalten-Tooltip angehängt.

Alle Schnellfilter einer Liste mit einem Klick zurĂĽcksetzen

Tabellendialoge, deren Schnellfilter auf statischen, funktionsaufrufenden, persistenten Auswahl-Comboboxen basieren, zeigen nun neben der Filterzeile eine kleine Overlay-Schaltfläche (einen Rücksetzpfeil). Ein einziger Klick setzt alle diese Schnellfilter gleichzeitig auf ihre Standardwerte zurück und löst die zugehörigen Funktionsaufrufe aus, sodass der Anwendungsserver die Standardauswahl (ungefiltert) erneut anwendet. Da die Auswahlfelder persistent sind, übernimmt sich der wiederhergestellte Standardzustand auch beim nächsten Öffnen des Dialogs.

Dies behebt die Situation, in der vordefinierte Schnellfilter über Sitzungen hinweg aktiv bleiben, ohne dass der Benutzer dies notwendigerweise bemerkt, wodurch es so aussieht, als würden Daten fehlen. Die Schaltfläche bietet einen Ein-Klick-Ausweg ohne Nebenwirkungen und ohne jeden einzelnen Filter aufsuchen zu müssen.

Die Lokalisierung des Web Clients umfasst nun Spanisch (es), Portugiesisch (pt) und Polnisch (pl) sowie korrigiertes Französisch und Italienisch

Vollständige spanische, portugiesische und polnische Varianten wurden hinzugefügt. Bei der Überprüfung der bestehenden Dateien wurden die französischen und italienischen Sprachpakete korrigiert: Einige Einträge waren noch unübersetztes Englisch (z. B. apply / reset). Auch das Basis-Sprachpaket wurde exakt an das Englische angepasst.

Standard-Bildausrichtung im CLOB-Editor

Der CLOB-Editor bietet nun in seiner Symbolleiste eine Option für die Standard-Bildausrichtung. Sie können wählen, ob neu eingefügte Bilder links, zentriert oder rechts ausgerichtet werden, und der Editor wendet diese Ausrichtung automatisch auf jedes Bild beim Einfügen an, statt es stets zu zentrieren. Explizit ausgerichtete Bilder und Bilder in bestehendem Inhalt bleiben unberührt — die Standardeinstellung betrifft nur neu eingefügte Bilder.

Die gewählte Standardeinstellung wird pro Benutzer gespeichert, zusammen mit den übrigen Einstellungen des Web Clients, sodass sie über Sitzungen hinweg erhalten bleibt.

Tabulatortaste rückt Absätze im CLOB-Editor ein

Das DrĂĽcken von Tab im CLOB-Editor rĂĽckt nun den aktuellen Absatz wie in einem Textverarbeitungsprogramm ein, und Umschalt+Tab verringert den Einzug wieder. Bisher sprang Tab entweder zur nächsten Tabellenzelle oder zum nächsten Bild oder verschob den Fokus ganz aus dem Editor heraus — ein Verhalten, das beim Verfassen von FlieĂźtext wie etwa einem E-Mail-Text unerwartet wirkte.

Für Teams, die sich auf den alten Tastaturablauf verlassen, schaltet eine neue Einstellung, „Tabulatortaste zum Einrücken von Text verwenden“ (standardmäßig aktiviert), das Einrückverhalten wieder aus und stellt Tab als Navigations-/Fokustaste wieder her.

Ein frisches, leichteres und konsistenteres Erscheinungsbild fĂĽr den gesamten Web Client

Der Web Client hat ein neues Erscheinungsbild, aufbauend auf dem überarbeiteten JustRelate-Corporate-Design, das ein neues Logo und Favicon, das neue Markenorange und ein insgesamt „leichteres“, weniger wuchtiges optisches Erscheinungsbild der gesamten Anwendung umfasst. Die Anwendung ist leichter, ruhiger und konsistenter: Fenster, Dialoge, Reiter, Menüs und Funktionsleisten folgen nun einem gemeinsamen visuellen Stil, sodass dieselben Elemente überall, wo Sie ihnen begegnen, gleich aussehen und sich gleich verhalten. Oberflächen sind klarer, Linien feiner, und es bleibt mehr Raum zum Atmen, was Bildschirme mit viel Inhalt leichter überschaubar und weniger anstrengend für die ganztägige Arbeit macht.

An Ihrer Arbeitsweise mĂĽssen Sie nichts neu lernen. Alle Funktionen befinden sich dort, wo sie waren, und funktionieren wie bisher.

Branding – Logo und Favicon wurden durch die neue Markengestaltung ersetzt. Die Fehler- und Statusseiten (Sitzung beendet, Dienst nicht verfügbar, …) wurden im Zuge dessen auf UTF-8 umgestellt.

Farben – Das Markenorange wurde auf den kräftigeren neuen Ton aktualisiert, und die zugehörigen Orange-Schattierungen (für gedrückte Zustände, Hover-Effekte und Hervorhebungen) wurden davon abgeleitet, sodass die Palette konsistent bleibt. Viele Oberflächen, die zuvor Grautöne waren, sind nun weiß oder hellgrau — am deutlichsten sichtbar bei der Funktionsleiste, dem QuickFinder-Bereich und der Tabellenzeilenauswahl —, was der Hauptgrund für das leichtere Gefühl ist.

Feinere Linien und sanftere Akzente – Trenn- und Rahmenbreiten wurden reduziert (zum Beispiel sanken die Reitertrenner und der Trenner der Symbolleiste externer Ansichten von 3 px auf 1 px), die Scrollbalken sind heller, die Fenstertrenner („Sashes“) sind dünner, und mehrere schwebende Schaltflächen wirken im Ruhezustand zurückhaltender. Schwebende Meldungen verwenden nun eine abgerundete „Pillenform“, passend zu den Reitern der zweiten Ebene.

Oberes Menü (Ribbon) – Der aktive Eintrag im oberen Menü wird nun durch einen dünnen vertikalen Rand auf jeder Seite markiert, der sich zu einer schmalen horizontalen Trennlinie zwischen der oberen Leiste und der Unterleiste verbindet — dieselbe visuelle Sprache wie beim Haupt-Reitersystem — statt durch einen ausgefüllten Hintergrund. Dies funktioniert sowohl, wenn die Unterleiste über dem Inhalt schwebt, als auch, wenn sie fixiert ist.

Schwebende Werkzeugleiste fĂĽr CLOB-Editoren ohne Symbolleiste

In Anwendungsfällen, in denen der CLOB-Editor ohne Symbolleiste angezeigt wird, waren seine Formatierungsbefehle bisher nicht zugänglich. Für diese Instanzen ohne Symbolleiste erscheint nun eine schwebende Werkzeugleiste mit denselben Befehlen, die eine normale Symbolleiste bieten würde, sodass die vollständigen Formatierungsoptionen verfügbar sind, ohne dauerhaft Platz zu belegen. Sie wird intelligent angezeigt — nur solange der Editor fokussiert und im Bearbeitungsmodus ist — und kann pro Feld mit dem Tag-Stil „Werkzeugleiste nicht anzeigen“ für Fälle unterdrückt werden, die strikt ohne Symbolleiste bleiben sollen.

Maximieren-Schaltfläche für CLOB-Editoren ohne Symbolleiste

In Situationen, in denen der CLOB-Editor ohne Symbolleiste angezeigt wird, war die F2-Taste bisher die einzige Möglichkeit, den erweiterten (maximierten) Editor zu öffnen — schwer zu entdecken und mit der Maus nicht erreichbar. In diesen Instanzen ohne Symbolleiste erscheint nun eine kleine Pfeil-Schaltfläche oben rechts im Editor, die der Maximieren-Aktion eine sichtbare, anklickbare Möglichkeit gibt.

Benutzeroption, um immer den voll ausgestatteten Editor zu verwenden

Der CLOB-Editor ist in einer einfachen und einer voll ausgestatteten („erweiterten“) Variante verfügbar. Der maximierte Editor ist immer der vollständige; ein Inline-Editor erhält die volle Symbolleiste nur in bestimmten Fällen (ein Tag-Stil mit voller Symbolleiste oder ein modaler Dialog mit Platzhaltern). Power-User, die überall die vollständige Symbolleiste bevorzugen, hatten bisher keine Möglichkeit, sie inline zu erhalten.

Eine neue, benutzerbezogene Option, „Immer den voll ausgestatteten Editor verwenden“ (in den Einstellungen „Weitere Optionen“, neben der Tab-Einzug-Option), ermöglicht dies. Ist sie aktiviert, werden auch Inline-Editoren mit der vollen Symbolleiste erstellt, nicht nur im maximierten Zustand. Die Wahl wird pro Benutzer gespeichert, zusammen mit den anderen Editor-Einstellungen (Rechtschreibprüfung, Standard-Bildausrichtung).

Konfigurierbares Logging ĂĽber Umgebungswerte

Dies ist eine Admin- oder DevOps-Funktion (für Endbenutzer nicht sichtbar): Der Web Client unterstützte bereits „Konfiguration über Umgebung“ für die globale Konfiguration und Login-Sets, was bei Container-Deployments praktisch ist, da ein Provisionierungsskript einfacher zu verwalten ist als Konfigurationsdateien. Das Logging war das einzige Teilsystem, das dies nicht abdeckte. Das ist nun geändert, was sowohl für Container als auch dafür nützlich ist, in der Produktion einen Debug-Logger zu aktivieren, ohne Dateien zu bearbeiten (der Anwendungsfall, der dies motiviert hat).

Praktische Hinweise fĂĽr Betreiber

Alle Namen beginnen mit PISASALES_WEBCLI_LOG_:

UmgebungswertBedeutung
PISASALES_WEBCLI_LOG_LEVEL_ROOTStufe des Root-Loggers (OFF, ERROR, WARN, INFO, DEBUG, TRACE, ALL). Standardmäßig WARN.
PISASALES_WEBCLI_LOG_LEVELSStufen pro Logger als kommagetrennte logger=level-Liste, z. B. de.pisa.webcli.thm=DEBUG,de.pisa.webcli.vws=DEBUG
PISASALES_WEBCLI_LOG_DIRĂśberschreibt das Verzeichnis, in das die Log-Dateien geschrieben werden.
PISASALES_WEBCLI_LOG_STDOUTAuf true setzen, um das Log zusätzlich auf die Konsole (stdout) zu schreiben, was die meisten Container-Log-Sammler erwarten.
PISASALES_WEBCLI_LOG_RECREATEAuf true setzen, um die Umgebungswerte beim nächsten Start oder beim Neuladen der Konfiguration erneut auf die Logger-Konfiguration anzuwenden.

Ein ungültiger Wert (eine unbekannte Stufe, ein fehlerhafter Eintrag) wird mit einer Warnung ignoriert, sodass ein Tippfehler das Logging beim Start niemals beeinträchtigen kann.

Wie die Werte wirksam werden

Die Werte werden angewendet, wenn die Logger-Konfiguration erstmals erzeugt wird. Die Umgebung liefert die Anfangskonfiguration, und ein Administrator kann die Protokollierung weiterhin zur Laufzeit auf der Admin-Seite anpassen. Eine Laufzeitänderung wird niemals von der Umgebung überschrieben. In einem Container wird die Konfiguration bei jedem Start neu erzeugt, sodass geänderte Umgebungswerte automatisch übernommen werden. Bei einer dauerhaften Installation (eine VM oder ein physischer Rechner) bleibt die bestehende Konfiguration über Neustarts hinweg erhalten. Um dort geänderte Umgebungswerte erneut anzuwenden, setzen Sie PISASALES_WEBCLI_LOG_RECREATE=true. Dies wird sowohl beim Start als auch bei einem umgebungsgesteuerten Neuladen der Konfiguration berücksichtigt, sodass die Werte ohne vollständigen Neustart erneut angewendet werden können.

KonfigurationsĂĽberschreibungen von Login-Sets sind nun dreistufig

Eine Admin-Funktion: Im Abschnitt „Einstellungen erzwingen“ des Login-Set-Editors kann ein Administrator eine Reihe von Anwendungs-Konfigurationoptionen (Sichtbarkeit von Desktop-/Browser-/Nachrichtenansicht, QuickViews, der angepinnte Zustand des oberen Ribbons, der Push-Benachrichtigungsdienst usw. — insgesamt 16 Optionen) auf Sitzungen übertragen, die dieses Login-Set verwenden. Die meisten dieser Optionen werden einmalig direkt nach dem Login angewendet, gesteuert durch einen Aktualisierungszeitstempel, der neuer sein muss als die Einstellungen, die eine Sitzung bereits übernommen hat. Die Einstellungen des Push-Benachrichtigungsdienstes werden dagegen live abgefragt, sobald der Push-Dienst initialisiert wird. Bisher war jede Option ein einfacher Ein/Aus-Wert, sodass das Erzwingen einer Einstellung alle erzwang. Es gab keine Möglichkeit zu sagen: „Diese hier bitte unberührt lassen.“

Jede Option ist nun dreistufig: ein, aus oder nicht gesetzt. Im Editor wechselt das zugehörige Kontrollkästchen von unbestimmt zu aktiviert zu deaktiviert und dann wieder zu unbestimmt. Bleibt ein Kennzeichen unbestimmt, greift das Login-Set nicht darauf zu; was der Benutzer (oder eine frühere Überschreibung) bereits eingestellt hat, bleibt unberührt. Nur die tatsächlich ein- oder ausgeschalteten Kennzeichen wirken sich aus.

„Persistente Reiterelemente“ und „Persistente Sash-Proportionen“ schließen sich demselben Mechanismus an. Diese beiden Einstellungen stammen aus der Zeit vor dem heutigen benutzerbezogenen Konfigurationssystem und existierten bisher nur am Login-Set selbst, ohne eigenen benutzerbezogenen Standardwert und ohne Möglichkeit, sie ungesetzt zu lassen. Sie sind nun reguläre benutzerbezogene Einstellungen — angewendet über denselben zeitstempelgesteuerten Mechanismus wie die meisten der 16 oben genannten Optionen —, die ein Login-Set über dieselben dreistufigen Kontrollkästchen optional überschreiben kann, konsistent mit allem anderen in diesem Abschnitt.

Zwei neue Benutzereinstellungen: Reiterauswahl und Sash-Proportionen merken

Zwei Einstellungen im Dialog der Benutzereinstellungen (Abschnitt „Weitere Optionen“), die zwar schon vorher existierten, aber für den Benutzer keinen sichtbaren Ein-/Aus-Schalter hatten — „Reiterelement-Auswahl merken“ und „Sash-Proportionen merken“ — sind nun direkt dort verfügbar.

„Reiterelement-Auswahl merken“ merkt sich den Reiter, der in einem Dialog geöffnet war, und wählt ihn beim nächsten Öffnen dieses Dialogs erneut aus. „Sash-Proportionen merken“ merkt sich die Größe, die Sie dem Tabellenbereich eines Dialogs im Verhältnis zu seinem Detailformular gegeben haben, und stellt dieses Verhältnis beim nächsten Öffnen des Dialogs wieder her, statt es jedes Mal auf die Standardaufteilung zurückzusetzen.

Beide Einstellungen können weiterhin auch von einem Administrator über den Login-Set-Editor vorbelegt (oder erzwungen) werden.

Login-Sets können „Immer den voll ausgestatteten Editor verwenden“ vorbelegen oder erzwingen

Die benutzerbezogene Option „Immer den voll ausgestatteten Editor verwenden“ schließt sich dem Überschreibungsmechanismus der Login-Sets an: Ein Administrator kann sie nun für Benutzer eines bestimmten Login-Sets vorbelegen oder unberührt lassen, sodass die eigene Wahl jedes Benutzers erhalten bleibt — dank desselben dreistufigen Kontrollkästchen-Musters wie bei den anderen überschreibbaren Einstellungen in diesem Dialog.

Cockpit-Diagramme rendern nun clientseitig aus JSON-Daten statt serverseitig erzeugter Bilder

Cockpit-/Dashboard-Diagramme wurden bisher als PNG-Bilder auf dem Anwendungsserver erzeugt und als Bilder an den Browser übermittelt. Der Anwendungsserver liefert die zugrunde liegenden Diagrammdaten nun als JSON, und der Web Client rendert sie selbst mithilfe von Apache ECharts: Kreis-, Balken-, Linien-, gestapelte Balken-, kombinierte Linien-/Balken-, Gauge- und beide Trichterdiagrammtypen (dynamisch und statisch), einschließlich eines dreispaltigen Trichterlayouts (Name / Anzahl / Wert) und einer fett dargestellten Zusammenfassungszeile, passend zum Windows-Client. Zahlenformatierung (kurz/lang/voll/Prozent, Währung, vorskaliere Werte mit einer wörtlichen Einheit wie „T€“), Legenden, Wertbeschriftungen und eine Meldung „keine Daten“ folgen alle dem JSON-Vertrag. Ein Klick auf ein Diagrammelement (einen Balken, ein Kreissegment oder ein Trichtersegment) löst dieselbe Hyperlink-Aktion aus, die ein Klick auf das gesamte Diagramm bereits bei serverseitig gerenderten Bildern ausgelöst hat.

Neue Seitenansicht „KI-Assistent“

Eine neue, ausblendbare Seitenansicht, „KI-Assistent“, ergänzt die bestehenden Seitenansichten „Desktop“ und „Browser“. Aus Sicht des Clients ist sie nur eine weitere serverseitig gerenderte Seitenansicht. Der Client interpretiert ihren Inhalt nicht, er stellt nur die Ansicht selbst, ihre Umschaltfläche und ihren Menüeintrag bereit.

Die Funktion „KI-Assistent“ wird vollständig vom Anwendungsserver implementiert. Sowohl eine aktuelle Web-Client- als auch eine aktuelle Anwendungsserver-Version sind zur Nutzung erforderlich. Ein älterer Server lässt die Funktion einfach ungenutzt, ohne Fehler.

Der Portalmodus wurde entfernt

Der Web Client bietet keinen Portalmodus mehr an. Für Anwendungsfälle wie Fragebögen und Portale bietet JustRelate eine wesentlich bessere Lösung: eine dedizierte, leistungsstarke, moderne und ansprechend gestaltete Portal-App, die auf dem Web Builder basiert. Bitte verwenden Sie diese stattdessen.

Kunden, die noch einen Web Client im Portalmodus benötigen, können weiterhin eine ältere Web-Client-Version betreiben. Sie sollten jedoch planen, möglichst bald auf die Portal-App umzusteigen, da ältere Versionen nicht die Verbesserungen neuerer Versionen erhalten.

Quelltext-Bearbeitung

Der CLOB-Editor hat eine neue Schaltfläche in der Symbolleiste erhalten, mit der sich der rohe HTML-Quelltext des aktuellen Inhalts direkt anzeigen und bearbeiten lässt. Sie ist deaktiviert, während sich der Editor im Klartextmodus befindet (dort gibt es keinen HTML-Quelltext zu bearbeiten).