Skip to content
CAI
Software that uses CAICheck a score

holunda-io/axon-camunda

51.7

Adequate · 21 September 2026

1.4k

lines of production code

Kotlin

primary language

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a library that integrates the Axon Framework with the Camunda BPM engine, enabling bidirectional communication between event-driven architectures and business process management. It provides components for mapping Axon events to Camunda signals and vice versa, along with utilities for correlating events to process instances. The codebase includes a core integration module, annotation support for correlation IDs, and example applications demonstrating travel booking workflows with transactional compensation.

Features

Add @EventCorrelationId annotation and extractor for event correlation IDs

Users can now mark fields or methods with the new @EventCorrelationId annotation to identify the correlation ID of an event. The library provides an extractCorrelationId function that automatically scans an object's properties, fields, and getter methods to find the marked element. The implementation supports inheritance, allowing derived classes to inherit the annotation from base classes, though multiple annotations on the same object will result in an error.

axon-camunda-annotations · high confidence

Add minimal travel agency example with message-based process

A new minimal example demonstrating a message-based travel booking process is added to the examples/travel-agency-minimal directory. This includes the Spring Boot application entry point, a REST controller to initiate the process, configuration for mapping events to commands, and the BPMN 2.0 process definition for handling hotel and flight bookings. The example also includes basic tests to verify deployment and serialization.

examples/travel-agency-compensation, examples/travel-agency-minimal · high confidence

Add travel agency domain models and services for flight and hotel bookings

Introduces new domain models and services for the travel agency example, including the Flight and HotelBooking aggregates with their respective commands, events, and information services. The change also adds Camunda BPMN delegates for booking preparation and compensation recording, along with a Jackson data format configurator to support Kotlin and Java 8 time types in JSON serialization.

examples/travel-agency-common · high confidence

Added HTTP request files for compensation and minimal scenarios

Three new HTTP request files have been added to the http directory: compensation-tx.http, compensation.http, and minimal.http. These files provide pre-configured HTTP POST requests to localhost endpoints (9092, 9091, and 9090 respectively) to test specific booking and compensation workflows, such as triggering failures and verifying compensation logic.

http · high confidence

Added Maven Wrapper configuration

The project now includes a Maven Wrapper, allowing users to build the project with a consistent version of Apache Maven (3.5.2) without requiring a pre-installed Maven environment. This ensures reproducible builds across different development environments.

.mvn · high confidence

Added travel agency compensation example with transactional compensation support

Introduced a new example application in the travel-agency-compensation-tx module that demonstrates a Camunda BPMN process for booking travel (hotels and flights) with transactional compensation. The example includes a REST endpoint to start the process, a configuration class mapping Camunda events to Axon commands, and a payment execution delegate that can trigger compensation. The BPMN process defines a transactional block for booking, with compensation sub-processes to cancel hotel and flight bookings if an error occurs. Tests verify process deployment and object serialization.

examples/travel-agency-compensation-tx · high confidence

Initial project scaffolding and configuration

The repository was initialized with essential build and configuration files, including the Maven wrapper scripts (mvw, mvnw.cmd), an .editorconfig for consistent coding styles, a .gitignore for build artifacts and IDE files, a .travis.yml for CI/CD, and a comprehensive README.md documenting the Axon Camunda library's features and usage.

(repo-wide) · high confidence

Introduce Axon-Camunda integration for bidirectional event and command mapping

Added new components to bridge Axon and Camunda: a configuration class registers an event message handler that maps Axon events to Camunda signals or messages via a factory registry; a process engine plugin and job handler enable asynchronous delivery of these events; and delegates/senders allow Camunda processes to invoke Axon commands. This enables automatic correlation of Axon events to running Camunda process instances and allows BPMN processes to trigger Axon commands.

axon-camunda · high confidence

Dependencies

Initial project structure and dependency management for Axon-Camunda integration

The project is initialized with a Maven multi-module structure, establishing the root \axon-camunda-root\ and its sub-modules: \axon-camunda-annotations\, \axon-camunda\, and \examples\. The root \pom.xml\ defines the build configuration, including Kotlin 1.6.10, Spring Boot 2.5.6, Axon 4.5.5, and Camunda 7.16.0. The \axon-camunda\ module integrates Axon Framework with Camunda BPM, while the \examples\ module provides sample applications (travel agency) with configurable profiles for Camunda Community Edition (CE) and Enterprise Edition (EE).

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 56 → 52 (-4.5)
  • Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 99 → 98 (-0.9)
  • Architecture 100 → 96 (-4.1)
  • Maturity 59 → 59 (+0.0)
  • Readiness 27 → 18 (-8.6)
  • Security 100 → 100 (-0.3)
  • Domain Modelling 100 → 100 (+0.0)
  • Event Sourcing 100 → 100 (+0.0)

Resolved (11)

  • Coverage not included — suite not readable by the collector
  • Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
  • Duplicated block (10 lines × 2) (examples/travel-agency-compensation-tx/src/main/kotlin/io/holunda/axon/camunda/example/travel/compensation/rest/ProcessStarter.kt)
  • Duplicated block (14 lines × 3) (examples/travel-agency-compensation-tx/src/main/kotlin/io/holunda/axon/camunda/example/travel/compensation/process/TravelAgencyConfiguration.kt)
  • Duplicated block (7 lines × 2) (examples/travel-agency-compensation-tx/src/main/kotlin/io/holunda/axon/camunda/example/travel/compensation/process/TravelAgencyConfiguration.kt)
  • No exposed public API
  • Scanner failed to run — not a clean result
  • Test reliability not included
  • The Usage section is cut mid-sentence, so correlating event messages to running process instances and a Bugs/Running order outline are not visible. (README.md)
  • early-stage repository — too few commits for a meaningful bus factor
  • early-stage repository — too little history to judge knowledge freshness

New (16)

  • Dependency hygiene PARTLY measured — Maven/Gradle declarations read, no dependency graph resolved
  • Documentation: no architecture or design documentation (README.md)
  • Documentation: no installation or build instructions (README.md)
  • Duplicated block (11 lines × 2) (examples/travel-agency-compensation-tx/src/main/kotlin/io/holunda/axon/camunda/example/travel/compensation/rest/ProcessStarter.kt)
  • Duplicated block (13–17 lines × 3) (examples/travel-agency-compensation-tx/src/main/kotlin/io/holunda/axon/camunda/example/travel/compensation/process/TravelAgencyConfiguration.kt)
  • Duplicated block (15–20 lines × 2) (examples/travel-agency-compensation-tx/src/main/kotlin/io/holunda/axon/camunda/example/travel/compensation/process/TravelAgencyConfiguration.kt)
  • Duplicated block (16–23 lines × 2) (examples/travel-agency-compensation-tx/src/main/kotlin/io/holunda/axon/camunda/example/travel/compensation/process/TravelAgencyConfiguration.kt)
  • Duplicated block (32–40 lines × 2) (examples/travel-agency-compensation-tx/src/main/kotlin/io/holunda/axon/camunda/example/travel/compensation/process/TravelAgencyConfiguration.kt)
  • Duplicated block (6 lines × 2) (examples/travel-agency-compensation/src/main/kotlin/io/holunda/axon/camunda/example/travel/compensation/process/TravelAgencyConfiguration.kt)
  • FixmeComment (axon-camunda-annotations/src/test/kotlin/io/holunda/axon/camunda/EventCorrelationIdExtractorTest.kt)
  • FixmeComment (axon-camunda-annotations/src/test/kotlin/io/holunda/axon/camunda/EventCorrelationIdExtractorTest.kt)
  • FixmeComment (examples/travel-agency-common/src/test/kotlin/io/holunda/axon/camunda/example/travel/airline/FlightTest.kt)
  • Medium IaC: WD-COMPOSE-0002 (docker-compose.yml)
  • No dependency advisory monitoring
  • Scanner failed to run — not a clean result
  • Scanner failed to run — not a clean result

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

holunda-io/axon-camunda was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 21 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 901b3fc618a8779715ff75cce83924c85600aac5 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-fa71c66cabd8.