(my several cents worth:) Because it's Friday and they can't hurt me on Friday)
By your description I'm thinking linking issue. Run the embedded IO replacement script for all companies and modules.
I know- I say that a lot, like a scratched LP record, but here's why I think it is applicable in your situation. I ran into an after upgrade problem that was being cause because the customer had never entered a Sales order but was using SO Invoicing. It was an upgrade and this process in use since startup. No records existed for SO Entry or SO Quote History. If I recall correctly the issue was an error when trying to post the SO Invoices. The update wouldn't post to GL and generated an error that normally generates when the data is corrupt. Brought the client data inhouse and noticed NO SO records- none. I thought this odd and entered an SO, invoiced and updated. The error could not be replicated after that. Not even for the existing invoice batch that was erroring out. So odd. Only one SO had to be created in SO entry for the error to resolve. The channal partner and I figured there had to be some linking mechanism that wasn't synched between the two tasks, SO Entry and SO Invoicing, that was affecting the update. Research PER was submitted to engineering on the matter. Low and behold, A KB on how to run the script to replace embedded IO's.