# ATVANTAGE EDS Configurator

Web-Frontend zur Konfiguration des **External Data Service (EDS)** für IBM Content

Navigator. Das Tool bearbeitet die JSON-Konfigurationsdateien komfortabel über den

Browser und schreibt sie direkt in das konfigurierte Zielverzeichnis auf dem Server:

**`ObjectTypes.json`** – Liste aller Dokumentklassen, für die EDS aktiv ist.

**`<DOKUMENTKLASSENNAME>_PropertyData.json`** – die eigentliche EDS-Konfiguration

  pro Dokumentklasse (Pflichtfelder, Formate, Auswahllisten, abhängige Eigenschaften

  usw.), optional auch als Sprachvariante `<DOKUMENTKLASSENNAME>_PropertyData_<locale>.json`

  (z.B. `_de`, `_ja`, `_pt_BR`).

Der `sample`-Ordner enthält die Original-Beispieldateien von IBM, an denen sich der

unterstützte Funktionsumfang orientiert.

Zusätzlich gibt es den Tab **„Bankverbindungen (SQL)“**: Er pflegt die Werte für ein

DB2-`UPDATE`-Statement, das ein separater Scheduled Task auf dem IBM-Content-Manager-8-

Server ausführt, um IBAN/Bankname/Account Type im Itemtype „Bankstatements“ anhand von

Kontonummer + Währung anzureichern. Das Tool schreibt daraus die `.sql`-Datei, die der

Scheduled Task aufruft.

## Voraussetzungen

– Node.js ≥ 18 (`node -v` prüfen)

## Installation & Start

„`powershell

npm install

npm start

„`

Der Server läuft danach standardmäßig auf `http://localhost:4173` (Port über die

Umgebungsvariable `PORT` änderbar). Im Browser einfach die Adresse öffnen.

## Erste Einrichtung

Beim ersten Start ist noch kein Zielverzeichnis hinterlegt – das Einstellungen-Fenster

öffnet sich automatisch. Dort das Verzeichnis auf dem Server angeben, in dem

`ObjectTypes.json` und die `*_PropertyData.json`-Dateien liegen (bzw. neu angelegt werden

sollen), mit „Prüfen“ testen und „Speichern“. Die Einstellung wird lokal in

`data/config.json` gespeichert und bleibt über Neustarts erhalten.

## Funktionsübersicht

**Dokumentklassen verwalten**: Liste aller vorhandenen `*_PropertyData.json`-Dateien

  bzw. `ObjectTypes.json`-Einträge im Zielverzeichnis, inkl. Hinweis, falls eine Klasse

  nur in `ObjectTypes.json` steht (Datei fehlt noch) oder nur eine Datei existiert

  (aber EDS nicht aktiviert ist).

**Neue Dokumentklasse anlegen**: Name eingeben (nur Buchstaben, Ziffern, `.`, `_`, `-`

  – identisch zur EDS-Namenskonvention), optional direkt in `ObjectTypes.json`

  eintragen lassen.

**Eigenschaften (Properties) bearbeiten**: links eine schlanke Liste aller

  Eigenschaftsnamen (mit Filter-Suchfeld), rechts die volle Konfiguration der gerade

  ausgewählten Eigenschaft – `required`, `hidden`, `displayMode`, `label`, `value`,

  `initialValue`, `maxLength`, `format` / `formatDescription`, `validateAs`,

  `timestamp` sowie eine `choiceList` mit beliebig vielen Werten (inkl.

  Mehrfach-Einfügen per Copy&Paste). So bleibt auch eine Dokumentklasse mit sehr vielen

  Eigenschaften übersichtlich, statt einer langen Kartenliste zum Durchscrollen.

  Über „+ Eigenschaft hinzufügen“ neu angelegte Eigenschaften erscheinen oben in der

  Liste und werden direkt zum Bearbeiten ausgewählt.

**Abhängige Eigenschaften (`dependentOn` / `dependentValue`)**: eine Eigenschaft kann

  mehrere Varianten haben, die jeweils nur greifen, wenn eine andere Eigenschaft einen

  bestimmten Wert hat (wie in `Region` → `BranchOffice` in den Beispieldateien). Das

  Flag `hasDependentProperties` wird beim Speichern automatisch berechnet.

**Sprachvarianten**: pro Dokumentklasse können zusätzlich lokalisierte Dateien

  (`_PropertyData_<locale>.json`) angelegt und bearbeitet werden.

**JSON-Vorschau**: zeigt vor dem Speichern exakt den Inhalt, der geschrieben wird.

**Backups**: vor jedem Überschreiben/Löschen einer Datei wird automatisch eine Kopie

  in `<Zielverzeichnis>/_eds_builder_backups/` abgelegt.

### Tab „Bankverbindungen (SQL)“

**Einstellungen**: Tabellenname (z.B. `BANKSTATEMENTS001`) und vollständiger Pfad zur

  `.sql`-Ausgabedatei, die der Scheduled Task ausführt.

**Tabellarische Bearbeitung**: pro Bankverbindung Kontonummer, IBAN, Bankname,

  Account Type und Währung. Über „+ Zeile“ neu angelegte Zeilen erscheinen oben in der

  Tabelle (kein Scrollen nötig, um sie zu finden). Die Kombination aus Kontonummer +

  Währung muss eindeutig sein (sonst würde das generierte SQL beim Ausführen

  fehlschlagen) – doppelte Zeilen werden rot markiert und blockieren das Speichern.

**Mehrfach-Import**: Zeilen als `Kontonummer;IBAN;Bankname;AccountType;Währung` (oder

  Tab-getrennt, z.B. direkt aus Excel eingefügt) auf einmal einfügen.

**Import aus bestehendem SQL-Skript**: das komplette bisherige `UPDATE`-Statement

  einfügen – die Wertetupel werden automatisch erkannt und als Zeilen übernommen

  (praktisch für die einmalige Migration der aktuellen Werte in dieses Tool).

**Speichern & SQL schreiben**: erzeugt das komplette `UPDATE`-Statement neu (inkl.

  korrektem SQL-Escaping von Anführungszeichen) und schreibt es an den konfigurierten

  Pfad – mit automatischem Backup der vorherigen Version.

## Deployment-Paket für das Zielsystem

Für den produktiven Server liegt ein startfertiges ZIP bei:

**`atvantage-eds-configurator-package.zip`** (bereits inkl. `node_modules` — auf dem

Zielsystem ist **kein `npm install` mehr nötig**, einzige Voraussetzung ist eine

installierte Node.js-Laufzeit, Version 18 oder neuer).

**Vorgehen auf dem Zielsystem:**

1. `atvantage-eds-configurator-package.zip` auf den Server kopieren und in einen

   beliebigen Ordner entpacken (kompletten Ordnerinhalt behalten).

2. **Windows**: `start.bat` doppelklicken (öffnet automatisch den Browser auf

   `http://localhost:4173`). Der Server läuft in einem eigenen Konsolenfenster

   („ATVANTAGE EDS Configurator“) — zum Beenden dieses Fenster schließen oder Strg+C.

   **Linux/macOS**: `./start.sh` ausführen.

3. Beim ersten Start ist noch kein Zielverzeichnis für die EDS-JSON-Dateien

   hinterlegt — der Einstellungsdialog öffnet sich automatisch, dort den Pfad auf dem

   Zielsystem eintragen (siehe „Erste Einrichtung“ oben).

Ein anderer Port lässt sich per Umgebungsvariable `PORT` vor dem Start setzen (in der

`start.bat` z.B. `set PORT=8080` vor der `node server.js`-Zeile ergänzen).

## Als Windows-Dienst betreiben

Statt `start.bat` (offenes Konsolenfenster, muss nach Anmeldung manuell gestartet

werden) kann die Anwendung auch als richtiger **Windows-Dienst** laufen: startet

automatisch mit Windows, läuft im Hintergrund ohne offenes Fenster, wird bei einem

Absturz automatisch neu gestartet.

**Voraussetzung:** Administratorrechte auf dem Zielsystem (Windows-Dienste lassen sich

nur mit erhöhten Rechten anlegen).

**Installieren:**

1. `install-service.bat` **als Administrator** ausführen (Rechtsklick →

   „Als Administrator ausführen“).

2. Der Dienst „ATVANTAGE EDS Configurator“ wird angelegt, gestartet und ist danach unter

   „Dienste“ (`services.msc`) sichtbar sowie unter `http://localhost:4173/` erreichbar.

Anderer Port: vor der Installation in derselben Konsole `set SERVICE_PORT=8080` setzen

und danach `install-service.bat` ausführen.

**Bedienen (nach der Installation):** über `services.msc`, oder auf der Kommandozeile

(als Administrator):

„`powershell

net start „ATVANTAGE EDS Configurator“

net stop „ATVANTAGE EDS Configurator“

„`

**Logs:** Der Installationsprozess legt einen Unterordner `daemon\` an, der die

stdout-/stderr-Logs des Dienstes sowie den WinSW-Wrapper-Log enthält – hilfreich zur

Fehlersuche, falls der Dienst nicht startet.

**Deinstallieren:** `uninstall-service.bat` **als Administrator** ausführen. Entfernt

nur die Dienst-Registrierung und den `daemon`-Ordner, nicht die Anwendungsdateien

selbst.

**Wichtig:** Der Ordner sollte nach der Installation nicht mehr verschoben werden (der

Pfad zu `server.js` ist in den generierten Dienst-Dateien fest hinterlegt). Falls doch

nötig: zuerst `uninstall-service.bat`, dann verschieben, dann `install-service.bat`

erneut ausführen.

Technisch nutzt das Ganze das npm-Paket `node-windows` (bereits in `node_modules`

enthalten, kein separater Download nötig), das intern einen WinSW-basierten

Wrapper-Dienst erzeugt.

Das Paket wird über `build-package.ps1` erzeugt (im Quellprojekt, nicht im Paket

selbst enthalten) und lässt sich bei Codeänderungen jederzeit neu bauen:

„`powershell

.\build-package.ps1

„`

## Sicherheitshinweis

Das Tool hat **keine Anmeldung/Zugriffskontrolle** – wer die URL erreichen kann, kann

lesen und schreiben, ohne sich auszuweisen. Der Server schreibt außerdem mit den

Rechten des Node-Prozesses direkt in ein Verzeichnis auf dem Server. Das Tool ist

ausschließlich für den Betrieb in einem vertrauenswürdigen internen Netz gedacht

(zusätzlich z.B. hinter VPN oder Reverse Proxy mit eigener Zugriffskontrolle) – nicht

ohne weitere Absicherung im offenen Internet oder einem gemeinsam genutzten Netzsegment

exponieren.