Hello, I had a similar problem while also working on automating fulfillment workbench. I noticed that the OrderAllocSvc.Recalculate() does a similar thing where it returns the same dataset but with OrderAlloc emptied. I have no idea why this is. I ended up doing something similar to what you described. I keep a copy of the original data set and then update/merge with the results of the Recalc() function. In my case it also appears to be working as desired, but I have similar concerns as to whether I’m using the method correctly.
Btw, I’m doing all this inside and Epicor Function.