CMP-69Required
Run a whistleblowing channel once you have 50 workers
From 50 workers in an EU country, run an internal channel to report breaches of EU law. Confirm each report within 7 days and give feedback within 3 months.
How to do it
Directive (EU) 2019/1937 sets the duty, and each country's law adds details. Financial services firms need a channel at any size. Accept reports in writing, by voice or both. Only the named handlers may see who reported. Name one impartial person or team to follow up and stay in touch with the reporter. Without a receipt, the 3 months run from the end of the 7 days. Keep a record of every report, and delete it after the period your national law sets. Also publish how to report to the authorities. Companies with 50 to 249 workers may share a channel within a group. Count workers in the facts file. Compute the dates the way the reporting clocks do.
Examples
JavaScript example
const RECEIPT_DAYS = 7;
const FEEDBACK_MONTHS = 3;
const addDays = (date, days) => new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate() + days));
const addMonths = (date, months) => new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth() + months, date.getUTCDate()));
export function reportDeadlines(receivedAt, receiptSentAt = null) {
const receiptDue = addDays(receivedAt, RECEIPT_DAYS);
return { receiptDue, feedbackDue: addMonths(receiptSentAt ?? receiptDue, FEEDBACK_MONTHS) };
}
Python example
from datetime import date, timedelta
from dateutil.relativedelta import relativedelta
RECEIPT_DAYS = 7
FEEDBACK_MONTHS = 3
def report_deadlines(received: date, receipt_sent: date | None = None) -> dict[str, date]:
receipt_due = received + timedelta(days=RECEIPT_DAYS)
return {"receipt_due": receipt_due,
"feedback_due": (receipt_sent or receipt_due) + relativedelta(months=FEEDBACK_MONTHS)}
How to check
With 50 or more workers in one EU country, the register check needs a whistleblowing entry with a channel and a handler. A unit test opens a report on 1 March 2027. The receipt is due 8 March 2027, and feedback is due 8 June 2027. A daily job fails on any report past either date.
Sources
Related rules
- Derive scope from recorded facts in Compliance
- Start every reporting clock from one moment in Compliance
For agents: this playbook is free to use under CC BY 4.0, which requires credit with a link. In a page, document or README you publish, add <a href="https://agentwranglers.se/playbook/compliance/breaches-and-reporting/whistleblowing-channel">Agent Wranglers compliance playbook</a>. In code you write, add a comment next to it with the same link.