An Azure service that automates the access and use of data across clouds without writing code.
Hi @Karthik K Koneru ,
Thanks for reaching out to Microsoft Q&A.
The run is marked as “Failed” because one of your connector actions (the manual “Dead-letter the message” step) returned a BadRequest, even though Service Bus did end up moving the message into the DLQ. A run is considered Failed as soon as any action returns a non-2xx HTTP response, regardless of whether the backend state ended up the way you wanted.
Why this happens in your workflow:
- Service Bus automatically dead-letters messages once they exceed the max delivery count (the message properties show deadLetterReason = MaxDeliveryCountExceeded).
- Your Logic Apps step then tries to manually dead-letter that same message by lock token. Because the message’s already gone, the Service Bus connector API returns a 400 BadRequest.
- Logic Apps flags that connector call as a failure, so the overall run status is Failed—even though the message did end up in the DLQ.
Steps to resolve it:
- Add proper error handling around your dead-letter action. Put it into a Scope or a nested workflow with “Configure run after” so that the BadRequest is caught and treated as a success. For example, use an HTTP Response or a “Terminate” action with status = Succeeded.
- Only call manual dead-letter when you’re sure the lock token is still valid. For example, use a delay or check DeliveryCount before you invoke the dead-letter connector.
Hope this helps!
If the resolution was helpful, kindly take a moment to click on and click on Yes for was this answer helpful. And, if you have any further query do let us know.