---
id: JNY-COM-FUL-001
title: Staff follow a paid order through application delivery
feature: FEAT-COM-FUL-01
product_area: commerce
module: fulfillment
revision: 1
status: draft
product_intent: proposed
implementation_evidence: observed
supersedes: []
source_sha:
  services-commerce: c8b66a98e2490617aec38ba5c8165dd9bd0a8f9b
  react-console: baf6dae382d6f41dce976c7f848667ccc37e076f
actor: ACT-COM-008
goal: >-
  Confirm that the order's eligible lines reach their owning applications and
  retain their outcomes.
capabilities:
  - CAP-COM-FUL-001
  - CAP-COM-FUL-002
  - CAP-COM-FUL-004
  - CAP-COM-FUL-005
screens:
  - '/console/{tenantId}/orders/{orderId}'
steps:
  - 'n': 1
    surface: placeCheckout (Orders module)
    action: Place the member's order with the applicable delivery policies.
    capability: CAP-COM-FUL-001
    expected: The register contains each line's pending work and saved gate.
    provenance: test
    source: >-
      services-commerce:modules/fulfillment/tests/e2e/obligation-register.e2e.spec.js#lists
      each order’s one pending obligation with the built-in default gate frozen
      on it, and refuses a portal member the register
  - 'n': 2
    surface: commerce_financial_facts (Accounting change events)
    action: Record payment in Accounting and deliver the affected-line facts.
    capability: CAP-COM-FUL-002
    expected: >-
      Financially eligible work opens while required approval remains a staff
      decision.
    provenance: test
    source: >-
      services-commerce:modules/fulfillment/tests/e2e/obligation-register.e2e.spec.js#resolves
      each line by Accounting’s invoice line through the facts port, opens three
      gates and blocks the one that needs approval
  - 'n': 3
    surface: approveObligation
    action: Approve the waiting line with an explanation.
    capability: CAP-COM-FUL-005
    expected: One approval is retained and its paid obligation becomes authorized.
    provenance: test
    source: >-
      services-commerce:modules/fulfillment/tests/e2e/obligation-register.e2e.spec.js#releases
      the blocked obligation on one of five simultaneous approvals, which opens
      its gate at once since the line is paid, with the one intervention
      recorded; the other four are refused 409 naming it (DEF-COM-0869)
  - 'n': 4
    surface: 'commerce_obligation_dispatcher, commerce_obligation_worker'
    action: Dispatch authorized instructions to the owning applications.
    capability: CAP-COM-FUL-004
    expected: Immediate work completes and longer-running work retains progress.
    provenance: test
    source: >-
      services-commerce:modules/fulfillment/tests/e2e/obligation-register.e2e.spec.js#completes
      the plain one, leaves the long one in progress and fails the failing one,
      acknowledging all three
  - 'n': 5
    surface: completeObligation
    action: Report completion of the longer-running instruction.
    capability: CAP-COM-FUL-004
    expected: The register records completion and replay returns its existing result.
    provenance: test
    source: >-
      services-commerce:modules/fulfillment/tests/e2e/obligation-register.e2e.spec.js#completes
      the obligation and answers it as it stands; the repeat answers the same
  - 'n': 6
    surface: '/console/{tenantId}/orders/{orderId}'
    action: Inspect the order's Fulfilment card.
    capability: CAP-COM-FUL-005
    expected: The card presents obligations with authorization and attempt detail.
    provenance: observed
    source: 'react-console:lib/commerce/order-flows/live.ts:createLiveOrderFlowsAdapter'
alternates:
  - from_step: 2
    condition: The financial event is lost.
    path: A later sweep revisits eligible stale pending work within its page budget.
    outcome: >-
      Selected paid obligations can open, without a fixed recovery-time
      guarantee.
    provenance: test
    source: >-
      services-commerce:modules/fulfillment/tests/integration/services/register/register-sweeper.integration.spec.js#evaluates
      every stale pending obligation of an accepted order across both tenants,
      opens the paid ones, and nudges once
  - from_step: 2
    condition: Staff billed the console order on terms.
    path: Evaluate the approved-terms fact under a policy that allows it.
    outcome: Eligible lines can authorize after acceptance without waiting for payment.
    provenance: test
    source: >-
      services-commerce:modules/fulfillment/tests/unit/register/order-billed-on-terms.spec.js#is
      a console order whose profile requires terms
failures:
  - from_step: 4
    condition: Delivery receives a permanent refusal.
    path: Record failed delivery and its operational finding.
    outcome: Operations staff have work to investigate and recover.
    provenance: test
    source: >-
      services-commerce:modules/fulfillment/tests/e2e/obligation-register.e2e.spec.js#completes
      the plain one, leaves the long one in progress and fails the failing one,
      acknowledging all three
  - from_step: 3
    condition: Staff submit competing approvals.
    path: Retain the successful approval and reject its competitors.
    outcome: The obligation has one approval result.
    provenance: test
    source: >-
      services-commerce:modules/fulfillment/tests/unit/register/obligation-approval.spec.js#names
      the approval that stands, who and when, in the message and the details
rules_in_play:
  - BR-CAP-COM-FUL-001-04
  - BR-CAP-COM-FUL-002-01
  - BR-CAP-COM-FUL-002-03
  - BR-CAP-COM-FUL-002-09
  - BR-CAP-COM-FUL-002-11
  - BR-CAP-COM-FUL-004-03
  - BR-CAP-COM-FUL-004-07
  - BR-CAP-COM-FUL-005-03
assertions:
  - id: AS-JNY-COM-FUL-001-01
    statement: >-
      Concurrent eligibility evaluation retains one authorization for each paid
      line's delivery.
    provenance: test
    source: >-
      services-commerce:modules/fulfillment/tests/integration/services/persistence/obligation-register.integration.spec.js#answers
      the second not waiting once the first committed, and the register holds
      ONE authorization
  - id: AS-JNY-COM-FUL-001-02
    statement: Approval-required work waits until its staff approval is recorded.
    provenance: test
    source: >-
      services-commerce:modules/fulfillment/tests/e2e/obligation-register.e2e.spec.js#resolves
      each line by Accounting’s invoice line through the facts port, opens three
      gates and blocks the one that needs approval
  - id: AS-JNY-COM-FUL-001-03
    statement: >-
      Financial receipt and gate-opening history retain Accounting's correlation
      reference.
    provenance: test
    source: >-
      services-commerce:modules/fulfillment/tests/e2e/obligation-register.e2e.spec.js#writes
      the fact and the opening on the orders’ histories, with Accounting’s event
      and correlation id
e2e_policy: required
e2e_reason: >-
  This journey crosses financial facts, delivery coordination and the console;
  service evidence covers its backend stages, but no existing browser test
  proves the full interaction.
evidence:
  - >-
    services-commerce at c8b66a98e2490617aec38ba5c8165dd9bd0a8f9b: the
    end-to-end and integration suites named in the step and assertion sources.
  - >-
    react-console at baf6dae382d6f41dce976c7f848667ccc37e076f: the console pages
    and adapters named in the steps.
---

# Staff follow a paid order through application delivery

## Story

A staff member follows a paid sale from its saved delivery conditions to application outcomes. They supply an approval where required, allow the register to dispatch work and review the resulting delivery details on the order. A delayed or failed outcome leads to investigation through the supported recovery workflow.
