Skip to content

DataEventFoundations

Target

This page describes intended behaviour or structure. No implementation is claimed unless a section is explicitly marked Current implementation or Evidence.

Bounded context BC-42 Data & Event Foundations
Platform / plane Data & Event Platform / Data & Event
Deployment granularity standalone host
Status target · ConnectSoft.Factory.DataEvent
Built from connectsoft-microservice · libraries: connectsoft-extensions-messaging-model, connectsoft-extensions-messaging-model-orleans, connectsoft-extensions-persistence-model-nhibernate, connectsoft-extensions-saas-abstractions, connectsoft-extensions-saas-asp-net-core, connectsoft-extensions-observability
Decisions ADR-0006, ADR-0012, ADR-0013, ADR-0014, ADR-0019
Traceability FR-10 FR-12 FUX-11 NFR-05 NFR-14 NFR-16 XL-02 XL-09

Purpose and responsibilities

DataEventFoundations is the smallest host in the Factory and the one every other host asks first. It composes EnvelopeRegistryService (what every event looks like on the wire and who produces and consumes it), StoreProfileService (which stores exist, on which engine, owned by whom, in which region) and RetentionResidencyService (how long anything is kept where, and how a tenant's data is deleted or exported). It is "library-shaped" because most of its truth is also in the architecture model and in the ConnectSoft.Extensions.MessagingModel and persistence libraries that every service compiles against; the host makes that truth queryable and enforceable at runtime.

Context and boundaries

flowchart LR
    S["DataEventFoundations"]
    ControlPlaneApi["ControlPlaneApi"] -->|grpc| S
    StudioBff["StudioBff"] -->|sync-http| S
    S -->|sync-http| ext_identity_platform["ext-identity-platform"]
    S -->|grpc| GovernanceHost["GovernanceHost"]
Hold "Alt" / "Option" to enable pan & zoom

The host owns foundations-sql and nothing else; it never holds tenant content. Hosts cache the topic set and their store bindings at start-up, so an outage of this host degrades registration and governance orders, not publishing or persistence.

Domain model

None modelled

No aggregates are modelled for this item yet.

No entities modelled.

Entities and value objects

None modelled

No entities or value objects are modelled for this item yet.

Data model and storage

Store Role Engine / profile Tables
Data & Event foundations store primary azure-sql / nhibernate-sqlserver —

None modelled

No tables are modelled for this item yet.

APIs

Method Path Operation Scope Side effects Idempotency Gateway Summary
GET /data-event/health DataEventHealth factory.health.read read natural GW-01 Liveness, readiness and dependency health (foundations store, transport, secret store).
GET /data-event/meta/profiles DataEventProfiles factory.meta.read read natural GW-03 The messaging profile and store profiles this installation runs, with adapter versions (ADR-0012, ADR-0013).

None modelled

No gRPC methods are modelled for this item yet.

Messages

None modelled

No events are modelled for this item yet.

None modelled

No commands are modelled for this item yet.

None modelled

No consumed events are modelled for this item yet.

Workers and jobs

None modelled

No workers are modelled for this item yet.

Actors and grains

None modelled

No grains are modelled for this item yet.

Sagas and long-running flows

None modelled

No sagas are modelled for this item yet.

flowchart LR
    MODEL[architecture model · generated catalogs] -- ModelSync at release --> E[EnvelopeRegistryService]
    PROV[provisioning · Runtime Cloud] -- bindings --> ST[StoreProfileService]
    WA[Workspace admin · Platform admin] -- rules, orders --> R[RetentionResidencyService]
    E & ST & R --> SQL["(foundations-sql)"]
    H[every host] -- ResolveTopic · ResolveBinding · EvaluateResidency --> E & ST & R
    R -- DeletionOrderIssued --> H
Hold "Alt" / "Option" to enable pan & zoom

Options and configuration

Section Key Type Default Reloadable Secret Summary
DataEvent:Host EnabledModules string[] [envelopes, stores, retention] no no Modules composed into this host.
DataEvent:Messaging Profile string orleans-outbox-inbox no no Messaging profile of the installation: orleans-outbox-inbox
OrleansMessaging ServiceName string data-event no no Messaging profile service name.

Metrics and observability

Metric Instrument Unit Dimensions Summary
connectsoft.factory.data_event.host.registry_lookups counter {lookup} kind Topic, schema and store lookups served.

Security

Authentication client-credentials
Scopes factory.health.read (Health probes.); factory.meta.read (Profile metadata.)
Roles PlatformAdmin, Operator, Observer
Tenant isolation row-filter
Data classification internal
Max side-effect class production
Secrets foundations-sql (key-vault, rotate 90 d); messaging-transport (key-vault, rotate 90 d)

Dependencies

Outbound

Target Kind Purpose Failure mode Required
ext-identity-platform sync-http Workload identity. fail-fast yes
GovernanceHost grpc Classification labels for retention; audit evidence of deletion and export orders. fail-fast yes

Inbound

Target Kind Purpose Failure mode Required
ControlPlaneApi grpc Topic resolution and envelope validation at publish time; residency at tenant creation. — yes
StudioBff sync-http Registry, store and retention views. — yes

Failure and recovery

Scenario Detection Recovery Data impact RTO (min)
Registry unavailable readiness hosts keep publishing with their cached topic and schema set; new topics cannot be registered until the host is back none 60
Foundations store lost readiness restore from backup (RPO 15 min); topic and store registrations are also in the architecture model and can be re-applied none 240

NFR targets

Target Class value (pilot-interactive) Override
latency_p95_ms 2000 —
availability_pct 99.5 —
throughput_rps 50 —
rpo_minutes 15 —
rto_minutes 240 —
cost_class low —

Deployment

Granularity standalone host
Topologies saas-default, hybrid, on-prem, hybrid-compute
Runtime aks; replicas 2–4
Ports https 8110, grpc 8112, silo 12110, gateway 31110

Current implementation

ConnectSoft.Extensions.MessagingModel (port) with the Orleans outbox/inbox, MassTransit and NServiceBus adapters, and the persistence libraries with FluentMigrator conventions exist; no registry, binding or retention service exists. The storage, event and aggregate-root catalogs of this site are the design-time equivalent.

Later capabilities

Per-tenant foundations instance for the on-prem profile; schema registry federation with a customer's own registry in hybrid.

Decisions and traceability

Family Ids
FR FR-10, FR-12
FUX FUX-11
NFR NFR-05, NFR-14, NFR-16
XL XL-02, XL-09