Good morning all! I'm having an issue with my PowerAutomate automated flow posting an item to a SharePoint list twice.
Here is one SharePoint list my flow references:
And the other list it references:
And it populates the referenced lists to this list:
As you can see the flow worked for an order that contained more than one selection, but for an order that contained only one selection, it duplicated it in the list that combines the two. Any thoughts on why that is and how to fix it? Thank you!
Here is my flow:
Many thanks!
Oh, I think it may be because it's re-posting essentially everything the user created... possibly, not exactly sure. I would like to change the filter array to where if the OrderID column in the Shopping Cart Ordered Items 2 list matches the ID in the Shopping Cart Orders match, it then combines those two and posts to the Full Inventory Order list.
Anyone able to assist with this by chance?
Good morning all - still looking for help with this issue if anyone knows how to resolve. Thanks!
The problem is with the filter array statement you are using. Try the following instead.
1) Use a Data Select on the Get Items output to select just the CreatedBy field
2) in a Compose do a Union() on the output of the data select against itself. (This will give you an array of distinct users in the shopping cart.
3) Create an Apply to Each loop on the output of the Union()
a) Inside the loop filter the Get Items array based on the current loop's value = created by
b) Loop on the results of that filter and create new items for each entry.
So I tried it and I think I messed up somewhere along the way:
Can you assist with identifying where I went wrong? Thanks!
Why is the data select inside a Loop? Here's what it should look like
But taking another look at this I'm not sure what it is you are trying to accomplish. Could you talk about the process a bit more?
So I took it out of the loop, but I'm getting an error within the Union portion:
Is that the wrong expression for referencing the output of the compose?
As for what I'm trying to accomplish:
List with the person's information:
List with the order information:
The list they should both feed into:
This is also the list my other post is referencing; where I want that flow to have a trigger from Delivered to update the main inventory list the PowerApp is referencing to reduce the quantity from that list to limit the option on the PowerApp for ordering.
Thanks!
Union requires two parameters. In this case they are the same, but they have to be listed twice. And they are the output of the data Select, not the apply to each loop.
So I fixed that and it posts, but it's still posting duplicates 😕
I did change it so that it references OrderID to match the ID between the two lists as well.
List1 with 2 orders:
Order has an ID of 37 for the first, and 38 for the second
List2 with 2 orders:
Order has an ID of 37 for the first, and 38 for the second
But when combining with the flow, the first order posted and combined correctly, the second order went crazy:
It has a total of 6 posts per order, so it reposts the first order and double posts the second order. Any thoughts?
Can you post a screenshot of the current flow. In addition to doing the Union() you then need to use the results of that to organize the rest of the flow. Not sure that has happened.
Of course! Here is the current flow:
You don't need the second filter array. The first loop is already filtered. So now you do one loop on the output of the union (the Compose) and inside that loop do a loop on the list you didn't filter. Inside that loop you do a condition to see if that record matches the user in the outer loop. If it does create an item, otherwise do nothing and loop.
This was my attempt at understanding what you were saying, but I messed it up somewhere because now the flow doesn't merge the two and post it to the list:
The second select is on the "when an item is created/modified" list (the first one is on the get items list), and then the condition is if the outputs from both of the selects are equal to each other (ID to OrderID), create the item.
Thoughts?
The outer apply to each loop needs to run on the array coming from the Union() compose. That is the filtered list of distinct entries that needs to be processed. Then inside that loop there should be a second loop that loops through the other list to see if it matches the current distinct entry from the compose. If it does process it, if it doesn't more on. Not sure why you would even need a select inside there.
When you say loop what do you mean? I'm unsure of what type of operations I should be using to achieve this, which is why I used the select. After the Union() compose, should I add a condition control? Or is it another operation entirely?
Something like this?
Apply to each or Do until are loops.
Ok, makes sense - so after the Union() compose - I should do an Apply to each with the Outputs from the compose, and inside that run another apply to each with the body from the first list, and have it as a control that says if ID = OrderID, create item? Apologies, I'm still not fully understanding how you would approach it