Share via

Why Logic Apps run history is showing failure, while the message is processed successfully?

Karthik K Koneru 81 Reputation points
2026-03-26T19:33:44.0933333+00:00

I have a Logic apps workflow where a failed event message is written on to DLQ Error queue to re-process later.
Sometimes logic apps RunHistory shows these messages were failed with "BadRequest" Error message with status as "Failed". But actually the message was written successfully on to DLQ. See below screen shots. User's image

User's image

DLQ Message Properties:
User's image

Wanted to understand why it is happening like this.

Azure Logic Apps
Azure Logic Apps

An Azure service that automates the access and use of data across clouds without writing code.


1 answer

Sort by: Most helpful
  1. Q&A Assist
    2026-03-26T19:34:03.8833333+00:00
    AI generated content. This question contains an answer created with AI from Q&A Assist. Learn more

    In Logic Apps, the overall run status is driven purely by the action statuses in the run history, not by what later happens to the message in Service Bus.

    From the screenshots and the documentation, the behavior is explained as follows:

    1. In the run history, the “Dead‑letter the message in a queue” action shows status Failed with error BadRequest.
    2. According to the run‑history rules, if any action in a run has status Failed and there is no subsequent action configured to handle that failure, the entire workflow run is marked as Failed.
      • For Consumption workflows: “Failed – At least one action in the run failed. No subsequent actions in the workflow were set up to handle the failure.
      • For Standard workflows: the same definition applies to the run status.
    3. Service Bus can still move the message to the DLQ (for example, because MaxDeliveryCount is exceeded) independently of the Logic Apps action result. That is why the message appears in the DLQ with deadLetterReason = MaxDeliveryCountExceeded even though the Logic Apps action reports BadRequest and Failed.
    4. The run history therefore correctly reflects that the Logic Apps action failed, even though the broker (Service Bus) ultimately placed the message in the DLQ for its own reasons.

    To avoid the whole run being marked as Failed when this is an expected condition, configure explicit failure handling on that action (for example, using runAfter conditions, scopes with Succeeded/Failed branches, or try/catch patterns) so that the failure is treated as handled and the run can complete with Succeeded.


    References:

    0 comments No comments

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.