Records and tracks events for registrants from surveys, field visits, and external systems. Supports flexible data storage (JSON, custom fields, or dedicated models), configurable lifecycle rules (auto-supersede, expiry, approval workflows), and automatic change request generation when event data differs from registrant records.
- Configure event types with categories (survey, visit, sync, manual), target types, and storage modes
- Record events with collection metadata (date, collector, source reference) and expiry tracking
- Store event data in JSON, define custom fields, or link to dedicated Odoo models
- Automatically supersede previous active events when new ones arrive for the same registrant
- Auto-expire events after a configurable number of days via scheduled cron
- Require approval for new events before activation using configurable workflows
- Integrate with external sources (ODK Central, KoBoToolbox, APIs) with field mapping and transformations
- Generate change requests when event data differs from registrant
fields (requires
spp_change_request) - Track event history with state transitions: draft → pending → active → superseded/expired/cancelled
| Model | Description |
|---|---|
spp.event.data |
Event record with registrant link, collection metadata |
spp.event.type |
Event type configuration (category, lifecycle, source) |
spp.event.field |
Custom field definition for JSON-based event types |
spp.event.type.mapping |
Field mapping for external source data transformation |
spp.create.event.wizard |
Wizard to create new event records from registrant form |
After installing:
- Navigate to Settings > Technical > Actions and search for "Event Types" to access event type configuration
- Create event types specifying code, category, target type, and storage mode
- For external sources: configure server URL, project ID, form ID, and field mappings in the "External Source" tab
- For approval: assign an approval definition from
spp_approvalmodule in the "Lifecycle Rules" tab - For change requests: enable in "Change Request" tab and configure
mappings (requires
spp_change_request) - Verify Event Data: Expire Events scheduled action is active under Settings > Technical > Scheduled Actions
- Registrant Form: "Event Data" stat button in button box opens create wizard
- Registrant Form: Events section displays event history list with state badges
- Event Data: Access via window action
action_spp_event_data(no menu defined in this module) - Event Form Tabs: Event Data, Source, History, Legacy Data, Approval
| Group | Access |
|---|---|
spp_security.group_spp_admin |
Full CRUD |
spp_registry.group_registry_manager |
Full CRUD |
spp_registry.group_registry_officer |
Read/Write/Create |
spp_registry.group_registry_viewer |
Read |
spp_registry.group_registry_read |
Read |
spp_registry.group_registry_write |
Read/Write |
spp_registry.group_registry_create |
Read/Write/Create |
- Inherit
spp.event.typeand overrideget_connector()to add custom external source connectors - Inherit
spp.event.dataand override_create_change_requests()to customize change request logic - Use
_get_active_event_id(),get_active_event(), andget_event_data_value()methods onres.partnerfor O(1) event lookup - Call
_refresh_active_event_cache()on registrants when events are activated/deactivated for cache consistency
base, mail, spp_registry, spp_base_common,
spp_security, spp_approval
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.





