ADR 013: Use cloudevents Standard for Bus based Configuration Communication
Date: 2025-09-17
Status: Accepted
Decision Makers: @mhoffmann @luckey @DerLinne
Context
For unified communication of configuration settings over the message bus, a standardized message format is used. Since we expect many different configuration messages, it is not important that many specific messages are already defined, but rather that the standard flexibly supports different payloads.
Checked Architecture Principles
- [full] Model-centric data flow
- [full] Distributed architecture with unified user experience
- [full] Modular design
- [full] Integration capability through defined interfaces
- [full] Open source as the default
- [full] Cloud-native architecture
- [full] Prefer standard solutions over custom development
[full, partial, none] Self-contained deploymentnot relevant- [full] Technological consistency to ensure maintainability
- [full] Multi-tenancy
- [full, partial, none] Security by designNot relevant
(if partial, then this topic should be commented)
Decision
We use CloudEvents (https://cloudevents.io) as the envelope for configuration events. The message types are defined specifically in the context of the platform.
Consequences
By using the standard, we have many possibilities for standardized communication across several transport protocols. In particular, when using Kafka, CloudEvents provide the option to use the envelope as a header, enabling routing based on the event type.
Alternatives
- AsyncAPI: No standardized Metadata definition
- AMQP: No envelope exists
See also
- Ticket 146: Link to the issue https://gitlab.com/civitas-connect/civitas-core/civitas-core-v2/civitas-core-platform/-/issues/146
- External specification: https://cloudevents.io