ReferenceSettings & administration

Compliance policy

Open Settings → Compliance Policy in Thermal →

What it's for

Compliance policy configures the two things that can stop a job from moving: certification enforcement (does a tech without a current EPA-608, for example, get blocked from dispatch) and Job Hazard Analysis templates (the checklist a tech works through on arrival before starting the job). It sits next to Inspection Templates as a commercial-controls settings page rather than something you fill out per job — the policy set here gates dispatch placement and field arrival everywhere else in the app.

Reach it from Settings → Commercial controls → Compliance policy in the sidebar, at /settings/compliance-policy. The Settings breadcrumb at the top takes you back.

Tabs

This screen has no tabs. It's two stacked sections: Certification types, then JHA templates.

Panels and controls

Certification types

A table of certification or credential types — Name, Code, Status (Active/Inactive), Enforcement, and an Edit policy action. Add type opens a dialog to create one from scratch, or you can run org seed to install defaults like EPA-608. Enforcement is either Soft warn (shows a badge, never blocks) or Hard block (drives dispatch's CERT_HARD_BLOCK check, refusing to place a tech on a job requiring a certification they don't currently hold).

JHA templates

A list of Job Hazard Analysis templates, each expandable to its questions. Only active templates with questions drive the arrival JHA card technicians see on field visits. Row actions: Edit changes the template's name, equipment applicability, and active state; Add question appends a question; each question row has its own Edit and delete. Deleting a template or a question removes it going forward — existing submissions keep their historical snapshots, so past JHA answers never change retroactively.

A question has a response type (Yes/No, Select, Text, Numeric), and can be marked required, an acknowledgement, or a hazard trigger with a stop-on value — answering with that value flags the visit as a hazard stop rather than a routine note.

What it accepts

FieldFormatRequiredRule
Certification domainCertification or credentialYes"Select a valid catalog domain."
CodeFree textYesUniquely identifies the type
NameFree textYes"Certification type id is required." (on edit, when the id is missing)
Enforcement levelSoft warn or Hard blockYes
Template nameFree textYes"Template id is required." (on edit, when the id is missing)
Applicable job/equipment typesPick from listNoNarrows which jobs the template applies to
Question promptFree textYes"Question id is required." (on edit, when the id is missing)
Response typeYes/No, Select, Text, NumericYes"Select a valid response type."
Required / Acknowledgement / Hazard triggerOn or offNoAny combination is allowed
Stop-on valueFree textOnly for a hazard-trigger questionCompared against the tech's answer to flag a hazard stop

How to configure it

  • Certification types configured here are what dispatch checks before placing a technician on a job — Hard block enforcement is what actually refuses placement; Soft warn only informs.
  • Technicians' own certification records (held elsewhere on their staff profile) are what get compared against these types and their expiry dates.
  • JHA templates configured here are what populate the arrival checklist card in the field app — there's no separate on/off switch beyond a template's own Active state and whether it has questions.
  • Inspection Templates, a neighboring settings screen, is a related but separate catalog — PM and inspection checklists, not hazard analysis.

Who can see it

  • Owners see Compliance policy in the Settings sidebar and can create, edit, and remove certification types, JHA templates, and questions.
  • Office managers have access to the Settings area, so the screen and its actions are open to them if they navigate directly, even though the sidebar link is shown to owners.
  • Dispatchers and technicians cannot reach Settings at all. Every action here is checked on the server, so the gate holds regardless of what the sidebar shows.

The full role matrix is on Roles & permissions.

On this page