Skip to content

CAP-MBR-MEM-016Let officers act for their members

Markdown

CAP-MBR-MEM-016

Let officers act for their members

Markdown
  • DocumentDraft
  • Product intentConfirmed
  • ImplementationPartially observed

KindCapabilityProduct areaMembershipModuleMemberships, Applications and Membership BillingRevision1

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.

Outcomes
Officers do the routine work of their chapter without staff help and without CRM-wide authority.Money information is shown to an officer only for their own units.
Surfaces
portalconsoleapi
Intent sources
services-membership:README.md#2026-10-18 — Final acceptanceservices-membership:docs/migrations/scope/README.md

Controls

37 controls apply, from the corpus control catalogue.

TC-AVL-002 TC-AVL-003 TC-AZ-001 TC-AZ-002 TC-AZ-003 TC-AZ-004 TC-AZ-006 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-001 TC-IAM-002 TC-IAM-004 TC-IAM-005 TC-LOG-001 TC-LOG-002 TC-LOG-003 TC-LOG-004 TC-LOG-005 TC-PI-001 TC-PI-003 TC-PRV-001 TC-PRV-002 TC-SEC-001 TC-SEC-004 TC-TEN-001 TC-TEN-002 TC-TEN-003 TC-TEN-004

Permissions

KeyChecked atScope
membership.member-contact.updateservicerecord
membership.terms.renewservicerecord
membership.memberships.enrollservicerecord
membership.members.readservicerecord

Business Rules

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

IdRuleKindEnforced atProvenance
01must prove
Confirmed
An officer changes a member's CRM contact only for a membership in scope and only in the fields allowed; every refused field is named at once and nothing is sent.
no proof recorded yet
permissionservicetest
services-membership:modules/memberships/tests/integration/services/unit-scope.integration.spec.ts#refuses a field outside the list, field_not_allowed naming it, and sends nothing
02must prove
Confirmed
The allowed fields are the union of the lists of the roles that granted the key and reach the membership; a unit-scoped role with no list allows nothing, and a workspace-wide role with no list allows every field.
no proof recorded yet
calculationservicetest
services-membership:modules/memberships/tests/unit/unit-scope.spec.ts#unions the lists of two roles that reach the membership
03must prove
Confirmed
The contact change is made in CRM as the officer, never with CRM's own contact-update authority.
no proof recorded yet
policyservicetest
services-membership:modules/memberships/tests/integration/services/unit-scope.integration.spec.ts#passes an allowed field to CRM’s contact update as the officer
04must prove
Confirmed
An officer may order a renewal for a membership in scope, members in grace included whatever the roster rule, with the package named or else the latest term's renewal package.
no proof recorded yet
permissionservicetest
services-membership:modules/memberships/tests/integration/services/unit-scope.integration.spec.ts#places the Atlanta officer’s renewal of Gil, in grace, with the officer as acting user
05must prove
Confirmed
An officer may enrol a new member only when every unit of the new membership is in their scope, and must name at least one unit; staff may enrol a member with none.
no proof recorded yet
permissionservicetest
services-membership:modules/memberships/tests/unit/unit-scope.spec.ts#refuses an officer an enrolment of no unit, which is National’s
06must prove
Confirmed
Officer orders are prepared through Membership's own checkout preparation with the officer as acting user and the member as recipient, and placed through Commerce; the request identifier makes a retried request name the same order, and a refused preparation is answered with its reason.
no proof recorded yet
policyservicetest
07must prove
Confirmed
The financial summary shows an officer a dues line only when the affiliation that carries it is in scope, and a package line only through the membership's identity unit; a package line of a membership with no unit is shown to staff only.
no proof recorded yet
permissionservicetest
services-membership:modules/memberships/tests/integration/services/unit-scope.integration.spec.ts#shows a National-scoped officer both dues lines and never the national package line
08must prove
Confirmed
The financial summary answers a membership's terms even when Commerce's order lines cannot be read.
no proof recorded yet
policyserviceunknown
09must prove
Confirmed
An enrolment into a program bound to an identity unit checks that the unit is an active unit of the program's identity unit type.
no proof recorded yet
validationserviceunknown

Scenarios

IdGivenWhenThenProvenance
01Dana's officer role allows the e-mail address but not the date of birth.Dana changes Jo's e-mail address and then her date of birth.The e-mail change reaches CRM as Dana; the date of birth is refused, naming the field.test
services-membership:tests/e2e/s07-regional-officer.e2e.spec.ts#refuses a date of birth 403 field_not_allowed, naming the field
02Jo holds Atlanta and Savannah dues lines and a national package line; Lee is Atlanta's officer.Lee and a staff member read Jo's financial summary.Lee sees the Atlanta dues line only; staff see every line.test
services-membership:tests/e2e/s08-cross-chapter-restrictions.e2e.spec.ts#shows Lee only the Atlanta dues line of Jo’s financial summary

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.