Patch-Notes 2023.3
Patch-Notes 2023.3.10
Bugs
Ticket-Nr | Produkt | Komponente(n) | Zusammenfassung |
---|---|---|---|
0034964 | CURSOR-CRM | Dokumentenhandling | Externe Dokumente konnten nicht geöffnet werden, wenn diese per serverseitiger Serienmail hinzugefügt wurden |
CURSOR-CRM | Systembasis Web Client | Werte in Zahlenfeldern, die per FieldUtils.setValue gesetzt worden waren, wurden beim Verlassen des Feldes ohne Änderung entfernt | |
0034945 | CURSOR-CRM | Customizing-Transport | Beim Customizing Transport von DS-GVO-Verarbeitungstätigkeiten wurde immer nur eine der enthaltenen DS-GVO Kategorien mit übertragen |
0034944 | CURSOR-CRM | Systembasis Web Client | Im Web Client wurden nicht alle Felder erneut angezeigt, wenn man "Alle Felder anzeigen" auswählte |
0034924 | Infoboard | Unter bestimmten Umständen wurde auf Infoboards immer der Standardname der Kachel (z.B. 'KPI') anstatt des individuellen Titels (z.B 'Umsatz 2023') angezeigt | |
0034835 | CURSOR-CRM | Kacheln | Verwendung des I18n-Eingabefeldes innerhalb von Kacheln führte bei aktiviertem Customizing-Transport zu Datenverlusten |
CURSOR-CRM | Kacheln | Die Durchschnittsberechnung der KPI-Kachel schlug fehl, falls nicht-Zahlwerte in dem Feld der Berechnung enthalten waren | |
0034469 | CURSOR-CRM | Geoanalyse | Der Startpunkt für die Routenplanung in der Geoanalyse wurde nicht korrekt ermittelt |
CURSOR-CRM | Maskenskript | Die Labels für den Personen-Typ wurden unter Umständen beim Typ-Wechsel nicht geändert |
Features
-
Features-Dokumentation
-
Patch-Notes 2023.3.09
Bugs
Ticket-Nr | Produkt | Komponente(n) | Zusammenfassung |
---|---|---|---|
CURSOR-CRM | Workflows | Client Workflows, welche Reports erzeugten und exportierten, konnten beim Update ab Version 23.3 nicht mehr gelesen werden | |
CURSOR-CRM | Customizing-Transport | Beim Mitarbeiterabgleich konnte es zu einem Fehler kommen, wenn Person oder Telekom fehlten | |
0034796 | CURSOR-CRM | REST Webservices | Die Option "Duplikate erlauben" konnte in der REST-API /search nicht definiert werden und wurde immer mit "Duplikate erlauben" ausgeführt |
0034788 | HelVis | Suchen, Systembasis Web Client | Suchen mit geschweiften Klammern in der Beschreibung konnten im Web Client nicht geladen werden |
CURSOR-CRM | Kacheln | Kachel 2.0: deepEqual in einem DataSourceHook führte beim Rendern von Kacheln zur Verschlechterung der Performanz | |
0034780 | CURSOR-CRM | Infoboard, Kacheln | Wurden in einer v2-Kachel mehrfach Daten über die gleiche Suche ermittelt, haben sich die Ergebnisse gegenseitig überschrieben |
CURSOR-CRM | UX | Bereiche konnten bei der Verwendung von Firefox nicht geöffnet werden | |
0034755 | CURSOR-CRM | Infoboard | Kacheltitel wurden erst dann internationalisiert angezeigt, wenn man die Kachel übersteuerte und das Board neu geladen wurde |
0034745 | CURSOR-CRM | Teststudio | Das Test-Studio konnte keine Datumsfelder befüllen, deren Maskenkomponente 'DateTextField' war und bei denen das Zeitfeld eingeblendet war |
0034739 | CURSOR-CRM | Customizing-Transport | Wenn ein Customizing Transport per Timer scheiterte und im Paket eine Entität enthalten war, wurde unter Oracle der leere Paketrumpf nicht zurückgerollt |
CURSOR-CRM | Customizing-Transport | Wenn ein Web Service ohne Skript transportiert werden sollte, kam es zum Fehler beim Import | |
CURSOR-CRM | Maskenskript | FieldUtils.setValue setzte zuvor per Maskenskript veränderte Eigenschaften von Zahlenfeldern zurück | |
0034728 | CURSOR-CRM | Groupware | Beim Drag and Drop auf einen Geschäftspartner konnte es zu einem Fehler kommen, wenn kein Default-Ansprechpartner existierte |
CURSOR-CRM | Skript-Bibliothek | Das Zurückrollen eines Pakets löschte Methoden einer C1-Skript-Bibliothek | |
CURSOR-CRM | Systembasis Server | Wurde ein Datensatz nicht geändert aber z.B. per BPM-Skript gespeichert, so konnte der Datensatz in demselben Skript nach weiteren Änderungen nicht mehr gespeichert werden | |
0034712 | CURSOR-CRM | Systembasis Web Client | Ein Doppelklick auf die Lupe eines Schlüsselfeldes konnte die Anwendung blockieren |
0034677 | CURSOR-CRM | Maskenskript | Neuanlage eines Modulskripts führte zu einem Fehler |
0034670 | CURSOR-CRM | Timer | Bei der erneuten Übertragung von Modulen, die Timeraktionen enthielten, wurde der zuvor eingetragene ausführende User der Aktion im Zielsystem geleert |
0034644 | CURSOR-CRM | Kacheln | Pivot-Kachel nahm bei grafischen Darstellungen nicht allen verfügbaren Platz ein |
CURSOR-CRM | Infoboard, Kacheln | Beim Ändern der Konfiguration der Streamline-Kachel konnte es dazu kommen, dass die Suche das System übermäßig belastete |
Features
Zusammenfassung |
---|
Test-Studio: In Chrome erschien bei Neuanlage der Anlage ein Popup, welches abfragte, ob die Adresse gespeichert werden sollte |
Neue Datenbank-Funktion "FNC_GetDateDiff", um die Differenz zwischen zwei Datumswerten zu ermitteln |
Features-Dokumentation
Test-Studio: In Chrome erscheint bei Neuanlage der Anlage kein Popup mehr, welches abfragte, ob die Adresse gespeichert werden sollte
-
Neue Datenbank-Funktion "FNC_GetDateDiff", um die Differenz zwischen zwei Datumswerten zu ermitteln
Es wurde die FunktionFNC_GetDateDiff(startDate DATETIME, endDate DATETIME, accuracy VARCHAR)
aufgenommen.
Sie nimmt Datumswerte entgegen und berechnet die Differenz zwischen diesen Werten auf Basis der übergebenen accuracy.
Liegt startDate
nach endDate
, ist die Differenz negativ.
Gültige Werte für die accuracy sind:
'YEAR', 'MONTH', 'DAY', 'HOUR', 'MINUTE'
Wird eine andere accuracy angegeben, liefert die Funktion NULL zurück.
MSSQL
select
pk,
dbo.FNC_GetDateDiff(startDate, endDate, 'falsch') as errorValue,
dbo.FNC_GetDateDiff(startDate, endDate, 'YEAR') as yearDiff,
dbo.FNC_GetDateDiff(startDate, endDate, 'MONTH') as monthDiff,
dbo.FNC_GetDateDiff(startDate, endDate, 'DAY') as dayDiff,
dbo.FNC_GetDateDiff(startDate, endDate, 'HOUR') as hourDiff,
dbo.FNC_GetDateDiff(startDate, endDate, 'MINUTE') as minuteDiff,
startDate,
endDate
from activity
Oracle
select
pk,
FNC_GetDateDiff(startDate, endDate, 'falsch') as errorValue,
FNC_GetDateDiff(startDate, endDate, 'YEAR') as yearDiff,
FNC_GetDateDiff(startDate, endDate, 'MONTH') as monthDiff,
FNC_GetDateDiff(startDate, endDate, 'DAY') as dayDiff,
FNC_GetDateDiff(startDate, endDate, 'HOUR') as hourDiff,
FNC_GetDateDiff(startDate, endDate, 'MINUTE') as minuteDiff,
startDate,
endDate
from activity
Wird die Funktion in einem SQL-Ausdruck oder SQL-Ausdruck (Where-Part) verwendet, so wird diese immer ohne dbo
. angegeben, das ergänzt die Such-Engine.
Beispiel für einen SQL-Ausdruck in einer Suche der Tabelle “Activity”, der die Zeitdifferenz zwischen Start und Ende der Aktivität in Minuten ausgibt:
FNC_GetDateDiff(${StartDate.Activity}, ${EndDate.Activity}, 'MINUTE')
Beispiel für einen SQL-Ausdruck (Where-Part) in einer Suche der Tabelle Activity, der auf die Zeitdifferenz zwischen Start und Ende der Aktivität in Minuten prüft:
FNC_GetDateDiff(${StartDate.Activity}, ${EndDate.Activity}, 'MINUTE') > 60
Compliance: Austausch des Feldes "Freeboolean15.Employee" (Compliance-kritisch) im Vorgang abschließen-Prozess
Aufgrund der im Standard eingeschränkten Berechtigung zum Bearbeiten von Feldern in der Mitarbeiter-Entität musste das Feld “Freeboolean15.Employee” im Teilprozess "Vorgang abschließen" (C0TicketCompletionSub) im Schritt "Vorgang oder Anliegen abschließen" ausgetauscht werden. Daher wurde die Maske und die Logik angepasst, die daraufhin den Compliance-Status des Geschäfts- bzw. Ansprechpartners setzt.
Patch-Notes 2023.3.08
Bugs
Ticket-Nr | Produkt | Komponente(n) | Zusammenfassung |
---|---|---|---|
CURSOR-CRM | Customizing-Transport, Module, Schlüssel | Es kam zum Fehler beim Import von Modulen, wenn ein Konflikt mit numerischen Schlüsseln auftrat und ein neuer Schlüsselnamen gewählt wurde | |
CURSOR-CRM | Kacheln | In Firefox änderte sich beim Theme-Switch der Hintergrund des Seitenanzahl-Felds, sodass die Nummer schwer lesbar war | |
0034607 | CURSOR-CRM | Customizing-Transport | Mitarbeiterabgleich schlug fehl, wenn technischer User sich selbst abgleichen musste, da er Berechtigungen verlor |
CURSOR-CRM | Systembasis Server | Wurde das Pattern #PATTERN#[VALUE--DefaultContactPerson(0,9)] auf einem Textfeld einer Aktivität genutzt und der gewählte Ansprechpartner im Feld "Aktivität mit" einen Kurznamen hatte, der weniger als 9 Zeichen besaß, so kam es zu einem Fehler | |
0034601 | CURSOR-CRM | BPM | FileUtils.copyFile vergab die falschen Benutzerrechte der kopierten Datei, da die Berechtigung der Ursprungsdatei übernommen wurde |
0034591 | CURSOR-CRM | Schlüssel | Der Aufruf von LookupUtils.insertOrUpdateIntoKeytable konnte zu Datenverlust führen |
CURSOR-CRM | Kacheln | Links in der Kommentar-Kachel wurden innerhalb der Kachel selbst geöffnet | |
0034465 | CURSOR-CRM HelVis | Dokumentenhandling | Nach dem Öffnen eines PDF-Dokuments kam es zu einem Fehler, wenn mehrere Mitarbeiter mit demselben Kürzel existierten |
CURSOR-CRM | Systembasis Server | ActualEmployeeCache wurde nicht aktualisiert, wenn Telecom-Daten geändert wurden | |
CURSOR-CRM | Systembasis Web Client | Excelvorlage: Bei der Ausführung eines Exports per Dokumentvorlage ohne Assistent wurde kein Dokumentendatensatz generiert | |
0034541 | CURSOR-CRM | BPM | In der BPM-Selektion wurden entfernte vorbelegte Kriterien in der Suchausführung nicht berücksichtigt |
CURSOR-CRM | Customizing-Transport | Der REST-Service zum Annehmen von Paketen wurde nicht ausgelöst, wenn das Paket importiert (nicht transferiert) wurde | |
CURSOR-CRM | Customizing-Transport | Es konnten Pakete importiert werden, die nicht aus dem Quellsystem stammten | |
0034494 | EVI | Customizing-Transport | Customizing-Transport im Web Client setzte Sperr-Haken beim Transfer nicht |
0034484 | CURSOR-CRM | Infoboard | Änderung an einer Kachel auf einem übersteuerten C1-Board sorgte für Fehlermeldungen im Stacktrace |
0034461 | CURSOR-CRM | Customizing-Transport | Waren einzelne Systeme der Systemlandschaft voneinander abgeschottet, wurden Globale Variablen nur für die sichtbaren Systeme angelegt |
0034433 | CURSOR-CRM | Dokumentenhandling | Der Schreibschutz in der Dokumentvorlage ging nach dem Generieren des Dokuments verloren |
0034366 | CURSOR-CRM | Skript-Bibliothek, Skript-Editor | Maskenskript: Für die Methode "DocumentUtils.generateDocument" wurde manchmal die falsche Dokumentation angezeigt |
0034359 | CURSOR-CRM | Kacheln | Digitale Unterschriften in PDF Dokumenten wurden in der Dokumentenvorschau nicht angezeigt |
0034193 | CURSOR-CRM | SSL-Tool | Bei Verwendung der Funktion "Konfigurationsdateien aktualisieren" trat im SSLUpdateTool ein Fehler auf |
Features
Zusammenfassung |
---|
REST-Aufruf mit Authentifizierung via Client-Zertifikat mit mTLS |
Das automatische Öffnen von generierten Exceldokumenten steht auch im Assistenten der Excelgenerierung zur Verfügung |
Die Pflege von Anwendungsvariablen zum Mapping von Standard-Schlüsseln aus C1-Schicht auf eigene Schlüssel ist möglich |
Im Masken-Editor sollen Bindestriche in der CRM-ID erlaubt werden |
BPM: CRM-Detailmasken werden im Bearbeitungsmodus geöffnet |
Features-Dokumentation
REST-Aufruf mit Authentifizierung via Client-Zertifikat mit mTLS
Mutual TLS (mTLS) steht für Mutual Transport Layer Security und ist eine Erweiterung von TLS (Transport Layer Security), dem meistverwendeten Sicherheitsprotokoll für die Verschlüsselung und den Schutz von Daten im Internet. Während TLS hauptsächlich verwendet wird, um die Kommunikation zwischen einem Client (z.B. einem Webbrowser) und einem Server zu sichern, geht mTLS einen Schritt weiter, indem es eine beidseitige Authentifizierung ermöglicht. Das bedeutet, dass sowohl der Client als auch der Server ihre Identität gegenseitig bestätigen müssen, bevor eine sichere Kommunikation stattfinden kann.
Vorteile von mTLS:
Verbesserte Sicherheit: Durch die beidseitige Authentifizierung können sowohl der Client als auch der Server sicher sein, dass sie Daten mit dem richtigen Partner austauschen. Dies schützt vor verschiedenen Arten von Angriffen, einschließlich Man-in-the-Middle-Angriffen.
Fein abgestimmte Zugriffskontrolle: mTLS ermöglicht eine detaillierte Zugriffskontrolle auf Ressourcen. Da die Identität jedes Clients verifiziert wird, kann der Zugriff auf spezifische Dienste oder Daten strikt reguliert werden.
Datenschutz: Die verschlüsselte Kommunikation schützt sensible Informationen vor dem Zugriff durch Dritte.
Standardkonformität: Für bestimmte Branche, insbesondere im Finanz- und Gesundheitswesen, kann mTLS dabei helfen, Compliance-Anforderungen zu erfüllen.
Voraussetzungen für mTLS:
TLS-Unterstützung: Sowohl Clients als auch Server müssen TLS unterstützen.
Zertifikate: Sowohl der Client als auch der Server benötigen digitale Zertifikate. Diese dienen als digitale Pässe oder Ausweise, die die Identitäten bestätigen. Diese Zertifikate werden i.d.R von einer vertrauenswürdigen Zertifizierungsstelle (Certificate Authority, CA) ausgestellt.
Der Kunde ist zuständig passende Zertifikate im CRM zu hinterlegen, sodass diese bei einem REST-Aufruf mit mTLS zur Verfügung stehen.
Das CRM benötigt ein Schlüsselpaar bestehend aus einem privaten, verschlüsselten Schlüssel (encrypted private key) und dem dazugehörigen öffentlichem Zertifikat, um sich gegenüber der Gegenstelle zu authentifizieren. Der Schlüssel muss in der Syntax nach PKSC8 und das Zertifikat im Syntax nach X.509 vorliegen. Beide Werte werden zusammen in PEM-Format im CRM abgelegt.Vertrauenswürdige Zertifizierungsstellen: Der Client und der Server müssen sich gegenseitig vertrauen, was bedeutet, dass die Zertifikatsketten, die ihre Zertifikate validieren, bis zu einer gemeinsam anerkannten CA zurückverfolgbar sein müssen.
mTLS bietet eine sehr hohe Sicherheit für die Kommunikation zwischen Systemen. Es ist besonders nützlich in Umgebungen, in denen hohe Sicherheits- und Vertrauensanforderungen bestehen. Es erhöht jedoch die Komplexität durch den Aufwand für die Einrichtung und Verwaltung der Zertifikate (Zertifikate haben ein Ablaufdatum und müssen regelmäßig erneut ausgestellt und verteilt werden) bzw. bei die Gestaltung der REST-Aufrufe.
Das automatische Öffnen von generierten Exceldokumenten steht auch im Assistenten der Excelgenerierung zur Verfügung
Das automatische Öffnen von generierten Exceldokumenten steht auch im Assistenten der Excelgenerierung zur Verfügung.
Bedingung: Der Assistent wird direkt mit der Assistentenseite "Exportdatei geöffnet" geführt.
Bei folgenden Szenarien wird der Assistent direkt mit der Assistentenseite "Exportdatei geöffnet" :
Im BPM-Prozess ist in der Excel-Massendatenaktion eine der beiden folgende Serveraktionen gewählt
"Alle gewählten Aktionen ausführen und Assistent öffnen" oder
"Alle gewählten Aktionen ohne Assistent ausführen" (in Kombination mit einer makrobehafteten Excelvorlage)
Öffnen eines zwischengespeicherten Excelassistenten mit zuletzt geöffneter Assistentenseite "Exportdatei"
Die Pflege von Anwendungsvariablen zum Mapping von Standard-Schlüsseln aus C1-Schicht auf eigene Schlüssel ist möglich
Über die Anwendungsvariablen kann im Kundensystem ein Eintrag mit der ID "C1Key" angelegt werden. Als Eigenschaft ist dann der interne Name des Schlüsselbereichs sowie der Pk des Schlüssels mit Trennzeichen zu hinterlegen
Beispiel: C12KALKSTATUS$!!$fvvvvvvjp00601e4t16bn2S_Keytab
Im Masken-Editor sollen Bindestriche in der CRM-ID erlaubt werden
Bindestriche sind nun in der CRM-ID im Standard erlaubt.
BPM: CRM-Detailmasken werden im Bearbeitungsmodus geöffnet
Ein BPM-Prozess wird gestartet und im Prozess wird die CRM-Detailmaske angezeigt. Bisher öffnete diese im Lesemodus. Um im Prozess den Datensatz pflegen zu können, musste man immer zunächst in den Bearbeiten-Modus der Maske wechseln. Das war nicht optimal, da in einem Prozess-Kontext fast immer eine Datenpflege erfolgen soll. Die Maske wird jetzt direkt im Bearbeiten-Modus angezeigt.
Patch-Notes 2023.3.07
Ticket-Nr | Produkt | Komponente(n) | Zusammenfassung |
---|---|---|---|
CURSOR-CRM | Systembasis Server | Das Leeren der Metadaten Caches dauerte deutlich länger als die Statements über den SQL-Editor | |
0034497 | CURSOR-CRM | BPM, Suchen | Der Anzeigetext von Eingabefeldern in einer Prozess-Suche wurde nach dem Speichern nicht mehr angezeigt |
0034481 | Kacheln | Kanban: Keine Suche wurde bei manuellem Refresh der Entitäts-Kachel durchgeführt | |
0034472 | CURSOR-CRM | Suchausführung | Es kam zu einem Fehler bei der Auswahl eines Ergebnisses einer Einfeldsuche |
0034467 | CURSOR-CRM | Kacheln | Suchen-Kachel ließ sich nicht mehr sortieren |
0034448 | HelVis | BPM | Merkmalsschlüssel wurden in der BPM-Suchmaske im Web Client nicht über die ausgewählte Merkmalskategorie eingeschränkt |
0034432 | Admin-Konsole | Der Import von Dokumentenvorlagen per Migrationstool war trotz Fehlermeldung erfolgreich | |
0034392 | Kacheln, Performance | Kanban V2: Bei Darstellung von Datensätzen im dreistelligen Bereich konnte es zu Performance-Problemen kommen | |
0034391 | EVI | Jasper Reports | In der Anzeige für Reports und Auswahl im TopCount konnte der Wert -1 nicht eingetragen werden |
0034376 | CURSOR-CRM | Admin-Konsole | Adminkonsole - Beim Kopieren von Serienbriefvorlagen fehlte die Konvertierung nach internen Feldnamen |
Maskenskript | In beiden Clients war das Verhalten von FieldUtils.addPreselectionValues unterschiedlich | ||
0034366 | CURSOR-CRM | Maskenskript | Dokumentation des Befehls DocumentUtils.generateDocument() wurde optimiert |
0034365 | Suchbearbeitung | Die Ebene zur Auswahl eines Schlüsselwertes berücksichtigte im Web Client nicht, dass die Suchbearbeitung sich dieser Hinsicht wie eine Suchmaske verhalten soll | |
0034336 | CURSOR-CRM | BPM | Das Ergebnis von Prozess-Web-Service-Aufrufen enthielt sporadisch keine Variablen, wenn gleichzeitig zum Aufruf der System-Cache geleert wurde |
0034333 | CURSOR-CRM | sonstiges | Starten des Jasper-Designers scheiterte mit "See the Logfile, du Null" aufgrund von Dateiberechtigungen |
0034327 | CURSOR-Importer | Cursor Importer: Werte für <longValue> wurden nicht verarbeitet | |
CURSOR-CRM | Admin-Konsole | Die Anwendungsvariable mit der id = '/MassDataQueuedJobCache$!!$useMaxProcessorCount' war zum Customizingtransport markiert | |
0034283 | CURSOR-CRM | Kacheln | Kanban V2: Die FilterSorter-Komponente wurde nicht in Kacheln angezeigt, welche Unterbereichsrelationen und deren Datensätze anzeigten |
0034280 | CURSOR-CRM | Kacheln | Kommentar- und Aktivitäten-Kachel bei mehrfacher Erwähnung von Mitarbeitern führte zu Performanzproblemen |
CURSOR-CRM | Kachel-Editor | Abhängigkeiten von V2-Kacheln funktionierten nicht, wenn sie ungültige Zeichen enthielten | |
0034166 | CURSOR-CRM INHOUSE | Dokumentenhandling | Die Dokumentenrückgabe schlug wegen Sonderzeichen ("/") im Benutzernamen fehl |
0034066 | CURSOR-CRM | i18n | Die Fehlermeldung im Dokumentenhandling des Browser-Plugins brachte eine unverstädliche Meldung |
CURSOR-CRM | Dokumentenhandling | Der Absender einer Dokumentvorlage konnte nach dem Speichern nicht mehr bearbeitet werden | |
CURSOR-CRM | Dokumentenhandling | Excel-Massendatenaktion in BPM: Die Ausführung der Makros in den generierten Exceldateien war nicht zwingend erforderlich | |
0033883 | CURSOR-CRM | Masken-Editor | Maskeneditor: Das Leeren einer Maske und die Rückgängig-Machen-Aktion danach führte zu einer leeren Baumansicht |
0033441 | CURSOR-CRM | HTML-Editor | Bilder im Memotext wurden im Lesemodus nicht angezeigt, wenn kein weiterer Text enthalten war |
Features
Zusammenfassung |
Mailversand via SMTP ohne IMAP | Versand von Serienmails ohne gespeichertes Passwort |
Methode zur Prüfung, ob der aktuelle Benutzer einer bestimmten Rechtegruppe zugeordnet ist |
Aktualisierung der Datenqualität bei bestimmten Aktionen |
Windows Client: Austausch des Hilfe-Links für neue Online Hilfe |
Features-Dokumentation
Mailversand via SMTP ohne IMAP | Versand von Serienmails ohne gespeichertes Passwort
Im Windows Client wird die „normale“ Serienmail via Outlook direkt versendet, im Web Client hingegen wird der serverseitige E-Mailversand verwendet.
Bei Systembetreibern, die keine Passwörter im CRM speichern dürfen, war es problematisch. Jetzt ist der Mailversand ohne SMTP möglich, indem die Mailkonfiguration entsprechend konfiguriert wird und der Postausgangsserver in dem Fall keine Authentifizierung über IMAP verlangt.
Hierzu muss die Systemeinstellung konfiguriert werden.
Das Feld für die IMAP-Konfiguration muss leer bleiben, wenn die SMTP-Konfiguration aktiviert wurde.
Methode zur Prüfung, ob der aktuelle Benutzer einer bestimmten Rechtegruppe zugeordnet ist
Es wurde eine Methode implementiert, die zurück liefert, ob dem SessionUser eine übergebene Rechtegruppe zugeordnet ist.
Details → isSessionUserInGroup
Aktualisierung der Datenqualität bei bestimmten Aktionen
Die Anzeige der Datenqualität wird bei jeder Wertänderung aktualisiert: sei es durch den Benutzer oder durch Maskenskript. Dieses Verhalten gilt für alle Ansichten, in denen die Datenqualität angezeigt wird.
Details → Datenqualität
Windows Client: Austausch des Hilfe-Links für neue Online Hilfe
Die Online-Hilfe wird in einem Browser geöffnet und verweist auf CURSOR Help Center.
Details → Über das Handbuch
Patch-Notes 2023.3.06
Bugs
Ticket-Nr | Produkt | Komponente(n) | Zusammenfassung |
---|---|---|---|
CURSOR-CRM | Lucene | Bei der Erstellung des Lucene-Index für ProcessContainer wurde nicht auf das Active-Flag geprüft | |
CURSOR-CRM | Skript-Bibliothek | Fehlerhafte Methoden-Aufrufe in Test-Methoden der Skript-Bibliothek wurden nicht als Fehler erkannt | |
CURSOR-CRM | Customizing-Transport | Ein Customizing-Paket konnte nicht importiert werden, wenn es einen leeren gruppen-spezifischen myCRM-Ordner enthielt | |
CURSOR-CRM | Groupware | Beim Anmelden wurde ein Fehler für den Adressbuch-Cache protokolliert, wenn der Benutzer kein Passwort für die Groupware eingetragen hatte | |
0034249 | CURSOR-CRM | Systembasis Server | CompactList: Suchen wurden in der Vorschlagsliste bei Verwendung eines Systemboards nicht gefunden |
0034232 | CURSOR-CRM | Kacheln | Für bestimmte Nachschlagefelder im Kachel-Drawer wurde doppelter Platz verwendet |
0034223 | EVI | Massendaten | Die Lucene Indizierung brach auf einem Massendatenserver ohne Protokolierung ab |
CURSOR-CRM | Infoboard | Kacheln in Boards tieferer Schichten konnten in der Größe verändert werden | |
CURSOR-CRM | Kachel-Editor | Hotkeys (wie z.B. Strg+S) lösten im Kachelbuilder die Browseraktion aus | |
0034092 | CURSOR-CRM | Kacheln | Verkleinerte Darstellung der CompactList-Kachel wurde verbessert |
0034083 | CURSOR-CRM | Customizing-Transport, Infoboard, Kachelvarianten | Beim Schließen des Drawers einer Kachelvariante fehlte der Customizing-Dialog |
0034074 | CURSOR-CRM | Angebote & Verträge | Änderung des Einzelpreises (FW) war nicht möglich, wenn der bereits gefüllt war |
0034053 | Infoboard | Auswahlmenü der Boards in der Board-Verwaltung wurde zur Hälfte außerhalb des Browserfensters angezeigt | |
0034049 | CURSOR-CRM | Kacheln | Verschiedene Padding-Werte verursachten unterschiedliches Aussehen der Badges der Scores-Kachel |
0034027 | CURSOR-CRM | Externe Arbeit (z. B. Installationen) | Beim Aufsplitten des Hauptpartnermoduls wurden i18n Einträge nicht dem korrekten Modul zugewiesen |
0033764 | CURSOR-CRM | Kacheln | KanbanV2: Wenn man die Suche nachträglich um Felder erweiterte, wurden diese nicht sofort in den Filtern und Sortiereinstellungen angezeigt |
Features
Zusammenfassung |
---|
Erweiterung Eingehende Rest-Services scriptlibrary |
Verbesserungen an der Filter- und Sortierkomponente |
Ressourcen-Kalender: Verbesserte initiale Spaltenbreite der Ressourcen innerhalb der Wochenansicht |
Ressourcen-Kalender: Implementierung einer Kalender-Komponente zur Datumsauswahl |
Nutzung von BPM-User-Task-Neuanlage unabhängig von Aktionsrecht "Erstelle xxx" |
CompactList: Konfiguration, ob initial die Kachel mit eingeklappter Filter/Sorter-Komponente angezeigt wird |
Anzeige des Wochentags in der Überschriftenzeile der Tagesansicht des Ressourcen-Kalenders |
Ausführung von Suche in Selektionstask in BPM-Prozessen wird nicht mehr erzwungen |
bbetter: Logiken bei dem Ende der Klassifizierung und Gründen einbauen |
Aufnahme der Datenqualität in den Metadatenexport |
Features-Dokumentation
Erweiterung Eingehende Rest-Services scriptlibrary
Die Rest-API bietet nun die Möglichkeit, eine @Remote
und @BpmSkript
gekennzeichnete Methode aufzurufen. Die Dokumentation der Rest-API kann mit folgender URL aufgerufen werden:
https://server:port/rest/doc/v1/services/scriptlibrary
Die Services benötigen eine gültige Autorisierung mit Benutzername und Passwort oder eines Session-Tokens. Die Sprache des Aufrufs kann durch dien Angabe "Accepted-Language: de-DE" gesteuert werden oder fällt auf die Standard-Sprache des Applikationsservers bzw. Server-Systems zurück.
Die Rest-API bietet zwei Services über dieselbe URL an, um die Dokumentation der Methode auslesen zu können und diese aufzurufen.
GET: /rest/api/scriptlibrary/v2/classes/\{classname\}/\{methodname\}
-- HTTP-Status --
200: OK
-- Response-Body --
/**
* Remote call method.
*
* @param parameter The method parameter.
*
* @return The method result.
*
* @example
String result = SCRemoteCall.remoteCall("string");
*/
@BpmScript @Remote
String remoteCall(String parameter)
Kann eine Skript-Klasse bzw. Methode nicht gefunden werden oder erfüllt die Methode die Anforderungen für die Rest-API nicht, so wird mit dem HTTP-Status-Code "604: Wrong Parameter
" quittiert.
Der Aufruf dieser Skript-Methode verwendet dieselbe URL erwartet aber die Parameter als JSON-Payload als HTTP-POST Aufruf.
POST: /rest/api/scriptlibrary/v2/classes/\{classname\}/\{methodname\}
-- Skript-Methode --
@BpmScript @Remote
String remoteCall(String parameter)
{
return "Result: " + parameter
}
-- Request-Body --
{
"parameter" : "Parameter-Content"
}
-- HTTP-Status --
200: OK
-- Response-Body --
{
"result" : "Result: Parameter-Content"
}
Falls die Methode nicht gefunden werden kann oder die Voraussetzungen für den Aufruf über Rest-API nicht erfüllt, Parameter fehlen oder einen fehlerhaften Datentyp verwenden, erfolgt eine Ausgabe als Fehler.
{
"error": {
"reason": "Wrong parameter.",
"exceptionMessage": "ParameterException: Could not find ScriptLibrary class 'SCRemoteCall'!",
"exceptionHash": -1099067344,
"statusCode": 604
}
}
Der JSON-Payload ermöglicht nicht alle Datentypen der Parameter oder Rückgabewerte direkt anzugeben. Daher findet eine Konvertierung der Parameter statt. Die folgenden Beispiele zeigen verschiedene Methode-Signaturen mit den entsprechenden Request- und Response-JSON-Payload.
Datumswerte werden im ISO-8600-Format angegeben
Nachschlagewerte werden über den Primärschlüssel identifiziert
Bei Maps, Listen und Arrays vom Typ
Object
oderSerializable
findet keine Konvertierung z.B. von Strings im Format ISO-8600 nach Date statt
Multi-Parameter
@BpmScript @Remote
Date multiParameterMethod(String s, Integer i, Long l, Double d, BigDecimal bd, Boolean b, Date dt, ILookup lo)
{
return dt;
}
-- Request-Body --
{
"s" : "abc",
"i" : 123,
"l" : 123456789012345,
"d" : 12.34,
"bd": 12345678901234.12345678901234,
"dt" : "2022-04-11T12:00:00.000Z",
"b" : true
"lo" : "LookupPk"
}
-- Response-Body --
{
"result" : "2022-04-11T12:00:00+00:00"
}
Array-Parameter
@BpmScript @Remote
BigDecimal[] arrayParameterMethod(BigDecimal[] bd, Double[] d)
{
BigDecimal[] result = new BigDecimal[bd.length + d.length + 1];
for(int i = 0; i < bd.length; i++) {
result[i] = bd[i];
}
for(int i = 0; i < d.length; i++) {
result[bd.length + i] = new BigDecimal(d[i]);
}
result[result.length - 1] = new BigDecimal(5.5)
return result;
}
-- Request-Body --
{
"bd" : [11111111.11111111,222222222.22222222],
"d" : [33.33,44.44]
}
-- Response-Body --
{
"result" : [11111111.11111111,222222222.22222222,33.33,44.44,5.5]
}
List-Parameter
@BpmScript @Remote
List<String> listParameterMethod(List<String> ls, List<Integer> li)
{
for(Integer i : li)
{
ls.add("" + i)
}
return ls;
}
-- Request-Body --
{
"ls" : ["a","b","c"],
"i" : [1,2,3]
}
-- Response-Body --
{
"result" : ["a","b","c","1","2","3"]
}
Map-Parameter
@BpmScript @Remote
Map<String,Object> mapParameterMethod(Map<String,Object> map)
{
map.put("sOut", "xyz");
map.put("iOut", 456);
map.put("dtOut", new Date());
return map;
}
-- Request-Body --
{
"m" : {
"s" : "abc",
"i" : 123,
"l" : 123456789012345,
"d" : 12.34,
"bd": 12345678901234.12345678901234,
"dt" : "2023-01-01T12:00:00.000Z",
"b" : true
}
}
-- Response-Body --
{
"m" : {
"s" : "abc",
"sOut" : "xyz",
"i" : 123,
"iOut" : 456,
"l" : 123456789012345,
"d" : 12.34,
"bd": 12345678901234.12345678901234,
"dt" : "2023-01-01T12:00:00.000Z",
"dtOut" : "2023-10-31T12:00:00+00:00",
"b" : true
}
}
Verbesserungen an der Filter- und Sortierkomponente
Die Filter- und Sortier-Komponente, die bspw. in der Kanban- oder CompactList-Kachel verwendet wird, wurde überarbeitet und verbessert.
Der Dialog für die Konfiguration wurde überarbeitet. Es wird nun deutlicher dargestellt, was die Optionen in der Komponente bedeuten.
Sind Felder in der Filter- und Sortierkomponente vorhanden, die in der hinterlegten Suche der Kachel nicht vorhanden sind, so werden diese Felder mit einem optischen Hinweis ausgestattet.
Ressourcen-Kalender: Verbesserte initiale Spaltenbreite der Ressourcen innerhalb der Wochenansicht
Die Spaltenbreite der Ressourcen in der Wochen-/Monat-/Jahres-Ansicht wird jetzt initial kleiner dargestellt, als es bisher der Fall war (15% anstatt 30%).
Ressourcen-Kalender: Implementierung einer Kalender-Komponente zur Datumsauswahl
In der Tages-Ansicht wird ein Kalender-Button anstelle der Vor- und Zurück-Buttons zur Datumsauswahl angezeigt.
Nutzung von BPM-User-Task-Neuanlage unabhängig von Aktionsrecht "Erstelle xxx"
Die Neuanlage in BPM umgeht das einschränkende Aktionsrecht zur Neuanlage der ausgewählten Entität.
CompactList: Konfiguration, ob initial die Kachel mit eingeklappter Filter/Sorter-Komponente angezeigt wird
Im Kontext von Entitätsmasken und dem dort eher begrenzten Platz kommen Use-Cases vor, wo die CompactList-Kachel auf Masken platziert wird.
Für solche Fälle hat der Administrator eine Möglichkeit, vorzugeben, ob die Kachel initial mit zugeklapptem FilterSorter dargestellt wird. Hierfür wurde eine neue Kachel-Konfiguration geschaffen.
Anzeige des Wochentags in der Überschriftenzeile der Tagesansicht des Ressourcen-Kalenders
In der ersten Zeile der Tagesansicht wird zusätzlich zum Datum noch der Wochentag angezeigt.
Beispiel: anstelle von "29. Juni 2023" wird "Do, 29. Juni 2023" angezeigt.
Ausführung von Suche in Selektionstask in BPM-Prozessen wird nicht mehr erzwungen
In einem BPM-Selektionstask wurde bisher erzwungen, dass eine Suche ausgeführt werden muss, bevor der Prozess fortgeführt werden kann. Dies ist nicht in allen Fällen und Prozessen sinnvoll, daher ist es nun möglich, dass die Ausführung der Suche nicht erzwungen wird.
bbetter: Logiken bei dem Ende der Klassifizierung und Gründen einbauen
Es wurden folgende Logiken umgesetzt:
Sind Felder Bezugsbereich Ende (ReqReasonKey.TicketRequest) und / oder Grund Ende (ReasonEndKey.TicketRequest) auf der Maske, werden diese automatisch befüllt
Es erschient kein Fehler, wenn die Felder nicht auf der Maske sind
Die Felder Bezug (TicketReqKey.TicketRequest) und Begründung (TicketReasonKey.TicketRequest) sind immer beschreibbar, wenn sie auf der Maske sind.
Wenn Klassifizierung eindeutig und eindeutiger Grund dazu, wird Begründung und Bezug automatisch mit gefüllt.
Aufnahme der Datenqualität in den Metadatenexport
Bisher ging aus dem Metadatenexport nicht hervor, ob ein Feld „relevant für die Datenqualität“ ist. Um dies gezielt aktivieren und deaktivieren zu können, wurde dieses Feld in den Metadatenexport aufgenommen.
Patch-Notes 2023.3.05
Bugs
Ticket-Nr | Produkt | Komponente(n) | Zusammenfassung |
---|---|---|---|
0034226 | CURSOR-CRM | Suchbearbeitung, UI | In der Suchbearbeitung liefen die Karten aus dem Fenster, wenn es viele Schlüsselwörter gab |
CURSOR-CRM | BPM | Die Outbound-Serienaktion lief auf einen Fehler, wenn ein dynamischer Verteiler verwendet wurde | |
0034220 | CURSOR-CRM | Maskenskript | Das Abbrechen der Auswahl eines Listeneintrags in DialogUtils.showSelectionDialog führte nicht die Callback-Methode mit dem Index -1 aus Der Rückgabewert von DialogUtils.showSelectionDialog kann im Web Client nicht verarbeitet werden. Die Nachverarbeitung findet ausschließlich in der Callback-Methode statt. Dieser Aufruf darf nur der letzte innerhalb einer Methode sein, das gilt auch für if-Bedingungen oder while-Schleifen. Eine while-Schleife wird dadurch realisiert, dass DialogUtils in der Callback-Methode im Falle von Index=-1 immer wieder neu aufgerufen wird und dadurch auch dieselbe Callback-Methode rekursiv. |
CURSOR-CRM | Systembasis Web Client | Die Lucene-Konfiguration in den Entitätseigenschaften zeigte keine Feldbeschriftungen | |
CURSOR-CRM | Application Server | Der JSON-Parser der Jettison-Bibliothek lief in gewissen Konstellationen auf einen Rekursionsfehler | |
CURSOR-CRM | Skript-Editor | Es frhlte i18n, wenn MailUtils.sendActivity in der Skriptbibliothek verwendet wurde | |
CURSOR-CRM | Massendaten | Fehler in der Auftragswarteschlange konnten nicht entfernt werden | |
0034181 | CURSOR-CRM HelVis | Systembasis Rich Client | Report Aktivitätenporträt öffnete sich nicht, wenn dieser als PDF erstellt wurde |
0034170 | CURSOR-CRM | Update/Systeminitialisierung | Index-Generierung im Rahmen der Updateroutine behandelte keine Include-Felder unter MSSQL |
CURSOR-CRM | Infoboard | Fab-Button auf dem Desktop zum Verwalten von Boards lag über dem Drawer der Kachelkonfiguration | |
0034148 | CURSOR-CRM | Systembasis Web Client | Das Speichern eines Social-Media Datensatzes im Unterbereich der Entität 'Person' führte zu einem Fehler |
0034117 | Maskenskript | Der Fortfahren-Button in Prozess-Detailmasken konnte nicht über GUIUtils.setEnabled() deaktiviert werden | |
0034081 | CURSOR-CRM | Update/Systeminitialisierung | Fehlerhafte Metadaten für "historisch" umgewandelte Freitextfelder in Nachschlagefelder waren immer noch vorhanden |
0034050 | CURSOR-CRM | Application Server | Eine Nachschlagsuche fand keine Zahlenwerte im Integer-Format |
0034056 | Kacheln, Suchen | Unterbereichsbeziehungen konnten in der CompactList nicht dargestellt werden | |
0033980 | CURSOR-CRM | BPM | Das Kopieren von Dokumenten per DocumentUtils.copyDocumentFile war fehlerhaft, wenn Dokumente mit identischen Dateinamen kopiert wurden |
0033918 | CURSOR-CRM | Skript-Bibliothek | Skriptbibliothek: es kam zum Performance-Problem bei der Ermittlung der Contributor-Liste |
CURSOR-CRM | Infoboard | Im Kachelkonfigurationsdrawer wurden Labels abgeschnitten, obwohl noch Platz zur Verfügung stand | |
Infoboard, Kachel-Editor, Tooling (Build) | Durch mehrfaches Bauen von infoboard-tile konnten verwaiste Build-Artefakte entstehen |
Features
Zusammenfassung |
---|
Direktes Öffnen von temporären Dokumenten aus der Taskliste |
Maximalanzahl an Token für die K&A-Kachel, so dass es nicht zu langen Ladevorgängen kommt |
Die Methoden RestUtils.setQueryParams und RestUtils.setQueryParam behandeln List-Datentypen korrekt |
Features-Dokumentation
Direktes Öffnen von temporären Dokumenten aus der Taskliste
Im Falle der nativen Excelvorlagen kommt im Regelfall ein Assistent zum Tragen, der den Anwender bei der Generierung von Exceldateien unterstützt.
Zwecks Vereinfachung und Beschleunigung dieses Prozesses kann nun unter gewissen Bedingungen, auf die Verwendung des Assistenten verzichtet werden. Sind die Voraussetzungen gegeben, so wird sowohl die generierte Exceldatei als auch der zugehörige Dokumentendatensatz direkt aus der Taskliste geöffnet.
Der neue Konfigurationsparameter CONF_APPL_AVOID_INSTANT_OPEN ist im Standard auf "Nein" gestellt, sodass das neue (veränderte) Verhalten bei Excelvorlagen (= Reduzierung der Schritte im Assistenten) im Standard greift.
Folgende Aktionen stehen hier zur Verfügung:
Exceldatei bearbeiten
Es wird der Dokumentendatensatz in einer neuen Ebene geöffnet und die generierte Exceldatei direkt geöffnet.
Zweck: Eine Bearbeitung der Exceldatei ist direkt erwünscht.Aus der Liste entfernen
Die Exceldatei wurde ebenfalls generiert und als Dokumentendatensatz im CRM angelegt. Es erfolgt jedoch kein Öffnen des Dokuments. Stattdessen wird der Eintrag aus der Taskliste entfernt.
Zweck: Eine direkte Bearbeitung der Exceldatei ist nicht notwendig.
Voraussetzungen
In der Excelvorlage ist kein Rücktransfer konfiguriert
Die Option "Suchfenster und Auswahldialog anzeigen" (CONF_SEARCHDIALOG) in der Excelvorlage enthält den Wert NONE oder NEIN
Sind die genannten Voraussetzungen erfüllt, wird das direkte Öffnen der generierten Exceldatei im Tasklisteneintrag automatisch angeboten. Eine Anpassung der Vorlagen durch den Kunden ist somit nicht notwendig.
Ist es im Einzelfall dennoch gewünscht, den Assistenten weiterhin zu verwenden, so kann dies durch den zusätzlichen Konfigurationsparameter "CONF_APPL_AVOID_INSTANT_OPEN" in der Excelvorlage gesteuert werden.
Maximalanzahl an Token für die K&A-Kachel, so dass es nicht zu langen Ladevorgängen kommt
Sporadisch kam es vor, dass der Ladevorgang einer auf einer Entität platzierten Kommentar-und-Aktivitäten-Kachel ange dauerte.
In solchen Fällen ist der Ablauf wie folgt:
Jede Aktivität wird auf Textbestandteile überprüft. Jedes einzelne Textbestandteil ist ein Token.
Die Überprüfung hat fachlich folgende Auswirkungen: Generierung eines Chips und Anzeigen der "Mehr Anzeigen"-Aktion innerhalb der Aktion
Aufgrund von Generierung von HTML-Texten kann die Token-Anzahl massiv ansteigen. Dies liegt zum Beispiel an Outlook.
Dadurch, dass die Token mehrmals zyklisch überprüft werden, leidet die Performance, wenn die Token-Anzahl deutlich über Normwert liegt.
Lösungsansatz:
Es wurde eine nicht-konfigurierbare Maximalanzahl eingeführt, nachdem die Token-Durchzählung und zyklische Überprüfung gestoppt wird. Wird die Maximalanzahl erreicht, so wird kein Chip generiert und die Anzeige von "Mehr anzeigen" gemäß der hinterlegten Konfigurationseinstellung durchgeführt.
Dies bedeutet, dass auch kleine Aktivitäten (bspw. ein Mailtext) keinen Chip mehr generieren können.
Dies bedeutet, dass auch kleine Aktivitäten (bspw. ein Mailtext) keinen Chip mehr generieren können.
Methoden RestUtils.setQueryParams und RestUtils.setQueryParam behandeln List-Datentypen korrekt
RestUtils.setQueryParams
kann eine "flache" Map<String, Object>
übergeben bekommen, die einfache Objekt-Datentypen wie String, Integer etc. und nun auch List behandeln kann.
Aktuell erhält man bei dem Aufruf mit der MapRestUtils.setQueryParams(target, ["meineListe": ["Wert1", "Wert2"]])
den Aufrufparameter &meineListe=%5BWert1%2C+Wert1%5D.
Es wird nun der Aufrufparameter &meineListe=Wert1&meineListe=Wert2
generiert.
Das gleiche gilt für den Aufruf von RestUtils.setQueryParam
mit einer Liste RestUtils.setQueryParam(target, "meineListe", ["Wert1", "Wert2"])
.