Installs eight advanced change request types that use custom Python apply strategies for complex registry operations. Types include membership management (add/remove/transfer members, change head of household), group operations (create/split groups), registrant lifecycle (exit/deactivate), and data quality (merge duplicates). All types are marked as non-editable via Studio to prevent modification of Python-only logic.
- Membership operations: Add member, remove member, change head of household, transfer member between groups
- Group operations: Create new groups, split households into separate groups
- Registrant lifecycle: Exit and deactivate registrants from the system
- Data quality: Merge duplicate registrant records with full data consolidation
- All types use
apply_strategy='custom'with Python models that cannot be modified via Studio
This module does not define models. It provides data records for
spp.change.request.type and security rules for detail/apply models
defined in spp_change_request_v2:
| Detail Model | Apply Model | Purpose |
|---|---|---|
spp.cr.detail.add_member |
spp.cr.apply.add_member |
Add new member to group |
spp.cr.detail.remove_member |
spp.cr.apply.remove_member |
Remove member from group |
spp.cr.detail.change_hoh |
spp.cr.apply.change_hoh |
Change head of household |
spp.cr.detail.transfer_member |
spp.cr.apply.transfer_member |
Transfer member between groups |
spp.cr.detail.exit_registrant |
spp.cr.apply.exit_registrant |
Deactivate registrant |
spp.cr.detail.create_group |
spp.cr.apply.create_group |
Create new group/household |
spp.cr.detail.split_household |
spp.cr.apply.split_household |
Split household into two groups |
spp.cr.detail.merge_registrants |
spp.cr.apply.merge_registrants |
Merge duplicate registrant records |
After installing:
- Navigate to Change Requests > Configuration > Change Request Types
- Eight advanced CR types are now available with icons and descriptions
- Each type is marked
is_studio_editable=Falseandis_system_type=Truewith alocked_reasonexplaining why Studio editing is disabled
- Configuration: Change Requests > Configuration > Change Request Types
- Create Requests: Forms accessible from registrant profiles based
on
target_type(individual/group/both) - Type Codes:
add_member,remove_member,change_hoh,transfer_member,exit_registrant,create_group,split_household,merge_registrants
| Group | Access |
|---|---|
spp_change_request_v2.group_cr_user |
Read/Write/Create (no delete) |
spp_change_request_v2.group_cr_manager |
Full CRUD including delete |
Security rules apply to all eight detail models.
- Override apply strategies in
spp_change_request_v2/strategies/*.pyto customize behavior - Inherit detail models in
spp_change_request_v2/details/*.pyto add fields - Clone type definitions if
is_studio_cloneableis enabled to create variants
spp_change_request_v2
Table of contents
- feat(data): the Create Group CR type no longer requires a pre-existing
registrant (
is_requires_registrant=False), matching the redesigned Create Group flow (#876, #242)
- Initial migration to OpenSPP2
Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed feedback.
Do not contact contributors directly about support or help with technical issues.
- OpenSPP.org
Current maintainers:
This module is part of the OpenSPP/OpenSPP2 project on GitHub.
You are welcome to contribute.




