Tickets with queues, categories, priorities, multiple participants, public replies separated from internal notes, attachments, merging, and a full history.
SLAs that are measured, not displayed
An SLA rule per priority sets a response target and a resolution target, in minutes, optionally against business hours rather than the clock. A job runs every five minutes, marks response and resolution breaches on the ticket, and the dashboard reports compliance as a percentage.
The defaults are sensible and editable — critical at one hour to respond and four to resolve, low at a day and a week — and the same rule mechanism doubles as an incident-response clock when a severity is set on it, which is how the Certifications module gets its incident timing without a second implementation.
The portal
Customers get their own view: their tickets, a published knowledge base, and a CSAT survey on a tokenised link that needs no account.
The portal role is an allowlist. Staff pages are not hidden from portal users, they are unreachable — the policy names who may enter rather than who may not, so a page added tomorrow is closed to the portal by default rather than open by oversight.
Time on the ticket
Log time against a ticket, flag it billable, override the rate where the contract says something different, and read it back as a billing report. Support time stops being the work nobody invoices.
Knowledge base, twice
Internal articles for the team and published articles for the portal, from the same store — so the answer given to a customer is the answer the team is working from.