JobStatus.MassUpdate doesn't update Job when run from Epicor Function or REST call

Thank you to all 3 of you for taking the time out of your day to read through and respond. I really do appreciate it. @tanner your suggestion works flawlessly. I’m marking @Jonathan’s as the solution since my original intent was to use MassUpdate instead of Update. Here is the “final” working code in my REST function. If it changes significantly between now and when the final product is finished I’ll update accordingly.

try
{
    Erp.Tablesets.JobStatusTableset jobStatusTS = null;
    this.CallService<Erp.Contracts.JobStatusSvcContract>(
        bo => { jobStatusTS = bo.GetByID(jobNum); }
    );
    
    // create copy for comparison
    var originalRow = jobStatusTS.JobHead.NewRow();
    BufferCopy.Copy(jobStatusTS.JobHead[0], originalRow);
    jobStatusTS.JobHead.Add(originalRow);
    
    jobStatusTS.JobHead[0].ToFirm = true;
    jobStatusTS.JobHead[0].RowMod = "U";
    this.CallService<Erp.Contracts.JobStatusSvcContract>(
        bo =>
        {
            bo.ChangeJobHeadFirm(
                true,
                jobNum, // this is the original job number - Epicor will update the job number on its own
                ref jobStatusTS);
        });
            
    jobStatusTS.JobHead[0].JobReleased = true;
    jobStatusTS.JobHead[0].JobFirm = true;
    jobStatusTS.JobHead[0].JobEngineered = true;
    jobStatusTS.JobHead[0].ExtUpdated = true;
    jobStatusTS.JobHead[0].RowMod = "U";

    this.CallService<Erp.Contracts.JobStatusSvcContract>(
        bo => { bo.MassUpdate(ref jobStatusTS); }
    );
}
catch (Exception e)
{
    errors = true;
    errorMsg += e.ToString();
}

EDIT
Updated code block. Previous version “worked” but if a job generated by MRP was firmed, it wouldn’t update the Job Number correctly. The code above is working in my environment (10.2.700.9 at the time of this writing). Thanks to everyone who took the time to respond to my initial question as well as @SteveFossey’s post here:

which helped me get on track in getting this to work as intended

The end goal is to allow users to firm, release, and engineer job from within the production planner workbench. I’ll post the final solution once completed. Hopefully this helps someone down the line.