Skip to content

CAP-MBR-MEM-017Export a roster and let members see their own memberships

Markdown

CAP-MBR-MEM-017

Export a roster and let members see their own memberships

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
A roster export never holds a member its requester could not see.Members see their own memberships, terms, chapters and status without staff help.
Surfaces
portalapijob
Constraints
An export captures at most 50,000 memberships.
Intent sources
services-membership:README.md#2026-10-18 — Final acceptanceservices-membership:docs/migrations/scope/README.md#The roster export

Controls

44 controls apply, from the corpus control catalogue.

TC-AVL-002 TC-AVL-003 TC-AVL-004 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-005 TC-DAT-007 TC-IAM-001 TC-IAM-002 TC-IAM-004 TC-IAM-005 TC-IAM-006 TC-LOG-001 TC-LOG-002 TC-LOG-003 TC-LOG-004 TC-LOG-005 TC-MON-001 TC-MON-002 TC-MON-004 TC-PI-001 TC-PI-002 TC-PI-004 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.rosters.exportservicerecord
membership.self.readapitenant

Business Rules

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

IdRuleKindEnforced atProvenance
01must prove
Confirmed
An export captures, when it is asked for, the memberships the requester's scope reaches with the list's filters (program, status, unit and units below it, on a date), at most 50,000, and the export runs over those memberships only.
no proof recorded yet
permissionservicetest
02must prove
Confirmed
Each exported row gives the membership number, the owner, the program, the status on the date and the units on the date.
no proof recorded yet
calculationservicetest
services-membership:modules/memberships/tests/integration/services/unit-scope.integration.spec.ts#writes rows for the captured memberships only, with their units on the date
03must prove
Confirmed
An export is read by the person who asked for it and by workspace-wide holders of the export key, and is not found for any other officer.
no proof recorded yet
permissionservicetest
services-membership:modules/memberships/tests/integration/services/unit-scope.integration.spec.ts#answers the export to the person who asked for it and to staff, and not to another officer
04
Confirmed
Withdrawing an officer's access later does not recall an export already captured.
policyservicedocumented
05must prove
Confirmed
A requester whose scope reaches nobody captures nothing.
no proof recorded yet
permissionservicetest
06must prove
Confirmed
A portal member reads their own memberships, with terms, affiliations, today's status, continuity episodes and lifecycle events, through the contact their account is linked to, and cannot use the staff reads.
no proof recorded yet
permissionapi, servicetest
services-membership:tests/e2e/s07-regional-officer.e2e.spec.ts#refuses Jo the staff read of her own membership: a portal member holds no members.read
07
Confirmed
Portal members receive Membership's own-memberships key through Membership's built-in portal member policy once Platform attaches it to the Portal Member role.
permissionapidocumented
08must prove
Confirmed
A member's own view carries no Commerce order or order line references.
no proof recorded yet
policyserviceunknown

Scenarios

IdGivenWhenThenProvenance
01Atlanta's officer asks for the Atlanta roster on a date.The export job runs after a member's access changes.The rows hold exactly the members captured at the request, with their units on the date.test

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.