Im Folgenden werden spezielle Anpassungen aufgelistet, die Sie zwingend manuell durchführen müssen, wenn Sie ein bestimmtes neues Release einspielen.

Wenn Sie mehrere Releases überspringen, müssen Sie ALLE zwischenzeitlich notwendig gewordenen Anpassungen durchführen.

Darüber hinaus werden hier auch optionale Anpassungen erläutert.

Ebenso werden hier Anpassungen angekündigt, die den öffentlichen Teil der B2B betreffen, und die Codeänderungen in externen, vom Kunden implementierten Funktionalitäten erfordern.

Release 2022-03

Neue Technologie im Nachrichtenmonitor-UI

Mit dem März-Release der B2B-UI wird der Nachrichtenmonitor auf Webcomponent-Technologie umgestellt. Wenn Sie vom Februar-Release zum März-Release updaten ist nichts zu tun, außer wie üblich das neue Release der B2B-UI einzuspielen. Bei der Umstellung achten wir darauf, dass keine administrativen Konfigurationsanpassungen notwendig sind.

Release 2021-03

NUI-759 Additional Columns

Beachten Sie auch die Konfigurationsanpassungen zu den AdditionalColumns NUI-1356 aus dem Februar-Release: Die Datenbank-View b2bbp_data_message_view musste dort aktualisiert werden. Die Änderungen vom letzten Monat sind hier dokumentiert. Die Sqls finden hier & hier. Die AdditionalColumns unterstützen nur noch das Laden aus der Datenbank und nicht mehr aus der Extension. Kommen Sie auf uns zu, wenn Sie sich Unterstützung bei der Umstellung wünschen.

Beim ersten Boot des neuen Releases aktualisiert die B2B automatisch das Customizing. Bitte starten Sie die B2B danach neu, damit die Überschriften der AdditionalColumns wieder korrekt dargestellt werden.

Nach dem automatischen Update wird der Eintrag der GlobalProperty B3P_MON_ADDITIONAL1_VALUE in B3P_MON_ADDITIONAL1_KEY gespeichert und danach durch additional1 ersetzt. Dies erfolgt analog für alle AdditionalColumns. Außerdem werden die Extensions DISPLAY_EDICONTENT_IN_ADDITIONAL_COLUMN & DISPLAY_EDICONTENT_IN_ADDITIONAL_COLUMN_EXTENDED entsprechend angepasst. Die GlobalProperty B3P_MON_ADDITIONAL_SAVE_CONTRL_AND_APERAK_REFERENCE_NUMBERS wird durch die Properties STORE_ADDITIONAL_CONTRLREF & STORE_ADDITIONAL_APERAKREF abgelöst.

Der Inhalt der Additional Columns wird nur für Nachrichten angezeigt, die nach dem beschriebenen Update die Datenbank durchlaufen. Falls Sie auch Inhalte älterer Nachrichten anzeigen möchten, können Sie den Inhalt der Tabelle aktualisieren. Das folgende Script aktualisiert die AdditionalColumns aller Nachrichten, die jünger sind als 18.3.2021 00:00. Da diese Tabelle auf produktiven Systemen sehr viele Einträge enthalten kann, sollte die Größe des Zeitfensters nicht zu groß gewählt werden. Das Script kann nur erfolgreich ausgeführt werden, wenn das automatische Customizing-Update bereits durchgeführt worden ist.

--- NO PARTITIONING ---
update b2bbp_data_additional_columns
set datakey = 'additional1'
where exists (select messageid from b2bbp_data_message where b2bbp_data_message.messageid = b2bbp_data_additional_columns.messageid and started > '2021-03-18 00:00:00')
 and (datakey = (select val from b2bbp_adm_global_property where propertykey = 'B3P_MON_ADDITIONAL1_KEY'));

update b2bbp_data_additional_columns
set datakey = 'additional2'
where exists (select messageid from b2bbp_data_message where b2bbp_data_message.messageid = b2bbp_data_additional_columns.messageid and started > '2021-03-18 00:00:00')
 and (datakey = (select val from b2bbp_adm_global_property where propertykey = 'B3P_MON_ADDITIONAL2_KEY'));

update b2bbp_data_additional_columns
set datakey = 'additional3'
where exists (select messageid from b2bbp_data_message where b2bbp_data_message.messageid = b2bbp_data_additional_columns.messageid and started > '2021-03-18 00:00:00')
 and (datakey = (select val from b2bbp_adm_global_property where propertykey = 'B3P_MON_ADDITIONAL3_KEY'));

update b2bbp_data_additional_columns
set datakey = 'additional4'
where exists (select messageid from b2bbp_data_message where b2bbp_data_message.messageid = b2bbp_data_additional_columns.messageid and started > '2021-03-18 00:00:00')
 and (datakey = (select val from b2bbp_adm_global_property where propertykey = 'B3P_MON_ADDITIONAL4_KEY'));
--- WITH PARTITIONING (Postgres, MSSQL) ---
update b2bbp_data_additional_columns
set datakey = 'additional1'
where exists (select messageid from b2bbp_data_message where b2bbp_data_message.messageid = b2bbp_data_additional_columns.messageid and started > '2021-03-18 00:00:00')
 and (datakey = (select val from b2bbp_adm_global_property where propertykey = 'B3P_MON_ADDITIONAL1_KEY'));

update b2bbp_data_additional_columns
set datakey = 'additional2'
where exists (select messageid from b2bbp_data_message where b2bbp_data_message.messageid = b2bbp_data_additional_columns.messageid and started > '2021-03-18 00:00:00')
 and (datakey = (select val from b2bbp_adm_global_property where propertykey = 'B3P_MON_ADDITIONAL2_KEY'));

update b2bbp_data_additional_columns
set datakey = 'additional3'
where exists (select messageid from b2bbp_data_message where b2bbp_data_message.messageid = b2bbp_data_additional_columns.messageid and started > '2021-03-18 00:00:00')
 and (datakey = (select val from b2bbp_adm_global_property where propertykey = 'B3P_MON_ADDITIONAL3_KEY'));

update b2bbp_data_additional_columns
set datakey = 'additional4'
where exists (select messageid from b2bbp_data_message where b2bbp_data_message.messageid = b2bbp_data_additional_columns.messageid and started > '2021-03-18 00:00:00')
 and (datakey = (select val from b2bbp_adm_global_property where propertykey = 'B3P_MON_ADDITIONAL4_KEY'));




update b2bbp_data_additional_columns
set datakey = 'additional1'
where exists (select messageid from b2bbp_data_message_clearing where b2bbp_data_message.messageid = b2bbp_data_additional_columns.messageid and started > '2021-03-18 00:00:00')
 and (datakey = (select val from b2bbp_adm_global_property where propertykey = 'B3P_MON_ADDITIONAL1_KEY'));

update b2bbp_data_additional_columns
set datakey = 'additional2'
where exists (select messageid from b2bbp_data_message_clearing where b2bbp_data_message.messageid = b2bbp_data_additional_columns.messageid and started > '2021-03-18 00:00:00')
 and (datakey = (select val from b2bbp_adm_global_property where propertykey = 'B3P_MON_ADDITIONAL2_KEY'));

update b2bbp_data_additional_columns
set datakey = 'additional3'
where exists (select messageid from b2bbp_data_message_clearing where b2bbp_data_message.messageid = b2bbp_data_additional_columns.messageid and started > '2021-03-18 00:00:00')
 and (datakey = (select val from b2bbp_adm_global_property where propertykey = 'B3P_MON_ADDITIONAL3_KEY'));

update b2bbp_data_additional_columns
set datakey = 'additional4'
where exists (select messageid from b2bbp_data_message_clearing where b2bbp_data_message.messageid = b2bbp_data_additional_columns.messageid and started > '2021-03-18 00:00:00')
 and (datakey = (select val from b2bbp_adm_global_property where propertykey = 'B3P_MON_ADDITIONAL4_KEY'));




update b2bbp_data_additional_columns
set datakey = 'additional1'
where exists (select messageid from b2bbp_data_message_offline where b2bbp_data_message.messageid = b2bbp_data_additional_columns.messageid and started > '2021-03-18 00:00:00')
 and (datakey = (select val from b2bbp_adm_global_property where propertykey = 'B3P_MON_ADDITIONAL1_KEY'));

update b2bbp_data_additional_columns
set datakey = 'additional2'
where exists (select messageid from b2bbp_data_message_offline where b2bbp_data_message.messageid = b2bbp_data_additional_columns.messageid and started > '2021-03-18 00:00:00')
 and (datakey = (select val from b2bbp_adm_global_property where propertykey = 'B3P_MON_ADDITIONAL2_KEY'));

update b2bbp_data_additional_columns
set datakey = 'additional3'
where exists (select messageid from b2bbp_data_message_offline where b2bbp_data_message.messageid = b2bbp_data_additional_columns.messageid and started > '2021-03-18 00:00:00')
 and (datakey = (select val from b2bbp_adm_global_property where propertykey = 'B3P_MON_ADDITIONAL3_KEY'));

update b2bbp_data_additional_columns
set datakey = 'additional4'
where exists (select messageid from b2bbp_data_message_offline where b2bbp_data_message.messageid = b2bbp_data_additional_columns.messageid and started > '2021-03-18 00:00:00')
 and (datakey = (select val from b2bbp_adm_global_property where propertykey = 'B3P_MON_ADDITIONAL4_KEY'));
--- WITH PARTITIONING (Oracle) ---
update b2bbp_data_additional_columns
set datakey = 'additional1'
where exists (select messageid from b2bbp_data_message where b2bbp_data_message.messageid = b2bbp_data_additional_columns.messageid and started > '2021-03-18 00:00:00')
 and (datakey = (select val from b2bbp_adm_global_property where propertykey = 'B3P_MON_ADDITIONAL1_KEY'));

update b2bbp_data_additional_columns
set datakey = 'additional2'
where exists (select messageid from b2bbp_data_message where b2bbp_data_message.messageid = b2bbp_data_additional_columns.messageid and started > '2021-03-18 00:00:00')
 and (datakey = (select val from b2bbp_adm_global_property where propertykey = 'B3P_MON_ADDITIONAL2_KEY'));

update b2bbp_data_additional_columns
set datakey = 'additional3'
where exists (select messageid from b2bbp_data_message where b2bbp_data_message.messageid = b2bbp_data_additional_columns.messageid and started > '2021-03-18 00:00:00')
 and (datakey = (select val from b2bbp_adm_global_property where propertykey = 'B3P_MON_ADDITIONAL3_KEY'));

update b2bbp_data_additional_columns
set datakey = 'additional4'
where exists (select messageid from b2bbp_data_message where b2bbp_data_message.messageid = b2bbp_data_additional_columns.messageid and started > '2021-03-18 00:00:00')
 and (datakey = (select val from b2bbp_adm_global_property where propertykey = 'B3P_MON_ADDITIONAL4_KEY'));





update b2bbp_data_additional_columns
set datakey = 'additional1'
where exists (select messageid from b2bbp_data_messagec where b2bbp_data_message.messageid = b2bbp_data_additional_columns.messageid and started > '2021-03-18 00:00:00')
 and (datakey = (select val from b2bbp_adm_global_property where propertykey = 'B3P_MON_ADDITIONAL1_KEY'));

update b2bbp_data_additional_columns
set datakey = 'additional2'
where exists (select messageid from b2bbp_data_messagec where b2bbp_data_message.messageid = b2bbp_data_additional_columns.messageid and started > '2021-03-18 00:00:00')
 and (datakey = (select val from b2bbp_adm_global_property where propertykey = 'B3P_MON_ADDITIONAL2_KEY'));

update b2bbp_data_additional_columns
set datakey = 'additional3'
where exists (select messageid from b2bbp_data_messagec where b2bbp_data_message.messageid = b2bbp_data_additional_columns.messageid and started > '2021-03-18 00:00:00')
 and (datakey = (select val from b2bbp_adm_global_property where propertykey = 'B3P_MON_ADDITIONAL3_KEY'));

update b2bbp_data_additional_columns
set datakey = 'additional4'
where exists (select messageid from b2bbp_data_messagec where b2bbp_data_message.messageid = b2bbp_data_additional_columns.messageid and started > '2021-03-18 00:00:00')
 and (datakey = (select val from b2bbp_adm_global_property where propertykey = 'B3P_MON_ADDITIONAL4_KEY'));




update b2bbp_data_additional_columns
set datakey = 'additional1'
where exists (select messageid from b2bbp_data_messageo where b2bbp_data_message.messageid = b2bbp_data_additional_columns.messageid and started > '2021-03-18 00:00:00')
 and (datakey = (select val from b2bbp_adm_global_property where propertykey = 'B3P_MON_ADDITIONAL1_KEY'));

update b2bbp_data_additional_columns
set datakey = 'additional2'
where exists (select messageid from b2bbp_data_messageo where b2bbp_data_message.messageid = b2bbp_data_additional_columns.messageid and started > '2021-03-18 00:00:00')
 and (datakey = (select val from b2bbp_adm_global_property where propertykey = 'B3P_MON_ADDITIONAL2_KEY'));

update b2bbp_data_additional_columns
set datakey = 'additional3'
where exists (select messageid from b2bbp_data_messageo where b2bbp_data_message.messageid = b2bbp_data_additional_columns.messageid and started > '2021-03-18 00:00:00')
 and (datakey = (select val from b2bbp_adm_global_property where propertykey = 'B3P_MON_ADDITIONAL3_KEY'));

update b2bbp_data_additional_columns
set datakey = 'additional4'
where exists (select messageid from b2bbp_data_messageo where b2bbp_data_message.messageid = b2bbp_data_additional_columns.messageid and started > '2021-03-18 00:00:00')
 and (datakey = (select val from b2bbp_adm_global_property where propertykey = 'B3P_MON_ADDITIONAL4_KEY'));

Additional Columns per Extension laden

Dieser Abschnitt bezieht sich auf Systeme, auf denen das 2021-März Release bereits eingespielt worden ist.

Falls Sie bisher die Additional Columns per Extension (Doku) und nicht aus der Datenbank geladen haben und zu dieser Funktionalität zurückkehren möchten, gehen Sie bitte wie folgt vor:

Kopieren Sie den Wert der Global-Property B3P_MON_ADDITIONAL1_KEY zurück in die Global-Property B3P_MON_ADDITIONAL1_VALUE. Verfahren Sie analog für die Properties der Spalten 2, 3 und 4.

Danach werden die Additional Columns in der alten UI wieder per Extension geladen und angezeigt. Falls Sie zusätzlich die neue UI auf das Laden per Extension umschalten möchten, deployen Sie bitte den 2021-Februar Release auf den per Keycloak gesicherten Tomcat-Knoten, welche als Backend für die neue UI dienen. Die Knoten, auf denen die Services (z.B. QueueService) ausgeführt werden, sollten für die Formatumstellung hingegen auf dem 2021-März Release basieren.

Technischer Hintergrund: durch das automatische Customizing-Update wurde der Wert aus der Global-Property B3P_MON_ADDITIONAL1_VALUE in die Global-Property B3P_MON_ADDITIONAL1_KEY kopiert und danach durch den fixen Wert additional1 ersetzt. Diese Änderung ist zu reverten. Hierfür kopieren Sie den Wert der Global-Property B3P_MON_ADDITIONAL1_KEY zurück in die Global-Property B3P_MON_ADDITIONAL1_VALUE und überschreiben somit den Wert additional1. Bitte löschen Sie NICHT die Global-Property B3P_MON_ADDITIONAL1_KEY, da ihre Präsenz sicherstellt, dass das automatische Customizing-Update nicht erneut ausgeführt wird.

NUI-1291 Aktualisierung der Image-Namen

Die Benamung der Images wird vereinheitlicht. Deswegen ändern sich folgende Namen:

  • message -> notification-service
  • user-messages-ui -> notification-ui

Bitte passen Sie die Namen in der docker-compose.yml entsprechend an.

NUI-1414 B2B Encoding im Docker

Das Default B2B Tomcat Encoding im Docker ist nun gemäß BDEW ISO-8859-1. Es kann bei Bedarf über die Umgebungsvariable CATALINA_OPTS überschrieben werden, Beispiel:

ENV CATALINA_OPTS="-Dfile.encoding=<Ihr-Encoding>"

NUI-1475 b2b-basicauth Image

Wir stellen neben dem Image b2b (ein per Keycloak gesicherter Tomcat) nun auch das Image b2b-basicauth bereit. Dieses Image enthält eine B2B, die per BasicAuth abgesichert wird. Das neue Image kann somit bei Bedarf die alten Backend Tomcats ablösen.

Release 2021-Feb

Notwendige Anpassungen

NUI-1356 Additional Columns

Die folgenden Datenbank-Anpassungen sind zwingend auf allen Systemen durchzuführen, selbst wenn keine Additional Columns eingesetzt werden.

Damit zukünftig Filter für Additional Columns in der neuen UI genutzt werden können, wird das Datenbankschema vereinheitlicht. Falls noch nicht passiert, ergänzen Sie die übliche Tabelle der Additional Columns.

Die Skripte für alle Datenbanken sind hier zu finden.

Aktualisieren Sie danach die Datenbank-View b2bbp_data_message_view. Die zugehörigen Skripte finden Sie hier.

Bisher war es möglich, AdditionalColumns entweder aus der Datenbank oder aus einer Extension zu laden. Das Laden der AdditionalColumns aus einer Extension wird ab März in der neuen UI nicht mehr unterstützt. Bitte nutzen Sie stattdessen die Datenbank gemäß unserer Doku. Falls Sie Unterstützung bei der Umkonfiguration benötigen, kommen Sie auf uns zu.

NUI-1274 Volltextsuche

Der letzte Hotfix enthält notwendige Anpassungen an der Datenbank. Bitte führen Sie die Anpassung durch, falls Sie den Hotfix noch nicht eingespielt haben. Sie finden hier die entsprechenden Anpassungen.

Informationen

Die folgenden Punkte dienen der Information. Wenn Sie die aufgelisteten Themen nicht nutzen, müssen Sie nicht tätig werden.

NUI-1316 Mandanten aus Gruppen

Falls Sie die Mandanten nicht direkt den Usern sondern Gruppen zuweisen möchten, ist das folgende Vorgehen anzuwenden (gemäß unser Doku):

Ähnlich wie Rollen können Mandantenattribute Gruppen zugewiesen werden. Das tenants Attribut gilt dann für die User mit entsprechender Gruppe. Somit ist es möglich, dass Mandanten über mehrere Gruppen den Usern zugewiesen werden.

Beispiel: der User Müller kann Nachrichten von Netz & Lief sowie allgemeine Nachrichten sehen, da er selber über das Mandantenattribut tenants=general verfügt und zusätzlich den Gruppen NETZ & LIEF zugeordnet ist, welche jeweils über die Attribute tenants=netz & tenants=lief verfügen.

Für dieses Feature müssen für jede UI im Keycloak Tenant-Mapper die Eigenschaften Multivalued und Aggregate attribute values aktiviert werden.

Tenant-Mapper

NUI-1211 HTTPS mit selbst signierten Zertifikaten

Falls Sie die B2B via HTTPS mit selbst signierten Zertifikaten absichern wollen, können Sie unser Anleitung folgen. Die Zertifikate müssen an den Backends hinterlegt werden.

NUI-106 FSS CRL Button

Falls Sie in der FSS-UI den CRL-Button (Sperrlistendownload) nutzen wollen, gehen Sie wie folgt vor:

Der User benötigt die neue Rolle FSS-Crl um den Button nutzen zu dürfen.

Fall der Fastlane Security Server via keylcoak abgesichert wurde, muss dem b2b-tomcat-war Backend Client die Service Account Role FSS-Crl in keycloak zugeordnet werden damit der Sperrlistendownload erfolgreich ausgeführt werden kann.

Es muss ein B2B-Service zum Sperrlistendownload konfiguriert sein. Weitere Details zur Konfiguration des Service finden Sie hier.

Falls Sie nicht mit Docker arbeiten, muss die nginx.conf der FSS-UI angepasst werden. Ergänzen Sie bitte folgende location und passen Sie dabei die Adresse b2b-tomcat-server an:

location /FSS-UI/api/administration/ {
    proxy_pass   http://<b2b-tomcat-server>/b2bbp-engine/api/administration/;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $host;
    proxy_set_header        X-Real-IP $remote_addr;
    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header        X-Forwarded-Proto $scheme;
    proxy_cache_bypass $http_upgrade;
    proxy_read_timeout 360s;
}

Die locations sind im Abschnitt http { server { aufgelistet.

NUI-1381 CATALINA_OPTS des gedockerten Tomcats konfigurieren

Es ist nun möglich die CATALINA_OPTS des gedockerten b2b Tomcats als Umgebungsvariable zu definieren. Beispiel:

  b2b:
    image: ${NEXUS_ERF}/b2b:2021-02-17
    environment:
      CATALINA_OPTS: "-Dfile.encoding=ISO-8859-1 -Djava.net.preferIPv4Stack=true -Duser.country=DE -Duser.language=de -Dspring.profiles.active=roles-activated -Drevision.info.server.url=http://revision:8080 -Xmx4096m -Xms4096m"

Das Beispiel enthält den Default des Images.

Folgender Eintrag wird benötigt, damit die REST-Endpunkte der B2B abgesichert werden: -Dspring.profiles.active=roles-activated

Folgender Eintrag wird benötigt, damit die B2B mit dem Revision-Service sprechen kann: -Drevision.info.server.url=http://revision:8080

Ports im Docker vereinfachen

Die empfohlene docker-compose.yml enthält nun auch Traefik Konfiguration.

Dank Traefik können alle Microfrontends auf dem gleichen Port laufen. Dadurch wird die Konfiguration & der Zugriff vereinfacht.

NUI-610 Startseite anpassen

Es ist nun möglich das B2B Dashboard durch eine kundenspezifische Startseite zu ersetzen. Die eigene Startseite ist in der system.json unter der Property customDashboardUrl zu ergänzen, Beispiel:

{
  "customDashboardUrl": "http://b2bbp.next-level-help.org/"
}  

Die zugehörige Dokumentation finden Sie hier.

Hotfix 2021-01_1

NUI-1274 Volltextsuche

Für die Volltextsuche wird eine neue Tabelle benötigt. Bitte legen Sie die Tabelle mit Hilfe des beigefügten SQL Scripts an.

Falls es bei Ihnen zu Abbrüchen während der Volltextsuche kommt (besonders bei MSSQL Datenbanken beobachtet), müssen Sie die neue Eigenschaft auxiliarySearchThreshold konfigurieren. Diese steuert, ab welcher Anzahl an Volltextsuchtreffern die Hilfstabelle zum Einsatz kommen soll. Die Hilfstabelle verhindert, dass Datenbankanfragen zu groß werden. Reduzieren Sie den Wert der Eigenschaft, wenn es zu Abbrüchen bei der Volltextsuche kommt. Default ist 30000, für MSSQL empfehlen wir als Wert 2000.

Die Eigenschaft kann als Umgebungsvariable bei einer Docker Installation in der docker-compose.yml gesetzt werden:

  b2b:
    environment:
      AUXILIARY_SEARCH_THRESHOLD: 2000

(Die docker-compose unterstützt für Umgebungsvariablen alternativ auch die Listensyntax. Dabei werden Umgebungsvariablen in der Form - key=value angegeben. Die beiden unterschiedlichen Syntaxen dürfen nicht gleichzeitig verwendet werden.)

Alternativ kann die Eigenschaft bei einer klassischen Serverinstallation ohne Docker in der setenv.sh angegeben werden:

CATALINA_OPTS="... -DauxiliarySearchThreshold=2000"

SQL

POSTGRES:

CREATE TABLE b2bbp.b2bbp_auxiliary_search (
	queryId varchar(100) NOT NULL,
	messageId varchar(100) NOT NULL,
	CONSTRAINT b2bbp_auxiliary_search_pkey PRIMARY KEY (queryid, messageid)
);

ORACLE:

create table b2bbp_auxiliary_search (   
	queryId varchar2(100) not null,   
	messageId varchar2(100) not null,   
	PRIMARY KEY (queryId, messageId)
);

MSSQL:

CREATE TABLE b2bbp_auxiliary_search  (     
	queryId varchar(100) NOT NULL,     
	messageId varchar(100) NOT NULL,     
	PRIMARY KEY (queryId,messageId)  
);

Release 2021-01

Konfigurationsanpassungen

NUI-1219 Customizing Upload Größe

Falls Sie Docker nutzen, wird die folgende Konfiguration automatisch vorgenommen.

Um sicherzustellen, dass auch große Customizings hochgeladen werden können, ist in der nginx.conf der B2B-Admin-UI die Upload-Größe & -Zeit hinreichend groß zu wählen:

	location /B2B-Admin-UI/api/ {
		...
		proxy_read_timeout 360s;
		client_max_body_size 1G;
	}

Informationen

NUI-1197 Connection Pooling Optimierung

Das Datenbank Connection Pooling der Backend Microservices Notification & Revision wurde optimiert. Die Default Poolsize beträgt nun nur noch 2.

Falls Sie die Poolsize manuell anpassen möchten, kann dies über die application.yml wie folgt passieren:

spring:
  datasource:
    hikari:
      maximumPoolSize: 2

NUI-1208 Rollen beim manuellen Versand

Der manuelle Versand benötigt nun nur noch eine Rolle: B2B-ManualMarketCommunication.

Sie können die alte Rolle B2B-Manualforward löschen.

NUI-1114 Extension KEYCLOAK & keycloak.json

Damit die B2B mit einem per Keycloak gesicherten FSS kommunizieren kann, muss Keycloak-Konfiguration hinterlegt werden. Dies geschah bisher über die Extension KEYCLOAK. Ab jetzt wird stattdessn die Konfiguration aus der keycloak.json übernommen. Die Extension wird nur noch als Fallback Lösung genutzt. Die JSON kann direkt aus der Keycloak-Oberfläche exportiert werden.

Wir empfehlen die Extension zu löschen und stattdessen nur noch über die JSON zu arbeiten.

http://b2bbp.next-level-help.org/fss_integrating_fss_and_b2b.html#keycloak-json

Release 17. Dezember 2020

Installation- & Konfigurationsanpassungen

Mandantenfilterung & Portal-UI

Damit die Mandantenfilterung in der B2B-UI genutzt werden kann, muss der Attribute-Mapper für JEDES Frontend im zugehörigen Keycloak Client konfiguriert werden. Der Mapper ist gemäß der üblichen Anleitung anzulegen.

Fix der B2B-Admin-UI API

Falls Sie dockern und weder die gedockerte nginx.conf überschreiben, noch die api.json selbst definieren, ist nichts zu tun.

Für alle anderen gilt:

Der Default-Pfad, über den die B2B-Admin-UI das Revision-Backend anspricht, lautet nun analog zu allen anderen Frontends api/revisionmanager. Entsprechend wurde auch die Default-nginx.conf wie folgt angepasst:

location /B2B-Admin-UI/api/revisionmanager/ {

Dementsprechend müssen sie ihre manuell gepflegte nginx.conf oder api.json an den neuen Standard angleichen.

HTTPS mit selbst signierten Zertifikaten

Falls Sie Ihren Keycloak wie empfohlen per HTTPS absichern, dabei aber selbst signierte Zertifikate nutzen, müssen entsprechend die Zertifikate den Backends zur Verfügung gestellt werden. Unsere Docker-Images bieten nun hierfür eine Hilfestellung an:

Mounten Sie die Zertifikate in den Docker Container. Mounten Sie außerdem ein Script, das beim Boot ausgeführt wird. Dieses Script bereitet die Zertifikate für Java auf. Eine detailierte Anleitung inklusive Script finden Sie in unserer Doku.

Release Anfang Dezember 2020

Installation- & Konfigurationsanpassungen

MpidEditor SecurityRules

Aktuell ist es für den MpidEditor notwendig, die Extension MPID_SECURITY anzulegen. Selbst wenn Sie das optionale Feature SecurityRules nicht nutzen, muss die Extension zumindest mit leerem Inhalt angelegt sein.

Docker-Default-Konfiguration

Unsere Docker-Images für die Frontends bringen default nginx.conf Dateien mit. Diese wurden nun mit NUI-1185 aktualisiert und vereinheitlicht. Wir empfehlen nach Möglichkeit die nginx.conf nicht selber zu pflegen sondern unsere Defaults zu nutzen. Diese greifen automatisch, wenn Sie die Dateien nicht mehr mounten.

Damit die Default-Konfigurationen anwendbar sind, müssen Sie sich an unsere nun definierten Hostname & Port Konventionen (im Docker internen Netzwerk) halten. Wenn Sie den Hostname nicht explizit konfigurieren, entspricht er dem Servicenamen in der docker-compose.yml. Die Port-Konventionen entsprechen den Default-Ports (selbst beim FSS). Konfigurieren Sie diese also nicht um. Eine standard-kompatible docker-compose.yml wird in unserer Doku mitgegeben. Bitte passen Sie die Service-Namen gemäß dem Standard an.

Wir definieren folgende Namenskonventionen für die Hostnamen & Ports:

  • keycloak:8080
  • b2b:8080 (der tomcat)
  • b2b-ui:8080
  • b2b-admin-ui:8080
  • revision:8080
  • revision-ui:8080
  • notification:8080 (bisher auch bekannt als UserMessages)
  • notification-ui:8080
  • index:8080
  • index-ui:8080
  • fss:2222
  • fss-ui:8080
  • portal-ui:8080

RevisionInfo im FSS

Wenn Sie sowohl die RevisionInfo als auch den FSS nutzen, ist es ab diesem Release dank NUI-444 wieder möglich, in der FSS-UI die RevisionInfo anzuzeigen und abzuspeichern. Hierfür muss sowohl in der UI als auch im Backend der Zugriff auf den Revision-Service konfiguriert werden.

Revision im FSS Backend

Im Backend FSS ist die Adresse des Revision-Service in der application.yml anzugeben:

revision:
  info:
    server:
      url: http://revision:8080

Damit das FSS Backend auf den Revision-Service zugreifen darf, müssen außerdem in Keycloak der Access-Type des FSS-Clients auf confidential gestellt und die Service Accounts Enabled werden.

Somit ergibt sich folgende Konfiguration für eine application-secure.yml:

keycloak:
  enabled: true
  auth-server-url: http://my-keycloak-server/auth/
  realm: my-realm
  resource: fss
  credentials:
    secret: xxx
Revision im FSS Frontend

Wenn Sie unserer Docker-Default-Konfiguration folgen, ist nichts weiter zu tun.

Wenn Sie die nginx.conf der FSS-UI selber pflegen, müssen Sie dort folgenden Eintrag ergänzen:

location /api/b2b-revision/revisionmanager {
        proxy_pass   http://revision:8080/revisionmanager;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header        X-Real-IP $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header        X-Forwarded-Proto $scheme;
        proxy_cache_bypass $http_upgrade;
}

FSS-UI Systemname & Farbe

Systemname & Farbe werden für die FSS-UI nun genau wie für alle anderen UIs über die Datei system.json konfiguriert. Wenn Sie die Datei nicht angeben, werden die üblichen Defaultwerte genutzt.

Mounten Sie die Datei wie üblich in das assets/config Verzeichnis. Beim Einsatz von Docker können Sie also wie folgt mounten:

    volumes:
      - system.json:/usr/share/nginx/html/FSS-UI/assets/config/system.json

Docker-User wechseln

Sie können nun selbst in der docker-compose.yml einen User (und Gruppe) angeben, der zum Ausführen der Applikation im Container genutzt wird. Das ist z.B. nützlich, wenn Sie nur bestimmten Usern Schreibzugriff auf das Log-Verzeichnis gewähren möchten. Beispiel:

  b2b:
    image: ${NEXUS}/b2b:2020-12-07
    user: 1000:1000

Tenant General

Wir wiederholen an dieser Stelle nochmal den gleichen Hinweis vom letzten Release:

Falls Sie Nachrichten sehen möchten, die keinem Mandanten zuzuordnen sind (z.b. Protokolle von ausgeführten Schedulern), so muss Ihr User zusätzlich über den neuen tenants Wert general verfügen. Natürlich können diese Nachrichten weiterhin gesehen werden, wenn sie tenants=all gesetzt haben oder gar keine Mandantenfilterung nutzen. Die Werte general & all sind als mandantenübergreifender Zugriff anzusehen.

Optional: Fehlermeldungen aktivieren

Wir empfehlen den Einsatz der Rolle B2B-Errors. Somit werden in der UI oben rechts Fehler aufgelistet. Wenn Sie Tickets bei uns erstellen, geben Sie diese Fehlermeldungen direkt mit an, das erleichtert uns die Fehleranalyse.

Optional: Portal-UI & fremde Adressen

Falls Sie möchten, können Sie auch b2b-fremde Adressen in der Portal-UI auflisten. Weitere Details entnehmen Sie der Doku.

Release 18. November 2020

Installation- & Konfigurationsanpassungen

CodeFlow

Die Frontends wurden vom OAuth ImplicitFlow auf den CodeFlow umgestellt. Deshalb müssen die Frontend-Clients in der Keycloak-Adminoberfläche ebenfalls von ImplicitFlow auf StandardFlow umgestellt werden.

system.json

Alle Frontends können nun über eine neue optionale system.json konfiguriert werden. Diese ist ähnlich wie die keycloak.json im Ordner assets/config zu hinterlegen. Konfiguriert werden können der angezeigte Systemname sowie die Hintergrundfarbe. Außerdem muss das optionale Feature UserMessages nun explizit über diese Datei aktiviert werden. Beispiel:

{
  "systemName": "B2B",
  "backgroundColor": "#008ECC",
  "activateUserMessages": true
}

Die entsprechenden Global Properties sind damit nicht mehr von Relevanz für die NUI.

Ein Farbverlauf wird nicht mehr unterstützt, es muss eine einzige Farbe angegeben werden.

Die Unterstützung der system.json erfolgt für die FSS-UI voraussichtlich mit dem nächsten Release.

Zugriff UserMessages

Alle Frontends laden die UserMessages nun über den Message-Service & nicht mehr über den Tomcat. Entsprechend muss der Message-Service in allen nginx.conf hinterlegt werden. Beispiel für die B2B-UI im Docker:

        location /B2B-UI/api/b2b-user-messages/system-messages {
              proxy_pass   http://message-service:8080/system-messages;
              proxy_http_version 1.1;
              proxy_set_header Upgrade $http_upgrade;
              proxy_set_header Connection "upgrade";
              proxy_set_header Host $host;
              proxy_set_header        X-Real-IP $remote_addr;
              proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_set_header        X-Forwarded-Proto $scheme;
              proxy_cache_bypass $http_upgrade;
        }

Zugriff RevisionInfo

Alle Frontends (B2B-UI & Admin-UI) laden die RevisionInfo nun über den RevisionService und nicht mehr über den Tomcat. Entsprechend muss der RevisionService in der nginx.conf von B2B-UI und Admin-UI hinterlegt werden. (In RevisionUI wurde er vorher schon genutzt.) Beispiel für die B2B-UI im Docker:

        location /B2B-UI/api/revisionmanager/ {
                proxy_pass   		http://revision-service:8080/revisionmanager/;
                proxy_http_version 	1.1;
                proxy_set_header 	Upgrade $http_upgrade;
                proxy_set_header 	Connection "upgrade";
                proxy_set_header 	Host $host;
                proxy_set_header    X-Real-IP $remote_addr;
                proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header    X-Forwarded-Proto $scheme;
                proxy_cache_bypass 	$http_upgrade;
        }

Zugriff Tomcat

Auf Grund der vorherigen Änderungen ist es nun möglich einige Frontends vom Tomcat komplett zu entkoppeln. Der zugehörige Eintrag zum Tomcat-Zugriff in der nginx.conf kann entsprechend entfernt werden. Konkret müssen folgende Frontends nicht mehr auf den Tomcat zugreifen: Portal-UI, RevisionInfo-UI, UserMessages-UI, IndexManagement-UI.

Zeitzone

Achten Sie darauf, auf Ihren Servern die korrekte Zeitzone zu konfigurieren. In der docker-compose können Sie für jeden Service die Zeitzone wie folgt mitgeben:

    environment:
      TZ: Europe/Berlin

Confidential Client Access

Der Client AccessType in der Keycloak-Adminoberfläche für Backends (Tomcat, FSS) ist auf confidential zu setzen. Dies führt dazu, dass innerhalb der keycloak.json ein secret mitgegeben wird. Die anderen Backends (RevisionInfo, UserMessages, Index-Management) sprechen aktuell selber keine weiteren Backends an und können deshalb auf AccessType BearerOnly gestellt werden. Ein Frontend kann das secret nicht schützen, weshalb es beim Frontend keinen Sinn macht, confidential einzustellen. Hier ist stattdessen public zu setzen.

Keycloak Client Tips

Wenn Sie einen neuen Keycloak Client anlegen, sollten Sie als root-url die Adresse des jeweiligen Servers sowie den Port der Application angeben. Die resultierenden Werte für redirect-url & Web Origins können dann übernommen werden.

Tenants Attribut

Das Keycloak-Attribute tenant für den FSS wird ersetzt durch das Attribute tenants welches bereits für die B2B genutzt wird. Bitte passen Sie das Attribute entsprechend an. Falls Ihre Tenant-Konfiguration zwischen B2B & FSS zu unterschiedlich ist, können Sie für den FSS alternativ auch das neue Attribut fss_tenants nutzen.

B2B Tenants werden in der Extension TENANTS aufgelistet, während FSS Tenants in der FSS Tabelle client aufgeführt werden. Wenn beide Listen übereinstimmen, können sich B2B & FSS das Attribut tenants teilen.

Tenant General

Falls Sie Nachrichten sehen möchten, die keinem Mandanten zuzuordnen sind (z.b. Protokolle von ausgeführten Schedulern), so muss ihr User zusätzlich über den neuen tenants Wert general verfügen. Natürlich können diese Nachrichten weiterhin gesehen werden, wenn sie tenants=all gesetzt haben oder gar keine Mandantenfilterung nutzen.

Auf Grund eines Bugs ist es aktuell nicht möglich, das Attribut general völlig allein zu setzen. Es funktioniert nur, wenn mind. ein weiterer Mandant mit angegeben wird. Dieser Bug wird zum nächsten Release behoben.

Rollen

Einige gedoppelte neue Rollen wurden vereinheitlicht. Übrig bleiben:

  • RevisionManager-Read
  • RevisionManager-Write
  • B2B-UserMessages-Read
  • B2B-UserMessages-Write
  • B2B-IndexManagement
  • B2BAdmin-SystemInfo

Aus Keycloak entfernt werden können die Rollen:

  • B2B-RevisionInfo
  • B2BRevision-Read
  • B2BUser-Messages-Write
  • B2BIndexManagement-Read
  • Index-Management
  • B2BIndexManagement-Read
  • B2B-SystemInfo

Entsprechend müssen Sie ggf. die Rollen in der portal-config.json der Portal-UI anpassen.

Damit User die Systemnachrichten als gelesen markieren können, benötigen sie aktuell die Rolle B2B-UserMessages-MarkRead. Diese Rolle wird mit dem nächsten Release nicht mehr benötigt, dann genügt die Rolle B2B-UserMessages-Read.

FSS per Keycloak sichern

Das Absichern des FSS durch Keycloak wird nun zwingend vorausgesetzt, wenn dieser zusammen mit der neuen FSS-UI genutzt werden soll. Hierfür muss in der application.yml das entsprechende Profil aktiviert werden:

spring:
  profiles:
    active: secure

Wie bei den anderen Backends muss in der application.yml der Zugang zu Keycloak konfiguriert werden.

Beachten Sie, dass ein B2B-Knoten, der selber nicht mit Keycloak verbunden ist, einen per Keycloak abgesicherten FSS-Knoten nicht mehr ansprechen kann. Falls Sie solche B2B Knoten verwenden, müssen diese entsprechend auf einen anderen FSS Knoten zugreifen, der nicht per Keycloak gesichert wird. Da dieser FSS Release den Modus ohne Keycloak nicht vollständig unterstützt (ein Bug der zum nächsten Release behoben wird), empfehlen wir in diesem Fall parallel einen FSS-Knoten in alter Version zu betreiben.

FSS & Keycloak Https

Falls Keycloak per HTTPS gesichert ist und falls der FSS genutzt werden soll, muss am FSS (Backend) folgender Parameter ergänzt werden:

JAVA_OPTS=-Djavax.net.ssl.trustStoreType=jks

Portal-UI

Die Installation der Portal-UI ist optional.

Keycloak & application.yml

Beachten Sie, dass aktuell die Backends (RevisionInfo, UserMessages, Index-Management, FSS) ihre Keycloak-Einstellungen ausschließlich über die application.yml und nicht über die keycloak.json steuern.

Tomcat Logging (Docker)

Der gedockerte Tomcat arbeitet mit Gruppe & User 5000 tomcat. Achten Sie darauf, dass der User in das Logverzeichnis schreiben darf. Das B2B-UI Dashboard wird nicht korrekt angezeigt, wenn das Logging nicht funktioniert.

Keycloak Cache

Wir empfehlen nach dem Einspielen des Releases den Keycloak-User-Cache zu leeren. Dies kann über die Keycloak-Adminoberfläche unter den Realm-Settings/Cache durchgeführt werden. Alternativ erfolgt dies automatisch, wenn Keycloak neugestartet wird.

RevisionInfo Backend

Der RevisionInfoServer ist am Tomcat zu konfigurieren. Falls Sie mit Docker arbeiten, geben Sie eine Umgebungsvariable in der docker-compose.yml an:

    environment:
      - REVISION_INFO_SERVER_URL={revision_url}

Falls Sie ohne Docker arbeiten, aktualisieren Sie die tomcat/bin/setenv.sh und ergänzen Sie:

 CATALINA_OPTS = -Drevision.info.server.url={revision_url}

Falls Sie diese Konfiguration nicht oder nicht korrekt vornehmen, wird der Tomcat auf die alte integrierte Revision Lösung zurückgreifen. Diese soll jedoch mittelfristig deaktiviert werden.

keycloak.json im Classpath

Wir empfehlen nun ein Standardverfahren zur Angabe der keycloak.json im Tomcat: bitte hinterlegen/mounten Sie die Datei im Verzeichnis tomcat/conf/keycloak.json. Wie bisher muss dann das Verzeichnis in der b2bbp-engine.xml angegeben werden.

<Context>
  ...
  <Parameter name="keycloak.config.file" value="/usr/local/tomcat/conf/keycloak.json" override="false"/>

Im Docker muss ansonsten nichts getan werden. Bei Installationen ohne Docker muss der Pfad zur Datei noch dem Classpath hinzugefügt werden: in der tomcat/conf/catalina.properties​​​​​​​​​​​​​​​​​ ist der Pfad folgendermaßen zu ergänzen:

common.loader="${​​​​​​​​​​​​​catalina.base}​​​​​​​​​​​​​/lib","${​​​​​​​​​​​​​catalina.base}​​​​​​​​​​​​​/lib/*.jar","${​​​​​​​​​​​​​catalina.home}​​​​​​​​​​​​​/lib","${​​​​​​​​​​​​​catalina.home}​​​​​​​​​​​​​/lib/*.jar","${​​​​​​​Pfad-zur-keycloak.json}​​​​​​​"

Die Angabe des Classpaths ist insbesondere wichtig, wenn der Tomcat auf das Revision-Backend zugreifen soll.

Release 2. November 2020

Beachten Sie, dass dieses Release noch nicht für Produktion bereit ist. Voraussichtlich das nächste Release (bereits Mitte November) wird produktionsbereit sein.

Installation- & Konfigurationsanpassungen

Falls die Frontends im Docker betrieben werden, müssen alle nginx.conf Dateien angepasst werden. (Hintergrund ist, dass nicht mehr der root-User benutzt wird)

...
pid /tmp/nginx.pid;
...
http {
    ...
    server {
        listen 8080;
	...

Die exportierte keycloak.json enthält die konfigurierte clientId (in der Json heißt der zugehörige Key resource). Diese wurde von den Backend-Services (z.B. RevisionInfo-Service) bisher ignoriert und der definierte Standardwert wurde genutzt. Diese Default-Werte wurden teilweise angepasst (vgl. NUI-925). Dafür wird jetzt, falls konfiguriert, der Wert aus der keycloak.json genutzt. Falls Ihre keycloak.json den Key resource noch nicht enthält, müssen Sie ggf. Ihre Konfiguration anpassen. Als Lösung empfehlen wir, die resource zu ergänzen.

Die Portal-UI ist ein neues Feature. Um die Portal-UI zu nutzen muss die portal-config.json konfiguriert werden. Hier müssen die Adressen zu den anderen Microfrontends hinterlegt werden. Umgekehrt muss die Portal-UI von allen anderen UIs erreichbar sein und überall konfiguriert werden (wenn sie benutzt werden soll). Benötigt wird außerdem die neue Rolle B2BPortal-UI. In Keycloak ist ein neuer Client für die Portal-UI zu konfigurieren. Die Keycloak.json Datei ist entsprechend zu hinterlegen. Weitere Details zur Konfiguration der Portal-UI und der portal-config.json finden Sie in der Portal-UI-Doku.

Das IndexManagement ist ein optionales Feature. In der IndexManagement-UI muss die Adresse des IndexManagement-Service hinterlegt werden. Benötigt wird außerdem die neue Rolle B2BIndexManagement-Read. In Keycloak müssen neue Clients für IndexManagement-UI & IndexManagement-Service angelegt werden. Die Keycloak.json Dateien sind entsprechend zu hinterlegen. Konfiguriert wird der Backend-Service über eine application.yml in der die Index-Pfade hinterlegt werden müssen:

search-system:
  vendor: LUCENE2
  search-types:
    FULLTEXT: ../index/full
    ARCHIVE: ../index/archive

Die UserMessages sind ein optionales Feature. In der UserMessages-UI muss die Adresse des UserMessages-Service hinterlegt werden. Benötigt wird außerdem die Rolle B2B-UserMessages-Write. In Keycloak müssen neue Clients angelegt werden für UserMessages-UI & UserMessages-Service. Die Keycloak.json Dateien sind entsprechend zu hinterlegen.

Der UserMessages-Service ist mit der existierenden B2B-Datenbank zu verbinden, er nutzt die existierenden Tabellen für UserMessages. Diese erweitert er automatisch um zwei neue Spalten. Falls Sie dem Service nicht die dafür benötigten Rechte geben, müssen Sie diese Tabellen von Hand anlegen. Konfiguriert wird der Service über eine application.yml innerhalb derer die Datenbank angegeben werden muss:

spring:
  main:
    allow-bean-definition-overriding: true
  jpa:
    hibernate:
      ddl-auto: update
    database-platform: org.hibernate.dialect.PostgreSQLDialect
  datasource:
    url: jdbc:postgresql://b2b-postgres:5432/b2bbp
    username: postgres
    password: password

Postgres

alter table b3p_adm_systemmessages add column messagesubject varchar(255);

alter table b3p_adm_systemmessages add column status varchar(50) default 'ACTIVE';

MSSQL

alter table B3P_ADM_SYSTEMMESSAGES add MESSAGESUBJECT varchar(255);

alter table B3P_ADM_SYSTEMMESSAGES add STATUS varchar(50) DEFAULT 'ACTIVE';

ORACLE

alter table B3P_ADM_SYSTEMMESSAGES add MESSAGESUBJECT varchar(255);

alter table B3P_ADM_SYSTEMMESSAGES add STATUS varchar(50) DEFAULT 'ACTIVE';

Die Dokumentation zur Installation des RevisionInfo Backends finden Sie hier. Die Installation des UserMessage- und des IndexManagement-Backends verläuft größtenteils analog.

Nicht notwendig, aber empfohlen ist die Konfiguration des RevisionInfo Backends innerhalb der B2B im Tomcat. Ist das neue Backend nicht konfiguriert, greift die B2B automatisch auf die existierende alte Implementierung zurück. Zur Konfiguration sind folgende Schritte nötig:

  • ergänzen Sie den Pfad zum Backend in den JavaOpts: JAVA_OPTS=-Drevision.info.server.url=<Die-URL>
  • ergänzen Sie die keycloak.json der B2B im Classpath. Der Classpath kann in der setenv.bat konfiguriert werden: export CLASSPATH=$CLASSPATH:{path-to-keycloak.json-folder}

Release Oktober 2020

Bitte beachten Sie, dass das neue Frontend für den produktiven Einsatz noch nicht bereit ist und zunächst nur auf Testsystem eingespielt werden darf. Der erste produktionsbereite Release ist Mitte November geplant.

Installation- & Konfigurationsanpassungen

  • Die Adresse des Nexus, über den die Docker-Images bezogen werden, hat sich geändert: sie lautet nun:
    • B2B: docker-nob-erf.next-level-apps.com
    • FSS: docker-nob-erp.next-level-apps.com
    • Zugangsdaten erhalten Sie über unseren Support.
  • Mit diesem Release können erstmalig das RevisionInfo Frontend & Backend installiert werden. Die Installationsdoku wird nachgereicht.

  • Falls Sie nginx nutzen und gemäß unserer Doku konfiguriert haben, bitte updaten Sie die nginx.conf gemäß unserer aktualisierten Doku. In der alten Version war es für Nutzer bisher zwingend nötig, am Ende der URL einen Slash anzugeben. Mit der neuen Version ist das nicht mehr nötig.

  • Falls Sie die neue UI ohne Docker im nginx installieren, muss beim Deployment-Update beachtet werden, dass die Dateien im Ordner assets/config (z.B. die keycloak.json) nicht überschrieben werden dürfen. Hierbei kann die nginx.conf helfen: geben Sie hier einen alternativen Pfad zu diesem Ordner an. Die Alternative kann außerhalb des Deployments gelegen sein. Dieses Verfahren wird in der Doku genauer beschrieben.

  • Die Startseite der B2B-Admin-UI erfordert nun die neue Rolle B2BAdmin-Dashboard.

  • Falls die neue UI im nginx betrieben wird, werden manche Bilder nicht angezeigt. Aktuell gibt es hierzu einen Workaround: nachdem Sie die UI deployed haben, kopieren Sie den Ordner assets in den Ordner html/assets. Dies wird mit dem nächsten Release gefixt.

  • Für die Keycloak Passwort-Migration muss die von NLI bereitgestellte b2bbp-hash.jar im Keycloak Deployment hinterlegt werden. (Dies ist im Dockerimage automatisch der Fall.)

Release September 2020

Installation- & Konfigurationsanpassungen

Bitte beachten Sie die folgenden neuen Anpassungen, die mit diesem Release nötig werden:

  • Bei den Frontend Deployments muss die keycloak_config.json durch die Standard keycloak.json, welche aus Keycloak exportiert werden kann, ersetzt werden.
  • Zum Einsatz der neuen Arbeitsvorräte muss eine neue Extension konfiguriert werden. Hierbei unterstützt das Migration-Tool. Weitere Details entnehmen Sie bitte unserer neuen Doku zu den Arbeitsvorräten
  • Es ist das neue Microfrontend Admin-UI zu installieren.
  • Für die neuen Features müssen in Keycloak auch neue Rollen gepflegt werden. Vergleichen Sie hierzu die Rollenübersicht.

Release 1905.1.10

BTOB-5325

Der CCM ProzessMonitor (BPT) wurde auf SearchLayer umgestellt. Der CCM ProzessMonitor (BPT) funktioniert ab sofort nur noch in Verbindung mit einer korrekt konfigurierten SEARCH_LAYER_CONFIGURATION – Extension. Es ist zudem nötig, alle in der Extension B3P_BPT_CONFIGURATION konfigurierten Prozesse auch in der SEARCH_LAYER_CONFIGURATION - Extension zu hinterlegen. Hier ein Beispiel für die nötige Konfiguration in der SEARCH_LAYER_CONFIGURATION am Beispielprozess „DISCONN“:

SEARCH_TYPES= BackendObject_DISCONN,ControlPoint_DISCONN, InstanceId_DISCONN,InstanceOverview_DISCONN
BackendObject_DISCONN_PATH=../bpt/OBJECT_INDEX/DISCONN
ControlPoint_DISCONN_PATH=../bpt/CONTROL_POINT_INDEX/DISCONN
InstanceId_DISCONN_PATH=../bpt/INSTANCE_ID_INDEX/DISCONN
InstanceOverview_DISCONN_PATH= ../bpt/INSTANCE_OVERVIEW_INDEX/DISCONN

Release 1.13.8_1.x

API Anpassung

  • org.b2bbp.service.inbound.scheduled.SchedulerRegisterServiceRepeat wird gelöscht
    • Ersatz: org.b2bbp.service.inbound.scheduled.SchedulerRegisterService
  • Methodensignaturen vom Interface org.b2bbp.service.inbound.scheduled.IArchiveMsg werden angepasst
    • die Methoden werfen keine DocumentExistsException und ExternalMailNotFoundException mehr.
  • org.b2bbp.service.inbound.scheduled.ExternalMailNotFoundException wird gelöscht.
    • Ersatz: org.b2bbp.service.inbound.scheduled.ArchiveMsgException
  • org.b2bbp.service.inbound.scheduled.DocumentExistsException wird gelöscht
    • Ersatz: org.b2bbp.service.inbound.scheduled.ArchiveMsgException

Release 1.13.7_1.x

FSS-74

Es muss folgende Datenbank-Anpassung durchgeführt werden:

ALTER TABLE B2BBP_DATA_REVISION ADD rid VARCHAR(250) DEFAULT '?' NOT NULL;

CREATE INDEX IDX_B2BBP_DATA_REVISION
ON B2BBP_DATA_REVISION (
        RTYPE,
        RID,
        UNIXTIME
);

Falls Sie den von uns empfohlenen RevisionManager nicht nutzen, ist die Tabelle eventuell noch überhaupt nicht angelegt.

Release 1.13.6_3.x

BTOB-4710

Die folgende Anpassung betrifft Sie nur, wenn Sie den org.b2bbp.eai.outbound.WebServiceSenderService nutzen.

Die ServiceProperty REINIT_SERVICE_CONF_FROM_PROPERTIES ist nun per default auf true gestellt. Falls Sie diese Property nicht konfiguriert haben, sollten Sie sie nun explizit auf false setzen, um Ihr bisheriges Verhalten beizubehalten. Wir wählen den Defaultwert true, damit eine Service-Konfiguration eine Konfiguration per Extension überschreiben kann. Dies entspricht unserer typischen Erwartungshaltung an ein Customizing. Wir empfehlen Ihnen, nach Möglichkeit den Default zu nutzen.

View Me   Edit Me