Axon and Axoniq Framework - Release 5.2.0

We are glad to announce that we’ve released Axon and Axoniq Framework version 5.2.0 on July 9, 2026. This release contains:

Axon Framework

:star: Features

  • feat(eventsourcing): EventStoreTransaction - allow overriding AppendCondition calculated from sourcing (#4291, PR #4295, by @MateuszNaKodach)
  • Add annotated and declarative handler interceptor support for events, commands, and queries (#3485, PR #4515, by @abuijze)
  • Add exception handler support for command, event, and query handling components (#3062, PR #4520, by @abuijze)
  • Configure application wide Clock (#3083, PR #4592, by @jangalinski)
  • Message Transformation / Upcasting - Demo (#137, PR #4624, by @laura-devriendt-lemon)
  • Add collect, flatMap and mapMulti methods to MessageStream API (#4627, by @hjohn)
  • Message Transformation - Sourcing Criteria widening for sourcing (#137, PR #4638, by @laura-devriendt-lemon)
  • Message Transformation - Rename support (phase 4) (#137, PR #4642, by @laura-devriendt-lemon)
  • Message Transformation - Drop / Filter support (phase 5) (#137, PR #4648, by @laura-devriendt-lemon)
  • Decorate CommandBus in RetryingCommandBus when a RetryScheduler is present (#4652, PR #4662, by @smcvb)
  • Merge Message Transformation support (#137, PR #4689, by @smcvb)
  • chore(tracing): remove OpenTelemetry extension (will be moved to Axoniq Framework) (#3594, PR #4720, by @MateuszNaKodach)

:chart_increasing: Enhancements

  • Fix fromFuture to return Empty stream when future completes with null (#4516, by @abuijze)
  • Cleanup/remove deprecated modules (#4524, by @abuijze)
  • phase 0 Replace thenRun + joinAndUnwrap with thenCompose in Coordinator#abortWorkPackage (#3773, PR #4527, by @laura-devriendt-lemon)
  • phase 1 Make ClaimTask, SplitTask and MergeTask fully async (#3773, PR #4530, by @laura-devriendt-lemon)
  • phase 2 remove joinAndUnwrap from workPackage and coordinator (#3773, PR #4536, by @laura-devriendt-lemon)
  • phase 3 Remove joinAndUnwrap from PooledStreamingEventProcessor (#3773, PR #4540, by @laura-devriendt-lemon)
  • Document PooledStreamingEventProcessor lifecycle and start() … (#3773, PR #4541, by @laura-devriendt-lemon)
  • Replace joinunwrap usage from PooledStreamingEventProcessor (#3773, PR #4552, by @laura-devriendt-lemon)
  • Return failed futures from InMemoryTokenStore (#4546, PR #4559, by @wadhwaroh-lang)
  • Account for async snapshot storage in SnapshottingEntityLifecycleHandlerTestSuite (#4595, by @hatzlj)
  • fix(messaging): token store intit loses spring transaction pooled streaming processor (#4632, PR #4645, by @laura-devriendt-lemon)
  • Added a DCB skill based on AF API, AS API, and theoretical resources available (#4654, by @m1l4n54v1c)
  • Message Transformation - Semantic matching docs + demo (#137, PR #4660, by @laura-devriendt-lemon)
  • Disable sonar for builds (#4680, by @hatzlj)
  • Surface Errors from UnitOfWork actions instead of hanging silently (#4697, by @MateuszNaKodach)
  • [Port] fix(migration): honor skipTests property (#4700, by @MateuszNaKodach)
  • Migrate routingKey to @Command annotations (#4704, by @klauss42)
  • Adjust generics of registerIfNotPresent to match register (#4717, by @hjohn)
  • Allow EventProcessorDefinitions to supply an event source for a subscribing processor (#4721, PR #4722, by @hatzlj)
  • AF4 MultiSourceLegacyToken classname compatibility fix (#4633, PR #4724, by @laura-devriendt-lemon)

:beetle: Bug Fixes

  • Port 5.1.x to main (#4399, by @hatzlj)
  • Port post 5.1.0-RC3 release to main (#4452, by @smcvb)
  • Port 5.1.x to main (#4472, by @hatzlj)
  • Fix documentation build (#4547, by @abuijze)
  • Fix duplicate command handler registration when subtype overrides handler (#3934, PR #4550, by @hatzlj)
  • revert main to state before 4060 (#4060, PR #4557, by @laura-devriendt-lemon)
  • Port: axon 5.1.x → main (#4572, by @hatzlj)
  • Merge branch ‘axon-5.1.x’ (#4590, by @hjohn)
  • Validate ProcessingContext is committed in SimpleQueryBus on emitUpdate, completeSubscriptions, and completeSubscriptionsExceptionally invocations (#4594, PR #4602, by @smcvb)
  • Port/axon 5.1.x main (#4617, by @hatzlj)
  • Avoid costly stack walk on every task start in AxonTimeLimitedTask (#4635, by @hjohn)
  • Introduce the EventTypeResolver for EventStorageEngines | Allows for default versions (#4625, PR #4665, by @smcvb)
  • Register the micrometer MetricsConfigurationEnhancer only once when using Spring Boot (#4634, PR #4666, by @smcvb)
  • Propagate all entry resources to per-event ProcessingContext (#4647, PR #4669, by @hatzlj)
  • [Port] fix(messaging): disposing a Flux does not close the underlying subscription query (#4678, by @smcvb)
  • AggregateBasedJpaEventStorageEngine#stream loops until StreamingCondition matching events are retrieved (#4643, PR #4684, by @smcvb)
  • [Port] Align QualifiedName#(Class) outcome with annotated approach for nested classes (#4685, by @smcvb)
  • Re-Add JdbcTokenstore to the streaming event processors reference (#4692, by @hatzlj)
  • Skip interceptor members when applying @SequencingPolicy (#4705, PR #4706, by @abuijze)
  • fix(messaging): preserve enhancers in UnitOfWorkConfiguration#forcedSameThreadInvocation (#4714, by @MateuszNaKodach)
  • Align snapshotting annotation with documentation (#4715, by @hjohn)
  • Wrap ESE when it is not the same instance providing SnapshotStore (#4716, by @hjohn)
  • AF5 application cannot start with TokenStore containing AF4 tokens bug (#4633, PR #4718, by @laura-devriendt-lemon)
  • SpringComponentRegistry - Handle missing Spring components adhering to the ComponentRegistry contract (#4719, by @MateuszNaKodach)

:open_book: Documentation

  • Repository Transfer notice - main (#4416, by @smcvb)
  • Migration Path AI instructions (#4479, by @smcvb)
  • Add Note for change in Jackson 3 converter default behaviour (#4414, PR #4496, by @hatzlj)
  • Fix Note for change in Jackson 3 converter default behaviour (#4414, PR #4501, by @hatzlj)
  • Restructure Release Notes navigation in framework reference (#4503, by @hatzlj)
  • Relocate the Kotlin module description to include it in the correct section (#4506, by @hatzlj)
  • Migration path - Data Protection - Reference to path in other repository (#28, PR #4525, by @smcvb)
  • Include Axoniq Feature Indicator in navigation (#4529, by @hatzlj)
  • docs: fix Antora build warnings and Vale style suggestions (#4532, by @abuijze)
  • Align completeness between old Aggregate and new Entity description (#4060, PR #4562, by @laura-devriendt-lemon)
  • Add agent hints for branch naming and commit messages (#4569, by @hatzlj)
  • Update Documentation readme and local build/preview script (#4063, PR #4582, by @hatzlj)
  • Integrate “Framework Comparison” page into Navigation and Introduction (#4597, by @smcvb)
  • Adjust Subscribable Eventsource API and move reference documentation for persistent streams (#4616, by @hatzlj)
  • Message Transformation / Upcasting - Documentation (#137, PR #4629, by @laura-devriendt-lemon)
  • Adjust documentation on event processor assignment (#4646, by @hatzlj)
  • move Event Transformation reference docs to Axoniq Framework (#137, PR #4664, by @laura-devriendt-lemon)
  • Add AF 5.1.2 Release Notes (#4687, by @smcvb)
  • Re-Add JdbcTokenstore to the streaming event processors reference (#4690, by @hatzlj)
  • docs: change DLQ migration docs to use DeadLetterQueueConfiguration extension API (#4696, by @MateuszNaKodach)
  • Document Axon Framework 4 snapshot reuse limitation (#4640, PR #4725, by @laura-devriendt-lemon)

:heart: Contributors

A heartfelt thank you to all contributors who worked on this section:

Axoniq Framework

:star: Features

  • Migrate core persistent streams API from AF4 (PR #135, by @hatzlj)
  • Enhancement/137/spec message transformator (PR #138, by @laura-devriendt-lemon)
  • Message Transformation / Upcasting - Specification (#137, PR #143, by @laura-devriendt-lemon)
  • Message Transformation / Upcasting - Module setup (phase 1) (#137, PR #151, by @laura-devriendt-lemon)
  • Message Transformation / Upcasting - SPI foundation (phase 2) (#137, PR #152, by @laura-devriendt-lemon)
  • Message Transformation - Transform Chain and Event Store Decoration (phase 3) (#137, PR #153, by @laura-devriendt-lemon)
  • Message Transformation - Sourcing Criteria widening for sourcing (#137, PR #160, by @laura-devriendt-lemon)
  • Implement SnapshotStore for PostgresqlEventStorageEngine (PR #163, by @hjohn)
  • Message Transformation - Rename support (phase 4) (#137, PR #164, by @laura-devriendt-lemon)
  • Message Transformation - Drop / Filter support (phase 5) (#137, PR #167, by @laura-devriendt-lemon)
  • Merge Message Transformation support (#137, PR #193, by @smcvb)
  • Persistent Streams Autoconfiguration (#123, PR #196, by @hatzlj)

:chart_increasing: Enhancements

  • Include the data protection module in the axoniq framework bom for convenience (PR #130, by @hatzlj)
  • fix the slack-release-notification.yml (PR #141, by @hatzlj)
  • build: unified apidocs profile and publish workflow (PR #156, by @abuijze)
  • Remove _archive folder (PR #166, by @hjohn)
  • Message Transformation - Semantic matching: exact precedence + from(List) (phase 6) (#137, PR #178, by @laura-devriendt-lemon)
  • Disable sonar for builds (PR #187, by @hatzlj)
  • Improve flaky integration tests (PR #189, by @hatzlj)
  • cleanup remainders of the _archive folder (PR #202, by @hatzlj)
  • AF4 MultiSourceLegacyToken classname compatibility fix (#4633, PR #228, by @laura-devriendt-lemon)

:beetle: Bug Fixes

  • Port axon 5.1.x to main (PR #114, by @hatzlj)
  • Align listing approach with Event Storage Engine parent page (PR #115, by @smcvb)
  • Adjust import for TerminalEventMessage (PR #132, by @hatzlj)
  • Fix failing tests (PR #136, by @hatzlj)
  • Port (5.1.x): [#108] docs(dead-letter-queue): document DLQ transactional behavior (PR #150, by @hatzlj)
  • [#4625 | Port] Use EventTypeResolver in Axon Server EventStorageEngines to default null revision to default version (PR #188, by @smcvb)
  • Support source with snapshot in single server call (PR #220, by @hjohn)
  • Ensure message type version for Commands/Queries sent from AF4 to AF5 applications (AxonFramework#4698, PR #225, by @hatzlj)
  • Allow to gracefully handle events without revision for persistent streams (AxonFramework#4625, PR #227, by @hatzlj)

:open_book: Documentation

  • Include Axoniq Data Protection release notes and module description in the framework reference (PR #97, by @hatzlj)
  • Include Axoniq Workflow Engine release notes and module description in the framework reference (PR #99, by @hatzlj)
  • Move workflow module table listing to workflow-repo for easier maintenance (PR #101, by @hatzlj)
  • Add migration guide for 5.0 → 5.1 (#77, PR #127, by @hatzlj)
  • Include Axoniq feature indicator in navigation (PR #107, by @hatzlj)
  • Clarify migration of the AxonServerContainer from 5.0 → 5.1 (#112, PR #112, by @hatzlj)
  • Add anchors for the event storage engines to allow referencing (PR #119, by @hatzlj)
  • Fix the maven coordinates for axoniq-postgresql in the reference (PR #119, by @hatzlj)
  • Fix Modules Documentation (remove opentracing) (PR #170, by @hatzlj)
  • Introduce Framework Comparison page (PR #134, by @smcvb)
  • add Event Transformation reference docs (moved from Axon Framework) (#180, PR #180, by @laura-devriendt-lemon)
  • adapt moved Event Transformation docs + address review nits (#180, PR #180, by @laura-devriendt-lemon)
  • Add 5.1.1 and 5.1.2 Release Notes (PR #191, by @smcvb)
  • docs: use DeadLetterQueueConfiguration extension API in DLQ reference (PR #224, by @MateuszNaKodach)
  • Fix configuration example for EventProcessorDefinition based persistent streams configuration (PR #224, by @hatzlj)

:heart: Contributors

A heartfelt thank you to all contributors who worked on this section: