For more information about event receivers synchronization type please refer to the following Microsoft KB article: SPItem Event Receiver methods It's possible to use one of the email properties as a flag of One Place Mail has finished its job. custom event handlers should fire only after Em Date Sent has been updated in the library.
Another option is to change synchronization method of the event receiver: According to the SPEvent Receiver Definition Properties for WSS3 there is no property which allows to change synchronization method of the event receiver.
Asynchronous event receivers are executed after committing the file to the database, thus it could happen before 3rd step of One Place Mail process (which leads to the error “The file has been modified” or doesn't allow One Place Mail to successfully update library columns).
It is highly dependent on the network and server speed; that is why this issue is not 100% reproducible.
I’ve written a one-off script (Console App) that loops all lists with a Managed Metadata field on all sites in the site collection and ensures the Taxonomy event receivers. I’m guessing the Optional/Required setting of the Managed Metadata field is involved somehow, but I didn’t really confirm that through testing.The event receiver was nicely attached and got busy when I uploaded a document. I was trying to change permissions on an item and this was the part of my code that was creating the problems: Inside my SPRemote Event Type.Item Updated I did an Update and making it trigger itself. If you’re dealing with a event receiver with access to server side code, this is not a problem.By comparing the values in the before Properties with the after Properties I could see if they contained a difference.If it doesn’t, the updating event should not happen again.
The library was configured with multiple Content Types, but the issue occurred only on some of them.