Overview
Contents
Overview#
This guide is for implementers who need to configure change request types to match program requirements. You should be comfortable with logic builders like CommCare or Kobo, but you don't need to write Python code for basic configurations.
What are change request types?#
Change request types define the different kinds of modifications that can be made to registrant records through a controlled workflow. Instead of allowing direct edits, change requests ensure that:
All changes go through an approval process
An audit trail is maintained for compliance
Data quality is preserved through validation rules
Document requirements can be enforced
Architecture#
Change requests in OpenSPP V2 follow a configuration-driven architecture with three layers:
Request Type - Defines what kind of change can be made (e.g., "Add Member", "Edit Individual")
Detail Model - Stores the specific fields for this request type (real Odoo fields, not JSON)
Apply Strategy - Controls how approved changes are written to the registrant record
┌──────────────────────────────────────┐
│ Change Request Type Config │
│ (spp.change.request.type) │
├──────────────────────────────────────┤
│ • Name: "Edit Phone Number" │
│ • Code: edit_phone │
│ • Target: Individual │
│ • Approval: Single-level │
│ • Apply Strategy: Field Mapping │
└──────────────────┬───────────────────┘
│
┌────────────┴────────────┐
▼ ▼
┌─────────────────┐ ┌──────────────────┐
│ Detail Model │ │ Apply Mappings │
│ (real fields) │ │ │
├─────────────────┤ ├──────────────────┤
│ • new_phone │ │ new_phone → phone│
│ • phone_type │ │ │
│ • is_primary │ │ │
└─────────────────┘ └──────────────────┘
Available detail models#
OpenSPP provides pre-built detail models for common change request scenarios:
From spp_cr_types_base#
Model |
Purpose |
|---|---|
|
Edit individual information |
|
Edit group/household information |
|
Update ID document |
From spp_cr_types_advanced#
Model |
Purpose |
|---|---|
|
Add person to household |
|
Remove person from household |
|
Change head of household |
|
Transfer member between groups |
|
Deactivate registrant |
|
Create new group/household |
|
Split household into two |
|
Merge duplicate records |
Configuration workflow#
The typical workflow for configuring a change request type:
Create the request type - Define basic info, target type, and code
Link a detail model - Select which fields will be collected
Configure approval - Set up the approval workflow
Set up field mappings - Define how fields are applied to the registrant
Configure documents - Set required supporting documents
See Creating change request types for step-by-step instructions.
Next steps#
Creating change request types - Step-by-step guide to create a change request type
Field mappings - Configure how changes are applied
Common configuration patterns - Common configuration patterns
Custom detail models - Create custom detail models for specialized needs
openspp.org