Способ, которым я сделал это, находится между каждым шагом, есть шаг, который отправляет уведомление. Итак, шаг 1 говорит о неудаче, переходите к «Шаг 2: уведомить, что шаг 1 не выполнен», и в случае успеха переходите к шагу 3. Шаг 3 говорит о неудаче, переходите к «Шаг 4: уведомлять, что шаг 3 не прошел» и об успехе, переходите к шагу 5. И т. д. Кажется, это немного грязно, но, поскольку мы использовали простую почту базы данных для предупреждений (а не операторов и т. д.), было очень легко закодировать эти промежуточные шаги. Вы даже можете использовать токены, чтобы все шаги просто вызывали хранимую процедуру, а параметры могли заполняться автоматически.