This project is not covered by Drupal’s security advisory policy.

One incident rarely creates one duty.

A breach at an Indian operator serving European customers engages three regimes at once, from a single moment of awareness. They do not agree on the deadline, on what starts the clock, or on whether a threshold applies at all:

Duty Due
CERT-In report 6 hours
DPDP intimation to affected Data Principals without delay
DPDP initial description to the Board without delay
DPDP detailed intimation to the Board 72 hours
GDPR notification to the supervisory authority 72 hours, where feasible
GDPR communication to data subjects without undue delay, where article 34 applies

Missing one because you were occupied with another is the failure this module exists to prevent.

How it works

An incident records what happened. Each duty arising from it is a separate obligation, carrying its own trigger event, clock start and deadlines.

The trigger matters as much as the duration, because regimes disagree about what starts the clock. CERT-In starts on noticing or on being brought to notice. The DPDP Rules start on becoming aware. The GDPR starts on the controller becoming aware, which a processor's notification may be what causes. A single timestamp on an incident would force them all to pretend they agreed.

Deadlines are computed from the regime on every read rather than stored, so correcting a regime corrects the historical records instead of leaving a trail of wrong figures behind.

Regimes are plugins

No maintainer can track every statute. A jurisdiction can be added by another module without touching this one.

Every regime must cite the instrument its deadlines come from, and a test enforces that for all of them, present and future. A deadline sourced from a vendor blog is worse than no deadline, because an operator would rely on it.

Three ship today:

Plugin Jurisdiction Instrument
cert_in India No. 20(3)/2022-CERT-In, MeitY, 28 April 2022, under s. 70B(6) of the IT Act, 2000
dpdp_breach India S. 8(6), DPDP Act 2023; rule 7, DPDP Rules 2025 (G.S.R. 846(E), 13 November 2025)
gdpr_breach EU and EEA Articles 33 and 34, Regulation (EU) 2016/679, EUR-Lex CELEX 32016R0679

Implement RegimeInterface or extend RegimeBase, declare the plugin with the #[Regime] attribute, and supply a source. Contributions adding further jurisdictions are welcome.

What this module does not do

It does not make a site compliant. It records and times what you already know. An organisation that never notices an incident is not helped by it, and no amount of record-keeping substitutes for detection.

It does not decide which regimes apply to you. Whether you are an essential entity, a Significant Data Fiduciary, or a controller subject to the GDPR are legal questions with consequences. You declare the obligations; the module tracks the clocks that follow.

It does not detect incidents, and it does not submit reports. It records that a report was sent, by which route, and when.

It cannot confirm log retention. Core's Database Logging trims by row count rather than by age, so a busy site can discard a fortnight of entries while a quiet one keeps years, and where log data physically sits is a hosting question. The module reports both facts rather than displaying a tick it cannot justify.

Honest failure modes

An obligation whose regime plugin is missing, because the module providing that jurisdiction was uninstalled, reports no deadline rather than inventing one.

An incident with no obligation recorded against it says so plainly and warns on save, because an empty column would read as nothing to do when what it means is that nobody has yet decided which duties apply.

Permissions

Logging an incident and declaring it reported are separate permissions. Whoever notices something can record it immediately without also holding the authority to say a report was filed.

Requirements

Drupal 11. No third-party libraries.

Related

DPDP Compliance Toolkit covers the consent and Data Principal rights side of India's Act. A breach engages both: that module holds the consent and rights position, this one carries the clocks.

A note on the instruments

Every deadline here was checked against the instrument itself rather than against commentary, and that repeatedly mattered:

  • The seventy-two hours usually attributed to the DPDP Act appear nowhere in it. They are in rule 7(2)(b) of the Rules, and the duty is staged rather than single.
  • The penalty figures widely quoted for the CERT-In directions appear nowhere in them. The directions say only that non-compliance "may invite punitive action under sub-section (7) of the section 70B of the IT Act, 2000 and other laws as applicable". No figures are reproduced in this module.
  • The GDPR seventy-two hours are qualified. The duty is to notify "without undue delay and, where feasible, not later than 72 hours", and a later notification is permitted if accompanied by reasons for the delay. Article 33 also excuses notification where the breach is unlikely to result in a risk, which the Indian regimes do not.

Verify anything load-bearing against the instruments rather than against summaries, including this one.

Supporting organizations: 
Developed and maintains the module.

Project information

  • Project categories: Security
  • Created by vinodkannan18 on , updated
  • shield alertThis project is not covered by the security advisory policy.
    Use at your own risk! It may have publicly disclosed vulnerabilities.

Releases