Update auf 2024.1.x LTS
Die Update-Dokumentation beschreibt die Schritte, die aus technischer Sicht zum Update einer Major-Version notwendig sind und gibt Hinweise, worauf aus technischer Sicht geachtet werden muss.
Voraussetzungen
Vorgehensweise
Bei dem Update ist unbedingt darauf zu achten, die einzelnen Schritte in der angegebenen Reihenfolge komplett abzuarbeiten und sich dabei exakt an die Anleitung zu halten. Im Fehlerfall ist die im Update Verzeichnis liegende Update und Update_Debug Textdatei zu sichern und mit dem Support Rücksprache zu halten.
Wenn Sie die Update-Prozedur erfolgreich abgeschlossen haben, teilen Sie uns bitte mit (support@cursor.de), welche Systeme (z.B. Test- oder Produktiv-System) Sie auf welche Version aktualisiert haben. Nur so können wir im Falle einer Support-Frage Ihr Problem möglichst schnell in unserem Haus prüfen.
Versionen
Versionsvoraussetzungen für das CRM:
Installierte Version | Max. Update Version |
---|---|
19.1.20, 19.2.18, 20.1.16, 20.2.14, 21.1.08 | 21.2 |
19.2.19, 20.1.19, 20.2.17, 21.1.12, 21.2.08 | 22.1 |
20.2.21, 21.1.15, 21.2.13, 22.1.09 | 23.1 |
21.1.18, 21.2.19, 22.1.13, 23.1.08 | 23.2 |
21.2.20, 22.1.17, 23.1.10, 23.2.8 | 23.3 |
22.1.18,23.1.12,23.2.11,23.3.6 | 24.1 LTS |
Tipp
Generell sollte immer der aktuelle Patch für die alte Version eingespielt werden, um Probleme beim Update zu vermeiden.
Wird der Customizing Transport verwendet, empfehlen wir den Transport aller Pakete vor dem Update und auch eine Spiegelung der Datenbank (Prod in Test und QS).
Prüfung der Metadaten
Beim Update auf Version werden die Metadaten der Installation geprüft. In kritischen Fällen kann es sein, dass diese Prüfung das Fortführen des Update verhindert.
Systemvoraussetzungen und Softwarekomponenten
Beachten Sie die Dokumentation, welche Systemvoraussetzungen erfüllt sein müssen.
Systemvoraussetzungen für Update
Software-Voraussetzungen
Die Systemvoraussetzungen können unter Systemvoraussetzungen eingesehen werden. Erforderliche Portfreigaben zwischen Rich Client und Applikationsserver finden Sie ebenfalls in dem Dokument.
Update-Vorbereitungen
Download der Version
Um die für Update-Zwecke benötigte Programm-Version zu erhalten, melden Sie sich bitte im Kundenbereich von www.cursor.de an. Dort können Sie im Downloadbereich das entsprechende Paket beziehen. Bei Rückfragen wenden Sie sich bitte an den Support der CURSOR Software AG (support@cursor.de). Nachdem Sie die gezippte Datei heruntergeladen haben, entpacken Sie diese auf dem Applikationsserver.
Verzeichnisstruktur des Update- bzw. Installationspakets
Nachdem Sie die gezippte Datei für beispielsweise CURSOR-CRM 2024 SR1 (24.2.x) mit der Datenbank Oracle und dem Applikationsserver JBoss für Windows 64 Bit entpackt haben, ergibt sich (unter anderem) folgende ähnliche Verzeichnisstruktur:
Hauptverzeichnis: CURSOR-CRM_24.2.X
(Im Folgenden <INSTALL-DIR> genannt).
Unterverzeichnis:
7-Zip (Tool zum Komprimieren von Logfiles)
client (CURSOR-CRM-Client)
clientlog (Verzeichnis/Freigabe für Clientlogs)
cti (Dateien für einen CTI Server)
db (Datenbankskripte)
jdk (Open JDK für Windows und Linux)
server (Applikationsserver JBoss)
tools (Tools für die Installation)
![](../../../__attachments/20545609/image-20230820-202740.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Alle Benutzer abmelden (Unter Administration / Datenfluss könnte auch ein Wartungsfenster erstellt werden)
Bevor Sie mit dem Update beginnen, stellen Sie sicher, dass keine User im System angemeldet sind. Angemeldete User können im Windows Client über das Menü Extras / Aktive Benutzer oder im Webclient über Benutzermenü / Aktive Benutzer angezeigt werden. Aktive Benutzer können per "Mail senden" Aktion eine E-Mail erhalten:
Massendatenserver prüfen
Unter Optionen / Systemeinstellungen / Allgemein / Adresse des Anwendungsservers prüfen Sie, ob ein Massendatenserver eingerichtet wurde. Dieser darf zum Zeitpunkt des Updates nicht aktiv sein. Falls Sie das Update am Massendatenserver ausführen, erhalten Sie im Verlauf der Aktualisierung einen Hinweis.
Datenbank sichern
Microsoft SQL Server: Über Microsoft SQL Server Management Studio.
ORACLE: Auf dem Datenbankserver über EXPDP das aktuelle Schema exportieren.
Für beide Datenbanksysteme werden hierfür in der Regel Skripte bei der Installation bereitgestellt. Den genauen Pfad entnehmen Sie der bei der Installation mitgelieferten Installationsübersicht im Feld Skriptverzeichnis. Dies befindet sich im Abschnitt Datenbanken (DB).
Bei Produktivsystemen kann es sinnvoll sein, die Sicherung vor dem Update manuell durchzuführen. Die Updateroutine kann die Sicherung allerdings auch durchführen. Wird die Sicherung vorher manuell erstellt, empfiehlt es sich, die Sicherung im Rahmen des Updates zu deaktivieren.
Alternativ ist es ab Version 21.2 nun möglich unseren neuen Spiegelungsassistenten zu nutzen:
Voraussetzungen des Spiegelungsassistenten:
Verfügbar ab Version CRM Version 21.2
Der ausführende Anwender muss Admin Berechtigungen haben.
Es muss mindestens eine 2 System Landschaft mit gleicher CRM Version geben.
Es dürfen keine offenen Customizing Pakete in den Zielsystemen existieren (dies wird vom Assistenten geprüft).
Datenbank-Skripte sichern
Bei einigen Kunden wurden Änderungen an den Datenbank-Scripten in db\scripts oder im Verzeichnis db\scripts\stmts
vorgenommen. Häufig ist die Datei propertymapper.sql
angepasst oder auch die Datei RenewIndexes.sql
um kundenspezifische Indizes erweitert.
Geplante Tasks deaktivieren
Bei einigen Kunden werden z.B. stündlich automatisch Tasks gestartet, die z.B. einen Import in die Datenbank ausführen. Diese Tasks müssen vor dem Update beendet werden, da es sonst Konflikte während der Aktualisierung der Datenbankstrukturen gibt.
Update-Vorgehensweise
Im folgenden Kapitel wird das Update einer CURSOR-CRM-Installation beschrieben. Hierbei müssen die folgenden drei Komponenten aktualisiert werden:
Datenbank
Applikationsserver
Windows Client
Die Reihenfolge ist dabei zwingend vorgegeben. Zunächst wird die Datenbank, dann der Applikationsserver und zum Schluss der Client aktualisiert.
Automatisierter Updatevorgang
Voraussetzungen:
Das Update muss auf dem Applikationsserver ausgeführt werden.
Auf dem Applikationsserver muss auch der Rich Client installiert sein.
Der Applikationsserver ist als Dienst gestartet und der aktuelle Benutzer der Maschine hat die Berechtigung, den Dienst zu beenden/starten, Dienste zu löschen und Dienste zu installieren
Im Folgenden wird der Updatevorgang unter diesen Voraussetzungen beschrieben.
Bei einem Update müssen sowohl der Applikations-Server als auch der Rich Client aktualisiert werden. Der Web Client ist im Applikationsserver enthalten. Zunächst müssen sich alle Anwender vom System abmelden.
Erstellen Sie innerhalb des Installationsverzeichnisses der Anwendung ein Unterverzeichnis namens "update", z.B. D:\CURSOR\EVI\update
Entpacken Sie das Installationspaket in dieses Verzeichnis.
Die folgende Datei ausführen: "update.bat". Es ist auch möglich, das Installationsverzeichnis als Parameter zu übergeben, z.B. update.bat "D:\CURSOR\EVI\update"
Unter Linux starten Sie das Update mit ./update.sh
D:\InstallDir\update>.\update.bat
Wenn Sie die Datei update.bat
ausgeführt haben, erscheint (nach Auswahl der Installationssprache) ein Willkommensbildschirm:
![](../../../__attachments/20545609/image-20230820-202859.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Sie werden darauf hingewiesen, dass der JBoss während des Updates in ein neues Verzeichnis installiert wird, falls er sich vorher in einem Verzeichnis mit Leerzeichen befindet. Das ist häufig der Fall, da das Windows-Standard-Programmverzeichnis "Program Files" bzw. "Program Files (x86)" heißt und nicht mit dem neuen JBoss kompatibel ist. Klicken Sie auf "Weiter". Sie werden folgenden Dialog sehen:
![](../../../__attachments/20545609/image-20231101-082254.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Wechseln Sie zum folgenden Dialog. Sie werden aufgefordert, die Verzeichnisse ...server/JBoss und ...client/JBoss
auszuwählen - im Standard wird dies automatisch erkannt, wenn Sie den Update-Ordner in ihr JBoss-Verzeichnis gelegt haben.
Im nächsten Schritt müssen Sie die Daten eines administrativen Kontos angeben, mit dem das Update durchgeführt werden wird, sowie das Sicherungsverzeichnis auswählen.
Wenn Sie jetzt auf Weiter klicken, wird automatisch mit dem nächsten Schritt fortgefahren (zunächst Datenbank-Backup) und danach der Server- bzw. Client-Backup-Vorgang entsprechend Ihrer Angaben ausgeführt.
Nun erfolgt die SSL Konfiguration (SSL-Kommunikationsstrecken & Zertifikate ):
![](../../../__attachments/20545609/image-20230820-202951.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Nach dem Klick auf Starte SSLUpdateTool erscheint folgender Dialog:
![](../../../__attachments/20545609/image-20230820-203008.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Danach kann der Installationsassistent mit weiter fortgeführt werden:
![](../../../__attachments/20545609/image-20230820-203026.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
SSL Konfiguration (Sicherheitszertifikate)
Ab Version 16.1 erfolgt die Konfiguration mit dem Updater und der integrierten Anwendung "CURSOR Key- und Trustore Tool":
Feld | Beschreibung |
---|---|
Zertifikat (Public key) | Das hier angegebene Zertifikat, auch Public Key genannt, wird in den Keystore gespeichert. Wird hier ein Keystore angegeben, erfolgt keine Erstellung eines neuen Keystores. Für die Formate PKCS#12 und Java Keystore ist die Angabe des Passwortes notwendig.
*Die Angabe eines Private Key ist erfoderlich! |
Zertifikatspasswort | Dieses Passwort wird zum Entschlüsseln des PKCS#12 Zertifikats bzw. Java Keystore verwendet. |
Private Key | Hier muss der zum Zertifikat (Public Key) zugehörige Private Key angegeben werden. Die Angabe des Private Key ist nicht erforderlich, wenn als Public Key ein PKCS#12 Zertifikat oder ein Java Keystore angegeben wurde.
|
Key Passwort | Ist der Private Key verschlüsselt, wird dieses Passwort zum entschlüsseln verwendet. Das Feld ist optional. |
CA Zertifikate | Mit der Liste der hier angegebenen Zertifikate wird versucht, die Zertifikatskette herzustellen. Es müsen alle Intermediate- und Root-Zertifikate angegeben werden, die hierfür nötig sind.
|
Bestehender Truststore | Der existierende Truststore. Hier kann optional ein bereits bestehender Truststore angegeben werden. Ist dies der Fall, wird dieser als Grundlage für den neuen Truststore verwendet und wird um die angegebenen Zertifikate ergänzt und unter neuem Namen gespeichert. Ist das Feld leer, so wird ein neuer Truststore mit den angegebenen CA Zertifikaten erstellt. |
Truststore Passwort | Dieses Passwort wird zum Entschlüsseln des bestehenden Truststores verwendet. |
Truststore CURSOR | Hier muss der Pfad zur Datei |
Ausgabepasswort | Dieses Passwort wird zum Verschlüsseln des Key- und Truststores verwendet. |
Ausgabeverzeichnis | In dieses Verzeichnis werden die neu erstellen Key- und Truststore-Dateien abgelegt. Wurde das Verzeichnis als Parameter übergeben, ist dieser Wert nicht änderbar. |
Weiterführende Informationen zur Thematik Sicherheitszertifikate finden Sie im Installationshandbuch unter dem Abschnitt Installation des Applikationsservers im Kapitel SSL-Installation und -Konfiguration (Das Installationshandbuch erhalten Sie auf Anfrage).
Danach erfolgt eine Zusammenfassung des Updates.
Sie müssen nun abwarten, bis der gesamte Updatevorgang automatisch zu Ende geführt wird.
Wenn Sie in den nächsten Schritt wechseln, werden Sie noch einmal aufgefordert, die Konfiguration entsprechend vorzubereiten, wie es hier zuvor beschrieben wurde. Prüfen Sie dies noch einmal und fahren Sie dann fort. Der Vorgang wird einige Zeit in Anspruch nehmen. Anschließend erhalten Sie einen ähnlichen Bestätigungsbildschirm wie folgt:
Mit einem Klick auf Beenden kann der Installationsassistent nun geschlossen werden.
Masterclient aktualisieren
Um nicht bei jedem Update oder Patch den Client neu verteilen zu müssen, bietet CURSOR-CRM die Möglichkeit, einen Master-Client zu verwenden. Das Installationsverzeichnis des Master-Clients entnehmen Sie der Installationsübersicht (Feld Auto-Update-Verzeichnis). Änderungen müssen somit nur an diesem einen Client durchgeführt werden. Bei der Anmeldung an CURSOR-CRM wird zunächst geprüft, ob Änderungen vorliegen. Sind Änderungen vorhanden, wird das Update des Clients voll automatisch durchgeführt. Somit ist mit minimalem Aufwand sichergestellt, dass alle Benutzer von CURSOR-CRM mit dem aktuellsten Client arbeiten.
Die zuvor konfigurierte Datei ..\client\jboss\custom\configuration.bat
aus der neuen Version muss ebenfalls in den Master-Client übernommen werden. In der Datei ...\Client\jboss\custom\update.properties
werden die Einstellungen zum automatischen Aktualisieren der einzelnen Verzeichnisse vorgenommen.
In dem Verzeichnis custom öffnen Sie die Datei update.properties
mit einem Texteditor. Ändern Sie die folgenden Schlüssel auf das aktuelle Tagesdatum und die aktuelle Uhrzeit.
LAST-UPDATE=26.10.23 14\:00
BIN-DIR=26.10.23 14\:00
CONF-DIR=26.10.23 14\:00
EXT-DIR=26.10.23 14\:00
LIB-DIR=26.10.23 14\:00
CUSTOM-DIR=26.10.23 14\:00
UPDATE-TOOL-DIR=26.10.23 14\:00
JRE-DIR=26.10.23 14\:00
Der Eintrag LAST-UPDATE gibt die letzte Änderung an dem Master-Client an. Für jedes Verzeichnis gibt es einen Eintrag in der Datei update.properties (EXT-DIR, BIN-DIR, CONF-DIR, LIB-DIR, CUST-EXT-DIR usw.). Zum Aktualisieren muss das Datum und die Uhrzeit für jedes Verzeichnis und bei dem Eintrag LAST-UPDATE aktualisiert werden.
Aktivierung des automatischen Client-Updatetools
Der Master-Client muss in der Datei Client\jboss\custom\configuration.bat aktiviert sein. Hierzu gibt es in der Datei-Zeile 64 den Eintrag SET USE_UPDATE_TOOL=true
. Dieser muss zum Aktivieren auf 'true' gesetzt sein.
Starten des Client-Updatetools
Beim Starten eines noch nicht aktualisierten Clients wird die folgende Fortschrittsanzeige angezeigt, die das Kopieren diverser Dateien visualisiert.
![](../../../__attachments/20545609/image-20230820-201622.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Datenbank-Statistiken aktualisieren
Bei ORACLE-Datenbanken: Ausführen der Datei
db\scripts\analyzeTables.bat
(bei Linuxdb\scripts\linux\analyzeTables.sh
). Hierdurch wird auch die SQL-DateiRenewIndexes.sql
, die bei einigen Kunden erweitert wurde, ausgeführt.Bei MS-SQL eine Datenbankoptimierung durchführen.
Weitere Hinweise
Turnus zum Neustart des Applikationsservers
Tipp
Es wird empfohlen, den Applikationsserver in einem monatlichen Turnus neu zu starten. Häufigere Neustarts würden dazu führen, dass aus Performance-Sicht wertvolle Cache-Informationen temporär verloren gehen und damit neu aufzubauen wären.
Falls das Zusatzmodul CTI Schnittstelle im Einsatz ist, sollte der zusätzliche Dienst des CTI-Applikationsservers mindestens 1 Mal wöchentlich oder noch besser nächtlich neu gestartet werden, damit die CTI-Schnittstellen neu initialisiert werden können.
Dokumentenbearbeitung und externe Aufrufe im Web Client
Zur Nutzung der erweiterten Dateibehandlung und der externen Aufrufe im Web Client ist die Nutzung der "CURSOR Browser-Erweiterung" und des zugehörigen "Communication Host für die CURSOR Browser-Erweiterung" zwingend erforderlich.
Besonderheiten beim Einsatz eines CTI Servers.
Wenn die CTI-Schnittstelle im Einsatz ist, muss der dafür vorhandene JBoss ebenfalls aktualisiert werden.
Behobene Bugs
Informationen finden Sie in der Patch-Dokumentation im Kundenportal.
Schriftarten
Die ausgelieferten Reports verwenden als Standardschriftart Tahoma, welche im TrueType Format auf dem Applikationsserver installiert sein muss. Läuft der Applikationsserver unter Linux, bietet es sich an, zunächst die MS TrueType CoreFonts zu installieren und anschließend noch den Tahoma Font hinzuzufügen.
Sofern Sie eine gültige Windows-Lizenz haben, kopieren Sie die Datei tahoma.ttf
aus dem Verzeichnis C:\Windows\Fonts
Bei SuSE Linux
# als Benutzer root:
# Kopieren Sie die Datei tahoma.ttf in das fonts Verzeichnis
cp tahoma.ttf /usr/share/fonts/truetype
# Font-Cache neu laden
fc-cache
Bei Ubuntu Linux
# MS TrueType CoreFonts installieren
sudo apt-get -y install ttf-mscorefonts-installer
# Schriftart Tahoma installieren
cd /tmp
wget http://download.microsoft.com/download/ie6sp1/finrel/6_sp1/w98nt42kmexp/en-us/ielpkth.cab
cabextract --lowercase ielpkth.cab
# Kopieren der Datei tahoma.ttf in das fonts Verzeichnis
sudo cp tahoma.ttf /usr/share/fonts/truetype/msttcorefonts
# Font-Cache neu laden
sudo fc-cache
Alternative Schriftart-Bibliothek
Ist eine Installation der Schriftarten auf dem Server nicht möglich, können auch im Applikationsserver alle benötigten Schriftarten als Bibliothek installiert werden. Wie auch die Datenbank-Treiber wird die Datei cursor-font.jar
im Verzeichnis ./custExt
abgelegt
Eine vorkonfigurierte Bibliothek mit den Windows-Schriftarten Calibri und Tahoma können Sie von der CURSOR-Website herunterladen.
Link: https://www.cursor.de/software_mgmt/install/cursor-font.jar
Systemrelevante Informationen für Administratoren
Aufnahme der Mitarbeiterkategorie zur Abbildung von Benutzern ohne Client-Anmeldung
Bisher wurde das Flag "Ist technischer Benutzer" auf dem Mitarbeiter dafür verwendet, um diesen Benutzern einen Login zu verwehren. Häufig handelte es sich dabei allerdings nicht um technische Benutzer, sondern Ressourcen. Da diese fälschlicherweise dann auch in BPM-Prozessen als ausführender Benutzer ausgewählt werden konnten, wurde eine sinnvolle Trennung der technischen Benutzer von den Ressourcen vorgenommen.
Um allerdings nicht für jeden Mitarbeitertyp eigene Felder aufzunehmen und eine Erweiterbarkeit sicherzustellen, wurde im Standard ein neues Schlüsselfeld aufgenommen:
Feld: Mitarbeiterkategorie
Feldname: CategoryKey.Employee
Feldtyp: Schlüsselfeld
Keyrange: C0CategoryKey (DE: Mitarbeiterkategorie; EN: Employee Type
Key 1: C0UserCat (DE: Benutzer, EN: User)
Key 2: C0ResourceCat (DE: Ressource, EN: Resource)
Standardwert (Vorbelegung): C0UserCat
Das Feld TechnicalUser.Employee wurde wie folgt migriert:
Ist technischer Benutzer = true, dann C0ResourceCat
Ist technischer Benutzer = false, dann C0UserCat
Für die "Mitarbeiter", die als Ressource angelegt waren, ist nun keine Anmeldung am Client (Web/App) mehr möglich (analog zum bisherigen Flag "technischer Benutzer").
Für die "Mitarbeiter", die NICHT als Ressource angelegt waren, ist die Anmeldung am Client möglich. Dies gilt auch für Mitarbeiterkategorien, die zukünftig in der Kunden-Schicht C2 angelegt werden.
Bestandskunden wird empfohlen, die technischen Benutzer zu überprüfen und zu aktualisieren. Mitarbeiterdatensätze, die lediglich als Ressource genutzt werden sollen (wie bspw. Räume), können als technischer Benutzer = false
gesetzt werden. So werden die Listen technischer User bspw. in BPM für die Ausführung von Prozessen übersichtlicher.
Wurde bei Bestandskunden die Suche für den Mitarbeiterabgleich (C0EMPLOYEES_TO_MERGE) übersteuert, sollte das neue Feld in der Suche aufgenommen werden, damit auch diese Information im Rahmen des Abgleichs übertragen wird.
Außerdem wurde das Feld Mitarbeiterkategorie in die Standardmaske aufgenommen. Übersteuerte Mitarbeitermasken sollten um diese Information ergänzt werden. Der Standardwert für neu angelegte Mitarbeiter ist immer "Benutzer".
Überführen von Skriptlogik nach BPM mit Skriptbibliotheksfunktionen im Bereich der Aktivitäten
Die geänderte Serverlogik überschreibt eventuelle Logiken, die ein Kunde im C2-Maskenskript eingestellt hat. Wenn der Kunde individuelle Logiken im Maskenskript definiert hatte, muss er die neue zentrale Logik in der Skriptbibliothek übersteuern und seine Logik dort hinterlegen. Der Ort hat sich geändert und der neue Ort überschreibt den alten Ort.
Vor dem Speichern einer Aktivität werden das Datum "Ende" und evtl. "Erinnerungsdatum" berechnet. Die Daten werden nur berechnet, wenn sie beim Speichern nicht vorher verändert wurden oder leer sind. Anpassungen der Datumslogik erfolgen im Maskenskript der Aktivität oder in SC0EntityLogic.beforeSave()
.
Allgemein können in SC0EntityLogic.beforeSave()
bzw. SC0EntityLogic.doStartBeforeSave()
Logiken für weitere Bereiche hinterlegt werden.
Hinweise auf neue Funktionalitäten
Tabmanagement: Öffnen von Datensätzen in neuer Ebene im Hintergrund
Wenn man einen Eintrag über das Kontextmenü “in einer neuen Ebene öffnen” anklickt, öffnet sich eine neue Ebene, der Fokus bleibt aber in der Listenansicht bestehen.
![image-20240320-130732.png](../../../__attachments/20545609/image-20240320-130732.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Datensatz in einer neuen Ebene
OptIn vs Consent
Die Entität OptIn wurde damals für das alte Optin-Modul angelegt. Mit der Zeit stellte sich immer mehr heraus, dass die Bezeichnung "OptIn" für die Entität unpassend ist, da man für fachliche OptOuts im CRM Optins mit dem Status Ablehnung anlegen musste. Das hat zu Mißverständnissen geführt.
Daher wurde die Entität “OptIn” in "Consent" umbenannt, sodass in der Oberfläche dieser Begriff zu sehen ist (z.B. Unterbereich).
In Konsequenz wurden die beiden Schlüsselbereiche "OptIn-Herkunft" und "OptIn-Status" in "Consent-Herkunft" und "Consent-Status" umbenannt, damit auch dort die zugehörigen Schlüssel gefunden werden können.
Analog dazu wurde der Name des Opt-In-Moduls auf “Consent Management” angepasst. Die ID blieb naturgemäß unverändert.
Weitere Anpassungen werden nicht vorgenommen.
Anpassung der Angebotspositionslogik
Die Angebotspositionslogik wurde angepasst, sodass nun alle Felder einer bestehenden Angebotsposition geleert werden, wenn der Positionstyp von einer Normalposition auf eine Zwischensumme, Textposition oder einen Seitenumbruch geändert wird.
Gibt es Felder, die auch als Textposition oder Zwischensumme beschreibbar sein sollen, muss die Skriptklasse SC0ItemLogic
übersteuert werden und die jeweiligen Felder zur Bearbeitung "freigeschaltet" werden. Dies ist mithilfe der Methoden addWriteableFieldsTypeZ
(für Zwischensummen), addWriteableFieldsTypeT
(für Textpositionen) oder der generellen Methode getWriteableFields
(für alle Positionstypen) möglich. Zwei Beispiele für Übersteuerungen sind nachfolgend ausgeführt.
Beispiel für Zwischensummen
@MaskScript @Released @Override
private void addWriteableFieldsTypeZ(List<String> fields)
{
String freitext1 = "Freetext1." + SC0ItemLogic.getEntityName();
fields.add(freitext1);
super.addWriteableFieldsTypeZ (fields);
}
Beispiel für alle Positionstypen
@MaskScript @Released @Override
private List<String> getWriteableFields(String itemTypePK)
{
List<String> fields = super.getWriteableFields(itemTypePK);
String freitext2 = "Freetext2." + SC0ItemLogic.getEntityName();
fields.add(freitext2);
return fields;
}
Hinweise auf veraltete Funktionalitäten
-
2024.1
Systemrelevante Informationen für Administratoren
MS SQL-Server Datenbank
Ab CURSOR-CRM Release 24.1 werden im Falle einer MS SQL-Server Datenbank nur noch die Versionen 2022 und 2019 unterstützt.
Das Tool “CURSOR DDAddin” welches für den Firefox vor Version 115 notwendig war, wird für das Drag&Drop von E-Mails aus Outlook auf den Webclient im Firefox ab Version 115 des Firefox nicht mehr benötigt. Die Browser Chrome und Edge haben dieses Tool noch nie benötigt.
Aktualisierung der MSSQL Reindizierungs-Skripte
Die bislang ausgelieferten MS SQL Skripte nutzen die Funktion "DBCC DBREINDEX", um die Indizes und Statistiken für alle Tabellen neu zu erstellen. Diese Funktion ist veraltet und wird in zukünftigen MS SQL Server Versionen entfernt. Hier muss der Befehl "ALTER INDEX ALL ON @tablename REBUILD" genutzt werden.
Im Installationspaket ist das aktuelle Reindizierungs-Skript enthalten und sollte bei Nutzung getauscht werden. Sind MS SQL Server Wartungspläne im Einsatz, sind keine Maßnahmen erforderlich.
Deaktivieren der Neuanlage von V1-Kacheln
Die Neuanlage neuer V1-Kacheln ist mit der Version 24.1 nicht mehr möglich. Es können nur noch V2-Kacheln erstellt werden. Die Bearbeitung bestehender V1-Kacheln ist weiterhin möglich:
Freigabe des Kacheleditors V2 mit 23.3
Ende des Windows Clients nach 25.1
Entfernung der V1-Kacheln mit 26.1
Hinweise auf neue Funktionalitäten
Darstellung von Angebotspositionen im Unterbereich
Im Unterbereich der Angebote wurden in den Angebotspositionen aktuell die Positionswerte nur in der Fremdwährung angezeigt. Zusätzlich zur Fremdwährung werden jetzt im Standard die Angebotspositionswerte in Hauswährung angezeigt.
![](../../../__attachments/20545609/image-20231129-004708.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Angebotspositionen im Unterbereich
Austausch des Hilfe-Links
Mit der Abschaffung der PDF-Dokumentation der Handbücher mit 23.3 verweist nun auch der Link in der CRM-Toolbar (rechts oben) auf die neue Online-Hilfe verweisen:
Klick auf den Menüpunkt führt auf http://help.cursor.de
Taste F1 führt auf http://help.cursor.de
Angebotspositionen werden mit der Genauigkeit der in den Feldern hinterlegten Editiergenauigkeit berechnet
Die Berechnug der Angebotspositionen wird wie folgt angepasst:
Die interne Berechnung erfolgt mit BigDecimal-Werten mit einer Genauigkeit von 11.
Das Schreiben von Werten erfolgt mit der Genauigkeit, die in den Metadaten in der Nachkommastellen (Editieren) hinterlegt wurde.
Im Standard sind diese Werte für die folgenden relevanten Felder so konfiguriert:
Rabatt (Discount.QuoteItem) 4 Stellen
Einzelpreis (Unitprice.QuoteItem) 2 Stellen
Einzelpreis (FW) (UnitpriceFC.QuoteItem) 2 Stellen
Gesamtpreis (Totalprice.QuoteItem) 2 Stellen
Gesamtpreis (FW) (TotalpricFC.QuoteItem) 2 Stellen
Brutto (Gross.QuoteItem) 2 Stellen
Für die Vertragspositionen gilt die Logik analog. Aus diesem Grund wird auch die Editiergenauigkeit im Standard und den Rabattfeldern auf 4 gestellt.
Dieses Vorgehen soll Rundungsfehler in der bisherigen Logik verhindern.
Erweiterung der Logik des Personen-Rollen-Modells um die vor- und nachgestellten Titel
Anpassung und Erweiterung der Namenstitelfelder
Mit dem Release 2024.1 wurden Änderungen an dem Datenmodell in Bezug auf die Titel einer natürlichen Person (z.B. nachgestellte Namenstitel) vorgenommen. Dabei wurden neue Felder aufgenommen, welche z.T. vorher bestehende (nicht-delegierte Felder) ersetzt haben, um eine einheitliche Verhaltensweise und -logik der Titelfelder zu schaffen.
Die Zusammenhänge der Titelfelder auf den Entitäten Person, Geschäftspartner, Ansprechpartner und Mitarbeiter sind in der folgenden Tabelle aufgeführt, die geänderten Felder sind eingefärbt:
Entität: Person | Entität: Ansprechpartner | Entität: Geschäftspartner | Entität: Mitarbeiter | |
---|---|---|---|---|
Sonstige Titel | Grades.Person | Grades.ContactPerson | Grades.Customer (neu!) | Grades.Employee |
Namenssuffix | Suffix.Person (neu!) | Suffix.ContactPerson (ersetzt!) | Suffix.Customer (neu!) | Suffix.Employee |
Namensprädikate | Predicates.Person | Predicates.ContactPerson | Predicates.Customer (neu!) | Predicates.Employee |
Akademischer Titel | AcademicTitle.Person | AcademicTitle.ContactPerson | AcademicTitle.Customer | AcademicTitle.Employee |
Besondere Änderungen hat das Feld "Suffix.ContactPerson" erhalten. Das vorher nicht-delegierte Feld wurde durch ein neues delegiertes Feld ersetzt, damit der Namenssuffix zwischen Ansprechpartnerrollen zukünftig synchronisiert wird.
Aus diesem Grund wurde eine Migration geschaffen, welche die Werte aus bestehenden Rollen übernimmt, wenn es sich um Personen vom Typ Frau (Schlüssel-PK: 'PersonType-F'), Mann (Schlüssel-PK: 'PersonType-M') oder Divers (Schlüssel-PK: 'PersonType-D') handelt. Die Migration erfolgt nach folgender Logik:
Zuerst Übernahme des Wertes aus dem Ansprechpartner
wenn zu einer Person nur ein Ansprechpartner existiert, wird dieser Wert übernommen
wenn zu einer Person mehrere Ansprechpartner existieren, wird der Wert des aktuellsten Ansprechpartners übernommen (nach dem Datum der letzten Änderung)
Wenn kein Wert in dem/in den Ansprechpartner(n) hinterlegt ist, wird geprüft, ob ein Wert im Mitarbeiter vorhanden ist und dieser übernommen
Es erfolgt keine Migration von Werten bei inaktiven Datensätzen.
Es wird empfohlen, die betroffenen Ansprechpartner mit einem Konflikt vor dem Update zu identifizieren und den Namenssuffix zu korrigieren. Mithilfe der folgenden Datenbank-Statements können alle Daten selektiert werden, die einen Suffix enthalten und damit auf Konflikte geprüft werden sollten:
MS SQL
SELECT 'ContactPerson' as source, c.pk as sourcePk, c.suffix, p.pk AS personPk
FROM person p, contactPerson c
WHERE c.personPk = p.pk
AND p.active = 1
AND c.active = 1
AND p.PersonTypeKey IN ('PersonType-F', 'PersonType-M', 'PersonType-D')
AND c.suffix is NOT null
AND c.suffix != ''
union all
SELECT 'Employee' as source, e.pk as sourcePk, e.suffix, p.pk AS personPk
FROM person p, employee e
WHERE e.personPk = p.pk
AND p.active = 1
AND e.active = 1
AND p.PersonTypeKey IN ('PersonType-F', 'PersonType-M', 'PersonType-D')
AND e.suffix is NOT null
AND e.suffix != ''
order by personpk
ORACLE
SELECT 'ContactPerson' as source, c.pk as sourcePk, c.suffix, p.pk AS personPk
FROM person p, contactPerson c
WHERE c.personPk = p.pk
AND p.active = 1
AND c.active = 1
AND p.PersonTypeKey IN ('PersonType-F', 'PersonType-M', 'PersonType-D')
AND c.suffix is NOT null
AND c.suffix != ''
union all
SELECT 'Employee' as source, e.pk as sourcePk, e.suffix, p.pk AS personPk
FROM person p, employee e
WHERE e.personPk = p.pk
AND p.active = 1
AND e.active = 1
AND p.PersonTypeKey IN ('PersonType-F', 'PersonType-M', 'PersonType-D')
AND e.suffix is NOT null
AND e.suffix != ''
order by personpk
Hinweise auf veraltete Funktionalitäten
-
2023.3
Systemrelevante Informationen für Administratoren
OptIn: Erweiterung der Entitätenverknüpfung
Die Relation zwischen den Entitäten ContactPerson
und OptIn
wurde um eine n:m-Relation erweitert. Die 1:n-Relation zwischen Ansprechpartner und OptIn besteht nach der Anpassung weiterhin, jedoch ist diese Relation über die Maskenkonfiguration nun im Standard ausgeblendet. Stattdessen ist die neue n:m-Relation eingeblendet, welche aber auch die 1:n-Relation enthält.
Kunden, welche die Entität OptIn bereits nutzen, sollten die Konfiguration nach dem Update überprüfen und gegebenenfalls anpassen, um das gewünschte Verhalten zu erreichen.
Hinweise auf neue Funktionalitäten
Verhalten von NotificationEntityManager.createOrUpdateNotification und der dazugehörigen Methode in BPM
Die neue Arbeitsweise
Der Eskalations-Timer erzeugt für jede Stufe (Eskalation, Erinnerung und Ablauf) eine eigene Benachrichtigung
Die bisherigen Benachrichtigungen werden nicht mehr gelöscht bzw. überschrieben
Die Datenbanksperre tritt nun nicht mehr auf
Die Methode überschreibt nur noch eine Benachrichtigung, wenn der Primärschlüssel gepflegt ist, nicht mehr nur anhand von den Feldern EntityName und EntityPk. Denn zu einem Ticket kann es mehrere Benachrichtigungen geben.
Zuvor hat diese Methode einen Benachrichtigungs-Datensatz vom Typ ENTITY anhand der Werte EntityName und EntityPk gesucht. Gab es dort mehrere Einträge, wurden diese bis auf einen gelöscht und der letzte verbliebene geändert. Gab es keinen passenden Eintrag, wurde ein neuer Satz angelegt.
Diese Löschung wurde nun entfernt. Diese Verhaltensänderung existiert zwar theoretisch, praktisch führte sie aber zu dieser Endlosschleife und konnte somit nicht korrekt durchgeführt worden sein.
Das neue Update verhält sich nun wie alle anderen BPM-Methoden. Das Update findet anhand des Primärschlüssels statt. Dies hat nun Auswirkungen auf dem Eskalationstimer selbst, da hier evtl. zwei Benachrichtigungen erzeugt werden, einmal zur Erinnerung und einige Zeit (Tage, Wochen) evtl. eine für das Ablaufdatum des Tickets. Diese Verhaltensänderung betrifft alle Kunden, die die Tickets mit dem Timer schon einsetzen. Aber es ist dann evtl. nur einen Eintrag in der Taskliste mehr, den der Anwender wie gewohnt auf erledigt setzen muss.
2023.2
Systemrelevante Informationen für Administratoren
Lese- und Bearbeitungsmodus auf Masken
Durch die Einführung des Lese- und Bearbeitungsmodus sowie der Feldeigenschaft zur Darstellung von Nachschlagefeldern im Web Client und das Entfernen der Leerschlüssel aus der Anwendungsoberfläche ergeben sich unter Umständen Handlungsbedarfe für Systemadministratoren im Rahmen des Updates auf die Version 23.2, die nachfolgend themenspezifisch aufgeführt werden.
Eine fachliche Beschreibung der Änderungen befindet sich in der Release-Dokumentation. Die neue Benutzeroberfläche ist nur im Web Client verfügbar und kann nicht abgeschaltet werden (keine System- oder Benutzereinstellung vorhanden). Nach dem Update werden die Masken automatisch im neuen Lese- und Bearbeitungsmodus dargestellt.
Prüfung von Masken / Maskenskript
Für eine optimierte Benutzererfahrung im Lese- und Bearbeitungsmodus wurden Anpassung an allen C0-Standardmasken vorgenommen. Die Anpassungen beziehen sich hauptsächlich auf
die Anpassung von Spalten, Collapsibles und Tabs für eine bessere Lesbarkeit im Lesemodus
die Einführung einer Maximalbreite von 1500px (2-/3-spaltige Layouts) bzw. 900px (1-spaltiges Layout) für eine Anwenderfokus-Zentrierung
die Optimierung von Abständen (z.B. auf einer Karte) für eine luftigere Darstellung von Inhalten
eine sprechende Benennung von Tabs, Collapsibles etc. zur besseren Verwendbarkeit in Maskenskripten oder Prozessen
Die Standardmasken erscheinen mit einem Update auf die Version 2023.2 automatisch im Layout und können nicht mehr zurückgesetzt werden. Wenn die Masken im alten Layout beibehalten werden sollen, müssen diese vor dem Update durch den Administrator übersteuert werden.
Mit einem Statement kann man eine Übersicht der betreffenden Standardmasken erhalten:
Oracle und MS SQL
SELECT t1.MaskId, t1.EntityName, t1.CustLayer, t2.ConfigGroup FROM
(SELECT MaskId, EntityName, CustLayer FROM Mask WHERE CustLayer IN ('C2', 'C1')) t1
LEFT JOIN
(SELECT ConfigGroup, MaskId, EntityName FROM MaskConfig WHERE MaskId IS NOT null) t2
ON (t1.MaskId = t2.MaskId AND t1.EntityName = t2.EntityName)
Eine Aufstellung der größeren Änderungen pro Maske zur Prüfung von Maskenskripten, Prozessen oder Testfällen ist auf Anfrage erhältlich. Auch eine Überarbeitung von Masken in C1 (EVI/TINA) hat stattgefunden, Informationen dazu befinden sich in den entsprechenden Releasenotes.
Es wird empfohlen, nach dem Update alle Individualmasken mit dem Lese- und Bearbeitungsmodus zu testen. Notwendige Anpassungen können beinhalten:
Anordnung von Spalten / Feldern: Spalten sollten sinnhaft genutzt bzw. Felder nebeneinander nur gezielt eingesetzt werden, ohne Verwirrung zu stiften.
Verwendung von Tabs vs. Collapsibles: Insbesondere im Lesemodus lassen sich Kartenüberschriften mit Tabs besser erkennen. Durch die Annäherung von Labels und Feldern an die Darstellung von Collapsible-Überschriften, nimmt der Anwender die Tabüberschriften einfacher wahr.
Maximalbreiten: Damit sich Komponenten nicht unendlich ausbreiten, empfiehlt sich die Konfiguration von Maximalbreiten.
Ausrichtung von Zahlenfeldern: Zahlenfelder sollten entsprechend dem Kontext sinnhaft ausgerichtet werden, um einheitliche Fluchten zu schaffen und Sprünge in der Maske zu vermeiden.
(siehe hierzu auch Abschnitt "Prüfung der Feldeigenschaften")Beschränkung des vertikalen Vergrößerns von Komponenten: Aufgrund des Ausblendens leerer Felder können sich bei häufiger Nutzung große leere Flächen / Karten ergeben.
Ein- und Ausblenden von Feldlabels: Zu einem Feld zugehörige Labels werden im Lesemodus ein- und ausgeblendet, wenn das Feld leer ist. Erfahrungsgemäß kommt es an einzelnen Stellen vor, dass das Label vor dem Feld tatsächlich nicht dem Feld zugeordnet ist und korrigiert werden muss.
Mehr Details und Empfehlungen für die optimale Konfiguration von Masken für den Lese- und Bearbeitungsmodus sind auf Anfrage erhältlich.
Die Methoden setTabEnabled und setTabVisible deaktivieren Tabs im Windows Client. Im Web Client war es bisher so, dass setTabEnabled das Tab de-/aktiviert (Deaktivierung = ausgegraut und nicht klickbar) hat, während setTabVisible das Tab un-/sichtbar gemacht hat. Im Rahmen der UI/UX-Umsetzungen wurde setTabEnabled im Web Client auf setTabVisible umgestellt, sodass zukünftig setTabEnabled und setTabVisible im Web Client die gleiche Auswirkung haben (un-/sichtbar). Eine Anpassung des Maskenskripts ist aktuell nicht notwendig. Perspektivisch wird mit dem EOL des Windows Clients auch setTabEnabled als Skriptmethode entfernt.
Prüfung der Feldeigenschaften
Nun ist es insbesondere bei der Überarbeitung der Maskendarstellung von Vorteil, dort eine aufgeräumte UI zu präsentieren und die Mehrheit der Nachschlagefelder ohne Schlüssel nur mit Beschreibung anzuzeigen. Hierfür wurde eine Möglichkeit geschaffen, die Darstellung explizit im Webclient anzupassen, ohne die Darstellung und Arbeit in den anderen Clients zu beeinflussen. Da es fachlich nur im Kontext sinnvoll entschieden werden kann, ob die Darstellung eines Schlüssels benötigt wird, ist die Darstellung pro Feld einstellbar. Die vormals dafür zuständige Systemeinstellung wurde entfernt.
Die Feldeigenschaft findet sich in einem Auswahlfeld mit folgenden Optionen:
Nur Beschreibung
Nur Schlüssel
Schlüssel und Beschreibung
Der Default dieser Feldeinstellung für alle Nachschlagefelder ist "Nur Beschreibung". Eine Ausnahme stellen numerische Schlüsselfelder dar: Der Default von Schlüsselfelder mit numerischen Schlüsseln wird auf "Schlüssel und Beschreibung" stehen. Die Feldeigenschaften der Anzeige von Icons sowie der Listendarstellungen bleibt davon unberührt.
Da die neue Feldeigenschaft jegliche vorigen Einstellungen (insb. die ehemalige Systemeinstellung bzw. die Feldeigenschaften "Schlüsselfeld anzeigen" und "Beschreibung anzeigen") überschreibt, ist empfohlen, nach Abschluss des Updates die Anzeige im Web Client zu überprüfen und die Darstellung der Beschreibungen im Einzelfall anzupassen.
Wenn trotz Feldeinstellung "Nur Beschreibung" auch der Schlüssel angezeigt wird, kann es daran liegen, dass die Beschreibung so konfiguriert ist, dass der Schlüssel in der Beschreibung angezeigt wird. Die Beschreibung muss in diesem Fall angepasst werden.
Der häufigste Störfaktor für eine homogene Darstellung von Informationen im Lese- und Bearbeitungsmodus ist die Ausrichtung von Zahlenfeldern. Standardmäßig sind alle Zahlenfelder rechtsbündig eingestellt. Je nach Kontext kann es vorkommen, dass sich ein rechtsbündiges Zahlenfeld im Umfeld von linksbündigen Textfeldern befindet. Im Lesemodus hat es dann den Anschein, als wäre das Zahlenfeld in der Maske "verrutscht". Daher sollten Zahlenfelder nach dem Update überprüft und entsprechend dem Kontext sinnhaft ausgerichtet werden, um einheitliche Fluchten zu schaffen und Sprünge in der Maske zu vermeiden.
Sollen eine größere Anzahl an Zahlenfelder linksbündig umgestellt werden, kann eine Unterstützung auf Anfrage erfolgen und entsprechende Statements zur Verfügung gestellt werden.
Damit die Pflichtfeldeigenschaft zukünftig ihren eigentlichen Sinn erfüllen kann, wurde weiterhin die Feldeigenschaft "Leerschlüssel erlauben" entfernt. Ab der Version 23.2 gibt es somit nur noch die Unterscheidung zwischen Pflichtfeld ja/nein. Handelt es sich um ein Pflichtfeld, muss ein sinnhafter Wert eingetragen werden. Soll weiterhin eine Art Platzhalter für undefinierte Werte verwendet werden, muss dieser als Schlüssel manuell angelegt werden (z.B. "nicht zutreffend" / "keine Aussage möglich" / "undefiniert").
Ist ein Feld (vor der Umstellung) als Pflichtfeld definiert, aber mit einem erlaubten Leerschlüssel, muss dieses Feld zukünftig (nach der Umstellung) bei der nächsten Änderung durch den User nachgepflegt werden. Bei der Bearbeitung eines Datensatzes, bei dem in einem Pflichtfeld ein Leerschlüssel eingetragen war, kommt spätestens beim Speichern der Hinweis auf das noch zu befüllende Pflichtfeld (siehe Fall 2 in untenstehender Aufstellung).
Die Migration der Feldeigenschaften ist wie folgt:
Fall | Alte Werte | Neuer Wert | Erläuterung |
---|---|---|---|
1 | Pflichtfeld = true | Pflichtfeld=true | Keine Änderung zum bisherigen Verhalten. |
2 | Pflichtfeld = true | Pflichtfeld=true | In Pflichtfeldern, in denen der Leerschlüssel bisher erlaubt war und damit die Pflichtfeldeigenschaft damit obsolet gemacht haben, sind zukünftig tatsächliche Pflichtfelder. Die fachliche Richtigkeit sollte hier überprüft werden! |
3 | Pflichtfeld = false | Pflichtfeld=false | Keine Änderung zum bisherigen Verhalten. |
4 | Pflichtfeld = false | Pflichtfeld=true | Felder, in denen tatsächlich kein Leerschlüssel erlaubt war, haben sich de facto wie Pflichtfelder verhalten. Insofern wird hier die Pflichtfeldeigenschaft gesetzt. In den neueren Versionen war diese Kombination bereits über die Oberfläche nicht mehr möglich, da automatisch Pflichtfeld = true gesetzt wurde, sobald Leerschlüssel erlaubt = false war. |
Zur Identifizierung der betreffenden Felder des oben genannten zweiten Falles steht ein Statement zur Verfügung, welches vor dem Update ausgeführt werden muss. Sollen diese Felder zukünftig keine Pflichtfelder sein, muss die Eigenschaft Pflichtfeld = true vor oder nach dem Update auf Pflichtfeld = false geändert werden.
Oracle und MS SQL
SELECT Pk FROM AttributeMetaData
WHERE TableName in (SELECT Pk FROM EntityMetaData)
AND EmptyKeyAllowed = 0 AND LookupField = 1 AND NotNullField = 0
ORDER BY Pk
Anpassung von BPM-Prozessen
Prozesse, welche neue Datensätze anlegen und diese mit einem Prozess-Ende-Ereignis vom Typ "Öffnen" für den Anwender in der Detailansicht öffnen, damit der Anwender noch fehlende Informationen (wie z.B. Pflichtfelder) ergänzen kann, werden grundsätzlich im Lesemodus geöffnet. Die betreffenden Prozesse sollten auf ein Prozess-Ende-Ereignis vom Typ "Neuanlage" umgestellt werden, um eine nahtlose Benutzererfahrung zu gewährleisten.
Anpassungen von Testfällen (Test-Studio)
Datensätze werden in der Detailansicht grundsätzlich im lesenden Modus geöffnet. Hierbei muss zukünftig beachtet werden, dass leere Felder ausgeblendet sind. Insofern können Testfälle, welche auf potentiell leere Felder referenzieren, auf Fehler laufen und müssen angepasst werden. Hierfür gibt es mit der neuen Version des Test-Studios 2.x ein neues Keyword enter edit mode, welches für den Aufruf des Bearbeitungs-Modus verwendet wird.
Beispiel: Ein Test führt eine Suche aus und springt aus der Suchergebnis-Liste in die Detailansicht eines Datensatzes. Möchte man hier verlässlich auf leere Felder prüfen bzw. leere Felder befüllen, muss in den Bearbeitungs-Modus gewechselt werden.
Beispiel: Werden innerhalb eines Tests BPM-Prozesse ausgeführt werden, die mit einem Nachrichten-Ende-Ereignis vom Typ "Öffnen" in der Detailansicht weiterarbeiten, um leere Felder zu prüfen bzw. leere Felder zu befüllen, muss in den Bearbeitungsmodus gewechselt werden.
Weiterhin ist die Einzelbearbeitung aktuell noch nicht zugänglich für das Test-Studio. Jegliche Änderungen am Datensatz müssen im Bearbeitungs-Modus durchgeführt werden.
Hinweise auf betroffene Testfälle geben die Keywords execute search und open [nth] dataset bzw. open {nth] dataset from subdata.
In der Praxis hat sich bewährt, vor einer Detailprüfung der fehlerhaften Testfälle und der Suche nach der expliziten Fehlerursache das Keyword enter edit mode vor der Fehler-Stelle einzufügen. Dies schafft häufig in einem Großteil der betroffenen Testfälle bereits Abhilfe, sodass sich in diesen Testfällen die Detailprüfung und der damit zusammenhängende Aufwand gespart werden kann.
Durch das Ausblenden von leeren Tabs kann es weiterhin in Spezialfällen dazu kommen, dass man innerhalb eines Testfalls nach dem Wechsel in den Bearbeitungs-Modus zusätzlich das betreffende Tab öffnen muss, um dort Inhalte zu prüfen oder zu manipulieren.
Beispiel: In einer Tabgruppe ist das erste Tab im Lesemodus ausgeblendet, da alle Felder auf diesem Tab leer sind. Es ist im Lesemodus lediglich das zweite Tab sichtbar. Nach dem Wechsel in den Bearbeitungsmodus ist weiterhin das vorher sichtbare Tab (zweite) geöffnet. Sollen innerhalb des Testfalls Felder auf dem ersten Tab geprüft oder manipuliert werden, ist ein expliziter Wechsel auf das erste Tab notwendig.
Aufgrund von Änderungen an den Standardmasken sind einzelne Felder nicht mehr auf den ursprünglichen Tabs oder Collapsibles zu finden. Referenzieren Testfälle auf die betroffenen Tabs / Collapsibles / Felder, müssen diese angepasst werden.
Beispiel: Auf der Standard-Aktivitätenmaske wurden die Felder des Kampagnen-Tabs "C0CampaignTab" auf ein eigenes Kampagnen-Collapsible "C0CampaignCollapsible" verschoben, welches in der rechten Spalte immer sichtbar ist. Der Schritt in einem Testfall zum Öffnen des Kampagnen-Tabs, um dort beispielsweise eine Kampagne und Kampagnenphase zu verknüpfen, ist nun nicht mehr anwendbar und muss angepasst werden.
Mit dem Entfernen der Leerschlüssel aus der Anwendungsoberfläche sind unter Umständen weitere Anpassungen an Testfällen im Test-Studio notwendig. Der Wert emptykey ist nun nicht mehr als Parameter für das Überprüfen von Nachschlagefeldern oder Datumsfeldern verfügbar und muss durch einen gültigen Wert ersetzt werden.
Zuletzt kommt es aufgrund der neuen Feldeigenschaft für Nachschlagefelder "Anzeige im Web Client" dazu, dass eine Prüfung auf den Inhalt eines Feldes fehlschlagen kann.
Beispiel: Innerhalb eines Testfalls erfolgt die Feldprüfung >>"ActTypeKey.Activity" should be "ERINNERUNG"<<. Nun steht im Standardfall nach dem Update die Feldeigenschaft zur Anzeige im Web Client in diesem Feld auf "Nur Beschreibung", sodass der Testfall zukünftig auf >>"ActTypeKey.Activity" should be "Erinnerung (kein Abgleich mit Groupware)"<< prüfen muss.
Aktualisierung Datenbank-Treiber und Aktivierung der Verschlüsselung unter MSSQL
Für CURSOR-CRM wurden die Datenbank Treiber auf den aktuellen Stand gebracht. Microsoft hat im Rahmen seiner Cloud-Strategie Änderungen am SQL-Treiber vorgenommen und die Verschlüsselung zur Datenbank im Standard aktiviert. Da OnPremise Installationen üblicherweise auf eine selbstsigniertes Zertifikat setzen, schlägt die Verbindung zur MSSQL Datenbank mit dem Update auf Version 23.2 fehl. Siehe https://github.com/dotnet/SqlClient/blob/main/release-notes/4.0/4.0.0.md#breaking-changes .
Um das Problem zu umgehen, wird die Prüfung des Server-Zertifikates im Standard deaktiviert. Für Cloud-Umgebungen kann Prüfung wieder aktiviert werden.
Dazu muss in der MS SQL Server URL der Parameter "trustServerCertificate=true" ergänzt werden. In Cloud Installationen kann der Parameter deaktiviert werden (;trustServerCertificate=false).
Beispiel:
jdbc:sqlserver://<server>:1433;databaseName=<database>;trustServerCertificate=true
Hinweise auf neue Funktionalitäten
Entität 'Produkte'
Die Produkt-Maske wurde um ein neues Feld erweitert, so dass ein Produktbild hinzugefügt werden kann.
Desktop-Benachrichtigungen anzeigen
Die Option ist nun standardmäßig aktiv. Es stellt eine Änderung der Benutzereinstellungen dar, die jeden betrifft. Jedoch kann sie jederzeit wieder zurück genommen werden. Der Grund ist: viele haben die Benachrichtigungen deaktiviert oder wissen gar nicht, dass es sie gibt. Nun werden sie sichtbar, insbesondere, da sie optisch aufgewertet wurden.
![](../../../__attachments/20545609/image-20230820-202044.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Rich Client-Favoriten (myHelvis)
Im Rich Client gibt es einen Ordner für die Favoriten in der Kopfzeile. Die Favoriten im Web Client sind allerdings unabhängig von den Favoriten im Rich Client.
Nach dem Update werden Favoriten inkl. Unterordner einmalig in den Ordner "Favoriten-Import" im Hauptordner von MyHelVIS angehängt. Ordner und Favoriten heißen identisch zum Favoriten-Menü. Favoriten im Menü sind unverändert und funktionieren ebenfalls.
Vorgangsmanagement: Rückbau des Schreibschutz bei die Vorgangstypen
Es wurden Feldeigenschaften und Patterns geändert, damit der Vorgangstyp auch nach der Neuanlage geändert werden kann.
Mit folgenden Anpassungen ist es nun wieder möglich:
Auf dem Vorgang: Vorgangs-Nr. (TicketNo.Ticket)
Alter Pattern Wert (für Bestandskunden): #PATTERN#[$!!$VALUE--TicketType$!!$-$!!$NUMBER7]
Neuer Pattern Wert: #PATTERN#[$!!$NUMBER7]Auf dem Vorgang: Typ (TicketType.Ticket)
Die Feldeigenschaft "Initial schreiben" ist im Standard wieder deaktiviert
Ausblenden der Anruf-Buttons via MS-Teams
Bisher konnte man die Teams-Integration per Systemeinstellung "aktivieren". Diese führte dazu, dass die Teams-Buttons in Feldern und Toollbars freigeschaltet werden. Es kommt aber vor, dass die Nutzung von Teams nur für interne Anrufe freigegeben ist und die Teams-Buttons im CRM (Anrufen über die E-Mail-Adresse) bei Ansprech- und Geschäftspartnern keine Funktion haben bzw. bei Aufruf zu einer Meldung in Teams führen.
Die Systemeinstellung soll "Externe Anrufe mit MS Teams aktivieren" legt fest, ob die Anruf-Buttons von Teams systemweit ausgeblendet werden.
Dies betrifft folgende Stellen:
Geschäftspartner E-Mail-Feld
Geschäftspartner Toolbar
Ansprechpartner E-Mail-Feld
Ansprechpartner Toolbar
Nachschlagefeld Ansprechpartner (z.B. Aktivität mit)
Die Funktion "Microsoft-Teams Besprechung erstellen" kann weiterhin genutzt werden. Alle Buttons bei Mitarbeitern bleiben bestehen.
Anpassung an den Prozessmasken
Um für den Anwender einen optimalen Workflow in BPM-Prozessen zu ermöglichen, sind Anpassungen an den Prozessmasken-Buttons (insb. "Fortfahren") durchgeführt worden. Der Anwender kann die notwendigen Infomationen im Formular nacheinander ausfüllen und direkt im Anschluss am unteren rechten Rand des jeweiligen Formulars den Prozess fortführen. Voraussetzung hierfür ist, dass die Prozessmaske auf erster Ebene in einer Spalte mit Maximalbreite konfiguriert ist. Ist keine Maximalbreite konfiguriert, wird der Fortfahren-Button am unteren rechten Rand angezeigt der Maske angezeigt. Wird in der Maske die Eigenschaft "vertikal vergrößern" nicht genutzt, kann sich der Fortfahren-Button direkt ans untere Ende des Formular anschließen, auch wenn die Komponente (z.B. Karte) nicht bis ans untere Ende des Fensters reicht.
![](../../../__attachments/20545609/image-20230820-201130.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
BPM-Maske im Card-Layout und Positionierung des Fortfahren-Buttons in BPM-Prozessen
Die Funktionen "Prozess abbrechen" und "Prozess pausieren" sind nun im Schließen des Tabs platziert. Ein Klick auf den Schließen-Button des Tabs führt zu einer Abfrage, ob der Prozess unterbrochen (= Maske schließen, Variablen werden gespeichert, Benachrichtung im Benachrichtigungsmenü erscheint) oder abgebrochen (= Löschen der gesamten Instanz, räumt aber ggf. vorher angelegte Daten nicht auf) werden soll.
Weiterhin wurden nun auch alle BPM-Masken von C0-Prozessen überarbeitet und in das neue Card-Layout überführt. Die neuen BPM Standardmasken werden in nicht übersteuerten C0-Prozessen automatisch veröffentlicht und sind somit in der Anwendung sichtbar.
Wurde ein C0-Prozess übersteuert, aber es wird noch weiterhin die C0-BPM Maske verwendet, muss der Prozess einmal neu veröffentlicht werden, damit die neue C0-BPM-Maske in der Anwendung sichtbar ist.
Fehlermeldung bei einem Berechtigungsproblem in der REST-Schnittstelle
Wird versucht ein schreibgeschütztes Feld per Rest-Schnittstelle zu ändern, kommt es nun zu einer Sicherheits-Fehlermeldung und das Speichern wird abgebrochen. Dies Anpassung ist eine Verhaltensänderung, die bei bestehenden Rest-Schnittstellen-Aufrufen zu einem Fehler führen konnte, wenn Felder nicht beschrieben werden können.
Für CURSOR-BPM wird die Methode WorkSpaceScriptUtils.saveEntry() um den optionalen Parameter errorOnChangedReadonlyFields erweitert, der zur selben Verhaltensänderung wie oben führt.
errorOnChangedNotWriteableFields
true, wenn schreibgeschützte Felder geändert wurden, wird eine ScriptingException geworfen.
false, es werden schreibgeschützt Felder beim Speichern ignoriert. false ist der Standardwert.
Bereichsranking für die COMMAND Suchergebnisse
Das Ranking der unterschiedlichen Bereiche kann über eine Konfigurationseinstellung verändert werden, so dass man einzelne Bereiche höher gewichten kann und damit die Treffer aus diesem Bereich weiter oben angezeigt werden.
![](../../../__attachments/20545609/image-20230820-202146.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Abbildung: Konfiguration der Gewichtung
In der Anwendungsvariable EnhancedIndexSearcher
kann die Gewichtung für Bereiche konfiguriert werden.
Die Gewichtung erfolgt prinzipiell nach folgender Logik:
Wenn kein Eintrag für einen Bereich vorhanden ist der Score 1.0
Alles unter 1.0 wertet den Bereich ab
Alles über 1.0 wertet den Bereich auf
Folgende Scoring-Einstellungen werden ausgeliefert:
Geschäftspartner: 1.5
Ansprechpartner: 1.3
Mitarbeiter: 1.2
Aktivität: 0.25
Dokumente: 0.1
Projekte: 0.25
Vorgang: 0.25
Berücksichtigung des "Callback URL"-Aufbaus mit Port 443
Beim Aufbau der OAuth-Callback-URL wird HTTPS berücksichtigt und somit der 443-Port aus der URL entfernt wird.
Wurden in Drittsystemen URLs mit Bezug auf das CRM hinterlegt, kann es nötig sein, diese anzupassen.
Wurden bislang die Portangaben x8443 genutzt, so ändert sich nichts.
Wurde bislang die Portangabe 443 genutzt, so kann oder muss (abhängig vom Drittsystem) die Portangabe entfallen.
Workflows für automatischen Groupware-Abgleich und E-Mail-Import als Timer
Mit der Version 2023.2 wurden die Workflows für den BCC-Importer durch einen Timer ersetzt. Der Standard Workflow WKF_ImportMailsByBCC wurde automatisch migriert.
![](../../../__attachments/20545609/image-20230820-202209.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Abbildung: Timer "Automatischer Groupware-Abgleich"
Der Timer wird alle 10 Minuten ausgeführt
Im Auslieferungsstandard ist der Timer deaktiviert
Beim Update wird der Timer automatisch aktiviert, wenn beim Kunden eine entsprechende Timer-Aktion konfiguriert war
Für eigene Workflows sind folgende manuelle Schritte notwendig:
Änderung an der Mail-Konfiguration
Der Haken automatisch importieren, muss bei allen Mail-Konfigurationen manuell gesetzt werden, die zuvor über den Workflow importiert wurden.
Anpassung Skriptbibliothek SC0MailMailUtils
Übersteuern der Methode
getMailConfigToUpdateAfterImport
: In der Methode müssen alle Mail-Konfigurationen aufgenommen werden, die für die BCC-Importer-Workflow Logiken
verwendet wurden.Übersteuern der Methode
getValuesToSetAfterImport
: Für jede Mail-Konfigurationen werden hier die Feldvorbelegungen für die Aktivität konfiguriert. Z.B. den Status auf erledigt setzen, die Aktivitätenart ändern...
Anpassen des Timer Zeitraums
Ggf. ist der Zeitraum des Timers "Automatischer Mail-Import von E-Mail-Konfigurationen" anzupassen. Der Default-Wert für den Zeitraum beträgt 10 Minuten.
Automatisch Mails bei Nachrichten erhalten
Anwender können einstellen und entscheiden, ob zusätzlich zu den Nachrichten im CRM-System noch Mail-Benachrichtigungen für Erwähnungen, Delegationen, Mitteilungen oder Veränderungen in beobachteten Datensätzen automatisch versendet werden sollen, um einen korrekten Informationsfluss zu gewährleisten und sicherzustellen, dass keine Informationen verloren gehen.
![](../../../__attachments/20545609/image-20230820-202237.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Benutzereinstellungen für Mail-Benachrichtigungen
![](../../../__attachments/20545609/image-20230820-202303.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Mailvorlage für eine CRM-Benachrichtigung
Hinweise auf veraltete Funktionalitäten
Der Workflow SWKF_calculateIBAN wird im CURSOR-Standard entfernt
Der Workflow SWKF_calculateIBAN wird im CURSOR Standard entfernt. Dieser adressiert einen ganz spezifischen Prozess und wird von neuen Kunden und den meisten Bestandskunden nicht mehr eingesetzt. Der Prozess wird für Neukunden und Bestandskunden gelöscht. Kommt der Prozess bei Bestandskunden als Timer Aktion zum Einsatz, wird der Workflow in die Kundenschicht verschoben und muss später im Projekt als Prozess migriert werden.
Erlauben von "ForRead"-Methoden
Die "ForRead"-Methoden der WorkSpaceScriptUtils wurden für die Nutzung im EventRuleScript freigeschaltet und in der Autovervollständigung aufgenommen.
Die WorkSpaceScriptUtils Methoden, die einen IScriptWorkSpace benötigen, werden aktiv unterbunden, sie werfen dann eine NotSupportedRuntimeException.
Bisher war die Nutzung der Methoden im EventRuleScript nicht erlaubt, sie wurden allerdings nicht explizit geprüft.
Liste "ForRead"-Methoden:
WorkSpaceScriptUtils.searchCount
WorkSpaceScriptUtils.searchForRead
WorkSpaceScriptUtils.searchForReadOrderedBy
WorkSpaceScriptUtils.searchEntryForRead
Einige Methoden, die einen IScriptWorkSpace nutzen (ggf. auch nur intern), die Methoden sind auch nicht unterstützt im EventRuleScript:
WorkSpaceScriptUtils.calculateItem(AttributeContainer)
WorkSpaceScriptUtils.copyEntry(WorkSpace,int,String)
WorkSpaceScriptUtils.createEmptyWorkSpace(String)
WorkSpaceScriptUtils.createEntry(WorkSpace,int,AttributeContainer)
WorkSpaceScriptUtils.search(String)
WorkSpaceScriptUtils.searchDoublets(AttributeContainer, String)
WorkSpaceScriptUtils.deleteEntry(String, String)
WorkSpaceScriptUtils.createDefaultEntry(String)
WorkSpaceScriptUtils.linkEntries(AttributeContainer, String, List<AttributeContainer>)
WorkSpaceScriptUtils.unlinkEntries(AttributeContainer, String, List<AttributeContainer>)
WattIsLos-Kachel
WattIsLos-Kachel wurde aus dem Standard entfernt.
2023.1
Systemrelevante Informationen für Administratoren
Technologie Updates
Mit der Version 2023.1 fand ein umfassendes Update der technischen Basis (Bibiliotheken) von CURSOR-CRM statt.
Folgende Komponenten sind dabei betroffen:
Java 17
JBoss EAP 7.4.x
Groovy 3.x (Maskenskript, BPM, Jasper Reports)
Activiti 7.0 (BPM)
Primefaces (Web Client)
Jasper Reports 7.9
Maskeneditor
Mindestbreite-Eigenschaft wurde entfernt
Folgende Einstellungen wurden angepasst:
Mindestbreite (min-width), Standardbreite (flex-basis) => Breite (flex-basis)
Labels, Buttons und Felder bekommen nur einen Wert für die Breite. Dieser wird in Pixel angegeben und ist standardmäßig weiterhin 120px. Über "Horizontal auffüllen" kann die Breite darüber hinaus erweitert bzw. maximiert werden.
Für bestehende Masken, in welchen der Wert "Mindestbreite" (min-width) gesetzt ist wird dieser beim Laden der Maske in den Editor entfernt.
Die Eigenschaft "Mindestbreite" war nur sichtbar, wenn "Horizontal auffüllen" nicht gesetzt war. Ein Feld wird nicht kleiner als der bei Standardbreite angegebene Wert, der Wert Mindestbreite war für den Fall vorgesehen, dass die Standardbreite in % angegeben wird, was in der Praxis wenig genutzt wurde.
Rahmen wurden entfernt
Die Einstellung "Rahmen anzeigen" bei Spaltencontainern, Spalten, Tabgruppen, Collapsibles, Infoboards, Webviews, Auswertungen wurde entfernt. Der Button behält den Rahmen und soll ausschließlich mit diesem dargestellt werden: ein Button sieht immer aus, wie ein "Button" und nie wie ein Label.
Eine Box kann einen Rahmen erhalten. Wenn beim Maskendesign ein Element mit Rahmen verwendet werden soll, kann dieses in die Box gepackt werden. Button: "Rahmen anzeigen" und "Als Schaltern anzeigen" sind als Default gesetzt und können nicht konfiguriert werden.
Status von Terminen und Besprechungen
Termine, die aus dem CRM nach Outlook exportiert oder aus Outlook ins CRM importiert werden, werden von Outlook entkoppelt. Das Mapping wird aufgelöst.
Die wesentlichen Merkmale des Abgleichs:
Wiedervorlage, Termin und Besprechung werden von der Inhaus nach Outlook immer mit dem default-Wert von Outlook synchronisiert.
Termine aus Outlook unter Vorbehalt, beschäftigt (ohne Teilnehmer), gebucht und frei werden von Outlook nach Inhaus als Termine synchronisiert
Termine aus Outlook, die Teilnehmer haben (Besprechungen, werden von Outlook nach Inhaus als Besprechung synchronisiert.
Wiedervorlagen, die im System sind, werden entsprechend wie Termine behandelt.
Der Schlüssel wird "als nicht mehr auswählbar" im Standard markiert.
Neue Wiedervorlagen werden nicht mehr erzeugt.
Länge für Produktbezeichnung wurde erweitert
Text-Länge für Produktbezeichnung auf Produkten (PrdName.Product) und Angebotstexten (ProdDescName.ProdDesc) wurde von 50 auf 100 Zeichen erweitert.
Datenbankbasierter "Autologin"
Beim bisherigen datenbankbasiertem Autologin wurden Sicherheitsstandards angehoben.
Anmeldung an den REST und SOAP Services via Datenbank-Passwort-Hash wurde entfernt
Die Option, sich an Web-Schnittstellen mit dem Passwort-Hash eines Benutzers anzumelden, wurde entfernt. Die Anmeldung an Web-Schnittstellen (REST, SOAP, weitere interne Schnittstellen) kann nur noch mit dem Klartext-Passwort erfolgen.
Bei Anmeldeproblemen von Schnittstellen nach dem Update ist zu prüfen, ob das Passwort korrekt im Plaintext übergeben wird.
Hashing-Methode für den Datenbank-Login wurde umgestellt
Der Restservice Endpoint rest/api/session/v1/session wurde um den optionalen Parameter sessionTokenOnly erweitert. Dieser bestimmt, ob nur das Token oder ein SessionDTO zurückgeliefert wird.
Rest-Dokumentation:
https://server.domain:port/rest/private/doc/v1/services/session
https://server.domain:port/rest/private/doc/v1/types/de.cursor.rest.api.session.SessionDTO
Beispiel Powershell:
$TokenUrl = "https://server.domain:port/rest/api/session/v1/session?loginType=WEBSERVICE&sessionTokenOnly=true"
$SecurePassword = ConvertTo-SecureString -String "password" -AsPlainText -Force
$Cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList "userName", $SecurePassword
$Token = Invoke-RestMethod -Method GET -Uri $TokenUrl -Credential $Cred
$SecureToken = ConvertTo-SecureString -String $Token -AsPlainText -Force
$TokenCred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $Token, $SecureToken
# Rest calls
...
Invoke-RestMethod -Method DELETE -Uri $TokenUrl -Credential $TokenCred
Umstellung von Beschreibungsfelder für Nachschlagefelder für ausgewählte Lookup-Suchen
Über die Systemeinstellung der Feldeigenschaften kann für Nachschlagefelder die Beschreibung so konfiguriert werden, so dass nur die gewählten Felder in der Beschreibung angezeigt werden. Die Standardschicht (C0) kann dann vom Systembetreiber in der Kundenschicht (C2) übersteuert werden.
![](../../../__attachments/20545609/image-20230820-202335.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Konfiguration des Beschreibungsfeldes
Mit der Version 22.1.07/23.1 haben sich die Beschreibungsfelder für Nachschlagefelder geändert. Hat der Kunde in der C2-Schicht nichts konfiguriert, so werden sich die Beschreibungsfelder gemäß folgendem Schema verändern:
Im Nachschlagefeld angezeigte Entität | Betroffene Lookup-Suchen | Zukünftige Anzeige im Beschreibungsfeld |
---|---|---|
Activity | LookupEntityActivityDBF_Dyn | Betreff |
Address | LookupEntityAddress LookupEntityAddressByLocation LookupEntityContactPersonAddress LookupEntityCustomerAddress | PLZ, Ort, Straße/Postfach, Haus-Nr., Haus-Nr. Zusatz |
AnnualAccounts | LookupEntityAnnualAccounts | Betreff, Mandant |
BankAccount | LookupEntityBankAccount | IBAN, Kontoinhaber |
BankHouse | LookupEntityBankHouse | BIC |
Campaign | LookupEntityCampaign | Kampagnen-Name, ID, Status |
CampContent | LookupEntityCampContent | Name |
CampOutbound | LookupEntityCampOutbound | Outbound-Name |
CampPhase | LookupEntityCampPhase | Phasen-Name, Status |
ContactPerson | LookupEntityContactPerson LookupEntityContactPersonForCustomer LookupEntityContactPersonInOpportunityForCustomer LookupEntityDefaultContactPerson LookupEntitySocialMediaNP | Namenstitel, Vorname / Zusatz 1, Nachname / Firma |
Contract | LookupEntityContract LookupEntityContractCRM | Vertrags-Nr., Produktart |
ContractAccount | LookupEntityContractAccount | Vertragskonto-Nr. |
ContractItem | LookupEntityContractItem | Hauptposition |
Country | LookupEntityCountry LookupEntityCountryNo | Land |
CtiDevice | LookupEntityCtiDevice | Telefon-ID |
CustPackage | LookupEntityCustPackage | Name |
Customer | LookupEntityAdvisersNP LookupEntityCustomer LookupEntityCustomerCompetitor LookupOfficePKCustomer | Zusatz 1, Firma |
District | LookupEntityDistrict | Ortsteil |
DocTemplate | LookupEntityDocTemplate LookupEntityDocTemplateMCM | Beschreibung |
Document | LookupEntityDocument | Betreff |
Doublet | LookupEntityDoublet | Verarbeitungstyp, Personendublette |
Employee | LookupEntityEmployee LookupEntityDOENP | Akademischer Titel, Vorname, Name |
FederalState | LookupEntityFederalState | Bundesland (lang) |
GdprCategory | LookupEntityGdprCategory | Kategoriename |
GdprMain | LookupEntityGdprMain | Beschreibung |
Installation | LookupEntityInstallation LookupEntityInstallationNP | Anlagennummer, Branche |
InterfaceDetail | LookupEntityInterfaceDetail | Status der Schnittstelle |
InterfaceOver | LookupEntityInterfaceOver | Schnittstellenname |
InvocationExt | LookupEntityInvocationExt | Titel |
Location | LookupEntityLocation | Anschlussobjekt-Nr., Straße, Hausnummer, Haus-Nr. Zusatz, PLZ, Land, Ort, Ortsteil |
MailConfig | LookupEntityMailConfig | Kurzname, Groupware-System |
MassInvoice | LookupEntityMassInvoice | Betreff |
MassPrint | LookupEntityMassPrint | Betreff, Mandant |
MeasuringDevice | LookupEntityMeasuringDevice | Zähler-Nr., Produktart |
MonthEnd | LookupEntityMonthEnd | Betreff, Mandant |
Opportunity | LookupEntityOpportunity LookupEntityOpportunityDBF_Dyn | Kurzname, Vorgangsnummer, Geschäftspartner |
Person | LookupEntityPerson | Vorname / Zusatz 1, Nachname / Firma |
Product | LookupEntityProduct LookupEntityProduct_NoMasters LookupEntityProduct_NoSlaves LookupEntityProductHELVIS | Produkt-Nr. , Bezeichnung |
ProdType | LookupEntityProdType | Schlüssel, Quellentität, Zielentität |
Project | LookupEntityProject | Kurzname, Projekt-Nr. |
Quote | LookupEntityQuote | Angebotsnummer, Betreff |
QuoteItem | LookupEntityQuoteItem | Hauptposition |
RightTemplate | LookupEntityRightTemplate LookupEntityRightTemplateDBF_Dyn | Name |
ScriptTestCase | LookupEntityScriptTestCase | Name / Klassenname |
ScriptTestRun | LookupEntityScriptTestRun | Typ, Status, Gesamtlaufzeit (ms) |
SocialMedia | LookupEntitySocialMediaNP | Beschreibung |
Street | LookupEntityStreet | Straße |
Supply | LookupEntitySupply | Anschluss-Nr., Anschlusstyp, Produktart |
Ticket | LookupEntityTicket | Betreff, Typ |
Unit | LookupEntityUnit | Name, Nummer, Systembetreiber |
Workflow | LookupEntityWorkFlow | Vorgangsnummer |
ZipCode | LookupEntityZipCode | PLZ |
Um zu überprüfen, welche Felder in Systemen potenziell betroffen sind, kann folgendes DB-Statement abgesetzt werden, welche alle Felder auflistet, in denen die betroffen Lookup-Suchen verwendet werden:
Oracle
select RowPk from amdVarchar where fieldname = 'LookupEntityQueryPk' AND c0 IN ('LookupEntityActivityDBF_Dyn', 'LookupEntityAddress‘, 'LookupEntityAddressByLocation‘,'LookupEntityContactPersonAddress', 'LookupEntityCustomerAddress', 'LookupEntityAnnualAccounts', 'LookupEntityBankAccount', 'LookupEntityBankHouse', 'LookupEntityCampaign', 'LookupEntityCampContent', 'LookupEntityCampOutbound', 'LookupEntityCampPhase', 'LookupEntityContactPerson', 'LookupEntityContactPersonForCustomer', 'LookupEntityContactPersonInOpportunityForCustomer', 'LookupEntityDefaultContactPerson', 'LookupEntitySocialMediaNP','LookupEntityContract','LookupEntityContractCRM','LookupEntityContractAccount','LookupEntityContractItem','LookupEntityCountry','LookupEntityCountryNo','LookupEntityCtiDevice','LookupEntityCustPackage','LookupEntityAdvisersNP','LookupEntityCustomer','LookupEntityCustomerCompetitor','LookupOfficePKCustomer','LookupEntityDistrict','LookupEntityDocTemplate','LookupEntityDocTemplateMCM','LookupEntityDocument','LookupEntityDoublet','LookupEntityEmployee','LookupEntityDOENP','LookupEntityFederalState','LookupEntityGdprCategory','LookupEntityGdprMain','LookupEntityInstallation','LookupEntityInstallationNP','LookupEntityInterfaceDetail','LookupEntityInterfaceOver','LookupEntityInvocationExt','LookupEntityLocation' ,'LookupEntityMailConfig','LookupEntityMassInvoice','LookupEntityMassPrint','LookupEntityMeasuringDevice','LookupEntityMonthEnd','LookupEntityOpportunity','LookupEntityOpportunityDBF_Dyn','LookupEntityPerson','LookupEntityProduct','LookupEntityProduct_NoMasters','LookupEntityProduct_NoSlaves','LookupEntityProductHELVIS','LookupEntityProdType','LookupEntityProject','LookupEntityQuote','LookupEntityQuoteItem','LookupEntityRightTemplate','LookupEntityRightTemplateDBF_Dyn','LookupEntityScriptTestCase','LookupEntityScriptTestRun','LookupEntitySocialMediaNP','LookupEntityStreet','LookupEntitySupply','LookupEntityTicket','LookupEntityUnit','LookupEntityWorkFlow','LookupEntityZipCode')
Hat der Kunde in der C2-Schicht nichts konfiguriert, so ändern sich die angezeigten Beschreibungsfelder nach obiger Tabelle. Hat der Kunde auf den betroffenen Feldern C2-Werte hinterlegt, so greifen die C0-Änderungen nicht. Um sie sichtbar zu machen, kann das folgende Statement abgesetzt werden, um die C2 Änderungen zurückzusetzen:
UPDATE amdvarchar set C2 = null where fieldname = 'LookupDescriptionFields' AND RowPK IN
(
'AddressCustomerKey.Address',
'AddressKey.Address',
'AnnualAccountPk.MonthEnd',
'AppropriatePM.Request',
'AutoImportUser.MailConfig',
'BICKey.BankAccount',
'Campaign.Activity',
'Campaign.CampBudgetPos',
'Campaign.CampInbound',
'Campaign.CampOutbound',
'Campaign.CampPhase',
'Campaign.ContactPerson',
'Campaign.Customer',
'Campaign.Opportunity',
'Campaign.PriceCalc',
'Campaign.Project',
'Campaign.Quote',
'CampaignPhase.CampInbound',
'CampaignPhase.CampOutbound',
'CampPhase.Activity',
'CampPhase.ContactPerson',
'CampPhase.Customer',
'CampPhase.Opportunity',
'CampPhase.PriceCalc',
'CampPhase.Project',
'CampPhase.Quote',
'CityPart.Street',
'ClientPk.AnnualAccounts',
'ClientPk.MassInvoice',
'ClientPk.MassPrint',
'ClientPk.MonthEnd',
'CompetitorKey.Opportunity',
'ComposedAddressKey.ContactPerson',
'ComposedAddressKey.Customer',
'Concern.Customer',
'ContactPerson.CampInbound',
'ContactPersonCustomerKey.Advisers',
'ContactPersonKey.Advisers',
'ContactPersonKey.SocialMedia',
'ContactPersonPk.Contract',
'ContactPersonPk.ContractAccount',
'ContactPersonPk.Installation',
'ContactPersonPk.InstalledProd',
'ContactPersonPk.LastContact',
'ContactPersonPK.Quote',
'Content.CampOutbound',
'ContractAccountPk.Contract',
'ContractAccPK.BillingContract',
'ContractPk.BillingContract',
'ContractPk.BillingDataYear',
'ContractPk.ContractItem',
'ContractPk.ContractParam',
'ContractPk.SwitchNum',
'ContractPk.TimeSlicingIs',
'CoordinatorKey.Project',
'CoPeKey.OptIn',
'CoPeKey.Ticket',
'CoPeKey.TicketRequest',
'CoPeMasterRolePk.DoubletRole',
'CoPeOrderAcknow.Opportunity',
'CoPeSlaveRolePk.DoubletRole',
'CorpBubaKey.Customer',
'CorpBubaKey.Person',
'CorpHelabaKey.Customer',
'CorpHelabaKey.Person',
'Country.TapiLocation',
'CountryKey.Address',
'CountryKey.ContactPerson',
'CountryKey.Customer',
'CountryKey.District',
'CountryKey.FederalState',
'CountryKey.Installation',
'CountryKey.Location',
'CountryKey.Person',
'CountryKey.Street',
'CountryKey.Supply',
'CountryKey.ZipCode',
'CountryKeyPrivate.ContactPerson',
'CuMasterRolePk.DoubletRole',
'CuSlaveRolePk.DoubletRole',
'CustNoInvoice.Contract',
'CustNoInvoicePk.ContractAccount',
'CustomerKey.ContactPerson',
'CustomerKey.SocialMedia',
'CustomerKey.Ticket',
'CustomerPk.AlterCuNo',
'CustomerPk.BillingDataYear',
'CustomerPk.ContactImport',
'CustomerPk.Contract',
'CustomerPk.ContractAccount',
'CustomerPk.CustomerValue',
'CustomerPk.CustomGenerate',
'CustomerPk.EnergyConsumer',
'CustomerPk.Installation',
'CustomerPk.LastContact',
'CustomerPk.MassInvoice',
'CustomerPk.MassPrint',
'CustomerPk.SwitchNum',
'CustomerPKGridOperator.Contract',
'CustomerPkLostTo.Contract',
'CustomerPkManufacturerKey.EnergyConsumer',
'CustomerPkTechnicalFirmKey.EnergyConsumer',
'CustomerPkWonFrom.Contract',
'DefaultContactPerson.Activity',
'DefaultContactPersonCustomerKey.Activity',
'DefaultContract.Activity',
'DefaultContractAccount.Activity',
'DefaultCoPeKey.Customer',
'DefaultCustomer.Opportunity',
'DefaultCustomer.Project',
'DefaultCustomer.Quote',
'DefaultInstallation.Activity',
'DefaultInstallation.Contract',
'DefaultLocation.Activity',
'DefaultLocation.Supply',
'DefaultMeasuringDevice.Activity',
'DefaultOpportunity.Activity',
'DefaultQuote.Activity',
'DefaultSupply.Activity',
'DelegatedBy.Activity',
'DelegatedFrom.Ticket',
'DelegatedTo.Activity',
'DelegatedTo.ComplaintRule',
'DelegatedTo.Ticket',
'DelegatedTo.TicketRequest',
'DelegatedTo.WorkFlow',
'DeputyAgentId.ProcessInstance',
'DeputyKey.Opportunity',
'DeputyPk.AnalysisQueue',
'DetailedReport.ScriptTestCase',
'DetailedReport.ScriptTestRun',
'DetailedReport.ScriptTestStep',
'DeviceId.CtiCall',
'District.Address',
'District.Customer',
'District.Installation',
'District.Location',
'District.Person',
'DocTemplateKey.CampOutbound',
'DocumentKey.OptIn',
'DocumentPk.DocArchiveMap',
'DoubletOf.ContactPerson',
'DoubletOf.Customer',
'DoubletOf.Employee',
'DoubletPk.DoubletRole',
'EmMasterRolePk.DoubletRole',
'EmployeeKey.EmployeeLog',
'EmployeeKey.SchedEmList',
'EmployeeKey.TimerConfiguration',
'EmployeeOffice.Customer',
'EmployeeOffice.Installation',
'EmployeeOffice.Location',
'EmployeePK.Advisers',
'EmployeePk.AnalysisQueue',
'EmployeePk.ChangeHistory',
'EmployeePk.Credential',
'EmployeePk.CtiCall',
'EmployeePk.EventBuffer',
'EmployeePk.Installation',
'EmployeePk.Maintenance',
'EmployeeSales.Customer',
'EmployeeTechnics.Installation',
'EmployeeTechnics.Location',
'EmSlaveRolePk.DoubletRole',
'ExecutiveUser.DeletionRule',
'FaxNoCountry.ContactPerson',
'FaxNoCountry.Customer',
'FaxNoCountry.Employee',
'FaxNoCountry.Person',
'FaxNoCountry.Telecom',
'FollowingPhase.CampPhase',
'FunctionalContact.CustPackage',
'GdprCatKey.Activity',
'GdprCatKey.Address',
'GdprCatKey.ContactPerson',
'GdprCatKey.Customer',
'GdprCatKey.Document',
'GdprCatKey.Employee',
'GdprCatKey.GdprInstance',
'GdprCatKey.Person',
'GdprCatKey.Telecom',
'GdprMainKey.ContactPerson',
'GdprMainKey.Customer',
'GdprMainKey.Employee',
'GdprMainKey.GdprCategory',
'GdprMainKey.Person',
'HasDocuments.Activity',
'HasQuote.Opportunity',
'IncidentKey.TicketRequest',
'Installation.MeasuringDevice',
'InstallationPk.BillingDataYear',
'InstallationPk.CustomGenerate',
'InstallationPk.EnergyConsumer',
'InstallationPk.InstDetailBT',
'InstallationPk.InstDetailPV',
'InstallationPk.InstDetailSt',
'InstallationPk.InstDetailWB',
'InstallationPk.Product',
'InstallationPk.Quote',
'InstallationPk.QuoteItem',
'InstallationPk.SwitchNum',
'InstallationPk.TimeSlicingIs',
'InterfOverKey.InterfaceDetail',
'InverterKey.InstDetailPV',
'InvExtPk.SocialMedia',
'KeyAccountManager.Customer',
'KtoIDAusgang.ContractAccount',
'KtoIDEingang.ContractAccount',
'LastIntDetKey.InterfaceOver',
'Location.Activity',
'LocationPk.CustomGenerate',
'LocationPk.Installation',
'LocationPk.MeasuringDevice',
'MailConfigKey.Employee',
'MainItemKey.ContractItem',
'MainItemKey.QuoteItem',
'MainUnit.Employee',
'MAKredit.OpportunityItem',
'ManufacturerKey.Product',
'MassPrintPk.Quote',
'MasterPePk.Doublet',
'MobilePhoneCountry.ContactPerson',
'MobilePhoneCountry.Customer',
'MobilePhoneCountry.Employee',
'MobilePhoneCountry.Person',
'MobilePhoneCountry.Telecom',
'MonthEndPk.MassInvoice',
'MonthEndPk.MassPrint',
'NewCustomerPk.DoubletRole',
'OfficeEmplKey.Contract',
'OfficePKKey.Employee',
'OfficePKKey.News',
'OperatorKey.Installation',
'OpportunityPk.Quote',
'Outbound.Activity',
'Outbound.CampBudgetPos',
'Outbound.CampInbound',
'OwnerKey.Location',
'Pate.Request',
'PeCountryKey.Customer',
'PeDistrict.Customer',
'PeStateAddress.Customer',
'PeStreet.Customer',
'PeZIP.Customer',
'Phase.CampBudgetPos',
'PhoneNoCountry.ContactPerson',
'PhoneNoCountry.Customer',
'PhoneNoCountry.Employee',
'PhoneNoCountry.Person',
'PhoneNoCountry.Telecom',
'PrecedingPhase.CampPhase',
'ProductKey.ContractItem',
'ProductKey.InstDetailBT',
'ProductKey.InstDetailPV',
'ProductKey.InstDetailSt',
'ProductKey.InstDetailWB',
'ProductKey.ItemsList',
'ProductKey.OpportunityItem',
'ProductKey.Potential',
'ProductKey.QuoteItem',
'ProductKey.UsedProducts',
'ProductPk.InstalledProd',
'ProjectmanagerKey.Opportunity',
'QuotePK.QuoteItem',
'REC_COUNTRY.Sepa',
'ReleasedUser.CustPackage',
'RequestedFor.OptIn',
'Requisitioner.Request',
'Responsible.Campaign',
'Responsible.CampPhase',
'Ressource.HumanRes',
'RightTemplate.Employee',
'SalesEmplKey.Contract',
'Screenshot.ScriptTestStep',
'Secretary.ContactPerson',
'Secretary.Employee',
'SelfConfig.RightTemplate',
'SenderMailConfig.DocTemplate',
'Senior.ContactPerson',
'Senior.Employee',
'Signatory1EmplKey.Quote',
'Signatory2EmplKey.Quote',
'SlavePePk.Doublet',
'SlaveProductKey.ItemsList',
'SND_COUNTRY.Sepa',
'SocialMediaList.ContactPerson',
'SourceUnit.Unit',
'StartUser.ProcessInstance',
'State.Address',
'State.Location',
'State.ZipCode',
'StateAddress.ContactPerson',
'StateAddress.Customer',
'StateAddress.Person',
'StateAdrPrivate.ContactPerson',
'Street.Address',
'Street.ContactPerson',
'Street.Customer',
'Street.Installation',
'Street.Location',
'Street.Person',
'Street.Supply',
'StreetPrivate.ContactPerson',
'Substitue.ContactPerson',
'Substitue.Employee',
'SupplierKey.Product',
'SupplyPk.CustomGenerate',
'SupplyPk.EnergyConsumer',
'SupplyPk.Installation',
'SupplyPk.MeasuringDevice',
'SystemOwnerPk.Unit',
'TechnicalContact.CustPackage',
'TestCaseKey.ScriptTestStep',
'TestRun.ScriptTestCase',
'UserId.ProcessInstance',
'UserTemplate.DocTemplate',
'WebGroupwareKey.Employee',
'WFInstanceId.AccountExternal',
'WFInstanceId.AccountInternal',
'WFInstanceId.ActionRight',
'WFInstanceId.Activity',
'WFInstanceId.ActivityDel',
'WFInstanceId.Address',
'WFInstanceId.Advisers',
'WFInstanceId.AlterCuNo',
'WFInstanceId.AnalysisConfig',
'WFInstanceId.AnalysisQueue',
'WFInstanceId.AnnualAccounts',
'WFInstanceId.AttributeMetaData',
'WFInstanceId.Authorities',
'WFInstanceId.BankAccount',
'WFInstanceId.BankData',
'WFInstanceId.BankHouse',
'WFInstanceId.BgiEntity',
'WFInstanceId.BillingContract',
'WFInstanceId.BillingDataYear',
'WFInstanceId.BitRight',
'WFInstanceId.BoardDefinition',
'WFInstanceId.Campaign',
'WFInstanceId.CampBudgetPos',
'WFInstanceId.CampContent',
'WFInstanceId.CampDistrList',
'WFInstanceId.CampInbound',
'WFInstanceId.CampOutbound',
'WFInstanceId.CampPhase',
'WFInstanceId.ChangeHistory',
'WFInstanceId.ComplaintRule',
'WFInstanceId.ComplexSearch',
'WFInstanceId.ContactChanges',
'WFInstanceId.ContactImport',
'WFInstanceId.ContactMapping',
'WFInstanceId.ContactPerson',
'WFInstanceId.ContactTemplate',
'WFInstanceId.Contract',
'WFInstanceId.ContractAccount',
'WFInstanceId.ContractItem',
'WFInstanceId.ContractParam',
'WFInstanceId.CopyDocuments',
'WFInstanceId.Country',
'WFInstanceId.Credential',
'WFInstanceId.CtiCall',
'WFInstanceId.CtiDevice',
'WFInstanceId.CtiServer',
'WFInstanceId.Cust',
'WFInstanceId.CustDependency',
'WFInstanceId.CustGuidance',
'WFInstanceId.CustHistory',
'WFInstanceId.CustImport',
'WFInstanceId.Customer',
'WFInstanceId.CustomerValue',
'WFInstanceId.CustomGenerate',
'WFInstanceId.CustPackage',
'WFInstanceId.CustRepository',
'WFInstanceId.CustRollback',
'WFInstanceId.DataTransition',
'WFInstanceId.DefaultSetter',
'WFInstanceId.DelegationAttribute',
'WFInstanceId.DeletionRule',
'WFInstanceId.Depots',
'WFInstanceId.District',
'WFInstanceId.DocArchiveMap',
'WFInstanceId.DocAssignment',
'WFInstanceId.DocBarcodeMap',
'WFInstanceId.DocMapping',
'WFInstanceId.DocObject',
'WFInstanceId.DocTemplate',
'WFInstanceId.Document',
'WFInstanceId.Doublet',
'WFInstanceId.DoubletRole',
'WFInstanceId.Employee',
'WFInstanceId.EmployeeLog',
'WFInstanceId.EnergyConsumer',
'WFInstanceId.EntityMetaData',
'WFInstanceId.EventArchive',
'WFInstanceId.EventBuffer',
'WFInstanceId.ExpFormat',
'WFInstanceId.ExpSearches',
'WFInstanceId.ExtendedSearch',
'WFInstanceId.ExtendedSearchMetaData',
'WFInstanceId.Features',
'WFInstanceId.FederalState',
'WFInstanceId.Freefield',
'WFInstanceId.FreefieldDef',
'WFInstanceId.GdprCategory',
'WFInstanceId.GdprInstance',
'WFInstanceId.GdprInterface',
'WFInstanceId.GdprMain',
'WFInstanceId.GeoAttrCond',
'WFInstanceId.GeoCoAttVal',
'WFInstanceId.GeoI18n',
'WFInstanceId.GeoMetadata',
'WFInstanceId.GlobalVariables',
'WFInstanceId.Groups',
'WFInstanceId.GroupsAttributeMetaData',
'WFInstanceId.HISTORICDOC',
'WFInstanceId.HumanRes',
'WFInstanceId.Images',
'WFInstanceId.InfoboardConfig',
'WFInstanceId.Installation',
'WFInstanceId.InstalledProd',
'WFInstanceId.InstDetailBT',
'WFInstanceId.InstDetailPV',
'WFInstanceId.InstDetailSt',
'WFInstanceId.InstDetailWB',
'WFInstanceId.InterfaceDetail',
'WFInstanceId.InterfaceOver',
'WFInstanceId.InvocationExt',
'WFInstanceId.ItemsList',
'WFInstanceId.JasperReports',
'WFInstanceId.JasperSubreports',
'WFInstanceId.KeyMappings',
'WFInstanceId.KeyRange',
'WFInstanceId.KeytabNum',
'WFInstanceId.LastContact',
'WFInstanceId.LinkMetaData',
'WFInstanceId.Location',
'WFInstanceId.LockEntity',
'WFInstanceId.MailConfig',
'WFInstanceId.Maintenance',
'WFInstanceId.Mask',
'WFInstanceId.MaskConfig',
'WFInstanceId.MaskScript',
'WFInstanceId.MaskScriptHist',
'WFInstanceId.MassDataLog',
'WFInstanceId.MassDataTask',
'WFInstanceId.MassInvoice',
'WFInstanceId.MassPrint',
'WFInstanceId.MeasuringDevice',
'WFInstanceId.ModAssign',
'WFInstanceId.ModRollback',
'WFInstanceId.Module',
'WFInstanceId.ModuleMetaData',
'WFInstanceId.MonthEnd',
'WFInstanceId.News',
'WFInstanceId.Note',
'WFInstanceId.Notification',
'WFInstanceId.OAuthClient',
'WFInstanceId.OAuthClientRedirectUri',
'WFInstanceId.OAuthToken',
'WFInstanceId.Opportunity',
'WFInstanceId.OpportunityItem',
'WFInstanceId.OptIn',
'WFInstanceId.Person',
'WFInstanceId.PersonType',
'WFInstanceId.Potential',
'WFInstanceId.PriceCalc',
'WFInstanceId.ProcessCleanJob',
'WFInstanceId.ProcessContainer',
'WFInstanceId.ProcessDataLink',
'WFInstanceId.ProcessErrorLog',
'WFInstanceId.ProcessInstance',
'WFInstanceId.ProcessLog',
'WFInstanceId.ProcessMask',
'WFInstanceId.ProcessModel',
'WFInstanceId.ProcessRule',
'WFInstanceId.ProcessSearch',
'WFInstanceId.ProcessWaitStat',
'WFInstanceId.ProdDesc',
'WFInstanceId.ProdType',
'WFInstanceId.Product',
'WFInstanceId.ProductGroups',
'WFInstanceId.ProfileData',
'WFInstanceId.ProfileNote',
'WFInstanceId.Project',
'WFInstanceId.PropertyConfig',
'WFInstanceId.PropertyMapper',
'WFInstanceId.Quip',
'WFInstanceId.Quote',
'WFInstanceId.QuoteItem',
'WFInstanceId.rAcAc',
'WFInstanceId.rAcCtiCa',
'WFInstanceId.rAcDo',
'WFInstanceId.rAcFf',
'WFInstanceId.rAcPrd',
'WFInstanceId.rAdNo',
'WFInstanceId.rAnAccAc',
'WFInstanceId.rAnAccDo',
'WFInstanceId.rCaAc',
'WFInstanceId.rCaBuPoAc',
'WFInstanceId.rCaBuPoDo',
'WFInstanceId.rCaCaDiLi',
'WFInstanceId.rCaDiLiAc',
'WFInstanceId.rCaDiLiCaPh',
'WFInstanceId.rCaDiLiCoPe',
'WFInstanceId.rCaDiLiEm',
'WFInstanceId.rCaDo',
'WFInstanceId.rCaNo',
'WFInstanceId.rCaOutAc',
'WFInstanceId.rCaOutDo',
'WFInstanceId.rCaPhAc',
'WFInstanceId.rCaPhCaPh',
'WFInstanceId.rCaPhDo',
'WFInstanceId.rCaPhNo',
'WFInstanceId.rCnAc',
'WFInstanceId.rCnAcAc',
'WFInstanceId.rCnAcAd',
'WFInstanceId.rCnAcBaDa',
'WFInstanceId.rCnAcCn',
'WFInstanceId.rCnAcDo',
'WFInstanceId.rCnAcNo',
'WFInstanceId.rCnAd',
'WFInstanceId.rCnBaDa',
'WFInstanceId.rCnCn',
'WFInstanceId.rCnCoPe',
'WFInstanceId.rCnCuGe',
'WFInstanceId.rCnDo',
'WFInstanceId.rCnFf',
'WFInstanceId.rCnIs',
'WFInstanceId.rCnMeDe',
'WFInstanceId.rCnNo',
'WFInstanceId.rCnOp',
'WFInstanceId.rCnPj',
'WFInstanceId.rCnPrCa',
'WFInstanceId.rCnQu',
'WFInstanceId.rCoPeAc',
'WFInstanceId.rCoPeAd',
'WFInstanceId.rCoPeAuth',
'WFInstanceId.rCoPeCa',
'WFInstanceId.rCoPeCaOut',
'WFInstanceId.rCoPeCaPh',
'WFInstanceId.rCoPeCoPe',
'WFInstanceId.rCoPeCtiCa',
'WFInstanceId.rCoPeDo',
'WFInstanceId.rCoPeEm',
'WFInstanceId.rCoPeFea',
'WFInstanceId.rCoPeFf',
'WFInstanceId.rCoPeNo',
'WFInstanceId.rCoPeQu',
'WFInstanceId.rCoPeSo',
'WFInstanceId.rCuAc',
'WFInstanceId.rCuAccExt',
'WFInstanceId.rCuAccInt',
'WFInstanceId.rCuAd',
'WFInstanceId.rCuAdv',
'WFInstanceId.rCuBaAc',
'WFInstanceId.rCuBaDa',
'WFInstanceId.rCuCa',
'WFInstanceId.rCuCaOut',
'WFInstanceId.rCuCaPh',
'WFInstanceId.rCuCn',
'WFInstanceId.rCuCtiCa',
'WFInstanceId.rCuCu',
'WFInstanceId.rCuDep',
'WFInstanceId.rCuDo',
'WFInstanceId.rCuFea',
'WFInstanceId.rCuFf',
'WFInstanceId.rCuGeAc',
'WFInstanceId.rCuGeDo',
'WFInstanceId.rCuGeFf',
'WFInstanceId.rCuGeNo',
'WFInstanceId.rCuInPr',
'WFInstanceId.rCuIs',
'WFInstanceId.rCuMeDe',
'WFInstanceId.rCuNo',
'WFInstanceId.rCuOp',
'WFInstanceId.rCuPj',
'WFInstanceId.rCuPo',
'WFInstanceId.rCuQu',
'WFInstanceId.rCusPaCus',
'WFInstanceId.rCuUPrd',
'WFInstanceId.rDoBaDa',
'WFInstanceId.rDoDo',
'WFInstanceId.rDoInDe',
'WFInstanceId.rDoInOv',
'WFInstanceId.rDoPrCa',
'WFInstanceId.rEmAc',
'WFInstanceId.rEmAd',
'WFInstanceId.rEmCtiCa',
'WFInstanceId.rEmCtiDe',
'WFInstanceId.rEmDo',
'WFInstanceId.rEmEm',
'WFInstanceId.rEmFea',
'WFInstanceId.rEmFf',
'WFInstanceId.rEmMod',
'WFInstanceId.rEmNc',
'WFInstanceId.rEmNo',
'WFInstanceId.rEmPj',
'WFInstanceId.rEmTaLo',
'WFInstanceId.rEmUn',
'WFInstanceId.rEnCoAc',
'WFInstanceId.rEnCoDo',
'WFInstanceId.rEnCoNo',
'WFInstanceId.Request',
'WFInstanceId.rGdMaDo',
'WFInstanceId.rGeCoAtVaGeInter',
'WFInstanceId.rGeMeDaGeInter',
'WFInstanceId.rGrEm',
'WFInstanceId.rGrNc',
'WFInstanceId.RightTemplate',
'WFInstanceId.rIsAc',
'WFInstanceId.rIsBaDa',
'WFInstanceId.rIsBtAc',
'WFInstanceId.rIsBtDo',
'WFInstanceId.rIsDo',
'WFInstanceId.rIsFf',
'WFInstanceId.rIsIs',
'WFInstanceId.rIsMeDe',
'WFInstanceId.rIsNo',
'WFInstanceId.rIsOp',
'WFInstanceId.rIsPj',
'WFInstanceId.rIsPvAc',
'WFInstanceId.rIsPvDo',
'WFInstanceId.rIsQu',
'WFInstanceId.rIsStAc',
'WFInstanceId.rIsStDo',
'WFInstanceId.rIsWbAc',
'WFInstanceId.rIsWbDo',
'WFInstanceId.rItLiPd',
'WFInstanceId.rLoAc',
'WFInstanceId.rLoCn',
'WFInstanceId.rLoCu',
'WFInstanceId.rLoDo',
'WFInstanceId.rLoFf',
'WFInstanceId.rLoNo',
'WFInstanceId.rLoOp',
'WFInstanceId.rLoQu',
'WFInstanceId.rLoSup',
'WFInstanceId.rMaInAc',
'WFInstanceId.rMaInDo',
'WFInstanceId.rMaInQu',
'WFInstanceId.rMaPrAc',
'WFInstanceId.rMaPrDo',
'WFInstanceId.rMeDeAc',
'WFInstanceId.rMeDeDo',
'WFInstanceId.rMeDeFf',
'WFInstanceId.rMeDeNo',
'WFInstanceId.rMoEnAc',
'WFInstanceId.rMoEnDo',
'WFInstanceId.rNewsEm',
'WFInstanceId.rOpAc',
'WFInstanceId.rOpCoPe',
'WFInstanceId.rOpDo',
'WFInstanceId.rOpFea',
'WFInstanceId.rOpFf',
'WFInstanceId.rOpNo',
'WFInstanceId.rOpOi',
'WFInstanceId.rOpPj',
'WFInstanceId.rPeAc',
'WFInstanceId.rPeAccExt',
'WFInstanceId.rPeAccInt',
'WFInstanceId.rPeAdv',
'WFInstanceId.rPeCoPe',
'WFInstanceId.rPeDep',
'WFInstanceId.rPeDo',
'WFInstanceId.rPeFf',
'WFInstanceId.rPeNo',
'WFInstanceId.rPeOp',
'WFInstanceId.rPePe',
'WFInstanceId.rPePrDa',
'WFInstanceId.rPjAc',
'WFInstanceId.rPjCoPe',
'WFInstanceId.rPjCuGe',
'WFInstanceId.rPjDo',
'WFInstanceId.rPjEnCo',
'WFInstanceId.rPjFf',
'WFInstanceId.rPjLo',
'WFInstanceId.rPjNo',
'WFInstanceId.rPjPe',
'WFInstanceId.rPjPj',
'WFInstanceId.rPjQu',
'WFInstanceId.rPrDaPrNo',
'WFInstanceId.rPrdCu',
'WFInstanceId.rPrdDo',
'WFInstanceId.rPrdFea',
'WFInstanceId.rPrdFf',
'WFInstanceId.rPrdNo',
'WFInstanceId.rPrdPd',
'WFInstanceId.rQuAc',
'WFInstanceId.rQuDo',
'WFInstanceId.rQuFf',
'WFInstanceId.rQuNo',
'WFInstanceId.rQuPrCa',
'WFInstanceId.rQuQu',
'WFInstanceId.rReQuAc',
'WFInstanceId.rReQuCoPe',
'WFInstanceId.rReQuCu',
'WFInstanceId.rReQuDo',
'WFInstanceId.rReQuNo',
'WFInstanceId.rReQuOp',
'WFInstanceId.rReQuPj',
'WFInstanceId.rReQuPrd',
'WFInstanceId.rReQuReQu',
'WFInstanceId.rScEmLEm',
'WFInstanceId.rSepaBaDa',
'WFInstanceId.rSepaCu',
'WFInstanceId.rsKeytabGr',
'WFInstanceId.rSoNo',
'WFInstanceId.rSupAc',
'WFInstanceId.rSupCn',
'WFInstanceId.rSupCu',
'WFInstanceId.rSupDo',
'WFInstanceId.rSupFf',
'WFInstanceId.rSupNo',
'WFInstanceId.rSupOp',
'WFInstanceId.rSupPj',
'WFInstanceId.rSupQu',
'WFInstanceId.rTiAc',
'WFInstanceId.rTiCa',
'WFInstanceId.rTiCn',
'WFInstanceId.rTiCoPe',
'WFInstanceId.rTiCu',
'WFInstanceId.rTiDo',
'WFInstanceId.rTiIs',
'WFInstanceId.rTiLo',
'WFInstanceId.rTiOp',
'WFInstanceId.rTiPj',
'WFInstanceId.rTiQu',
'WFInstanceId.rTiReqAc',
'WFInstanceId.rTiReqCa',
'WFInstanceId.rTiReqCn',
'WFInstanceId.rTiReqDo',
'WFInstanceId.rTiReqIs',
'WFInstanceId.rTiReqLo',
'WFInstanceId.rTiReqOp',
'WFInstanceId.rTiReqPj',
'WFInstanceId.rTiReqQu',
'WFInstanceId.rTiTi',
'WFInstanceId.rTiTiCtg',
'WFInstanceId.rWfCn',
'WFInstanceId.rWfCoPe',
'WFInstanceId.rWfCu',
'WFInstanceId.rWfCuGe',
'WFInstanceId.rWfIs',
'WFInstanceId.rWfLo',
'WFInstanceId.rWfMeDe',
'WFInstanceId.rWfOp',
'WFInstanceId.rWfPj',
'WFInstanceId.rWfPrCa',
'WFInstanceId.rWfQu',
'WFInstanceId.rWfSepa',
'WFInstanceId.rWfSup',
'WFInstanceId.S_Keytab',
'WFInstanceId.SAPConfig',
'WFInstanceId.SAPMapping',
'WFInstanceId.SchedEmList',
'WFInstanceId.ScriptHistory',
'WFInstanceId.ScriptLibrary',
'WFInstanceId.ScriptMethod',
'WFInstanceId.ScriptTestCase',
'WFInstanceId.ScriptTestRun',
'WFInstanceId.ScriptTestStep',
'WFInstanceId.SearchResult',
'WFInstanceId.Sepa',
'WFInstanceId.SocialMedia',
'WFInstanceId.SqlProtocol',
'WFInstanceId.Statements',
'WFInstanceId.Street',
'WFInstanceId.Supply',
'WFInstanceId.SwitchNum',
'WFInstanceId.TapiLocation',
'WFInstanceId.Telecom',
'WFInstanceId.TestEntity',
'WFInstanceId.TestLink',
'WFInstanceId.Ticket',
'WFInstanceId.TicketCategory',
'WFInstanceId.TicketClassify',
'WFInstanceId.TicketReason',
'WFInstanceId.TicketRequest',
'WFInstanceId.TileConfig',
'WFInstanceId.TileDefinition',
'WFInstanceId.TileElement',
'WFInstanceId.TilePersistence',
'WFInstanceId.TileRepository',
'WFInstanceId.TimerConfiguration',
'WFInstanceId.TimeSlicingIs',
'WFInstanceId.TimeSlicingVAT',
'WFInstanceId.Translation',
'WFInstanceId.UnIndexedEntity',
'WFInstanceId.Unit',
'WFInstanceId.UsedProducts',
'WFInstanceId.WebService',
'WFInstanceId.WebserviceLog',
'WFInstanceId.WFActionMapping',
'WFInstanceId.WFDefinition',
'WFInstanceId.WorkFlow',
'WFInstanceId.ZipCode',
'ZIP.ContactPerson',
'ZIP.Customer',
'ZIP.Location',
'ZIP.Person',
'ZIPKey.Address',
'ZIPKey.District',
'ZIPKey.Installation',
'ZIPKey.Street',
'ZIPKey.Supply',
'ZIPKeyPrivate.ContactPerson'
)
Hinweise auf neue Funktionalitäten
Vorgangsmanagement
Das Kundenservice Modul wird im Zuge des Update auf die Version 23.1. zum Vorgangsmanagement migriert. Hierbei sind die nachfolgenden Punkte im Projekt zu prüfen.
Änderungen im Standard
Neuer Nummernkreis bei Vorgängen und Anliegen
Auf dem Vorgang: Vorgangs-Nr. (TicketNo.Ticket)
Feldeigenschaft "Doppelte Feldwerte verhindern" wurde im Standard aktiviert
Änderung von Memofeldern
Auf dem Vorgang: Beschreibung (Description.Ticket)
Hier ist eine Umwandlung von EditorPane auf HTML erfolgt
In dem Zuge wurde auch das Feld Description2.Ticket umgestellt
Conclusion.Ticket wurde ebenfalls in HTML umwandelt
Auf dem Anliegen: Beschreibung (Description.TicketRequest)
Hier istl eine Umwandlung von EditorPane auf HTML erfolgt
In dem Zuge wurde auch das Feld Description2.TicketRequest umgestellt
Conclusion.TicketRequest wurde ebenfalls in HTML umwandelt
Die Felder Desription2.Ticket und Desription2.TicketRequest wurden von den Masken entfernt
Benachrichtigungen
Es wird eine Benachrichtigung an den User "Delegiert an" (Delegiert an Gruppe) versendet.
Dies erfolgt bei Überschreitung des Datum Erinnerungsdatum (auf dem Vorgang und Anliegen)
Dies erfolgt bei Überschreitung des Datum Fälligkeitsdatum (auf dem Vorgang und Anliegen)
Wenn beide eingetreten wird nur eine Benachrichtigung (Fälligkeitsdatum) versendet.
Die Benachrichtigung wird nur aktualisiert (Nur eine Benachrichtigung für Erinnerung und Fälligkeitsdatum - auch wenn diese gleich sind)
Neuer Timer zum Versand von Benachrichtigungen nach überschrittenem Datum
Es wurde ein neuer Timer "Eskalationsdatum prüfen" im Standard erstellt, welcher jede Minute prüft, ob ein Vorgang oder Anliegen Datum (Fälligkeits- und Erinnerungsdatum) überschritten wurde und versendet anschließend eine Benachrichtigung im Benachrichtigungssystem.
Aufnahme von neuen Datumsfeldern auf dem Vorgang und auf dem Anliegen
Bei der Neuanlage eines Vorgang werden die Werte vom Erinnerungs- und Fälligkeitsdatum wie folgt vorbelegt:
Fälligkeitsdatum (standardmäßig +14 Tage vorbelegt)
Erinnerungsdatum (standardmäßig +7 Tage vorbelegt)
Wurden die hinterlegten Daten überschritten erhält die Person, welche in dem Feld "Delegiert an" hinterlegt wurde eine Benachrichtigung
Bei der Neuanlage eines Anliegens werden die Werte vom Erinnerungs- und Fälligkeitsdatum des übergeordneten Vorgang übernommen
Zusätzlich dazu gilt:
Das Fälligkeitsdatum des Anliegens darf nicht hinter dem Fälligkeitsdatum des übergeordneten Vorgang liegen
Prüfung: Eine Speicherung des Datensatzes darf nicht erfolgen, wenn dies nicht gewährleistet ist
Wenn durch eine manuelle Änderung durch Speichern das Fälligkeitsdatum des Vorgang vor dem Fälligkeitsdatum des Anliegen liegt, so wird automatisch das Fälligkeitsdatum des Anliegen mit dem Fälligkeitsdatum des Vorgang gleichgesetzt
Wenn durch eine manuelle Änderung das Fälligkeitsdatum des Anliegen hinter dem Fälligkeitsdatum des Vorgang liegt, so soll die manuelle Änderung und die Abspeicherung verhindert werden. Stattdessen wird der letzte gültige Wert für das Fälligkeitsdatum es Anliegens verwendet → Zurücksetzen auf letzten Wert
Neues Feld Ansprechpartner auf dem Anliegen
Es gibt ein neues Feld Ansprechpartner auf dem Anliegen, welches bei der Neuanlage mit dem Ansprechpartner aus dem übergeordneten Vorgang vorbelegt wird.
Änderungen an der Skriptbibliothek SC0TicketUtils
Folgende Anpassungen sind in der Skriptbibliothek SC0TicketUtils erfolgt:
Methode | Status | Änderungen |
---|---|---|
createTicketFromActivity() | Geändert | Feld CoPeKey.Ticket wird nur gefüllt, wenn Feld DefaultContactPerson.Activity nicht leer ist |
generateTicketNoFromActivity() | Geändert | Änderung des RegEx, sodass das neue Vorgangsnummerformat beim Mailimport erkannt wird |
getRemindDateDuration() | Neu | Setzt den Abstand zwischen dem Fälligkeitsdatum und dem Erinnerungsdatum in Tagen |
handleRequestBbetterTabs() | Neu | Steuert die Sichtbarkeit der Bbetter und Ticket spezifichen Elemente auf der Anliegen-Maske |
handleTicketBbetterTabs() | Neu | Steuert die Sichtbarkeit der Bbetter und Ticket spezifichen Elemente auf der Vorgangs-Maske |
isWeekend() | Neu | Überprüft, ob das übergebene Datum an einem Wochenende liegt |
reqEntryInserted() | Geändert | Daten aus dem Vorgang übertragen und Aufruf von handleRequestBbetterTabs() hinzugefügt |
reqEntryLoaded() | Geändert | Aufruf von handleRequestBbetterTabs hinzugefügt |
reqFieldValueChanged() | Geändert | Hinzufügen der Fäligkeitsdatums- und Erinnerungsdatums-Logik |
ticketEntryInserted() | Neu | Aufruf von handleTicketBbetterTabs() hinzugefügt. Aufruf der initialen Fäligkeitsdatums- und Erinnerungsdatums-Logik |
ticketEntryLoaded() | Geändert | Aufruf von handleTicketBbetterTabs() hinzugefügt |
ticketFieldValueChanged() | Geändert | Aufruf von handleTicketBbetterTabsHinzugefügt. Aufruf der Fäligkeitsdatums- und Erinnerungsdatums-Logik |
Optional: Klassifikationen für einzelne Abteilungen individualisieren.
Es besteht die Möglichkeit abhängig vom Tickettyp unterschiedliche Schlüssel in der Klassifikation und Unterklassifikation zu hinterlegen. Dies kann somit in drei Stufen konfiguriert werden: Tickettyp - Klassifikation - Unterklassifikation. Sollen in diesen Schlüsselbereichen allgemeine Schlüssel (für alle Personen) hinterlegt werden, muss diese Konfiguration nicht durchgeführt werden, nur wenn beispielsweise abteilungsindividuelle Schlüssel hinterlegt werden sollen, welche andere Abteilungen nicht sehen oder auswählen sollen.
Feldeigenschaft in dem Feld Unterklassifikation (Classification2.Ticket):
Nachschlagesuche:
LookupEntityS_KeytabKeyMappings
Vorselektion beim Validieren:
MasterKey.KeyMappings.EQUAL={Classification.Ticket}
MasterKeyRange.KeyMappings.EQUAL=C0TICKET_CLASSIFICATION
SlaveKeyRange.KeyMappings.EQUAL=C0TICKET_CLASSIFICATION2
Active.KeyMappings.EQUAL=1
Migration für Bestandskunden
Bei Kunden, welche das Kundenservice-Modul lizenziert und über Customizing verändert haben, muss innerhalb des Projekts geprüft werden, welche Auswirkungen die Anpassungen im Standard haben. Hier muss eine projektindividuelle Lösung gefunden werden.
Änderung der Sprachvariablen
Die Sprachvariablen wurden von der modulspezifischen Internationalisierung in die Skriptbibliothek (Skript-Klasse SC0TICKETUTILS) Sprachvariablen verschoben. Hierdurch hat sich auf der Skript Aufruf String I18nUtils.i18nModule(String moduleID, String key, Locale language, Object... parameter)
in den Skript Aufruf String I18nUtils.i18nCustom(String key, Locale language, Object... parameter)
im Standard geändert. Dies muss bei allen übersteuerten Prozessen im Bereich des Vorgangsmanagement nachgezogen werden.
Folgende Prozesse haben in C0 ihr I18n vom Modul in die Sprachvariablen verschoben. Dies ist in höheren Schichten nachzuholen, sofern einer davon übersteuert wurde:
C0TicketAddActivity
C0TicketCompletion
C0TicketCompletionSub
C0TicketCreation
C0TicketMailSending
C0TicketReopen
C0TicketRequestCompletion
C0TicketRequestCreation
Folgende Prozesse haben in C0 kein i18n enthalten, müssten aber im Falle einer Übersteuerung trotzdem geprüft werden ob dort etwas eingebaut wurde.
C0TicketCreateActivityFromNotesField
C0TicketLinkActivity
C0TicketRequestCreateActivityFromNotesField
C0TicketDelegateToGroup
C0TicketLinkComment
C0IB_CreateRequestTicket
Ersetzt werden muss jeder Aufruf wie
I18nUtils.i18nModule("TICKET", "<key>", SessionConstants.LOCALE);
durch
I18nUtils.i18nCustom("<key>", SessionConstants.LOCALE);
b.better
b.better ist nun ein eigenes Modul. Bei dem Update auf die Version 23.1. wird geprüft, ob es b.better spezifische Datensätze gibt. Dies erfolgt wie folgt:
Sind in den Entitäten Ticket-Begründung (TicketReason) und Ticket-Klassifizierung (TicketClassify) Datensätze vorhanden, dann wird das Beschwerdemanagement Modul (b.better) NICHT entfernt
Das löschende Update wird NICHT ausgeführt, wenn in Ticket-Klassifizierung / Begründung Datensätze vorhanden sind
Sind in den Entitäten Ticket-Begründung (TicketReason) und Ticket-Klassifizierung (TicketClassify) KEINE Datensätze vorhanden, dann wird das Beschwerdemanagement Modul (b.better) entfernt
Das löschende Update wird ausgeführt, wenn in Ticket-Klassifizierung / Begründung KEINE Datensätze vorhanden sind
Wichtig: Die Standardmasken TicketBbetter und TicketRequestBbetter wurden gelöscht. Sollen diese nach dem Update auf die Version 23.1. noch verwendet werden, müssen diese VOR dem Update übersteuert werden.
Umbenennung Kundenservicemodul in Beschwerdemanagement
Entitäten Ticket und Ticket-Anliegen wurden in Vorgang und Anliegen umbenannt und aus dem Modul heraus gelöst
Standard Vorgangsmanagement-Logiken wurden ebenfalls aus den Modul heraus gelöst und funktionieren nun ohne eingespieltes Modul
Einzelne Felder und Infoboards von Vorgang und Anliegen, welche speziell für das Beschwerdemanagement b.better verwendet werden, bleiben im Modul bestehen
Ein neuer Schlüssel BB - bbetter steuert die neue Maskenlogik und blendet nach der Auswahl die b.better spezifischen Karten (und somit Felder) ein
Es ist somit ggf. eine Umstellung des Maskenskript oder der Maske notwendig
Die Masken TicketBbetter und TicketRequestBbetter wurden gelöscht
Hat ein Kunde eine der Masken ausgewählt, aber nicht übersteuert, wird er automatisch auf die neue Maske umgestellt. Dort werden die b.better Felder (bzw. Karten) über die neue Logik ein und ausgeblendet
Hat ein Kunde die Masken übersteuert und angepasst, so werden nur die C0 Masken gelöscht. Die C2 Varianten bleiben bestehen, sodass für den Kunden kein Unterschied entsteht
Achtung
Wenn der Kunde vor dem Update das Anpassen der Masken auf das neue Design NICHT wünscht, so müssen die alten Masken in der Kundenschicht (C2-Schicht) übersteuert werden.
Neuer Personen-Typ "Eheleute"
Es wurde ein neuer Personentyp EHE (Langtext = "Eheleute", Juristische Person = Nein) aufgenommen.
Hierzu wurden folgenden Anreden wie folgt konfiguriert:
Generierte Briefanrede: Sehr geehrtes Ehepaar <Nachname>
Generierte Anrede: Guten Tag <Vorname><Nachname>
Pflege von Timern unabhängig vom Prozessnamen
Bisher galt für Prozesse: Timername = Prozessname. Man musste für jeden dieser Timeraufrufe auch einen BPM-Prozess anlegen. Mehrere Timer mit unterschiedlichen Parametern aber dem selben Prozessnamen waren nicht möglich, weil dann auch die Timer alle den selben Namen hätten. Statt passend zu nur einer parametrierten Scriptmethode auch nur einen parametrierten BPM-Prozess anzulegen, musste man je Timer einen BPM-Prozess erstellen.
Man kann nun den Namen des Timers unabhängig vom Prozessnamen pflegen. Somit können mehrere Timer mit unterschiedlichen an denselben BPM-Prozess übergebenen Parametern angelegt und mit unabhängigem Zeitplan aufgerufen werden. Es existiert nur noch genau ein BPM-Prozess, der wiederum die benötigte Skriptbibliotheksmethode aufruft.
Hierfür wird die ID genutzt:
die ID wird bei Neuanlage der Aktion gepflegt
das Feld ist bei Neuanlage der Aktion schreibbar
es ist ein eindeutiges Pflichtfeld, wo keine Leerzeichen erlaubt sind
In verschiedenen Schichten wird das entsprechende Präfix berücksichtigt
![](../../../__attachments/20545609/image-20230820-202515.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Konfoguration des Timers über eine ID
Starten des Massendatenservers beim Update
Die Behandlung des Massendatenservers beim Update muss mit der Version 2023.1 angepasst werden, da das Starten des Massendatenservers beim Update nicht möglich ist.
Das Vorgehen ist wie folgt:
Der Massendatenserver muss nach dem Hauptserver aktualisiert werden (ansonsten erhält der Anwender einen entsprechenden Hinweis)
Ist der Hauptserver aktualisiert, kann der Massendatenserver aktualisiert werden, er kann und darf hierfür nicht gestartet sein
Für die Aktualisierung des Massendatenservers muss der Anwender keine Anmeldeinformation eingeben, da der Server nicht gestartet werden kann und so die bisherige Prüfung nicht möglich ist.
Hinweise auf veraltete Funktionalitäten
Rückbau des Features: unbekannte Mail-Adressen in der Aktivität
Im damaligen Aktivitätenabgleich existierte ein Feature, wo man zu unbekannten E-Mail-Adressen im Wizard einen Ansprechpartner anlegen und diesen anschließend mit Aktivitäten verknüpfen konnte, die zu dieser E-Mail-Adresse in der Datenbank gespeichert wurden.
Dieses Feature existiert in dem CRM seit 2023.1 so nicht mehr. Es gibt einzig noch die Möglichkeit "Unbekannte" E-Mail-Adressen anzeigen zu lassen (gefundene E-Mail-Adressen, zu denen kein Ansprechpartner existiert).
2022.1
Systemrelevante Informationen für Administratoren
Freischaltung des User-Onboardings
Aktivierung des Onboarding-Features
Mit dem Update auf Version 22.1 (oder höher) wird das neue Onboarding-Tool im Standard für jeden Kunden und jeden User automatisch freigeschaltet. Die Nutzung ist nur im Web Client möglich, das Feature steht im Windows Client nicht zur Verfügung.
Das initiale Laden des Onboarding-Services erfolgt via Skript über die CURSOR-Cloud, welche als Notaus-Schalter (Kill-Switch) agieren und das Laden des Onboarding-Services z.B. im Fehlerfall oder aus Sicherheitsgründen verhindern kann.
Nach dem initialen Laden taucht der Onboarding-Assistent mit einem Button und einer kleinen Begrüßung bereits beim ersten Anmelden nach dem Update auf. Danach ist der Onboarding-Assistent ausgeblendet, bis er über den zugehörigen Button aufgerufen wird. Eine Deaktivierung des Onboarding-Assistenten und die dazugehörige Ausblendung des Onboarding-Buttons ist über eine Benutzereinstellung eigenständig möglich.
Systemvoraussetzungen zur Nutzung
Um das Onboarding-Feature im Standard nutzen zu können, müssen folgende Bedingungen erfüllt sein:
Jeder Client benötigt einen Internetzugang, um mit den Onboarding-Diensten kommunizieren zu können.
Die CRM-Anwendung muss in einem Webbrowser geöffnet werden (→ Web Client).
Die Technologie wird in JavaScript programmiert und bereitgestellt. Um das Onboarding-Tool zu verwenden, muss daher JavaScript im Browser aktiviert sein.
Wenn eine Firewall aktiv ist, muss diese so eingestellt sein, dass sie die Kommunikation zu den benötigten Servern erlaubt.
Dies betrifft:https://onboarding-proxy.cursor-services.de/userlane.js für die Kommunikation über die CURSOR-Cloud sowie
*.userlane.com für die eigentliche Nutzung des Onboarding-Services (eine vollständige Auflistung kann auf Anfrage bereitgestellt werden)
Wenn eine Content Security Policy vorhanden ist, muss sie *.userlane.com für alle Arten von Anfragen erlauben.
Um eine sichere und verschlüsselte Kommunikation zu gewährleisten, läuft die Anwendung mit einem verschlüsselten Protokoll (HTTPS).
Sind diese Bedingungen nicht erfüllt, wird der Button zum Aufruf des Assistenten zwar angezeigt, ein Klick darauf hat aber keine Auswirkungen. In diesem Fall wird empfohlen, den Onboarding-Service systemweit zu deaktivieren.
Weitere Voraussetzungen
Da es sich bei dem Onboarding-Feature im Standard um einen kostenfreien Dienst handelt, welcher als Service von CURSOR bereitgestellt wird (Software as a Service), muss eine Vereinbarung zur Nutzung, z.B. aktualisierter Vertrag zur Auftragsdatenverarbeitung, unterzeichnet vorliegen.
Hierfür ist eine aktualisierte Version des Vertrags zur Auftragsdatenverarbeitung gemäß Art. 28 DS-GVO erstellt worden. Diese neue Version wird im Rahmen der Projektierung für das CRM-Update von CURSOR zur Verfügung gestellt. Weitere Klärungen erfolgen im individuellen Gespräch mit dem CURSOR-Projektleiter.
Hinweise auf neue Funktionalitäten
SAML NameID-Format ist konfigurierbar
NameID-Policy im Authentication Request ist jetzt konfigurierbar. Die bisherige Standardoption war "Persistent". Dies wurde verändert in "Unspecified".
Diese Umsetzung ist insbesondere für einfachere Nutzung von AzureAD relevant.
In den Systemeinstellungen ist die Option "Gewünschtes NameID-Format" dazu gekommen:
![](../../../__attachments/20545609/image-20230820-202552.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Öffnen von Terminen im Kalender
Ein Termin (Aktivität) öffnet sich mit einem Klick immer in einem neuen Tab, ebenso wie der Terminanlage-Wizard. Zusätzlich wird nach dem Speichern im Terminanlage-Wizard die erstellte Aktivität geöffnet.
Feldeigenschaft "Zahlenfeld"
Feldeigenschaft "Zahlenfeld" für Nachschlagefelder wurde in beiden Clients ausgeblendet, weil die Änderungen unzulässig sind.
![](../../../__attachments/20545609/image-20230820-202613.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Feldeigenschaft im Windows Client
![](../../../__attachments/20545609/image-20230820-202634.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Ausgeblendete Feldeigenschaft im Web Client
Ansprechpartner-Schnellerfassungsmaske
Felder "Serienbrief" und "Serienmail" wurden in der Ansprechpartner-Schnellerfassungsmaske in der Standard-Schicht entfernt.
Handhabung in der Memo-Ansicht
Zum Markieren eines Wortes oder einer Zeile wird in der Textverarbeitung der Doppelklick auf das zu markierende Wort eingesetzt. Bisher konnte mit einem Doppelklick auf das Beschreibungsfeld im CRM die Memo-Ansicht geöffnet werden. Durch die Vergrößerung des Beschreibungsfeldes auf Fensterbreite entstand ein anderer Zeilenumbruch. Das zuvor ausgewählte Wort war nicht mehr markiert und in der neuen Ansicht nicht intuitiv wieder auffindbar.
Jetzt wird bei Doppelklick im Beschreibungs-Feld die Memo-Ansicht nicht geöffnet. Die Ansicht wird nur noch durch Aktivierung/Klicken des dafür vorgesehenen Buttons im Beschreibungsfeld geöffnet. Die neue Umsetzung funktioniert sowohl im HTML-Editor als auch in einfachen Memo-Feldern (Textarea). Im Tooltip der Memo-Ansicht kann man jetzt die Beschreibung der zugehörigen Entität ablesen. Außerdem hat der Schließen-Button in der Toolbar jetzt eine Beschriftung.
![](../../../__attachments/20545609/image-20230820-202702.png?inst-v=01ce9f95-f40d-424e-a7da-0f3a4bad5824)
Geöffnetes Memo-Feld
Benutzeroption "Schalterleiste im Unterbereich anzeigen"
Die Benutzeroption "Schalterleiste im Unterbereich anzeigen" wurde im Windows Client entfernt.
Ablösung des NativeMessagingHost durch den Communication Host
Solange die Verteilung des neuen Communication Host nicht erfolgt ist, können die Erweiterte Dateibehandlung sowie externe Aufrufe nicht mehr verwendet werden.
Ab Version 22.1 wurde eine Änderung der Kommunikation zwischen dem Web Client und der Browser-Erweiterung vorgenommen. Diese Änderung war aus verschiedenen Gründen notwendig und hat dafür gesorgt, dass der NativeMessagingHost durch eine neue Applikation ersetzt werden muss.
Aus diesem Grund muss bei einem Update auf eine Version 22.1 (oder neuer) eine neue Browser-Erweiterung sowie der neue Communication Host verteilt werden. Dies betrifft insbesondere Kunden, welche bereits die alte "CURSOR Web-Erweiterung" und den dazugehörigen NativeMessagingHost verwenden.
Alte Komponente | Neue Komponente |
---|---|
CURSOR Web-Extension | CURSOR Browser-Erweiterung |
CURSOR NativeMessagingHost | Communication Host für die CURSOR Browser-Erweiterung |
Es können beide Versionen parallel betrieben werden, damit die erweiterte Dateibehandlung und die externen Aufrufe sowohl in der produktiven, als auch in der Testumgebung zur Verfügung stehen. Es wird jedoch empfohlen, nachdem das Update auf 22.1 (oder neuer) erfolgt ist, die alte Erweiterung und den NativeMessagingHost zu entfernen.
An der Registry-Einträgen für die Whitelist muss keine Änderung vorgenommen werden, da der neue Communication Host dieselben Einträge wie der NativeMessagingHost verarbeitet, um das Update zu erleichtern.
Hinweise auf veraltete Funktionalitäten
Alte Serverworkflows
Beim Update auf Version 20.2 und höher wurden interne (alte) Serverworkflows durch einen BPM-Prozess ersetzt. Dies kann zu Konflikten mit projektindividuellen Umsetzungen führen. Die Wahrscheinlichkeit für derartige Umsetzungen ist allerdings gering, da es sich um Modifikationen am Standardangebotswesen handeln müsste.
Mit den folgenden Prüfstatements kann ermittelt werden, ob Handlungsbedarf besteht:
select pk from wfdefinition where pk in ('UpdateQuoteItem', 'UpdateQuote', 'UpdateContract') and cursorStandard = 1 and active = 1
==> Hier müssen genau 3 Ergebniszeilen kommen, ansonsten ist Rücksprache mit dem CURSOR-Support notwendigselect pk from wfdefinition where (pk like '%Quote%' or pk like '%Contract%') and cursorStandard = 0 and active = 1
==> Sobald dieses Statement ein Ergebnis liefert, ist ebenfalls Rücksprache mit dem CURSOR-Support notwendig