An Azure service that automates the access and use of data across clouds without writing code.
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:
- In the run history, the “Dead‑letter the message in a queue” action shows status Failed with error BadRequest.
- 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.
- Service Bus can still move the message to the DLQ (for example, because
MaxDeliveryCountis exceeded) independently of the Logic Apps action result. That is why the message appears in the DLQ withdeadLetterReason = MaxDeliveryCountExceededeven though the Logic Apps action reports BadRequest and Failed. - 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: