Feature · breach clock

Two stages, one clock, and it starts when you find out

Rule 7 of the DPDP Rules sets two stages once you become aware of a personal data breach. First, without delay, you intimate each affected Data Principal and the Data Protection Board — what happened, its likely nature, extent and impact, and what people can do about it. Second, within seventy-two hours of becoming aware, or a longer period if the Board allows it on request, you give the Board the detailed report: the facts, the cause, the mitigation, and the intimations you made. Only the second stage carries a number, and the question that decides everything downstream is which timestamp you started it from.

Tarun Gupta · Chief Executive Officer

Part of

Breach Management

This page is about the clock and the notification mechanics. The module covers containment, root cause and the standing register.

Two timestamps, and only one of them starts anything

Every incident record carries two times. The incident time is when the thing happened — when the bucket was left open, when the credential leaked. The detection time is when you became aware of it. They are frequently weeks apart and people record them the wrong way round under pressure.

The clock runs from detection. Seventy-two hours from the moment of awareness to the detailed report to the Board — an outer limit rather than a target, because the first intimation to the Board and to affected people is due without delay and should not wait for the report to be ready. The incident time is captured because it matters to the investigation, the affected population and the root cause, but it starts nothing.

That is the right reading of the obligation and it is also the honest one operationally. You cannot report to a regulator about something you do not know about, and a system that started the clock at the incident time would mark every historic discovery as already overdue on creation, which teaches people to record the detection time as the incident time to make the badge go green.

Five warning states, and what amber actually means

The clock produces one of five states, which is more than most dashboards bother with and each of them means something different for what you should do next.

  • Met — notified on or before the deadline. Nothing further on the clock.
  • Late — notified, but after the deadline. The record keeps the fact rather than hiding it, because a late notification that was made is a materially different position from one that was not.
  • Red — not notified and the deadline has passed. This is the one that should be on a screen somebody is looking at.
  • Amber — not notified, twenty-four hours or less remaining. This is the only twenty-four in the module and it is a warning threshold, not a second deadline.
  • Green — not notified, more than twenty-four hours remaining.

There is no reportability engine, and there should not be

Nothing in the system decides whether an incident is a reportable personal data breach. There is no flag, no scoring model, no automatic verdict. Creating the record is the decision, and the clock starts unconditionally from there.

That is a deliberate refusal rather than a missing feature. Whether a given incident is a reportable breach is a judgement that depends on facts inside your organisation — what data was involved, who could actually reach it, what compensating controls held. A product that returned an automatic answer would be asserting something it is not in a position to conclude, and the organisation would carry the consequence of its being wrong.

What the platform does instead is make the judgement cheap to record and impossible to lose: who decided, when, on what facts, and what happened next.

Notifying principals is a list, not a broadcast

The notification endpoint requires an explicit list of recipients. Sending an empty list does not mean everybody — it is refused, with a message saying that the obligation is per-principal notification rather than a bulk broadcast to every customer in the tenant.

That refusal is the single most opinionated thing in this module. The path of least resistance after a breach is to mail the whole customer table, and it is wrong twice over: it tells people unaffected by an incident that their data may have been exposed, and it destroys your ability to show afterwards who you actually notified and why.

The rest of the controls follow from the same instinct. A subject line and a body are both required, with a minimum body length enforced at the API rather than only in the form, so an integration cannot push a near-empty notice. Addresses are normalised and deduplicated. The list is capped. Sends are counted individually, with successes and failures reported back.

And the failure behaviour is the part worth quoting: if every send fails, the notification timestamp is deliberately not stamped. Recording that principals were notified when nothing was delivered would be a false compliance record, and a false compliance record is worse than an obvious gap because it is the one you will rely on.

Seven audiences, because the Board is not the only reader

A breach produces more than one communication and they cannot be the same text. Notification drafts are generated for seven audiences: the Data Protection Board, affected data principals, the internal incident response team, the board or senior leadership, affected vendors and sub-processors, joint data fiduciaries, and employee awareness.

Each draft is generated once and never regenerated over an existing one, so an edited draft is safe. Each tracks its own state — draft, edited, sent or skipped — and skipped is a first-class option, because "we considered the joint fiduciaries and there were none" is a recorded decision while an empty template is an unanswered question.

Where no model provider is configured, the drafts fall back to a structured summary of the facts on the record. That is deliberately not a failure state: during an incident the thing you need is the facts assembled in one place, and a generated paragraph is a convenience on top of that.

Board notification is a reference, not a checkbox

Marking the Board notified takes the acknowledgement reference from the Board's own portal. That reference is the record, and its timestamp is what the regulator will treat as the notification time.

This is a small design decision with a large audit consequence. A checkbox marked by whoever remembered proves nothing. A stored reference from the receiving system ties your record to theirs, which is the difference between asserting you notified and being able to show it.

Closing requires a root cause, and the API enforces it

The lifecycle runs open, contained, notifying, notified, closed. Containment is stamped with its own timestamp and notes. Closing requires root-cause notes, and empty notes are refused with a four-hundred at the API — not a form validation that a direct caller could route around.

That is the strictest hard gate in the whole platform, and it is there because closing a breach without a root cause is how the same breach happens again. Corrective actions live in the same record alongside the immediate measures, and the task the system opened when the incident was created — the one naming the Board deadline — closes when the notification is made rather than when somebody ticks it off.

Every action appends to a timeline: what happened, who did it, when, with notes. During an incident nobody writes the chronology. Afterwards, everybody needs it.

Questions teams ask about this

Does the breach clock run from the incident or from when we found out?

From detection — the moment you became aware. Both timestamps are recorded because the incident time matters to the investigation and the affected population, but the seventy-two hours for the detailed Board report run from awareness. A system that ran the clock from the incident time would mark every historic discovery as overdue the instant it was recorded.

Is there a separate twenty-four-hour deadline for notifying the Board?

No. Rule 7 asks for the Board and each affected principal to be told without delay, and for the detailed report to reach the Board within seventy-two hours of awareness; there is no twenty-four-hour stage. The twenty-four you will see in the platform is the amber warning threshold on the seventy-two-hour clock — the point at which a day or less remains — not a deadline of its own.

Can we notify every customer rather than assembling a recipient list?

The endpoint refuses an empty recipient list explicitly, on the basis that the obligation is per-principal notification rather than a broadcast. Mailing the whole customer table alarms people who were not affected and destroys your ability to evidence who you actually notified. Subject and body are both required, with a minimum body length enforced at the API rather than only in the form.

What stops a breach being closed without a root cause?

The API does. Closing with empty root-cause notes is rejected outright, not merely blocked in the interface, so a direct integration cannot route around it. It is the strictest hard gate in the platform, on the reasoning that a breach closed without a root cause is one you have arranged to have again.

Does the platform decide whether an incident is reportable?

No, and that is deliberate. There is no reportability flag or scoring model anywhere in the module. Whether an incident is a reportable personal data breach depends on facts inside your organisation, and a product returning an automatic verdict would be asserting something it cannot conclude while you carry the consequence. Creating the record is the decision; the platform makes it cheap to record and impossible to lose.

Describes how ProtectComply implements one obligation under the DPDP Act, 2023 and the DPDP Rules. General information, not legal advice.

Tarun Gupta — Chief Executive Officer. Tarun leads Exuverify, which builds ProtectComply. He works with Indian teams putting DPDP programmes into production and writes about what actually survives an audit.

Run a breach drill before you need one

Open a test incident, start the clock, generate the notification drafts and see who is missing from the list.

See Breach Management →