Skip to content

JNY-MBR-MEM-003An approved application becomes a dues order and a membership

Markdown

JNY-MBR-MEM-003

An approved application becomes a dues order and a membership

Markdown
  • DocumentDraft
  • Product intentConfirmed
  • ImplementationPartially observed

KindJourneyProduct areaMembershipModuleMemberships, Applications and Membership BillingRevision1End-to-endNone

Read atservices-membership 5994c270react-console baf6dae3

The Formal Contract

The narrative above explains; the sections below are authoritative — the rules, scenarios and tests this document binds.

Goal
Turn the Submissions engine's approval of a join application into exactly one dues order and, once paid, a membership.

Steps

#SurfaceActionCapabilityExpectedProvenance
1createApplicationProcessAn administrator records a reviewed join process for the national program offering Regular.CAP-MBR-MEM-011The process reads back as recorded.test
2prepare_purchaseAn applicant tries to buy Regular without an approved application.CAP-MBR-MEM-009The line needs approval.test
services-membership:modules/applications/tests/integration/decision-handler.integration.spec.ts#answers requires_approval for the package the process reviews when no decided application is named
3submission.decidedThe engine delivers Nia's approval.CAP-MBR-MEM-012The decision is recorded, the dues order for Regular and Atlanta is placed and recorded, and the decision is acknowledged.test
services-membership:modules/applications/tests/integration/decision-handler.integration.spec.ts#records an approval, places the dues order through the port (package and chapter dues), and acknowledges it
4fulfillCommerce fulfils the paid order.CAP-MBR-MEM-009The pending membership is committed.test
services-membership:modules/applications/tests/integration/decision-handler.integration.spec.ts#leaves the approved purchase pending in Membership until Commerce fulfils it
5getApplicationStaff read Nia's application.CAP-MBR-MEM-011It is decided and names its order.documented

Alternate and Failure Paths

PathFrom stepConditionPath takenOutcomeProvenance
alternate3The engine delivers the same approval again.The decision is answered as recorded.No second order is placed.test
services-membership:modules/applications/tests/integration/decision-handler.integration.spec.ts#answers a redelivered decision as recorded and calls neither port again
alternate3The engine rejects the application instead.The reserved term and its reservation are released.The membership remains with no status.test
services-membership:modules/applications/tests/integration/decision-handler.integration.spec.ts#cancels the pending term of a rejected application whose purchase was placed
failure3The decision concerns a submission Membership holds no application for.The decision is answered as unknown.It is not acknowledged and the engine will retry.test
services-membership:modules/applications/tests/integration/decision-handler.integration.spec.ts#does not acknowledge a decision for a submission it holds no application of
failure3Commerce refuses the dues order.The decision is left unacknowledged.The engine redelivers it later.unknown

Assertions

IdStatementProvenance
01One approval yields exactly one dues order, however often it is delivered.test
services-membership:modules/applications/tests/integration/decision-handler.integration.spec.ts#answers a redelivered decision as recorded and calls neither port again
02A rejected applicant holds no pending term.test
services-membership:modules/applications/tests/integration/decision-handler.integration.spec.ts#cancels the pending term of a rejected application whose purchase was placed
03The approved application names the order placed for it.documented

End-to-end policy: none: Every step is a service exchange between the Submissions engine, Membership and Commerce; there is no Membership screen in it.

The Markdown files under specs/ in rhythmsoftware/rhythm-v2-docs are the canonical source of truth. This reader is a generated, read-only projection of them.