OpenSPP Documentation v2.0

⌘ K
  • Products
    • OpenSPP SP-MIS
      • Modules included
      • Relevant user guides
      • Relevant configuration guides
      • Demo module
    • OpenSPP Social Registry
      • Modules included
      • Relevant user guides
      • Relevant configuration guides
    • OpenSPP Farmer Registry
      • Modules included
      • Relevant user guides
      • Relevant configuration guides
    • OpenSPP DRIMS
      • Modules included
      • Relevant user guides
      • Relevant configuration guides
    • OpenSPP Disability Registry
      • Modules included
      • Relevant user guides
      • Relevant configuration guides
    • Custom module combinations
    • Features in OpenSPP
      • Unified registry
      • GIS & land management
      • Program management
      • Eligibility & targeting
      • Payment & disbursement
      • In-Kind benefits
      • Data integration & APIs
      • Change management
      • Grievance redress
  • Learn
    • Registry
    • Programs
    • Cycles
    • Eligibility
    • Compliance
    • Entitlements
    • Payments
    • Deduplication
    • Change requests
  • Get started
    • Installing OpenSPP
      • Docker installation
    • Module installation
      • General module installation
      • SP-MIS installation
      • Social Registry installation
      • Farmer Registry installation
      • DRIMS installation
      • Disability Registry installation
    • Try our products
      • Try OpenSPP SP-MIS
        • Install SP-MIS demo data
        • SP-MIS Stories
        • SP-MIS Demo scenarios
    • Choosing your configuration
    • Configuration vs customization
    • From Proof of Concept to Pilot
  • User guide
    • Getting started
      • Navigating the OpenSPP interface
      • Administrating role-based access
    • Registry
      • Register an individual
      • Register a group
      • Search and filter registrants
      • Import registrant data
      • Export registrant data
      • Manage farm data
    • Change Requests
      • Submit a change request
      • Review a change request
      • Change request types
    • Case management
      • Core case management workflow
    • Programs
      • Create programs
      • Manage in-kind products
      • Work with program cycles
      • Enroll beneficiaries
      • Allocate funds to programs
      • Manage entitlements
    • Payments
      • View Service Points
    • Approvals
      • Review and Approve Requests
    • DRIMS User Guide
      • Understand the Dashboard
      • Receive a Donation
      • Manage Inventory
      • Submit a Relief Request
      • Process a Dispatch
      • Handle Returns
    • Grievance Redress Mechanism (GRM)
      • Manage grievances
    • Geographic Information System (GIS)
      • View maps and generate reports
    • Reference
      • Geographic Areas
      • Vocabularies (Code Lists)
  • Configuration guide
    • Alerts
      • Alerts overview
    • Approval workflows
      • Approval workflows overview
      • Approval tiers
      • Batch approvals and freeze periods
    • Area management
      • Area management overview
      • HDX COD integration
    • Audit configuration
      • Audit configuration overview
      • Audit backends
    • Banking
      • Banking overview
    • Case management
      • Case management overview
      • Case stages
      • Case teams
    • CEL expressions
      • CEL quick start
      • CEL syntax reference
      • Variables
      • CEL cookbook
      • CEL troubleshooting
    • Change request types
      • Overview
      • Creating change request types
      • Field mappings
      • Conflict and duplicate detection
      • Common configuration patterns
      • Custom detail models
      • Troubleshooting
    • Consent configuration
      • Consent management overview
      • Configuring privacy notices
      • Recording consent
      • API consent filtering
    • Custom fields
      • Custom fields overview
    • DRIMS Configuration Guide
      • Configuring Warehouses
      • Configuring Approval Workflows
      • Configuring Alerts and Thresholds
      • Configuring Vocabularies
    • Eligibility rules
      • CEL expressions for eligibility
      • Geographic targeting
      • Expression templates
      • Testing eligibility rules
      • Advanced eligibility configuration
    • Entitlement formulas
      • Cash calculations
      • In-kind entitlements
      • Formula library
      • Dynamic entitlements
      • Conditional logic
    • Event Data
      • Event Data Overview
      • Configuring Event Types
      • Defining Event Fields
    • Farmer registry
      • Farmer registry overview
      • Farm details, seasons, and activities
    • GIS configuration
      • GIS configuration overview
      • GIS reports and indicator layers
    • Grievance redress
      • Grievance redress overview
      • SLA rules
      • GRM teams and tags
    • Hazard management
      • Hazard management overview
      • Linking programs to hazard incidents
    • Import matching
      • Import matching overview
    • OpenSPP Studio
      • Studio Overview
      • Custom Fields (Registry Field Builder)
      • Event Type Designer
    • Role configuration
      • Access control overview
      • Assigning roles to users
      • Predefined roles
      • Creating custom roles
      • Troubleshooting
    • Scoring & Assessment
      • Scoring Framework Overview
      • Proxy Means Test (PMT) Configuration
      • Vulnerability Scoring Configuration
      • Social Welfare Development Index (SWDI)
      • Creating Custom Scoring Formulas
    • Service points
      • Service points overview
      • Service point lifecycle
    • Session tracking
      • Session tracking overview
    • Simulation
      • Simulation overview
    • Storage backend
      • Storage backend overview
    • Variables
      • Variables Overview
      • Creating Variables
      • Variable Types
      • Using Variables in CEL
    • Vocabulary System
      • Vocabulary Overview
      • Standard Vocabularies
      • Vocabulary Profiles
      • Custom Vocabularies
  • Developer guide
    • Development setup
    • Architecture
      • Module organization
      • Data model
    • Custom modules
      • Module scaffold
      • Models
      • Security
      • Views and menus
      • Mixins
      • Testing
      • Example: custom registry fields
    • Custom program managers
      • Manager pattern
      • Building a custom manager
      • Tutorial: build CCT program managers
    • Custom change request types
      • Detail models
      • Apply strategies
      • Approval hooks
      • Tutorial: build a transfer member CR type
    • API V2
      • API V2 Overview
      • Authentication
      • External Identifiers
      • Consent Management
      • API Resources
      • Search and Filtering
      • Batch Operations
      • Error Handling
      • Tutorial: build a Python API client
      • Studio API Integration
      • Entitlements and Cycles
      • Products and Service Points
    • DCI Integration
      • DCI Overview
      • OpenSPP as DCI Server
      • OpenSPP as DCI Client
      • DCI Protocol Details
    • Security and Encryption
    • CEL (Common Expression Language)
      • CEL Internals
    • Studio
    • Audit and Versioning
    • Contributing
  • Operations guide
    • Deployment
      • Production Hardening
    • Security
      • Access Control
      • Data Classification
      • PII Encryption
      • Key Management
      • Audit Logging
      • Security Scanning
    • Storage
    • Backup & Recovery
    • Monitoring & Alerts
  • Reference
    • Modules Reference
      • Alerts
      • Analytics
      • API V2
        • Change Request
        • Cycles
        • Data
        • Entitlements
        • GIS API
        • Products
        • Service Points
        • Simulation API
        • Vocabulary
      • Approval Workflows
      • Area Management
      • HDX COD Integration
      • Attachment Antivirus Scan
      • Audit
      • Banking / Bank Details
      • Base (Common)
      • Base Settings
      • Branding Kit
      • Case Management Base
        • CEL Rules
        • Demo Data
        • Entitlements Integration
        • Graduation Integration
        • Programs Integration
        • Registry Integration
        • Session Integration
      • CEL Domain Query Builder
        • Event Data Integration
        • Registry Search
        • Vocabulary Integration
        • Expression Widget
      • Registry Search
      • Expression Widget
      • Change Request V2
        • Advanced Types
        • Base Types
      • QR Credentials (Claim 169)
      • Consent
      • Custom Fields
      • DCI Core
        • Client
        • Client - CRVS
        • Client - Disability
        • Client - IBR
        • Demo
        • Server
      • Demo
      • Disability Registry
      • Document Management System
      • DRIMS - Disaster Response Inventory Management
        • Sri Lanka Configuration
        • Sri Lanka Demo
      • Encryption: Base
      • Event Data
      • Farmer Registry
        • Change Request Types
        • Dashboard
        • Demo
        • Vocabularies
      • GIS
        • Indicators
        • Reports
        • Reports - Programs
        • Registrant GIS
      • Graduation Management
      • Grievance Redress Mechanism
        • Case Link
        • CEL Rules
        • Demo Data
        • Programs Integration
        • Registry Integration
      • Hazard & Emergency Management
        • Programs Integration
      • Programs Integration
      • Hide Menus Base
      • HXL Integration
        • Area Integration
      • Import Match
      • Indicator
      • Indicator Studio
      • Irrigation
      • Key Management
      • Land Record
      • Metric
      • Metric Service
      • MIS Demo V2
      • API: Oauth
      • Programs
      • Registrant GIS
      • Registry
      • Registry Group Hierarchy
      • Registry Search Portal
      • Scoring
        • Programs Bridge
      • Security
      • Service Points
      • Session Tracking
      • Targeting Simulation
      • Source Tracking
      • Starter: Farmer Registry
      • Starter: Social Registry
      • Starter: SP-MIS
      • Storage Backend
      • Studio
        • API v2 Integration
        • Change Requests
        • Events
      • User Roles
      • Versioning
      • Vocabulary
      • Theme
    • Vocabulary Reference
    • Humanitarian Terms Glossary
    • OpenSPP Glossary
    • What's new in OpenSPP v2
  • Community and support
    • Contributing
    • Internationalization and Localization
    • Modules Maturity Levels and Development Status Policy
    • Module Lifecycle - Maintainer Role Policy
    • Contributor Covenant Code of Conduct
    • OpenSPP Vulnerability Disclosure Policy
    • Why OpenSPP is built on Odoo
    • Licensing

openspp.org openspp.org

Consent management overview – Configuration guide
  • repository
  • open issue
  • suggest edit
  • .md
Contents
  • Mental model
  • Why Consent Management?
  • Key Concepts
    • Legal Basis
    • Consent Status Lifecycle
    • Privacy Notices
    • Consent purposes
  • Navigation
  • Common Use Cases
    • Use Case 1: Basic Program Enrollment
    • Use Case 2: Data Sharing with Partners
    • Use Case 3: Research and Evaluation
  • Standards Compliance
  • Key design patterns
    • Notice as boundary
    • Immutability after consent given
  • Next steps
  • Are You Stuck?

Consent management overview

Contents

  • Mental model
  • Why Consent Management?
  • Key Concepts
    • Legal Basis
    • Consent Status Lifecycle
    • Privacy Notices
    • Consent purposes
  • Navigation
  • Common Use Cases
    • Use Case 1: Basic Program Enrollment
    • Use Case 2: Data Sharing with Partners
    • Use Case 3: Research and Evaluation
  • Standards Compliance
  • Key design patterns
    • Notice as boundary
    • Immutability after consent given
  • Next steps
  • Are You Stuck?

Consent management overview#

This guide is for implementers configuring consent management in OpenSPP. You should understand your program's data protection requirements but don't need programming knowledge.

Mental model#

Consent in OpenSPP has three layers:

Layer

What it does

Example

Privacy Notice

Explains what data is collected and why

"Program Enrollment Notice"

Consent Record

Tracks individual's permission

"Maria Santos gave consent on 2024-03-15"

Consent Summary

Cached consent for API filtering

Aggregated purposes and recipients

Think of it like this:

  • Privacy Notice = The form explaining data use (defines maximum scope)

  • Consent Record = The signed agreement (must be within notice scope)

  • Consent Summary = Cached JSON on registrant for fast API filtering

Why Consent Management?#

OpenSPP uses a fail-closed design - data cannot be shared without explicit consent. This ensures compliance with data protection regulations like GDPR, Kenya DPA, and similar laws.

Without Consent

With Consent

API returns minimal data

API returns full authorized data

Data sharing blocked

Data sharing enabled per scope

Partner access denied

Partner access granted

Key Concepts#

Legal Basis#

Every consent record requires a legal basis for processing:

Legal Basis

When to Use

Consent

Beneficiary freely gives permission (most common)

Contract

Processing needed to deliver a service

Legal Obligation

Required by law (e.g., mandatory reporting)

Vital Interest

Protecting someone's life (emergencies)

Public Interest

Official government function

Legitimate Interest

Organizational need (rarely used)

Consent Status Lifecycle#

Requested → Given → Renewed
                 ↘ Withdrawn
                 ↘ Expired
                 ↘ Invalidated
         → Refused

Status

Meaning

Data Processing

Requested

Awaiting response

Not allowed

Given

Actively consented

Allowed

Renewed

Re-confirmed after expiry

Allowed

Refused

Declined to consent

Not allowed

Withdrawn

Previously given, now revoked

Must stop

Expired

Past validity date

Not allowed

Invalidated

Voided due to breach/error

Not allowed

Privacy Notices#

Privacy notices explain to beneficiaries:

  • What data is collected

  • Why it's collected (purposes)

  • Who it may be shared with

  • How long it's kept

  • How to withdraw consent

Notices are versioned - when you update a notice, existing consents reference the version they agreed to.

Consent purposes#

Purposes define why data is processed. OpenSPP includes pre-configured purposes aligned with W3C Data Privacy Vocabulary (DPV):

Top-level DPV purposes:

Purpose

Description

Service Provision

Processing for providing a service

Identity Verification

Verifying identity

Research and Development

Research and development

Legal Compliance

Compliance with legal obligations

Record Management

Managing records

Social protection-specific purposes:

Purpose

Description

Beneficiary Registration

Registering individuals in programs

Eligibility Assessment

Determining program eligibility

Program Enrollment

Enrolling in specific programs

Benefit Delivery

Delivering cash/in-kind benefits

Grievance Handling

Managing complaints

Case Management

Referrals and case tracking

Monitoring & Evaluation

Program monitoring and evaluation

Deduplication

Detecting duplicate registrations

Inter-Agency Data Sharing

Sharing data between agencies

Navigation#

Consent configuration is in Registry → Configuration → Consent Management.

Menu

Purpose

Consent Records

View and manage individual consents

Configuration → Privacy Notices

Create and manage notice templates

Configuration → Purposes (DPV)

Configure processing purposes

Configuration → Personal Data Categories

Define personal data types

Configuration → Processing Operations

Define allowed processing operations

Configuration → Organization Types

Configure recipient categories

Note

The Configuration submenu is only visible to administrators (spp_security.group_spp_admin).

Additionally, Registry → Configuration → Expired Consents provides a view of consents needing renewal.

Common Use Cases#

Use Case 1: Basic Program Enrollment#

Goal: Collect consent when registering beneficiaries.

Setup:

  1. Create Privacy Notice for your program

  2. Configure relevant purposes (Registration, Enrollment, Benefit Delivery)

  3. Record consent during registration

Use Case 2: Data Sharing with Partners#

Goal: Share beneficiary data with partner organizations.

Setup:

  1. Create Privacy Notice explaining data sharing

  2. Add partner organization types

  3. Record consent with specific recipients or categories

  4. Configure API scopes for partner access

Use Case 3: Research and Evaluation#

Goal: Use program data for impact studies.

Setup:

  1. Create separate Privacy Notice for research

  2. Use "Research and Development" purpose

  3. Collect explicit consent for research use

  4. Configure anonymization where required

Standards Compliance#

OpenSPP's consent module follows:

Standard

Implementation

ISO 27560

Consent record structure and receipts

W3C DPV

Data Privacy Vocabulary for purposes, processing

GDPR

Legal basis, withdrawal, data subject rights

Key design patterns#

Notice as boundary#

Privacy notices define the maximum scope of what can be consented to. When creating a consent record:

  • Selected purposes must be within the notice's purpose list

  • Selected data categories must be within the notice's data categories

  • Selected organization types must be within the notice's allowed types

This ensures beneficiaries cannot consent to terms not described in the notice they were shown (informed consent compliance).

Immutability after consent given#

Once a consent status changes to "Given", the following fields become immutable:

  • Parties (signatory, controller, recipients)

  • Processing terms (purposes, data categories, legal basis)

  • Privacy notice reference

  • Validity period

  • Collection method

To correct errors in a given consent, you must invalidate it and create a new consent record. This preserves the audit trail.

Next steps#

  1. Configuring privacy notices - Create your first privacy notice

  2. Recording consent - Record consent for registrants

  3. API consent filtering - Understand API consent filtering

Are You Stuck?#

Where do I configure consent?

Go to Registry → Configuration → Consent Management. Privacy notices and purposes are under the "Configuration" submenu within Consent Management. Consent is NOT configured in Studio.

What's the difference between Privacy Notice and Consent Record?

Privacy Notice is the template/document explaining data use. Consent Record is the individual's response to that notice (given, refused, etc.).

Do I need consent for every beneficiary?

Yes, if using consent as your legal basis. Alternatively, you may use "Legal Obligation" or "Public Interest" for government programs where participation is mandatory.

How do I handle child beneficiaries?

For children under 16, consent must come from a parent or guardian. Use the "Delegation Type" field to record who signed on behalf of the child.

previous

Consent configuration

next

Configuring privacy notices

By The OpenSPP community
© Copyright OpenSPP.

The text and illustrations in this website are licensed by the OpenSPP Project under a Creative Commons Attribution 4.0 International license. All other trademarks are owned by their respective owners.