← Atlas Journey · Docs

Frozen document. Dates and status refer to its original source. Private resources and unreviewed images are unavailable.

Record ownership and domain boundaries

Status: accepted. The owner accepted the proposed ownership model with "Yes. proceed" after reviewing the component boundaries and the persistent modular backend simulator. The authoritative resolution lives in Assign authoritative business records and domain boundaries.

The component diagram below predates the later BFF decision and names MuleSoft as the mediator. For the selected implementation and the supplied reference-diagram comparison, see Atlas system context and ADRs 0008, 0009, and 0010. The record-ownership rules on this page remain accepted.

Component responsibilities

ComponentAuthorityBoundary
ContentfulAuthored content, form templates, and publishing metadata.Does not own submitted answers, customer applications, claims, bank details, or private uploaded evidence.
CamundaProcess instances, tasks, assignments, timers, and orchestration progress.Variables hold business references and minimum step data. Process state is not the authoritative policy, claim, or payment record.
MuleSoft Experience LayerAuthorized experience/system API mediation, aggregation, mapping, and integration transport.Does not own the business ledger or replace Camunda's BPMN orchestration.
Simulated systems of recordPersistent business records, drafts, submitted answers, decisions, and business statuses.Fictional data and integrations still have durable, internally consistent state.
Document storage and registryStorage holds file bytes. The business registry holds metadata, versions, links, and access context.Private evidence is not stored as Contentful assets or copied into workflow variables.
Keycloak IAMLogin identity, credentials, MFA configuration, and assigned identity roles.Employer membership, reporting lines, policy ownership, and case relationships remain business records.
React SPARendering and temporary interaction state.Persisted drafts and submitted records belong to their backend owners.

The owner agreed to one deployable backend simulator with logical business modules and persistent structured storage, plus document storage. Module boundaries remain explicit even when modules share a deployment. Database and document-storage products are not selected by this decision.

Logical ownership diagram

This diagram shows authority and record references, not a final network topology or API call sequence.

flowchart TB

    CMS["Contentful: content and form definitions"]

    BPM["Camunda: processes, tasks, assignments, timers"]

    IAM["IAM: login identity, credentials, MFA, identity roles"]

    API["MuleSoft: experience and system API mediation"]

    UI["React SPA: rendering and temporary state"]

    subgraph SOR["Persistent modular backend simulator"]

        PEOPLE["People and organizations"]

        INTAKE["Intake and saved answers"]

        COVERAGE["Coverage and benefits"]

        CLAIMS["Claims and benefit requests"]

        LEAVE["Leave and return to work"]

        MONEY["Billing and disbursements"]

        DOCS["Document registry"]

    end

    FILES["Document storage: file bytes"]

    INTAKE -. "form release reference" .-> CMS

    BPM -. "business record references" .-> SOR

    PEOPLE -. "identity reference" .-> IAM

    DOCS -. "storage reference" .-> FILES

    CLAIMS -. "related case reference" .-> LEAVE

    CLAIMS -. "authorized payout instruction" .-> MONEY

    API -. "mediates access; does not own records" .-> SOR

    UI -. "consumes API views" .-> API

The Camunda assignment is authoritative for a workflow task. A reference or read view in another component must not become an independently editable copy of that assignment. The accepted workflow contract defines deterministic assignment and checks assignment, eligibility, task state, and reviewed business revision before an action is accepted.

Business modules

Logical ownerOwned business records
People and organizationsCustomers, employers, employees, reporting relationships, and links to IAM identity.
IntakeApplications, persisted drafts, submitted answers, requests for evidence, and application decisions, with references to the form release and process version used.
Coverage and benefitsPolicies, annuity contracts, ownership and insured relationships, beneficiaries and dependents, enrollments, entitlements, and benefit-use records.
Claims and benefit requestsClaims/requests, evidence references, review outcomes, and authorization of benefit-payment instructions.
Leave and return to workEmployer leave cases, requested dates, business approvals, RTW status, and links to related disability claims.
Billing and disbursementsPremium obligations, synthetic payment-account references, debit authorizations, collection attempts, received payout instructions, and simulated payment outcomes.
DocumentsDocument metadata and versions, associations with business records, storage references, and access context.

Each module updates its own records through explicit contracts. A shared deployment does not allow one module to mutate another owner's records directly. The Experience Layer contract defines owner-controlled commands and delivery. Exact schemas and persistence products remain downstream.

Claim approval authorizes a payment; the payment outcome is a separate record owned by billing/disbursements. Similarly, employer leave approval and an insurance benefit decision remain separate facts even when cases are linked. Dental benefit-use records belong to coverage/benefits; a claim outcome drives an explicit update rather than silently changing another module's data.

Identifiers and relationships

Use stable identifiers for business records and explicit references between people, employers, policies/contracts, applications, claims, leave cases, payment instructions, and documents. Keep business identifiers distinct from IAM subjects, Camunda process/task keys, and Contentful entry/release references.

A customer's personal policy does not become employer-owned because the person also has an employment relationship. Employer context and personal ownership are separate links. References between an employer leave case and an insurance claim do not expand manager visibility. The accepted role matrix applies when resolving any linked record.

Draft and submitted answers are persistent business data. The accepted form contract pins an immutable bilingual release when a persistent draft/case is created and records submission locale. A derived release resolver/registry is a separate logical module in the backend deployment; it retains reproducible published content without becoming a new authoring authority. The workflow contract defines process/task binding behavior. Exact interfaces and storage products remain downstream decisions.

State and consistency

The record's owner is authoritative for its business state. Other components use identifiers or explicitly non-authoritative read views. Camunda is authoritative for orchestration state. Completing a task does not by itself prove that the corresponding domain update, coverage creation, or payment completed.

Coordinate cross-component work using acknowledged, retry-safe commands and correlation identifiers. Expose pending or recovery states when a result is uncertain and reconcile outcomes. Do not assume one atomic transaction across Contentful, Camunda, MuleSoft, and business storage. The workflow contract establishes bounded retries, explicit pending/unknown outcomes, and reconciliation before repeating uncertain effects. The accepted Experience Layer contract specifies durable operations, owner outboxes/consumer receipts, polling, and duplicate/revision checks. Exact schemas and recovery sequences remain for specs.

For example, a reviewer completes a claim-review task, the claim owner records the business decision, and the payment owner records a separate simulated payout outcome. A linked leave case keeps its own status and manager-visible information. A timeout after any step must not be presented as proof of either payment success or failure.

Downstream decisions

This decision does not select product eligibility rules, storage vendors, infrastructure resources, or implementation language.