Skip to content

CAP-MBR-MEM-014Alert staff to memberships about to expire

Markdown

CAP-MBR-MEM-014

Alert staff to memberships about to expire

Markdown
  • DocumentDraft
  • Product intentProposed
  • ImplementationObserved

KindCapabilityProduct areaMembershipModuleMemberships, Applications and Membership BillingRevision1

Read atservices-membership 5994c270

The Formal Contract

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

Outcomes
No membership expires without the renewals team having seen it coming.Alerts reach the staff of the member's own chapter and region before the workspace's.
Surfaces
consolejob
Constraints
The sweep publishes in pages of 500 memberships.

Controls

35 controls apply, from the corpus control catalogue.

TC-AVL-002 TC-AVL-003 TC-AVL-004 TC-AZ-001 TC-AZ-003 TC-AZ-004 TC-CHG-001 TC-CHG-002 TC-CHG-003 TC-CHG-004 TC-CRY-001 TC-CRY-002 TC-CRY-003 TC-DAT-001 TC-DAT-002 TC-DAT-003 TC-DAT-007 TC-IAM-006 TC-LOG-002 TC-LOG-003 TC-LOG-005 TC-MON-001 TC-MON-002 TC-MON-004 TC-PI-001 TC-PI-002 TC-PI-004 TC-PI-005 TC-PRV-001 TC-PRV-002 TC-SEC-001 TC-SEC-004 TC-TEN-001 TC-TEN-002 TC-TEN-003

Business Rules

9 rules, 8 to be proved before approval. A rule's product intent is derived from its origin: 0 confirmed by a product decision, the rest inheriting this capability's proposed.

IdRuleKindEnforced atProvenance
01must prove
Proposed
A term is expiring when it belongs to a principal membership, is committed or restated, ends between today and today plus the horizon (60 days by default, settable from 7 to 180), and has no later term.
no proof recorded yet
calculationservicetest
02must prove
Proposed
The horizon is measured from the workspace's business date in its own time zone, both ends included, and moves at the workspace's midnight.
no proof recorded yet
calculationservicetest
services-membership:modules/memberships/tests/unit/expiring-memberships.spec.ts#starts on the tenant’s business date, not the UTC date
03must prove
Proposed
Each expiring membership has one alert, labelled with the member's name (else the membership number), carrying the program, the end date, the member and whether they auto-renew, and addressed to the renewals responsibility.
no proof recorded yet
policyservicetest
04must prove
Proposed
An alert is scoped to the membership's units, most specific first, then the workspace.
no proof recorded yet
policyservicetest
services-membership:modules/memberships/tests/integration/services/expiring-memberships.integration.spec.ts#scopes the item by the membership’s chapter and its ancestors, most specific first, then the tenant
05must prove
Proposed
An alert is due at the start of the term's last day in the workspace's time zone and expires thirty days later.
no proof recorded yet
calculationservicetest
services-membership:modules/memberships/tests/integration/services/expiring-memberships.integration.spec.ts#is due at the start of the term’s last day and expires thirty days after it
06must prove
Proposed
A daily sweep publishes each expiring membership, refreshes an existing alert rather than opening another, and clears alerts whose term has left the horizon.
no proof recorded yet
lifecycleservicetest
services-membership:modules/memberships/tests/integration/services/expiring-memberships.integration.spec.ts#refreshes the same item’s facts on the next pass rather than opening another
07must prove
Proposed
A renewal resolves the alert as renewed, and a termination as terminated, in the same transaction as the write.
no proof recorded yet
lifecycleservicetest
08
Proposed
Alerts are shown on the console only, to staff responsibilities only, with no actions, until the portal is opened to them.
policyservicetest
services-membership:modules/memberships/tests/unit/expiring-memberships.spec.ts#shows on the console only, to staff responsibilities only, with no actions (the portal hold)
09must prove
Proposed
When publishing is switched on, a refusal by Platform's attention service fails the business write it accompanies, so a change never commits with a wrong alert beside it; when it is off, nothing is published.
no proof recorded yet
policyservicedocumented
services-membership:docs/attention.md#3. When items are published and resolved

Scenarios

IdGivenWhenThenProvenance
01Jo's Regular term ends in 40 days and has no renewal.The morning sweep runs, and later staff add Jo's renewal.An alert opens for Jo scoped to Atlanta, its zone and region, then the workspace; the renewal resolves it at once.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

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.