Why does my SLA workflow keep matching on condition: SLA status is Breached?
If a workflow uses the trigger "Any SLA status changed" with a condition of "SLA status is Breached", it can match every time any SLA on the thread changes status.
Why this happens
The "SLA status" condition checks the current status of the latest tracker for each SLA type you select. It doesn't look at the SLA change that started the workflow. It matches if any one of those types has a status you've chosen.
Once the "first response time" or "first resolution time" SLAs reach their final status (Breached, Achieved or Cancelled) they keep that status forever. So if your workflow condition checks if one is breached then it will always match regardless of the other SLA statuses in the condition and any else if branches below it will never run.
"Next response time" doesn't cause this. Each new customer message starts a new tracker, and the condition only checks the status of the latest tracker.
This can be a big "gotcha" when matching multiple SLA types in a workflow condition.
Solution
Create workflows that use individual SLA type triggers like "First response time SLA status changed" instead of "Any SLA status changed" for greater control of when your SLA workflow runs.
In the workflow condition "SLA status", use individual SLA types for greater control over the conditions of your workflow actions.
The 4 SLA types
first response time
next response time
first resolution time
total resolution time