Row Has Been Modified By Another User

We have come across an issue with 10.1.600.22 that we did not have in 10.1.600.7. We have a custom form on UD02. When we save the record, on update BPM, it calls an outside dll that than runs a getbyid on lot select update. we create a buffer copy of that record, set a checkbox value to true, set the rowmod to U and run an update. it seems to get into the logic that we have on the Update method in lotselectupdate, but eventually we get a “Row Has Been Modified By Another User”. we can’t seem to get around it. when writting messages to the log, it seems to run the data directive first that we have on partlot before it gets into the pre and post of the update, then it runs the data directive again?

anyone have an ideas…

So wait, theres a method directive that fires an external dll to use an internal call that runs a data directive? lol, i dont follow.

i have found that in Epicor there are certain places in there software that you have to do a refresh before you switch to another page. I have learned where I get the same error and i do a refresh and a save, that solves the error from coming up

When I’ve run into this issue before, it generally has to do with the timing of when the code is taking place (pre/post/etc.) and if you are updating a temporary table or the main one (e.g. ttJobHed vs. JobHed). I think temporary tables you want to update in the pre/base processing and main table’s should be updated in post-processing. I could be wrong, but I would try some additional testing with that in mind.

Hmmm… anytime you run a DLL outside of the normal stream of Epicor logic, that DLL should be suspect. It IS the “other user”.
It is actually quite easy to create a BPM that causes this error… Whenever the “Disc” version of the data is different than the version stored in memory (old ttrecord) then when it attempts to write the data, it will get rejected because “another user” must have updated it… but that other user could be yourself doing something, but not getting the most recent version into memory.