Compliance Reference Public

Data & Screen Reference

Technical reference for the ERPat Compliance suite: the 14 web controllers and 2 REST APIs with their routes, the 19 tables grouped by area, the 12 menu items and permission keys, the migration table, the demo seeder, and the cron job.

Guide version: r1 Module version: 1.2.0 Updated: 2026-07-22 Estimated time: 3 min 1 views
Reference / Data & Screen Reference

Data & Screen Reference

The developer-facing map of what the suite ships: 14 web controllers and 2 REST APIs with their routes, 19 tables grouped by area, the 12 menu items and their permission keys, the migration table, the demo seeder, and the cron job.

14 web controllers2 API surfaces19 tables12 menu items1 cron job

Web controllers & routes

ControllerAreaRoute(s)
Compliance_dashboardOverviewcompliance/dashboard
Discipline_entriesDisciplinaryhrs/compliance · legacy hrs/disciplinary
Discipline_categoriesDisciplinaryhrs/compliance_categories · legacy hrs/discipline_categories
Compliance_settingsDisciplinarycompliance/settings
Compliance_investigationsInvestigationscompliance/investigations
Compliance_corrective_actionsCorrective Actionscompliance/corrective_actions
Compliance_disclosuresDisclosurescompliance/disclosures
Compliance_reportsSpeak-up & Grievancescompliance/reports
Compliance_trainingTraining & Certificationscompliance/training
Compliance_policiesPolicies & Attestationscompliance/policies
Compliance_calendarCompliance Calendarcompliance/calendar
Compliance_analyticsReports & Analyticscompliance/analytics
Compliance_auditAudit Logcompliance/audit
Compliance_configConfigurationcompliance/config

Two REST API controllers sit alongside the web controllers:

  • Compliance_api — integration API, api/v1/disciplinary/* (scope users:read).
  • Compliance_euapi — employee self-service API, v1/api/me/disciplinary/* (caller-scoped, 404 on mismatch).

Tables by area

The suite owns 19 tables. Module migrations create the ten newer areas' tables; the disciplinary tables predate the module and ship in the base install schema.

AreaTables
Overview— (read-only; aggregates the other areas)
Disciplinarydiscipline_entries, discipline_categories, discipline_entry_comments
Investigationscompliance_investigations
Corrective Actionscompliance_corrective_actions
Disclosurescompliance_disclosures
Speak-up & Grievancescompliance_reports
Training & Certificationscompliance_training_courses, compliance_training_assignments
Policies & Attestationscompliance_policies, compliance_attestation_campaigns, compliance_policy_exceptions
Compliance Calendarcompliance_obligations
Reports & Analyticscompliance_saved_reports
Audit Logcompliance_audit_events
Configurationcompliance_jurisdictions, compliance_templates, compliance_retention_rules, compliance_integrations

Menu items & permissions

#Menu itemBase permissionAccess
1Overviewcompliance_overviewView
2DisciplinarydeciplinaryCRUD (+ related keys)
3Investigationscompliance_investigationCRUD
4Corrective Actionscompliance_corrective_actionCRUD
5Disclosurescompliance_disclosureCRUD
6Speak-up & Grievancescompliance_reportCRUD (restricted)
7Training & Certificationscompliance_trainingCRUD
8Policies & Attestationscompliance_policyCRUD
9Compliance Calendarcompliance_calendarCRUD
10Reports & Analyticscompliance_analyticsCRUD
11Audit Logcompliance_auditView
12Configurationcompliance_configCRUD (admin)

Disciplinary retains its original keys (spelling preserved for backward-compatible grants): deciplinary (+ _create/_update/_delete), deciplinary_category (+ CRUD), manage_disciplinary, disciplinary_manage_labels, add_disciplinary_label, corrective_select_compliance_officers, disciplinary_can_do_comment, disciplinary_can_use_prefab_comments.

Migrations, seeder & cron

  • Migration table: migrations_compliance — the per-module version table; run with php erpat migrate:modules against the main DB and every tenant.
  • Seeder: ComplianceDemo (ComplianceDemoSeeder) — idempotent demo data for every area; reversible via --remove (soft delete), previewable via --dry-run, tenant-scoped via --tenant=/--all.
  • Cron: auto_close_disciplinary_logs — closes aged open disciplinary cases; per-tenant; self-skips when the module is disabled.

API surfaces

Integration API — Compliance_api

  • GET /api/v1/disciplinary/user/{user_id}
  • GET /api/v1/disciplinary/{id}
  • Scope: users:read

Self-service API — Compliance_euapi

  • GET /v1/api/me/disciplinary
  • GET /v1/api/me/disciplinary/{id}
  • Caller-scoped; 404 on any other id
Was this guide helpful?

Report a content problem