OpenSPP Documentation v2.0

⌘ K
  • Products
    • OpenSPP SP-MIS
    • OpenSPP Social Registry
    • OpenSPP Farmer Registry
    • OpenSPP DRIMS
    • Features
      • Unified registry
      • GIS & land management
      • Program management
      • Eligibility & targeting
      • Payment & disbursement
      • In-Kind benefits
      • Data integration & APIs
      • Change management
      • Grievance redress
    • What's new in OpenSPP v2
  • Learn
    • Registry
    • Programs
    • Cycles
    • Eligibility
    • Compliance
    • Entitlements
    • Payments
    • Deduplication
    • Change requests
  • Get started
    • Installing OpenSPP
      • Docker installation
    • Module installation
      • SP-MIS installation
      • Social Registry installation
      • Farmer Registry installation
    • Explore OpenSPP
    • Your first household
      • Step 1: Access the Registry
      • Step 2: Create a Household
      • Step 3: Add members
    • Your first program
      • Step 1: Access the program section
      • Step 2: Create your first social protection program
      • Step 3: Import and enroll beneficiaries
      • Step 4: Understanding program cycles
      • Step 5: Distribute entitlements
    • 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
    • Change Requests
      • Submit a change request
      • Review a change request
      • Change request types
    • 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
    • Reference
      • Geographic Areas
      • Vocabularies (Code Lists)
  • Configuration guide
    • OpenSPP Studio
      • Studio Overview
      • Custom Fields (Registry Field Builder)
      • Event Type Designer
      • Change Request Builder
    • CEL expressions
      • CEL quick start
      • CEL syntax reference
      • Variables
      • CEL cookbook
      • CEL troubleshooting
    • Eligibility rules
      • CEL expressions for eligibility
      • Geographic targeting
      • Expression templates
      • Testing eligibility rules
      • Advanced eligibility configuration
    • Entitlement formulas
      • Cash calculations
      • In-kind and basket entitlements
      • Formula library
      • Dynamic entitlements
      • Conditional logic
    • Vocabulary System
      • Vocabulary Overview
      • Standard Vocabularies
      • Vocabulary Profiles
      • Custom Vocabularies
    • Variables & Indicators
      • Variables Overview
      • Creating Variables
      • Variable Types
      • Using Variables in CEL
    • Event Data
      • Event Data Overview
      • Configuring Event Types
      • Defining Event Fields
    • 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
    • Role configuration
      • Access control overview
      • Assigning roles to users
      • Predefined roles
      • Creating custom roles
      • Troubleshooting
  • 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
      • API V2
      • API V2 - Cycles
      • API V2 - Data
      • API V2 - Entitlements
      • API V2 - Products
      • API V2 - Service Points
      • API V2 - Vocabulary
      • Approval Workflows
      • Area Management
      • Audit
      • Banking / Bank Details
      • Base (Common)
      • Base Settings
      • Branding Kit
      • CEL Domain Query Builder
      • CEL Expression Widget
      • Change Request V2
      • QR Credentials (Claim 169)
      • Consent
      • CR Types - Advanced
      • CR Types - Base
      • Custom Fields
      • DCI Client
      • DCI Client - CRVS
      • DCI Client - Disability Registry
      • DCI Client - IBR
      • DCI Server
      • Demo
      • Document Management System
      • Event Data
      • GIS
      • GIS Reports
      • Grievance Redress Mechanism
      • Hide Menus Base
      • Key Management
      • MIS Demo V2
      • Programs
      • Registry
      • Registry Search Portal
      • Security
      • Service Points
      • Source Tracking
      • Starter: Social Registry
      • Starter: SP-MIS
      • Studio
      • Studio - Change Requests
      • Studio - Events
      • User Roles
      • Versioning
      • Vocabulary
      • Theme
    • Vocabulary Reference
    • Humanitarian Terms Glossary
    • OpenSPP Glossary
  • 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
    • 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.