Routes
Routes are defined by entity type annotations (links). There is no crm_membership.routing.yml in the codebase. The HTML route provider for Membership is custom (MembershipRouteHtmlRouteProvider); Membership Type and Membership Period use AdminHtmlRouteProvider.
Settings (planned)
| Route name | Planned path | Permission |
|---|---|---|
crm_membership.settings |
/admin/crm/crm-membership (planned) |
administer crm_membership |
A menu link exists in crm_membership.links.menu.yml (Administration → Configuration → System → CRM Membership), but the route and SettingsForm are not implemented yet. See Configuration and Roadmap.
Membership (content entity)
From the Membership entity type (src/Entity/Membership.php links):
| Link | Path |
|---|---|
| canonical | /crm/membership/{crm_membership} |
| add-page | /crm/membership/add |
| add-form | /crm/membership/add/{crm_membership_type} |
| edit-form | /crm/membership/{crm_membership}/edit |
| delete-form | /crm/membership/{crm_membership}/delete |
| renew-form | /crm/membership/{crm_membership}/renew |
| collection | /crm/membership |
Access is controlled by MembershipAccessControlHandler and permissions view memberships, edit memberships, renew memberships, delete memberships, and administer crm_membership. There is no separate “create memberships” permission — creation typically requires administer crm_membership.
The route provider is MembershipRouteHtmlRouteProvider.
Membership Type (config entity)
From the Membership Type entity type (src/Entity/MembershipType.php links):
| Link | Path |
|---|---|
| add-form | /admin/structure/crm/membership_types/add |
| edit-form | /admin/structure/crm/membership_types/{crm_membership_type}/edit |
| delete-form | /admin/structure/crm/membership_types/{crm_membership_type}/delete |
| collection | /admin/structure/crm/membership_types |
Access is controlled by MembershipTypeAccessControlHandler. The collection
route uses collection_permission: view crm membership types (or
administer crm_membership via the handler). Add requires
create crm membership types or administer crm_membership; edit requires
edit crm membership types or admin; delete requires
delete crm membership types or admin; view (single type) requires
view crm membership types or admin.
Membership Period (content entity)
From the Membership Period entity type (src/Entity/MembershipPeriod.php links):
| Link | Path |
|---|---|
| canonical | /crm/membership/periods/{crm_membership_period} |
| add-form | /crm/membership/periods/add |
| edit-form | /crm/membership/periods/{crm_membership_period}/edit |
| delete-form | /crm/membership/periods/{crm_membership_period}/delete |
| collection | /crm/membership/periods |
Entity CRUD routes use the entity’s admin_permission (administer crm_membership) via default entity access. Menu: CRM portal → Memberships → Membership periods (crm.home.membership.periods).
Route provider: AdminHtmlRouteProvider.
Optional View: membership periods for membership
When the optional View is installed (Views module enabled):
| Route name | Path | Permission |
|---|---|---|
view.membership_periods_for_membership.page_membership_periods |
/admin/content/crm/membership/{crm_membership}/all-periods |
view memberships (or administer crm_membership) |
This route is also linked from the Membership periods operation on the membership list (MembershipListBuilder). See Membership periods UI.
See Access control for the full permission matrix.