I have an topic subscription on a service bus in Azure with a lock duration of 30 seconds and sessions enabled.

[![enter image description here](https://i.stack.imgur.com/eUrTd.png)](https://i.stack.imgur.com/eUrTd.png)

I'm using a logic app to take messages of the topic using peak-lock because I care about the order messages are processed. I want to ensure that all messages with the same session id are processed in the order they are added to the bus i.e. FIFO.

Below is a screenshot of a simple logic app which is triggered when a message arrives (peek-lock with 5 second polling), it then waits for 15 seconds before completing the message.

[![enter image description here](https://i.stack.imgur.com/5DpA5.png)](https://i.stack.imgur.com/5DpA5.png)

When I load 10 messages on to the topic, the first instance of the logic app is triggered as you would expect and completes in roughly 15 seconds, however the second logic app doesn't start for another 15 seconds i.e. 30 seconds in total after the first logic app started (the length of the lock duration).

[![enter image description here](https://i.stack.imgur.com/FUz0r.png)](https://i.stack.imgur.com/FUz0r.png)

Everything I have read suggests that completing a message should release the lock immediately but this doesn't appear to be the case. Am I doing something wrong or is this the way it is meant to work?