Breaking Changes
Breaking Changes in Webdesk 4.64
Diese Hinweise richten sich an Customer Admins und sind relevant, wenn IF6020, mehrere Beschäftigungen oder kundenspezifische Skripte, Validatoren, Reports und Velocity-Templates verwendet werden.
1. Java 17 als Systemvoraussetzung
Webdesk 4.64 und der zugehörige IF6020-TA-Connector werden mit Java 17 betrieben. Java 11 ist für diese Version nicht ausreichend. Vor dem Update muss geprüft werden, dass auf dem Webdesk-Server und beim TA-Connector eine unterstützte Java-17-Laufzeit installiert und für den jeweiligen Dienst aktiviert ist.
Prüfen Sie insbesondere bei mehreren Java-Installationen, welche Java-Version der Windows-Dienst beziehungsweise das Startskript tatsächlich verwendet. Kundenspezifische Java-Jobs und Integrationen müssen nach dem Update ebenfalls getestet werden. Eine Übersicht der weiteren Neuerungen finden Sie in Neue Features in Webdesk 4.64.
2. Bean-Namen in kundenspezifischen Skripten prüfen
Die TA-Services wurden für mehrere TA-Systeme systembezogen umbenannt. Dadurch können bestehende Skripte, Validierungen, Reports und Velocity-Templates fehlschlagen.
Für IF6020 müssen insbesondere folgende Namen geprüft und angepasst werden:
- TaJournalService → Ta6020JournalService
- TaPersonService → Ta6020PersonService
- TaAccountService → Ta6020AccountService
- TaBookingService → Ta6020BookingService
- TaCorrectionService → Ta6020CorrectionService
- TaMetadataService → Ta6020MetadataService
- TaOptionsService → Ta6020OptionsService
- TaDefinitionService → Ta6020DefinitionService
Bitte alle kundenspezifischen Verwendungen der alten Namen suchen, auf den passenden systembezogenen Bean-Namen umstellen und anschließend testen. Für systemübergreifende TA-Services ist der neue generische Bean-Name zu verwenden.
3. Änderung von stpersnr in IF6020
stpersnr enthält ab 4.64 nicht mehr automatisch die Webdesk-Personalnummer. Beim Anlegen eines TA-Personensatzes wird dort die TA-ID verwendet. Falls diese bereits vergeben ist, erzeugt Webdesk eine andere eindeutige ID.
Die echte Webdesk-employeeId wird in ein separates, konfiguriertes Infofeld geschrieben. Verwenden Sie stpersnr daher nicht mehr als Webdesk-Personalnummer.
4. Drei Infofelder in IF6020 konfigurieren
Für die neue Zuordnung müssen drei Infofelder eingerichtet und in tacon.properties eingetragen werden:
- TaPersonDAO.nameOfFieldStoringPersonUid – Webdesk-PersonUID
- TaPersonDAO.employeeIdField – echte Webdesk-employeeId
- TaPersonDAO.effectiveEmploymentMarkerField – Kennzeichen der aktuell wirksamen Beschäftigung
Die Feldnamen sind installationsabhängig. Als Beispiel verwendet die 4.64-Dokumentation stpinfo151 für die PersonUID, stpinfo160 für die employeeId und stpinfo30 für das Wirksamkeitskennzeichen. Verwenden Sie die bei Ihnen angelegten Felder. Die Infofelder benötigen mindestens folgende Längen: PersonUID 50 Zeichen, employeeId 20 Zeichen (die Webdesk-employeeId ist höchstens 20 Zeichen lang), Wirksamkeitskennzeichen 1 Zeichen.
Webdesk verwendet für das Kennzeichen J für eine aktuell wirksame Beschäftigung und N für eine nicht wirksame Beschäftigung.
Freie Infofelder finden (IF6020 auf Microsoft SQL Server)
Das folgende Skript listet alle stpinfo-Felder der IF6020-Personenstammtabelle (IF_PSTAMM), die in keinem Datensatz einen Wert enthalten und lang genug für eines der drei Infofelder sind. Ein Feld gilt als leer, wenn es in jedem Datensatz NULL ist oder nur Leerzeichen bzw. unsichtbare Zeichen enthält. Das Skript ändert keine Daten. Es wird in der IF6020-Datenbank ausgeführt; das Schema wird automatisch ermittelt.
/* Empty stpinfo fields in the IF6020 person master (IF_PSTAMM) that can take the
4.64 info fields:
- TaPersonDAO.nameOfFieldStoringPersonUid PersonUID 50+ characters
- TaPersonDAO.employeeIdField employeeId 20+ characters (PoPerson.employeeId is 20)
- TaPersonDAO.effectiveEmploymentMarkerField flag J/N 1+ character
Run in the IF6020 database (e.g. if6020). Read-only.
Empty = every row is NULL or holds only spaces, tabs, line breaks,
non-breaking spaces or NUL characters. */
SET NOCOUNT ON;
IF OBJECT_ID('tempdb..#stpinfo') IS NOT NULL DROP TABLE #stpinfo;
CREATE TABLE #stpinfo (
table_name nvarchar(300),
column_name sysname,
data_type sysname,
max_length int,
total_rows int,
null_rows int,
blank_only_rows int,
filled_rows int);
DECLARE @schema sysname, @table sysname, @col sysname, @type sysname, @len int,
@clean nvarchar(max), @sql nvarchar(max);
-- only text columns qualify; max_length -1 = (n)varchar(max)
DECLARE cols CURSOR LOCAL FAST_FORWARD FOR
SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH
FROM INFORMATION_SCHEMA.COLUMNS
WHERE LOWER(TABLE_NAME) IN ('pstamm', 'if_pstamm')
AND LOWER(COLUMN_NAME) LIKE 'stpinfo%'
AND LOWER(DATA_TYPE) IN ('char', 'varchar', 'nchar', 'nvarchar', 'text', 'ntext')
AND (CHARACTER_MAXIMUM_LENGTH = -1 OR CHARACTER_MAXIMUM_LENGTH >= 1);
OPEN cols;
FETCH NEXT FROM cols INTO @schema, @table, @col, @type, @len;
WHILE @@FETCH_STATUS = 0
BEGIN
-- column value with spaces, tab, LF, CR, non-breaking space and NUL removed
-- (binary collation, otherwise NUL cannot be replaced)
SET @clean = N'REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE('
+ N'CAST(' + QUOTENAME(@col) + N' AS nvarchar(4000)) COLLATE Latin1_General_BIN'
+ N', N'' '', N''''), NCHAR(9), N''''), NCHAR(10), N''''), NCHAR(13), N''''), NCHAR(160), N''''), NCHAR(0), N'''')';
SET @sql = N'INSERT INTO #stpinfo SELECT @schema + N''.'' + @table, @col, @type, @len, COUNT(*), '
+ N'SUM(CASE WHEN ' + QUOTENAME(@col) + N' IS NULL THEN 1 ELSE 0 END), '
+ N'SUM(CASE WHEN ' + QUOTENAME(@col) + N' IS NOT NULL AND LEN(' + @clean + N') = 0 THEN 1 ELSE 0 END), '
+ N'SUM(CASE WHEN LEN(' + @clean + N') > 0 THEN 1 ELSE 0 END) '
+ N'FROM ' + QUOTENAME(@schema) + N'.' + QUOTENAME(@table);
EXEC sp_executesql @sql,
N'@schema sysname, @table sysname, @col sysname, @type sysname, @len int',
@schema, @table, @col, @type, @len;
FETCH NEXT FROM cols INTO @schema, @table, @col, @type, @len;
END
CLOSE cols;
DEALLOCATE cols;
IF NOT EXISTS (SELECT 1 FROM #stpinfo)
BEGIN
SELECT DB_NAME() AS current_database,
'No IF_PSTAMM / pstamm table with text stpinfo columns visible in this database' AS problem;
END
ELSE
BEGIN
SELECT CASE WHEN max_length = -1 OR max_length >= 50 THEN 'PersonUID, employeeId or flag'
WHEN max_length >= 20 THEN 'employeeId or flag'
ELSE 'flag only'
END AS usable_for,
column_name, data_type, max_length, total_rows, null_rows, blank_only_rows
FROM #stpinfo
WHERE filled_rows = 0
ORDER BY CASE WHEN max_length = -1 OR max_length >= 50 THEN 0
WHEN max_length >= 20 THEN 1
ELSE 2 END,
max_length, LEN(column_name), column_name;
END
Die Spalte usable_for zeigt, wofür ein Feld lang genug ist: PersonUID, employeeId or flag (ab 50 Zeichen), employeeId or flag (20 bis 49 Zeichen) oder flag only (unter 20 Zeichen). Innerhalb jeder Gruppe stehen die kürzesten Felder zuerst.
Leer bedeutet nur, dass in IF_PSTAMM kein Wert steht. Prüfen Sie vor der Verwendung, dass das Feld nicht in kundenspezifischen Abrechnungsskripten, PLIs oder Masken des 6020-Clients verwendet wird.
5. Vorhandene Daten migrieren
- Die drei Infofelder und die zugehörigen Eigenschaften konfigurieren.
- Vorhandene TA-Personensätze mit dem mitgelieferten TA-Update V48 oder dem Job migrateEmployeeId migrieren. Dabei werden die stabile Webdesk-employeeId und das Wirksamkeitskennzeichen in die konfigurierten Infofelder geschrieben.
- Die Option zum Überschreiben vorhandener Infofeldwerte nur nach vorheriger Prüfung verwenden.
- Die vorhandenen PersonUIDs über die Webdesk-Admin-Aktion save_personuids_into_TaPersons in die konfigurierten 6020-Infofelder schreiben. Bei neu angelegten TA-Personensätzen wird die PersonUID nach korrekter Konfiguration automatisch geschrieben.
6. TA-ID in den HRX-Beschäftigungen
Bei mehreren Beschäftigungen benötigt jede HrPersonEmployment den passenden TA-ID-Rückverweis in taId. Eine Webdesk-Person bleibt der zentrale Stammdatensatz; in TA wird für jede Beschäftigung ein eigener TA-Personensatz geführt.
Webdesk 4.64 enthält dafür das Upgrade V122. Es synchronisiert die TA-ID der Person mit der passenden aktuell gültigen Beschäftigung. Da das Upgrade bei einem Fehler nicht vollständig abbricht, müssen die Ergebnisse und Warnungen geprüft werden. Bei mehreren Beschäftigungen muss jede TA-ID eindeutig der richtigen Beschäftigung zugeordnet sein. Fehlende oder falsche Zuordnungen nicht direkt in der Datenbank ändern, sondern über die vorgesehenen Webdesk-Funktionen beziehungsweise mit Workflow-Support korrigieren.
7. Prüfung nach dem Upgrade
- Java-Version des Webdesk-Dienstes und des TA-Connectors prüfen.
- Parallele Beschäftigungen, Beendigung und Wiedereintritt testen.
- Prüfen, dass die aktuell wirksame Beschäftigung mit J und nicht wirksame Beschäftigungen mit N gekennzeichnet sind.
- Prüfen, dass die Webdesk-employeeId im separaten Infofeld stabil bleibt und stpersnr nicht mehr dafür verwendet wird.
- TA-Journal, Korrektur- und Abwesenheitsclient sowie kundenspezifische Skripte, Reports und Validierungen testen.
Wenn keine IF6020-Integration, keine Mehrfachbeschäftigungen und keine kundenspezifischen TA-Referenzen vorhanden sind, besteht für diese Punkte in der Regel kein manueller Anpassungsbedarf.


Keine Kommentare vorhanden.