Skip to main content

Bond Issuance Service

Service Type: Deployable backend service Language: Kotlin / Micronaut Database: PostgreSQL Messaging: Apache Kafka External Integrations: Company Service, DEUSS Core Registry Service, external validator/distributor API, S3-compatible storage Status: Implemented and operational

Summary & Purpose

whitelabel/bond-issuance-service manages bond issuance drafts before they are published as on-chain bonds. It supports draft preparation, document and marketing asset management, external validation, partner workflows, synchronization with DEUSS Core, and bond publication processing.

Business Responsibilities

  • Create, update, retrieve, and delete bond issuance drafts.
  • Support partial draft updates and auto-save workflows.
  • Manage issuance draft states.
  • Manage issuance documents.
  • Manage marketing assets.
  • Support partner document and asset uploads.
  • Submit issuance data for external validation.
  • Receive validator reviews.
  • Process ISIN assignment results.
  • Synchronize issuance drafts with DEUSS Core.
  • Initiate bond publication through DEUSS Core.
  • Track asynchronous DEUSS Core publication operations.
  • Provide published issuance files and marketplace assets.
  • Maintain audit information for administrative changes.
  • Remove local issuance data when a company is deleted.

Owned Data

The service owns:

  • Bond issuance drafts
  • Issuance metadata and state
  • Draft document metadata
  • Draft document upload records
  • Marketing asset metadata
  • Marketing asset upload records
  • Issuance validation responses
  • DEUSS Core publication operation state
  • Issuer approval outbox records
  • Local company references used by issuance drafts Metadata is stored in PostgreSQL. Documents and marketing assets are stored in S3-compatible object storage.

Interfaces

Inbound Interfaces

REST API

  • Create, update, list, and delete issuance drafts.
  • Retrieve drafts visible to the authenticated user.
  • Manage issuance documents.
  • Manage marketing assets.
  • Submit issuance validation requests.
  • Retrieve validation results.
  • Access published issuance files.
  • Access marketplace marketing assets.

Partner REST API

  • Submit validator reviews.
  • Update ISIN information.
  • Register document uploads.
  • Upload document files.
  • Download partner documents.
  • Delete partner documents.
  • Manage partner marketing assets.

Internal REST API

  • Delete all issuance drafts belonging to a company.
  • Provide issuance draft information to the Indexer.

Scheduled Jobs

  • Synchronize issuance drafts with DEUSS Core.
  • Poll asynchronous DEUSS Core publication operations.
  • Clean up local company data.
  • Propagate approved issuer information.

Outbound Interfaces

  • company-service
    • Provides company and employee authorization context.
  • DEUSS Core registry-service
    • Creates and updates bond drafts.
    • Registers and uploads bond documents.
    • Registers and uploads marketing assets.
    • Publishes bonds.
    • Provides asynchronous operation status.
  • External validator or distributor API
    • Validates issuance data and receives partner reviews.
  • S3-compatible storage
    • Stores issuance documents and marketing assets.
  • Kafka
    • Publishes bond-related notification events.

Kafka Producers & Consumers

Producers

  • NotificationEvents.CREATED
    • Publishes bond-related notification events for the Notification Service.

Consumers

No Kafka consumers were verified in the inspected application source.

External Integrations

Company Service

Provides company information and employee authorization context for issuance operations.

DEUSS Core Registry Service

Performs downstream bond draft registration, file handling, publication, and blockchain-oriented operations.

External Validator or Distributor API

Processes bond issuance validation and returns validation or review results.

PostgreSQL

Stores issuance drafts, document metadata, marketing asset metadata, validation results, and synchronization state.

S3-Compatible Object Storage

Stores issuance documents and marketing assets.

Kafka

Publishes bond-related notification events consumed by the Notification Service.

Business Rules

  • Issuance drafts are initially created in the DRAFT state.
  • Drafts can be partially updated to support auto-save workflows.
  • Draft deletion is restricted according to the current issuance state.
  • Partner file uploads use a registration step followed by binary content upload.
  • Validator reviews and ISIN updates are handled through dedicated partner endpoints.
  • Eligible drafts are synchronized with CORE asynchronously.
  • CORE publication operations are tracked and polled until completion.
  • Company cleanup is possible only when the related issuance drafts are in a deletable state.

Processing & Error Handling

  • Draft synchronization with DEUSS Core is performed by scheduled processing.
  • Failed synchronization attempts remain available for later retry.
  • CORE publication operations are tracked through local operation records.
  • Partner and external validator interactions use dedicated authentication.
  • Service-to-service calls use generated clients with configured retry and circuit-breaker behavior.
  • Optional company cleanup runs during application startup when enabled.
  • File metadata and upload state are persisted separately from file content.

Observability

  • Uses the common DEUSS logging framework.
  • Scheduled synchronization and publication jobs log their processing.
  • DEUSS Core communication and asynchronous operation handling are logged.
  • Validation and partner-processing failures are surfaced through API responses and persisted workflow state.
  • No dedicated metrics, tracing, or alerting configuration was verified.

Relationships to Other Components

  • company-service provides company and employee context.
  • DEUSS Core registry-service performs downstream bond publication and blockchain-related operations.
  • External validators or distributors review bond issuance data.
  • notification-service consumes bond-related notification events.
  • S3-compatible storage contains issuance documents and marketing assets.
  • The Indexer can retrieve issuance draft information through the internal API.

Deployment Topology

  • Independent Kotlin/Micronaut application.
  • Includes a separate domain module for bond issuance domain concepts.
  • Runs as a REST service and Kafka producer.
  • Owns a PostgreSQL database.
  • Uses JPA/Hibernate and Flyway.
  • Uses S3-compatible object storage.
  • Runs scheduled synchronization and publication-processing jobs.
  • Uses generated REST clients for Company Service, CORE Registry Service, and validator integrations.

Architecture Notes & Inconsistencies

  • The service owns the pre-publication bond issuance workflow.
  • Blockchain-oriented publication is delegated to DEUSS Core registry-service.
  • The README describes a direct Indexer dependency, but a current direct Indexer client was not verified in the inspected build configuration or client packages.
  • Partner APIs use dedicated authentication and are separated from normal user-facing APIs.
  • The service combines issuance drafting, file management, validation coordination, and DEUSS Core synchronization within one deployable component.

Source References

  • whitelabel/bond-issuance-service/src/main/kotlin/cz/deuss/bondissuanceservice/controller/
  • whitelabel/bond-issuance-service/src/main/kotlin/cz/deuss/bondissuanceservice/database/model/
  • whitelabel/bond-issuance-service/src/main/kotlin/cz/deuss/bondissuanceservice/client/core/RegistryServiceBondClient.kt
  • whitelabel/bond-issuance-service/src/main/kotlin/cz/deuss/bondissuanceservice/client/
  • whitelabel/bond-issuance-service/src/main/kotlin/cz/deuss/bondissuanceservice/job/core/
  • whitelabel/bond-issuance-service/src/main/kotlin/cz/deuss/bondissuanceservice/kafka/BondNotificationEventsProducer.kt
  • whitelabel/bond-issuance-service/src/main/resources/application.yaml
  • whitelabel/bond-issuance-service/src/main/resources/db/migration/
  • whitelabel/bond-issuance-service/domain/src/main/kotlin/
  • api-specifications/src/main/resources/whitelabel/bond-issuance-service/public/
  • api-specifications/src/main/resources/whitelabel/bond-issuance-service/internal/
  • whitelabel/bond-issuance-service/README.md