I think you’re gonna have a tough time as BPMs require a trigger to process, they arent time based.
I dont necessarily agree with auto clocking out, but if I were tasked to do it, I think I’d make an external exe to do this (run on a schedule or as a service), then excecute the clock out via REST.
You can create a BPM to update LaborHed and LabotDtl ActiveTrans = false. This will leave the end time at 23.59 so that next day supervisor will fix the time. It can be scheduled using BAQ Export Process or Build Project Analysis.
Agree if they are on 10.2.600, can use BPM Functions to schedule the process. I am using this for the last 6 years from 9.05.606 days. Clock out function will mislead the actual clock out time. It’s better for the user to fix it the next day.
Logic is for each LaborHed check for ActiveTrans = true records. Then link LaborDtl for that LaborHed record and update ActiveTran = false where ActiveTrans = true.
Next check for LaborDtl where ActiveTrans = true and update it to false.
That’s my custom loger you can use Ice.Diagnostics and replace the logging or remove those lines. It’s aptly named BetterLog, because it’s a better logger than Ice.Diagnostics. I blame @Bart_Elia that category specification in WriteEntry from Ice doesn’t work.