ApproveAndCheckInAll (but PartNum / GetDatasetForTree specific)

I am trying to save my BOM structure to Epicor and it works when only one call at a time is made. As soon as multiple calls get made the threads get deadlocked on: EngWorkBenchSvcContract ApproveAndCheckInAll
which seems to apply to an entire ipGroupID.
Unfortunately all our ECOMtl records share the same Group.

Is there a call that I can make that can Approve + checkin my changes without applying to an entire ipGroupID? Maybe even setting column values on the ECOMtl record itself and then just calling svc.Update(dataset)?

Two foreaches maybe, one to approve, update, then one to checkin???