• I understood your problem, even i faced the same problem.

    Where i used to store the results of OnError, OnPreExecute and OnPostExecute in SQL tables.

    So whenever a task execution starts, first it will fire OnPreExecute then insert a record into to Package_Process_table then fire OnPostExecute to update the Package_Process_table.

    In between if an error comes then it will fire OnPreExecute, OnError and OnPostExecute.

    In such case, OnError i will update Package_Process_table with status as FAILED, OnPostExecute first i will check whether the status of package is STARTED or FAILED if it is FAILED then i dont update Package_Process_table on OnPostExecute.