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.

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:
          securityserver:
            client-id: <clientId>
            client-secret: <clientSecret>
        provider:
          securityserver:
            token-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:

ab Version 2025-11-28

imagemaster:
  messageAttributeMapping:
    documentType: MARC_Marktkommunikation
    messageId: MARC_Marktkommunikation.messageId
    referenceId: MARC_Marktkommunikation.referenceId
    direction: MARC_Marktkommunikation.direction
    started: MARC_Marktkommunikation.started
    finished: MARC_Marktkommunikation.finished
    formatIn: MARC_Marktkommunikation.formatIn
    formatOut: MARC_Marktkommunikation.formatOut
    vdewType: MARC_Marktkommunikation.vdewType
    vdewVersion: MARC_Marktkommunikation.vdewVersion
    state: MARC_Marktkommunikation.state
    acknowledgement: MARC_Marktkommunikation.acknowledgment
    partner: MARC_Marktkommunikation.partner
    sender: MARC_Marktkommunikation.sender
    correlationId: MARC_Marktkommunikation.correlationId
    alternativeId: MARC_Marktkommunikation.alternativeId
    channelId: MARC_Marktkommunikation.channelId
    clearingCode: MARC_Marktkommunikation.clearingCode
  certificateAttributeMapping:
    documentType: MARC_Zertifikat
    id: MARC_Zertifikat.id
    serialNumber: MARC_Zertifikat.serialNumber
    hashId: MARC_Zertifikat.hashId
    subjectDN: MARC_Zertifikat.subjectDN
    subjectAlternativeName: MARC_Zertifikat.subjectAlternativeName
    issuerDN: MARC_Zertifikat.issuerDN
    signatureAlgorithm: MARC_Zertifikat.signatureAlgorithm
    signature: MARC_Zertifikat.signature
    ski: MARC_Zertifikat.ski
    aki: MARC_Zertifikat.aki
    validFrom: MARC_Zertifikat.validFrom
    validTo: MARC_Zertifikat.validTo
    rsaKeyLength: MARC_Zertifikat.rsaKeyLength
    usageSignature: MARC_Zertifikat.usageSignature
    usageEncryption: MARC_Zertifikat.usageEncryption
    usageCertificateSigning: MARC_Zertifikat.usageCertificateSigning
    crlUris: MARC_Zertifikat.crlUris
    createTime: MARC_Zertifikat.createTime
    sha1Fingerprint: MARC_Zertifikat.sha1Fingerprint
    md5Fingerprint: MARC_Zertifikat.md5Fingerprint
    alias: MARC_Zertifikat.alias
    clientName: MARC_Zertifikat.clientName
  connectTimeoutSeconds: 10
  readTimeoutSeconds: 5

queues:
  consumer: persistence_queue
  producer:
    success: success_queue
    error: error_queue

spring:
  cloud:
    function:
      definition: consumePersistenceQueueArchiveMessage
    stream:
      bindings:
        consumePersistenceQueueArchiveMessage-in-0:
          destination: ${queues.consumer}
          group: default
          consumer:
            maxAttempts: 1
      rabbit:
        bindings:
          consumePersistenceQueueArchiveMessage-in-0:
            consumer:
              requeueRejected: true
              republishToDlq: false
              quorum:
                enabled: true
  security:
    oauth2:
      client:
        registration:
          securityserver:
            authorization-grant-type: client_credentials
            scope: openid

Version 2025-10-30

imagemaster:
  attributeNames:
    messageId: MARC_Marktkommunikation.messageId
    referenceId: MARC_Marktkommunikation.referenceId
    direction: MARC_Marktkommunikation.direction
    started: MARC_Marktkommunikation.started
    finished: MARC_Marktkommunikation.finished
    formatIn: MARC_Marktkommunikation.formatIn
    formatOut: MARC_Marktkommunikation.formatOut
    vdewType: MARC_Marktkommunikation.vdewType
    vdewVersion: MARC_Marktkommunikation.vdewVersion
    state: MARC_Marktkommunikation.state
    acknowledgement: MARC_Marktkommunikation.acknowledgment
    partner: MARC_Marktkommunikation.partner
    sender: MARC_Marktkommunikation.sender
    correlationId: MARC_Marktkommunikation.correlationId
    alternativeId: MARC_Marktkommunikation.alternativeId
    channelId: MARC_Marktkommunikation.channelId
    clearingCode: MARC_Marktkommunikation.clearingCode
  connectTimeoutSeconds: 10
  readTimeoutSeconds: 5

queues:
  consumer: persistence_queue
  producer:
    success: success_queue
    error: error_queue

spring:
  cloud:
    function:
      definition: consumePersistenceQueueArchiveMessage
    stream:
      bindings:
        consumePersistenceQueueArchiveMessage-in-0:
          destination: ${queues.consumer}
          group: default
          consumer:
            maxAttempts: 1
      rabbit:
        bindings:
          consumePersistenceQueueArchiveMessage-in-0:
            consumer:
              requeueRejected: true
              republishToDlq: false
View Me   Edit Me