EH HR Lawsuit
Legal case tracking for HR, on a configurable workflow with a tamper-evident audit trail.
Why this module
EH HR Lawsuit
Configure, do not code
Case states and the transitions between them live in the workflow engine as records, not Python. An administrator changes how cases progress without a billable developer day, and the statusbar reflects it immediately.
Tamper-evident by default
Every create, edit and transition is written to an append-only log where each row is hash-chained to the one before it. Run verify_chain on demand to prove no row was altered after the fact.
Strict company isolation
Each case is owned by one company and required to be. Cross-company writes are refused even under sudo unless an explicit override context is set, and any such elevation is itself written to the audit trail.
Day in the life
From filing to closure, on the record
An unfair dismissal claim arrives. An HR officer opens a new case, sets it to labour, names the Fair Work Commission as the court, records the filed date and the amount claimed, and links the former employee. The case auto-numbers as LAW/2026/00001 and starts in draft. The officer opens the case, then advances it to court as the hearing approaches. Each move is gated to the HR officer group and written to the hash-chained audit log with before and after values. When the matter resolves, the officer closes it; closed is a final state, so the engine refuses any further transition. A parallel matter that never reaches court is dismissed straight from open. Months later an auditor asks who changed the claim amount and when, and the verified chain answers without any extra tooling.
Edge cases
The cases most modules quietly ignore.
In the shipped code today, each one a place where a cheaper module silently does the wrong thing.
The audit log is append-only and hash-chained with sha256; each row binds the previous row's hash, so any silent edit is caught by verify_chain, which walks the chain with keyset pagination so the check stays bounded however large the log grows.
Audit appends take a transaction-scoped Postgres advisory lock, so two concurrent writes cannot read the same chain tail and fork it; the lock releases automatically on commit or rollback.
Closed and dismissed are marked final. The workflow engine refuses any further transition out of a final state, even one a misconfigured definition might declare, so a resolved case cannot be quietly reopened through the normal path.
company_id is required and defaults to the active company. A write that moves a case to a company the user does not belong to is refused, and any permitted cross-company elevation is recorded in the audit trail with every affected record id.
The case reference is drawn from a global ir.sequence only when still 'New', so imports or copies that supply a number keep it, and a sequence outage falls back to a safe placeholder instead of failing the create.
Each transition is restricted to the HR officer group. A user outside the allowed groups is rejected with a clear error, while a system administrator may still drive the workflow.
A case need not relate to an employee. The employee link is optional, and where it is set the field uses ondelete restrict so an employee with a live case cannot be deleted out from under it.
What is inside
Built to do the job, end to end.
- Models this module adds. One model, eh.hr.lawsuit, carrying the case reference, title, optional employee, case type, court, filed date, amount claimed and description, plus the workflow state.
- Workflow shipped as data. A Lawsuit workflow definition with five states (draft, open, in court, closed, dismissed) and four transitions (open case, to court, close, dismiss), all editable in the workflow engine rather than in code.
- Platform engines it stands on. Built on eh_hr_core, eh_hr_compat and eh_hr_engine_workflow, plus standard Odoo hr. It owns no workflow or audit code itself; it inherits the workflow, audit, company-scope and platform-event mixins.
- Security and access. Access rights for HR admin, HR officer and HR manager groups, with the lawsuit menu and every workflow transition gated to the HR officer group.
- Tests in the box. An automated test suite covers default numbering and initial state, optional-employee cases, the full draft to closed path, and dismissal straight from open.
Honest about the edges
What this does not do, so nothing surprises you.
- This module records and tracks legal cases. It is a register and workflow, not legal advice or a document-assembly tool.
- Case progression is a single linear workflow (draft, open, in court, closed, dismissed). It does not model parallel sub-matters, appeals as separate lifecycles, or per-case custom stages out of the box.
- No approval chain is wired onto the lawsuit transitions on this branch, so transitions complete immediately for users in the HR officer group rather than routing for sign-off.
- There are no built-in deadline reminders, SLA timers, hearing-date alerts or scheduled jobs in this module. It does not chase dates for you.
- It ships no reports, dashboards or analytics views beyond the standard list and form; reporting is via Odoo's native tools over the case records.
- File evidence and correspondence attach through the standard chatter; there is no dedicated document vault or court-bundle generator.
Odoo HR lawsuit, employee legal case management, lawsuit tracking Odoo 17, litigation register, court case tracker HR, HR legal compliance Odoo, labour dispute tracking, legal case workflow Odoo, tamper-evident audit trail HR, hash-chained audit log, multi-company HR Odoo, employee litigation log, HR case management Community, ERP Heritage HR Platform
Need this fitted to the way you work?
ERP Heritage delivers end to end Odoo work: Odoo Implementation, Customization and Development, Integration, Migration, Consultation, Support and Training. We help teams put this module into production, shape it to their process, and keep it running.
We work with businesses across Australia (Melbourne, Sydney, Brisbane, Perth, Adelaide, Canberra) and the Middle East (Dubai, Abu Dhabi, Riyadh, Jeddah, Doha, Kuwait City, Muscat). Start a conversation at erpheritage.com.au or email info@erpheritage.com.au.
Languages
Available in 19 languages
The interface ships translated out of the box. Switch language in Odoo and the fields, menus, and messages follow.
Please log in to comment on this module