Why is FailureWebHook not executed in this case?

Psychotechnopath 31 Reputation points
2024-07-23T12:10:36.8466667+00:00

Please consider the following pipeline. The Execute Pipeline activity failed, so the ProcessTMONData notebook was skipped. Why was the failure webhook not triggered, as it's supposed to trigger when EITHER:

  • ForEachEndpoint fails
  • ProcessTMONData is skipped
  • ProcessTMONData fails

Please help me understand the control flow behavior of azure synapse.

User's image

Azure Synapse Analytics
Azure Synapse Analytics
An Azure analytics service that brings together data integration, enterprise data warehousing, and big data analytics. Previously known as Azure SQL Data Warehouse.
4,694 questions
Azure Data Factory
Azure Data Factory
An Azure service for ingesting, preparing, and transforming data at scale.
10,190 questions
0 comments No comments
{count} votes

2 answers

Sort by: Most helpful
  1. Amira Bedhiafi 20,101 Reputation points
    2024-07-23T19:53:34.25+00:00

    Your notebook activity depends on the completion of the Execute Pipeline activity.

    The FailureWebHook webhook is set to trigger under the following conditions:

    • ForEachEndpoint fails
    • ProcessTMONData is skipped
    • ProcessTMONData fails

    Given that the Execute Pipeline activity failed, it resulted in the ProcessTMONData notebook being skipped. Since the ProcessTMONData notebook was skipped, one would expect the FailureWebHook to trigger according to your specified conditions. This is the expected behavior.

    So you may need to verify that the FailureWebHook activity is correctly dependent on the ProcessTMONData activity because it should have a dependency with a condition that it runs if ProcessTMONData is skipped.

    It should be configured to trigger on the state of the ProcessTMONData notebook and you can use the expression @activity('ProcessTMONData').status to check if it is Skipped.


  2. Bhargava-MSFT 29,041 Reputation points Microsoft Employee
    2024-07-23T20:51:23.3566667+00:00

    Hello Psychotechnopath,

    From your pipeline:

    The ForEachEndpoint is connected to "failurewebhook" on failure, meaning 'failurewebhook' runs only when ForEachEndpoint fails.

    Additionally, your ExecutePipeline is connected to the Notebook on success. The Notebook didn't run because the connected activity failed, and subsequently, the 'failurewebhook' didn't run because the Notebook didn't start.

    Due to these two reasons, 'failurewebhook' didn't get executed.

    User's image

    I hope this answers your question.