Frozen document. Dates and status refer to its original source. Private resources and unreviewed images are unavailable.
Server-driven workflow screen design
Status: accepted contract, with implementation expanding by vertical slice. The Contentful form contract, workflow contract, ADR 0004, and ADR 0005 are authoritative.
sequenceDiagram
participant Author as Content author
participant CMS as Contentful
participant Registry as Release registry
participant UI as React SPA
participant BFF as BFF
participant BPM as Camunda
participant Owner as Business owner
Author->>CMS: Publish en-US and es-US entries
Author->>Registry: Request Atlas release activation
Registry->>CMS: Fetch published dependency graph
Registry->>Registry: Validate and compile immutable bundle
Registry->>Registry: Activate validated release for new work
UI->>BFF: Open case/task screen with session and locale
BFF->>Owner: Check actor, context, record and pinned release
BFF->>BPM: Verify current task, assignment and logical screen reference
BFF->>Registry: Load screen from case's pinned release
BFF-->>UI: Allowed components, localized copy, data, rules, actions and revisions
UI->>UI: Render allowlisted components#59; give early validation feedback
UI->>BFF: Save/submit answers, action and expected revision
BFF->>Owner: Recheck permission, applicability, validation and idempotency
Owner->>BPM: Deliver correlated transition through durable command path
BFF-->>UI: Authoritative record/task outcome or recoverable status
Camunda chooses the kind and state of work: the process/task supplies a stable logical screen reference, transition names, assignment and current state. Contentful supplies the screen's supported elements, order, bilingual text, display conditions and declarative validation. The business owner supplies authorized data and invariants. The BFF is the trust boundary that joins all three into one server-driven screen model. React renders that model from an allowlisted component registry; it does not hardcode a product-specific form switch or execute CMS-authored JavaScript.
A draft or case pins a complete en-US/es-US release when it first persists. Publishing Contentful entries alone does not change Atlas's active release; an explicit activation request validates and compiles the published graph first. Requesting information can select a different logical screen inside that same release. Switching locale changes presentation, not answers, option values, assignment or workflow state. New cases can use a later active release; old cases remain reproducible. The release compiler rejects unsupported components/bindings, missing translations and incompatible contracts before activation.
Client feedback is advisory. On save and submit the BFF re-evaluates the pinned rules, field applicability, answer shape, current revision, authorization and task state. Requiredness can wait until submission; forbidden fields, stale revisions and completed tasks cannot. Domain and security rules remain code-owned even if CMS copy or declarative validation changes. Private files travel through an authorized upload route and the scanner; Contentful receives only a supported document-control definition, never the bytes.
The September 30 boundary amendment uses TypeBox for transport envelopes and the supported CMS-definition vocabulary. Contentful still supplies the pinned field rules. Supported internal calls can use gRPC without changing this screen flow or granting a schema-valid request business authority. The later ADR 0013 selects tRPC over HTTPS for browser SDUI experience calls. Migration evidence remains pending; see the tRPC boundary design.
The generic case and request-for-information loop are delivered as a narrow proof of this pattern. Product-specific intake, claim, benefit, leave and payment screens still require their own tracer-bullet slices and integrated tests; this document does not mark them complete.