How to read these messages
The messages in this table are in English. We have kept them word for word so you can search by pasting what appears on your screen. They are ordered by task: publishing a channel, setting up the Responsable, moving a report, requesting an extension, closing, attaching files, adjusting retention and touching the records the module protects.

Whistleblowing › Channels, a channel in Published state with its slug in lowercase letters and hyphens.Whistleblower Channel message table
| Message | When it appears | What to do |
|---|---|---|
Tick the box to accept before activating the hosted channel. | When activating the hosted channel without ticking the acceptance box. | Tick the box and activate it again. |
Slug must be lowercase letters, digits and hyphens (2-64 chars). | When saving a channel whose slug has characters other than lowercase letters, digits or hyphens, or is not between 2 and 64 characters. | Use only lowercase letters, digits and hyphens, such as acme-internal-channel. |
Anonymous reporting is mandatory in Spain (Ley 2/2023 art. 7.3); cannot be disabled for a Spanish company channel. | When trying to switch off anonymous reporting on a Spanish company's channel. | The module will not allow it: leave the option on. The message cites art. 7.3 of Ley 2/2023 as the reason. |
Whistleblowing channels require HTTPS. The current web.base.url (%s) is plain HTTP. Configure TLS before publishing. | When publishing while web.base.url is HTTP. Where it says %s, the current value of web.base.url appears. | Configure TLS and make web.base.url an HTTPS address before publishing. |
Cannot publish a channel without a Responsable. | When publishing a channel with no Responsable. | Assign a Responsable to the channel and publish again. |
Cannot publish a channel without a Policy. | When publishing a channel with no Policy. | Add the Policy to the channel. |
Cannot publish a channel without a Privacy Notice. | When publishing a channel with no Privacy Notice. | Add the Privacy Notice to the channel. |
A person Responsable requires a linked user. | When saving a person-type Responsable with no linked user. | Link an Odoo user to it. |
A collegiate Responsable requires a name. | When saving a collegiate Responsable with no name. | Give it a name. |
Only one active Responsable del Sistema per company is allowed. | When activating a second Responsable del Sistema in the same company. | Keep only one active per company. |
Appointment date cannot be in the future. | When entering an appointment date later than today. | Use an appointment date that is not in the future. |
No Responsable assigned to the channel; cannot book a meeting. | When booking a meeting on a channel with no Responsable. | Assign a Responsable to the channel. |
Only reports in state 'Received' can be acknowledged. | When acknowledging a report that is not in Received. | Check the state: this step only works from Received. |
Only acknowledged reports can move to triage. | When moving an unacknowledged report to triage. | Acknowledge it first, then move it to triage. |
Investigation can only start from 'triaged' or 'acknowledged'. | When starting the investigation from any other state. | Move the report to triaged or acknowledged first. |
Extension justification must be at least 30 characters. | When the extension justification is under 30 characters. | Write a fuller justification. |
|---|---|---|
Extension cannot push the deadline beyond 6 months from receipt (Ley 2/2023 art. 9.2.d). | When the extension would take the deadline past 6 months from receipt. | Choose a date within that limit. |
Invalid closure state. | When closing with an invalid closure state. | Check the closure state you chose and use a valid one. |
Outcome and measures summary are mandatory at closure. | When closing without an outcome or a measures summary. | Fill in both before closing. |
Select an external authority before forwarding. | When forwarding a report without choosing an external authority. | Select the authority and forward again. |
Message body is required. | When sending an empty message. | Write the message text. |
Attachment exceeds the per-file size cap. | When attaching a file above the per-file limit. | Shrink the file or split it. |
Attachments total exceeds the per-report size cap. | When the attachments together exceed the per-report limit. | Remove or shrink attachments. |
Not-pursued purge days must be between 1 and 90 (Ley 2/2023 art. 32 cap). | When saving not-pursued purge days outside 1 to 90. | Enter a value between 1 and 90. |
Libro-registro retention must be between 1 and 10 years (Ley 2/2023 art. 26.2 cap). | When saving libro-registro retention outside 1 to 10 years. | Enter a value between 1 and 10. |
The libro-registro is append-only and cannot be modified. or The libro-registro is append-only and cannot be deleted. | When editing or deleting a libro-registro entry. | It cannot be done: the register only accepts new entries. |
The access log is append-only and cannot be modified. or The access log is append-only and cannot be deleted. | When editing or deleting an access log entry. | It cannot be done: it only accepts new entries. |
Lifecycle events are append-only and cannot be modified. or Lifecycle events are append-only and cannot be deleted. | When editing or deleting a lifecycle event. | It cannot be done: they only accept new entries. |
Audit pack download requires Responsable/DPO/Auditor group. | When downloading an Audit Pack without belonging to those groups. | Ask to be given the Responsable, DPO or Auditor group. |
Report states, extension and closure
Several messages set out the order the module enforces. A report can only be acknowledged from Received, only an acknowledged report can move to triage, and the investigation starts from triaged or acknowledged. If one of these warnings appears, first check which state the report is in on the form's status bar.

Received, still without content: on the Report content tab, the description of the facts and the outcome are empty.The extension goes through two checks: a justification of at least 30 characters and a cap of 6 months from receipt. The messages cite art. 9.2.d of Ley 2/2023: this is what the module checks, not a legal summary. To close, the module asks for the outcome (Outcome) and the measures summary, as well as a valid closure state.

We cover the full state flow in how the module works under the bonnet, and the fields to fill in at the start in the setup guide.
Append-only records and the audit pack
The libro-registro, the access log and the lifecycle events are append-only: the module does not let you modify or delete their entries. The six warnings in the table that mention append-only come from this, and the message itself says so.
The audit pack has its own control: downloading it requires the Responsable, DPO or Auditor group. Packs live under Whistleblowing › Audit Packs.

Ready, still without data: the Pack Attachment field and the pack hash field are still empty.How FlexigoTech can help
FlexigoTech implements Odoo 17, 18, 19 and 20 and builds bespoke connectors and integrations, so we can go through the channel set-up with you if a message is blocking you. The app is published on Odoo Apps for 17, 18, 19 and 20, at €9 excluding VAT, a one-off payment per Odoo version. There is more detail on the module page.
Keep reading
Checked in the module's source code (version 20.0) and the linked sources
Sources
- Module source code: flexigo_whistleblowing 20.0 (8dfc517f): controllers/audit_export.py
- Module source code: flexigo_whistleblowing 20.0 (8dfc517f): models/fgt_canal.py
- Module source code: flexigo_whistleblowing 20.0 (8dfc517f): models/wb_channel.py
- Module source code: flexigo_whistleblowing 20.0 (8dfc517f): models/wb_libro_registro.py
- Module source code: flexigo_whistleblowing 20.0 (8dfc517f): models/wb_meeting.py
- Module source code: flexigo_whistleblowing 20.0 (8dfc517f): models/wb_report.py
- Module source code: flexigo_whistleblowing 20.0 (8dfc517f): models/wb_report_access_log.py
- Module source code: flexigo_whistleblowing 20.0 (8dfc517f): models/wb_report_attachment.py
- Module source code: flexigo_whistleblowing 20.0 (8dfc517f): models/wb_report_event.py
- Module source code: flexigo_whistleblowing 20.0 (8dfc517f): models/wb_report_extension.py
- Module source code: flexigo_whistleblowing 20.0 (8dfc517f): models/wb_responsable.py
- Module source code: flexigo_whistleblowing 20.0 (8dfc517f): models/wb_retention_policy.py
- apps.odoo.com/apps/modules/20.0/flexigo_whistleblowing
- apps.odoo.com/apps/modules/17.0/flexigo_whistleblowing
- apps.odoo.com/apps/modules/18.0/flexigo_whistleblowing
- apps.odoo.com/apps/modules/19.0/flexigo_whistleblowing
- flexigotech.com/en/services.html
