I am also looking at figuring out why my sc_task items do not properly set the business duration as it does in incident.

I checked the BR you described Close Ticket on sc_task and I added some logging and discovered that it does in fact run when I close a task.

current.active = false;
current.work_end = nowDateTime();
current.business_duration = gs.calDateDiff(current.work_start.getDisplayValue(),current.work_end.getDisplayValue(),false);
gs.log("THIS JUST RAN!");
gs.log("BUSINESS DURATION: " + current.business_duration.getDisplayValue());

... however, it does not actually appear to be setting it.

When I look at the logs, I see:

find_real_file.png

Any thoughts on what might be preventing the field from being updated? On Jakarta.