Showing results for 
Search instead for 
Did you mean: 
Regular Visitor

A laymans solution to infinate loop problem with ''When an Item is Created or Modified''

Hi all, I'm writing this comment after succesfully stopped a loop in ''When an item is created of modified''. As I'm a newbie to Flow this took a lot of time to get the logic correct. I hope that this comment might help others, so let's go.


TLDR; Write Trigger Conditions for the ''When an item is created or modified'' and add these blockers with ''Update Item''. You can create hidden colums for the list if you need more blocker data.


Background: When a new item is added to a list or an existing item is modified, an email needs to be sent and the item gets new meta data. Ok, doens't sound that difficult? Well..


Paradox: The new meta data will trigger the flow once again, causing a loop, this we know.


Case triggers: for this particular flow the triggers are: ''Delivery date < today & Send = true & OrderID = false'' we identified that the trigger ''delivery date < today'' where the cause of the loop, the other two triggers we could block with new meta data on the item.


Solution: in the settings for ''When an item is created of modified'' you have options to set Trigger Conditions, after some testing we  could determinate that each row of Trigger Conditions where ''AND'', not ''OR''. Therefore the ''OR'' needed to be in the same row, here's our 1st condition:


@or(or(lessOrEquals(triggerBody()?['Svea_Order_Date'], utcNow()), equals(triggerBody()?['Send'], true)), equals(triggerBody()?['Order_ID'], ''))



 Ok, we've now blocked 2/3 of the triggers, the date < today still causes a loop. This got solved by utilizing the ''AND'' relationships between the rows of the Trigger Conditions. This is the condition:


@equals(triggerBody()?['Skickad'], false)



Though our list didn't have a metadata showing if an email has been sent or not, so we created a hidden column called ''Sent = YES/NO'' with ''NO'' being the standard value. With this we can update our metadata to YES and therefore blocking all triggers when the item is modified.


The end result of the trigger conditions looks like this.


@or(or(lessOrEquals(triggerBody()?['Svea_Order_Datum'], utcNow()), equals(triggerBody()?['Skicka'], true)), equals(triggerBody()?['Order_ID'], ''))


there's a native ''AND'' relationship between these two rows.


@equals(triggerBody()?['Skickad'], false)










Can't figure out how to add pictures to this post.. sorry..


Helpful resources

Community Conference

Power Platform Community Conference

Check out the on demand sessions that are available now!

Power Platform ISV Studio

Power Platform ISV Studio

ISV Studio is designed to become the go-to Power Platform destination for ISV’s to monitor & manage published applications.

Users online (12,486)