FAQ & Troubleshooting
Common questions and fixes for the Compliance suite, a glossary of the twelve areas, and how to escalate when you are stuck.
Access and visibility
I don't see the Compliance menu at all.
Confirm the module is enabled (Settings → Manage Modules sets module_compliance). When it is off, the whole group is hidden. Clear the config cache after changing menus.
One area is missing from the menu.
Each area is gated by its own permission. If you can see Compliance but not, say, Investigations, your role lacks compliance_investigation. Grant the area's base permission in Settings → Roles.
The Overview or Audit Log looks read-only.
Expected. Overview and Audit Log are view-only areas — there are no create/edit controls to grant.
The Configuration area is hidden.
Configuration is an administrator area gated by compliance_config. Grant it only to admins who manage jurisdictions, templates, retention rules, and integrations.
Working records
I can open an area but can't add or edit.
The base permission grants read access; you also need that area's Create / Update / Delete action. For example, editing an investigation needs the update action on compliance_investigation.
I can't change a disciplinary case status.
You need the manage_disciplinary permission, and you cannot change status on a case where you are a subject or witness.
A case closed by itself.
Either everyone required acknowledged it, or the auto_close_disciplinary_logs job ran past the configured auto-close window (Settings → Disciplinary).
A category or referenced record won't delete.
Records still referenced elsewhere are protected — a disciplinary category cannot be deleted while cases use it. Reassign or close the dependents first.
Data, URLs, and APIs
Where does the demo data come from?
Run php erpat db:seed ComplianceDemo to load sample content across every area; add --remove to soft-delete it, --dry-run to preview, or --tenant=<key> / --all for tenants. It never installs automatically.
An area screen is empty after enabling.
Make sure module migrations ran (php erpat migrate:modules) so the area's tables exist, then either add real records or load the demo seeder.
Old hrs/disciplinary links.
They still work — the legacy URLs are kept as aliases alongside the canonical hrs/compliance routes.
The self-service API returns 404 for a case.
By design. /v1/api/me/disciplinary returns only the caller's own cases and returns 404 (not 403) for anything else, to hide existence.
Glossary of the twelve areas
- Overview
- Read-only dashboard of cross-area KPIs, a compliance-health score, an action center, and quick links.
- Disciplinary
- Case register and categories with participants, acknowledgements, statuses, and auto-close.
- Investigations
- Neutral fact-finding worked across a phase kanban, optionally linked to a case.
- Corrective Actions
- Remediation register with milestones and effectiveness verification before closure.
- Disclosures
- Conflicts, gifts, outside employment, and relationships, risk-rated and moved through a review workflow.
- Speak-up & Grievances
- Anonymous-capable intake with channel tracking; a restricted area.
- Training & Certifications
- Course catalog with per-employee assignments and completion tracking.
- Policies & Attestations
- Policy library, attestation campaigns, and time-boxed policy exceptions.
- Compliance Calendar
- Month grid of obligations by type, with on-track / at-risk / overdue statuses.
- Reports & Analytics
- Saved report definitions plus case-volume, outcome, and category charts.
- Audit Log
- Read-only, append-only activity feed with an integrity panel.
- Configuration
- Administrator setup: jurisdictions, templates, retention rules, and integrations.
Still stuck?
Contact the ERPat Team. For behavior questions, name the area and the exact record id, status, or permission involved, and whether the module and that area's permission are enabled for your role.