holunda-io/axon-camunda
51.7
Adequate · 21 September 2026
1.4k
lines of production code
Kotlin
primary language
4
measurements over time
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.