Hi Nicky,

In cases like this, I think it is as you suggested: the only way is to inspect the session, and search for a message with status Completed. If found, the message with status Error has been already dealt with (resent and processed successfully).

In order to do that, one needs to do some programming: start with some  some basic SQL search of Ens.MessageHeader using indexed properties to first narrow the result set small enough and then, for each session found, use SQL to find errored messages and then corresponding resent messages (if any). 

And in case the program finds some sessions with messages that are not yet resent, it could call a method of Ens.MessageHeader to resend the message.

If the program is done correctly, it could be safely rerun, and it would resend only messages that needs to be resent.

I hope this helps