Anbindung der Archivierung an das ImageMaster Archiv

Übersicht

Die Anbindung der Service Archivierung an das ImageMaster-Archiv wird durch den imagemaster-archive-adapter Microservice realisiert.

Die Archivierung bei diesem Archiv erfolgt ohne Archivindex. Somit sind die Suche und die Anzeige der archivierten Nachrichten nicht über die B2B-Oberfläche möglich.

Imagemaster-Archive-Adapter

Der Microservice konsumiert die Nachrichten aus der Persistence Queue, konvertiert sie in das Zielformat und sendet sie an den REST-Endpunkt des ImageMaster.

ImageMaster Archivierung Workflow

Die Konfiguration des Microservices erfolgt über Umgebungsvariablen.

Releases

Der Service wird in den folgenden Versionen als Docker Container unter docker-nob-erp.next-level-apps.com/b2b-aaas-imagemaster-archive-adapter bereitgestellt.

2026-01-16

Ticket Beschreibung
BTOB-13844 Korrektur der Implementierung, da die bisherige Implementierung nicht die Konfiguration der Dateiendungen per Umgebungsvariable erlaubte. Zudem wurden einige Attributnamen korrigiert und ein Default geändert.

2026-01-07

Ticket Beschreibung
BTOB-13844 In der Zielstruktur für den ImageMaster werden nun die Dateiendungen der Anhänge gesetzt. Die Defaults können dabei per Konfiguration überschrieben werden. Das bisherige Konfigurationsformat wurde dabei etwas umstrukturiert.

2025-12-19

Dieses Release sollte zusammen mit dem FSS-Release 2025-12-19 verwendet werden.

Ticket Beschreibung
BTOB-13764 Anpassung an die Korrektur der OpenAPI-Spezifikation des FSS, behebt einen Fehler beim Abruf der zu archivierenden Zertifikate

2025-12-17

Ticket Beschreibung
BTOB-13764 Erweiterung der Archivierung um zusätzliche Attribute für ImageMaster, Bestimmung des documentType anhand der zu archivierenden Nachricht

2025-11-28

Hinweis: mit diesem Release wurde der default Queue-Type für die Consumer-Queue von default auf quorum geändert.

Ticket Beschreibung
BTOB-13670 Erweiterung um Archivierung von Zertifikaten aus dem FSS

2025-10-30

Ticket Beschreibung
BTOB-13471 Initiale Entwicklung

Konfiguration

Für die Minimalkonfiguration müssen folgende Konfigurationsparameter gesetzt sein:

# Imagemaster Archive configuration
imagemaster:
  baseUrl: <ImageMaster API base URL>
  tenant: <tenant name>
  user: <username>
  password: <password>

spring:
  # RabbitMQ configuration
  rabbitmq:
    host: ${RABBITMQ_HOST}
    port: ${RABBITMQ_PORT}
    username: ${RABBITMQ_USER}
    password: ${RABBITMQ_PASSWORD}
  # Security configuration for accessing FSS via keycloak
  security:
    oauth2:
      client:
        registration:
          keycloak:
            authorization-grant-type: "client_credentials"
            scope: "openid"
            client-id: <clientId>
            client-secret: <clientSecret>
        provider:
          keycloak:
            issuer-uri: <keycloak token URI>

# Security server (FSS) configuration
securityServer:
  baseUrl: <FSS API base URL>
  cronSchedule: <Cron String>

Für die Konfiguration der Placeholder siehe Installation.

Weitere optionale Konfigurationen erlauben die Anpassung der Attributnamen für das Zielsystem, die Anpassung der Consumer- und Producer-Queues und ggf. weitere spezifische Konnektivität-Settings wie Connection-Timeouts. Die Spring-Konfigurationen sollten dabei nur mit größter Sorgfals geändert werden, da dies die Verarbeitung eingehender Nachrichten stören kann.

Mögliche Konfigurationsparameter und ihre default-Werte sind wie folgt:

imagemaster:
  mapping:
    messageAttributes:
      messageId: messageId
      referenceId: referenceId
      direction: direction
      started: started
      finished: finished
      formatIn: formatIn
      formatOut: formatOut
      vdewType: vdewType
      vdewVersion: vdewVersion
      state: state
      acknowledgement: acknowledgment
      partner: partner
      sender: sender
      alternativeId: alternativeId
      channelId: channelId
      clearingCode: clearingCode
    certificateAttributes:
      id: id
      serialNumber: serialNumber
      hashId: hashId
      subjectDN: subjectDN
      subjectAlternativeName: subjectAlternativeName
      issuerDN: issuerDN
      signatureAlgorithm: signatureAlgorithm
      signature: signature
      ski: ski
      aki: aki
      validFrom: validFrom
      validTo: validTo
      rsaKeyLength: rsaKeyLength
      usageSignature: usageSignature
      usageEncryption: usageEncryption
      usageCertificateSigning: usageCertificateSigning
      crlUris: crlUris
      createTime: createTime
      sha1Fingerprint: sha1Fingerprint
      md5Fingerprint: md5Fingerprint
      alias: alias
      clientName: clientName
    content:
      fileExtensions:
        AS4_MESSAGE: "bin"
        AS4_MESSAGE_META: "txt"
        AS4_RECEIPT: "xml"
        AS4_RECEIPT_META: "txt"
        API_REQUEST: "json"
        API_REQUEST_META: "txt"
        B3P_BASE_MESSAGE: "edi"
        CERTIFICATE: "pem"
  connectTimeoutSeconds: 10
  readTimeoutSeconds: 5

spring:
  cloud:
    function:
      definition: consumePersistenceQueueArchiveMessage
    stream:
      bindings:
        consumePersistenceQueueArchiveMessage-in-0:
          destination: b2b.archiving.persistence_queue
          group: default
          consumer:
            maxAttempts: 1
            concurrency: 20
        produceSuccessMessage-out-0:
          destination: b2b.archiving.success_queue
          group: default
        produceErrorMessage-out-0:
          destination: b2b.archiving.error_queue
          group: default
      rabbit:
        bindings:
          consumePersistenceQueueArchiveMessage-in-0:
            consumer:
              requeueRejected: true
              republishToDlq: false
              quorum:
                enabled: true
          produceSuccessMessage-out-0:
            producer:
              exchange-type: topic
              quorum:
                enabled: true
          produceErrorMessage-out-0:
            producer:
              exchange-type: topic
              quorum:
                enabled: true
View Me   Edit Me