I think you were really close but the part you’re struggling with is ReportArea is a Choice field, and you can’t to a Get Items/Filtering on a choice column. It can be done, but you’ll need to add a Select and FilterArray call.
A couple of details missing from your description I’ve tried to fill in by looking at your picture.
This is what I think your situation is:
- You have a list of ExpectedReports -- a report from Area1, Area2, Area3, Area4, and Area5.
- Reports come to you from a SharePoint List or library
- You want to verify that each ExpectedReport exists in your SharePoint List/Library.
(with an additional filter for Report Date = Today?) You don’t show the Get action in your picture). I’m leaving filtering by date out of the equation for now.
So going on that, here’s what I would suggest:

I’ll go through each part step by step.


- arrExpectedReports -- You’re already on the right track setting up an array and looping through that.
- Get Items – pull in the list of things you want to compare against. I set up a list (see at the very end)
- Select -- (this Action is under Variable actions)

From: click the Dynamic Variables option (dk blue lightining bolt) and “value” under Get Items”
Map: type the value name on the LH side, and choose the values from Dynamic Value list under “Get Item”. The only one you really need is ReportArea, but I included ReportDate in case you needed to filter on that as well.
Note: ReportArea – choose the dynamic value ReportArea Value, not just ReportArea
Now you have you report list info in a format you can work with it.
- Apply To Each (under Control actions) -- set From to arrExpectedReports
- Compose (just type it into the Action Search it will come up)

Choose the formula button (fx) and enter item()
Don’t type it directly into the compose box – it’s a formula, not text value.
What we’re doing is buffering the current loop’s ReportArea value from the array.
3. Filter array - (type Filter, then choose “Data Operations” and Filter array will be in that list)

From: from Dynamic content, look for “Select” (gray bar) and choose the “Output” below it in. This is pointing to the output of the Select statement above.
Filter: in both cases choose from Dynamic Content / Expression, don’t type the text in directly.
Value 1: from Dynamic Expression, enter item()?['ReportArea']
Value 2: from Dynamic Content, look for “Compose” (gray bar) and choose “Output below that – this is the array value we buffered at the top of the loop.
This is asking the question: “does the current array value (expected report) exist in the list of reports I have?”
4. Condition -- checking to see if the filter found a match.
Value 1 – from Dynamic Expession length(body('Filter_array'))
Condition “is equal to”
Value 2 – 0 (zero – if the length of the filtered array is zero, the report was not found)
5. If Yes, send yourself an email; if no do nothing.
Bonus points: define a string at the top of your flow (MissingReports), and instead of an email, do an Append To String to add the current array Report area (Outputs('Compose'). Then outside the loop if length(variables(‘MissingReports’)) > 0, send yourself an email containing variables(‘MissingReports’)
Here’s the reports list I set up:

Hope this helps get you where you want to go!