Sooooooooooo… you don’t just wanna take it at face value? The explanation is long winded (and my memory is spotty) lol
So back in 9 or possibly 8 (6???). Progress had these shadow records called BeforeImage
https://knowledgebase.progress.com/articles/Article/P17959
Its basically a transaction which keeps track of what’s changed in case there is an error. Some of Epicor’s logic used this BeforeImage records to figure out if something changed.
For example on a BPM when you say Condition of Field X changed to Z to V it used (and uses) the before image to figure out what changed. There is also some logic in the Business Object which uses the before image to determine some “logic” flow. For example if BI.Field X == “P” then Do RainBowMagic
In 10 they kept that same mechanism by passing in a copy of the current (unchanged) record without a row mod, and when you write a BPM that checks if field X changed it uses that to figure it out. So in the Shipping BO there must be some logic where it checks the BI and if it can’t find it, it behaves erroneously.
We should ALWAYS use the BI when we call BO’s from a BPM. When we do it from the UI using the Adapter Epicor is nice and does that for us.
Note the terminology/context may not be 100% accurate, maybe @Bart_Elia can correct me where I’m wrong it’s been a few years since I looked at this but that’s the gist as I recall.