In TaskSLAController, the _checkNewSLA function evaluates the retroactive pause only once at the time the SLA is started (when a new Task SLA [task_sla] record is created). In the _adjustPauseTime function, the history is queried in order to build the value of the pause duration.
If a History [sys_history_line] shard is marked offline at the time, a new Task SLA record is created and the data in it is inaccessible. The retroactive pause calculation will not find the necessary data, and the business elapsed time value will be incorrect.
WIthout the pause duration value, retroactive start SLAs can frequently breach.
This problem has been fixed in Calgary and onwards, together with the other known problem PRB576656 (ref.: https://hi.service-now.com/kb_view.do?sysparm_article=KB0539352), which now makes sure that a new history set is generated if the existing history list is in an offline shard.
- Go to the Task SLA [task_sla] record with the incorrect pause duration.
- Personalize the form and add the following fields: Active, Has Breached, Pause Duration, and Business Pause Duration.
- Clear out fields like Has Breached, Actual Elapsed Duration, and populate a positive value into the Pause Duration
- Click Update.
- When the Run SLA Calculation UI action becomes available, use it to correctly calculate the values, including the Has Breached field.