Privacy Partner's Right to be Forgotten

privacy_partner_to_be_forgotten
REPOSITORY
REPOSITORYOCA/data-protection
GIT
GIThttps://github.com/OCA/data-protection.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/data-protection/tree/18.0/privacy_partner_to_be_forgotten
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYData Protection
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Cetmix
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Cetmix
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, michelerusti
WEBSITE
WEBSITEhttps://github.com/OCA/data-protection
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:08
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - contacts
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
The module allows anonymizing contacts that represent natural persons (i.e., individuals) when they are no longer needed or when a data erasure request is received.

This module provides a method to anonymize all personally identifiable information (PII) from a `res.partner` record:
- Name (e.g., replaced with initials or a generic label) for individual contacts
- Email address
- Phone numbers
- Street and address fields
- Tax ID
- Citizen Identification
- Job position and title
- Internal Notes
- Attached images (e.g., avatar)

The anonymization preserves the partner's link to its parent company if applicable (e.g., for a B2B contact) but ensures that the individual is no longer identifiable through the remaining data or relationships.

Additionally, the module removes all chatter messages (`mail.message`) and attachments associated with the partner record, as these may contain personal information, such as communication history, internal notes, or file uploads. This ensures complete anonymization and supports full GDPR compliance.

If the partner is linked to one or more `res.users` records (e.g., as a portal user or employee), the module will anonymize these user records:
-  The user login and email are replaced with anonymized values, and the user is archived.

A log note is added to the partner record chatter to indicate the anonymization event, supporting traceability.

Code Analysis

Views touched (1)
XML IDNameModelTypeStatus
view_partner_anonymize_wizard_form partner.anonymize.wizard.form partner.anonymize.wizard form New
Models touched (2)

New fields (1)
  • partner_ids Many2many → res.partner
    readonly=True required=True args: 'res.partner'
Public methods (2)
  • action_confirm(self)
    Confirm and process partner anonymization for multiple partners
  • default_get(self, fields_list)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • anonymize_partner_data(self)
    Anonymize partner and all related data. Executes anonymization in the following steps: 1. Generates anonymized identifiers 2. Anonymizes related user accounts 3. Anonymizes partner record 4. Removes related messages 5. Removes related attachments 6. Logs the anonymization action Note: This operation is irreversible and removes all personal data traces.
REPOSITORY
REPOSITORYOCA/data-protection
GIT
GIThttps://github.com/OCA/data-protection.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/data-protection/tree/17.0/privacy_partner_to_be_forgotten
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYData Protection
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Cetmix
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Cetmix
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, anatoly.miheev
WEBSITE
WEBSITEhttps://github.com/OCA/data-protection
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:20:02
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - contacts
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
The module allows anonymizing contacts that represent natural persons (i.e., individuals) when they are no longer needed or when a data erasure request is received.

This module provides a method to anonymize all personally identifiable information (PII) from a `res.partner` record:
- Name (e.g., replaced with initials or a generic label) for individual contacts
- Email address
- Phone numbers
- Street and address fields
- Tax ID
- Citizen Identification
- Job position and title
- Internal Notes
- Attached images (e.g., avatar)

The anonymization preserves the partner's link to its parent company if applicable (e.g., for a B2B contact) but ensures that the individual is no longer identifiable through the remaining data or relationships.

Additionally, the module removes all chatter messages (`mail.message`) and attachments associated with the partner record, as these may contain personal information, such as communication history, internal notes, or file uploads. This ensures complete anonymization and supports full GDPR compliance.

If the partner is linked to one or more `res.users` records (e.g., as a portal user or employee), the module will anonymize these user records:
-  The user login and email are replaced with anonymized values, and the user is archived.

A log note is added to the partner record chatter to indicate the anonymization event, supporting traceability.

Code Analysis

Views touched (1)
XML IDNameModelTypeStatus
view_partner_anonymize_wizard_form partner.anonymize.wizard.form partner.anonymize.wizard form New
Models touched (2)

New fields (1)
  • partner_ids Many2many → res.partner
    readonly=True required=True args: 'res.partner'
Public methods (2)
  • action_confirm(self)
    Confirm and process partner anonymization for multiple partners
  • default_get(self, fields_list)
    @api.model

New fields (0)

No new fields.

Public methods (1)
  • anonymize_partner_data(self)
    Anonymize partner and all related data. Executes anonymization in the following steps: 1. Generates anonymized identifiers 2. Anonymizes related user accounts 3. Anonymizes partner record 4. Removes related messages 5. Removes related attachments 6. Logs the anonymization action Note: This operation is irreversible and removes all personal data traces.
STATUS
STATUSOpen migration PR - not merged yet for this version
REPOSITORY
REPOSITORYOCA/data-protection
PULL REQUEST
PULL REQUEST[12.0][MIG] privacy_partner_to_be_forgotten (#93)
STATUS
STATUSOpen migration PR - not merged yet for this version
REPOSITORY
REPOSITORYOCA/data-protection
PULL REQUEST
PULL REQUEST[19.0][MIG] privacy_partner_to_be_forgotten (#94)