Skip to main content
Version: 2.0-rc2

Topic Configuration

Configuration Event Topics​

Configuration events use the reverse domain name prefix de.civitascore followed by domain, entity, and event type. All configuration events are confirmation events (past tense), indicating that a state change has occurred.

Structure​

de.civitascore.<domain>.<entity>.<event>
SegmentDescriptionExamples
de.civitascoreFixed platform prefix (reverse domain)--
<domain>Platform domainidm, api, data
<entity>Platform entityuser, realm, backend, route, project
<event>Event type (past tense)created, updated, deleted

Segments are concatenated with dots (.). The total topic name must not exceed 249 characters (KafkaApache KafkaA distributed event streaming platform. In CIVITAS/CORE it is used as the message bus to transport events, models and data in data flows. limit).

Domains and Events​

Identity Management (idm)​

EntityEvents
usercreated, updated, deleted, locked, unlocked, password.changed, password.reset
realmcreated, updated, deleted
clientcreated, updated, deleted
groupcreated, updated, deleted
rolecreated, updated, deleted

Examples:

de.civitascore.idm.user.created
de.civitascore.idm.user.updated
de.civitascore.idm.user.deleted
de.civitascore.idm.user.locked
de.civitascore.idm.user.unlocked
de.civitascore.idm.user.password.changed
de.civitascore.idm.user.password.reset
de.civitascore.idm.realm.created
de.civitascore.idm.client.deleted
de.civitascore.idm.group.created
de.civitascore.idm.role.updated

API Management (api)​

EntityEvents
backendcreated, updated, deleted
routecreated, updated, deleted

Examples:

de.civitascore.api.backend.created
de.civitascore.api.route.updated

Data Management (data)​

EntityEvents
thingcreated, updated, deleted
locationcreated, updated, deleted
sensorcreated, updated, deleted
observedpropertycreated, updated, deleted
datastreamcreated, updated, deleted
projectcreated, updated, deleted
pipelinecreated, updated, deleted

Examples:

de.civitascore.data.thing.created
de.civitascore.data.sensor.updated
de.civitascore.data.project.created
de.civitascore.data.pipeline.deleted

Extending the Event Catalog​

New configuration events follow the same convention:

  1. Identify the domain (idm, api, data, or a new domain abbreviation)
  2. Define the entity name (lowercase, no separators)
  3. Use past tense for the event type
  4. Composite operations use dot-separated segments (e.g., password.changed)

Saga / Orchestrator Topics​

Multi-step provisioning workflows use the core.civitas prefix, as defined in ADR 031:

core.civitas.<system>.<entity>.<operation|result>
TopicPublisherSubscriberPurpose
core.civitas.dataset.create.requestedPortal BackendOrchestratorTrigger provisioning
core.civitas.frost.project.createOrchestratorFROST AdapterCreate FROST project
core.civitas.frost.project.deleteOrchestratorFROST AdapterDelete / compensate
core.civitas.frost.project.resultFROST AdapterOrchestratorStep result
core.civitas.apisix.route.createOrchestratorAPISIXApache APISIXAn open-source API gateway for traffic management, security and observability. In CIVITAS/CORE it is used as the centralized entrypoint to route and protect externally exposed APIs. AdapterCreate route
core.civitas.apisix.route.resultAPISIXApache APISIXAn open-source API gateway for traffic management, security and observability. In CIVITAS/CORE it is used as the centralized entrypoint to route and protect externally exposed APIs. AdapterOrchestratorStep result
core.civitas.dataset.create.completedOrchestratorPortal BackendSaga succeeded
core.civitas.dataset.create.failedOrchestratorPortal BackendSaga failed

Payload Data Topics​

Status: Concept

Payload data topics are not yet implemented. The namespace structure described here is the planned approach, subject to Architecture Board review. See Authorization Concept for the full context.

Payload data (sensor readings, geodata, domain-specific content) uses a separate topic namespace. The platform supports two namespace strategies, selected during installation:

Preferred: Customer Domain Namespace​

Each installation uses the customer's own reverse domain name as the top-level prefix. This provides clear organizational ownership and avoids namespace collisions across installations.

<customer-domain>.<bundle>.<context>.<message-type>

Examples:

de.musterstadt.umwelt.luftqualitaet.raw
de.musterstadt.umwelt.luftqualitaet.enriched
de.musterstadt.verkehr.zaehlstellen.raw
ch.beispielgemeinde.energie.zaehler.validated

The customer domain is configured during platform installation.

Fallback: Platform Namespace​

If no customer domain is available, the platform prefix de.civitascore.data serves as a default namespace.

de.civitascore.data.<bundle>.<context>.<message-type>

Examples:

de.civitascore.data.umwelt.luftqualitaet.raw
de.civitascore.data.verkehr.zaehlstellen.enriched

Namespace Selection​

ScenarioNamespaceExample Prefix
Dedicated installation with known domainCustomer domainde.musterstadt.*
Shared / staging / development environmentPlatform fallbackde.civitascore.data.*

Payload Structure​

Event payloads are JSON structures. Each payload contains only the data required for the operation or event. There is no generic wrapper -- the topic provides the context.

Example: de.civitascore.idm.user.created

{
"firstname": "Max",
"lastname": "Mustermann",
"email": "max.mustermann@civitas-stg.de"
}

The payload is wrapped in a CloudEvents envelope, which provides standardized metadata (source, type, subject, time, etc.) as KafkaApache KafkaA distributed event streaming platform. In CIVITAS/CORE it is used as the message bus to transport events, models and data in data flows. message headers.

Access Control​

Topic-level access control follows the least privilege principle:

  • Each component is granted read/write permissions only on the topics it needs
  • KafkaApache KafkaA distributed event streaming platform. In CIVITAS/CORE it is used as the message bus to transport events, models and data in data flows. ACLs enforce per-topic authorization
  • The namespace prefix enables wildcard-based ACL rules per category

For the planned authorization model with principal types, permission matrices, and operational governance, see the Authorization Concept.