Skip to content

JNY-MBR-MEM-004An administrator runs the renewal season

Markdown

JNY-MBR-MEM-004

An administrator runs the renewal season

Markdown
  • DocumentDraft
  • Product intentConfirmed
  • ImplementationPartially observed

KindJourneyProduct areaMembershipModuleMemberships, Applications and Membership BillingRevision1End-to-endOptional

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
See which memberships are expiring, bill every renewing member once, remind them, and drop those who lapsed.

Steps

#SurfaceActionCapabilityExpectedProvenance
1membership_attention_sweepThe morning sweep runs.CAP-MBR-MEM-014Alerts open for memberships ending within the horizon without a renewal.test
services-membership:modules/memberships/tests/integration/services/expiring-memberships.integration.spec.ts#publishes an open item for a membership whose term ends inside the horizon
2createBillingTemplateRecord a renewal template with a notice, a reminder and a drop reason.CAP-MBR-MEM-013The template is saved.test
3createBillingRunCreate a run from the template over the terms ending this season.CAP-MBR-MEM-013A draft run with the template's documents.test
4planBillingRunPlan the run on today's date.CAP-MBR-MEM-013Renewing and lapsed candidates with their orders, notices, reminders and drops, and the statistics.test
services-membership:modules/billing/tests/integration/billing-runs.integration.spec.ts#plans the candidates and their actions on the run’s date
5listBillingRunActionsReview the planned actions.CAP-MBR-MEM-013Each candidate's notice and reminder is listed.test
services-membership:tests/e2e/billing-api.e2e.spec.ts#plans it, and lists its notice and reminder
6executeBillingRunExecute the run.CAP-MBR-MEM-013One order per renewing member, the notices and reminders submitted, and the lapsed terms dropped with the reason.test
services-membership:modules/billing/tests/integration/billing-runs.integration.spec.ts#executes on the jobs engine: one order per renewing candidate (Jo’s with both dues chapters), a notice and reminder each, one drop per lapsed term
7createTermA member's renewal is committed.CAP-MBR-MEM-014Their expiring alert is resolved as renewed.test

Alternate and Failure Paths

PathFrom stepConditionPath takenOutcomeProvenance
alternate3The administrator sets the template to run on a schedule instead.A recurring run creates and plans one run per occurrence in the association's time zone.The season runs itself, once per occurrence.test
services-membership:modules/billing/tests/integration/billing-runs.integration.spec.ts#creates and plans one run per occurrence of a recurring run, a redelivered occurrence finding it
alternate6A member's term is corrected after the run was planned.That member's action is settled as stale.Nothing is billed on the old facts.test
services-membership:modules/billing/tests/integration/billing-runs.integration.spec.ts#refuses as stale an action whose term changed after planning
failure6The execution job fails part way.The run returns to planned with its settled actions kept.The administrator executes it again.unknown
failure6Notices are submitted before Platform knows their purposes.Platform stores the requests and sends nothing.Members receive no notice.unknown

Assertions

IdStatementProvenance
01A second execution of the same run does nothing.test
02Each renewing member receives one order, with every chapter's dues on it.test
services-membership:modules/billing/tests/integration/billing-runs.integration.spec.ts#executes on the jobs engine: one order per renewing candidate (Jo’s with both dues chapters), a notice and reminder each, one drop per lapsed term
03Each lapsed member is dropped with the run's reason and keeps their term's dates.test

End-to-end policy: optional: Membership has no console screens yet; the journey is proved through the API and the jobs engine in process. A browser test becomes required when the billing screens are built.

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.