Receives vital event notifications from Civil Registration and Vital Statistics (CRVS) systems via DCI protocol webhooks and updates registry partner records accordingly. Verifies incoming callback signatures using stored public keys of trusted CRVS registries.
- Receive and log vital events: birth, death, marriage, divorce from CRVS systems
- Match events to registry partners using identifiers (BRN, DRN, MRN, UIN)
- Update partner records: birthdate, death status, civil status, registry identifiers
- Process events with state tracking: received → processing → processed/error
- Verify DCI callback signatures using JWKS public keys from trusted CRVS registries
- Fetch and store CRVS public keys automatically from JWKS endpoints
- Retry failed event processing through UI actions
| Model | Description |
|---|---|
spp.dci.crvs.event |
Vital event log with identifier, type, date, processing state |
spp.dci.crvs.sender |
Trusted CRVS registry with sender ID and public key |
After installing:
- Navigate to Settings > Technical > DCI > Configuration > CRVS Sender Registry
- Create entries for each trusted CRVS registry with sender ID and JWKS URL
- Click Fetch Public Key to retrieve and store the public key
- Configure webhook endpoints on CRVS systems to send callbacks to OpenSPP DCI API
- Events: Settings > Technical > DCI > Activity Logs > CRVS Events
- Sender Registry: Settings > Technical > DCI > Configuration > CRVS Sender Registry
- Event form tabs: "Raw Data", "Notes"
- Sender form tabs: "Public Key", "Notes"
| Group | CRVS Event Access | CRVS Sender Access |
|---|---|---|
base.group_system |
Full CRUD | Full CRUD |
base.group_user |
Read/Write/Create only | Read-only |
- Override
_process_birth_event(),_process_death_event(),_process_marriage_event(),_process_divorce_event()to customize partner record updates based on event type - Override
_find_person_by_identifier()to implement custom matching logic - Inherit
spp.dci.crvs.eventto add fields for domain-specific event metadata - Use
CRVSServiceclass for programmatic access to verify_birth(), check_death(), subscribe_events()
spp_dci_client, spp_registry
Important
This is an alpha version, the data model and design can change at any time without warning. Only for development or testing purpose, do not use in production.
Table of contents
- 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.




