Hi there,
I created a flow a while back to send me an agenda every evening for my next day's meetings. On 12/18 my flow started to fail with the following error:
The $orderby expression must evaluate to a single value of primitive type.
I noticed that I was using a deprecated "v2" version of the "Get calendar view of events" operation, so I replaced it with v3 but it continued to fail.
My "Order By" ODATA query statement previously was "IsAllDay desc, Start asc", but this no longer works (even when changing the case to be "isAllDay desc, start asc" according to the updated syntax) -- it results in the error above, about which I am not finding much info online.
Incidentally, I tried to add the two columns to the "Filter Query" ODATA query as some articles indicated that may be necessary, but I couldn't seem to get that syntax right, either -- I get "Invalid filter query" no matter what I put, so I'm guessing I'm way off on the syntax.
I was able to get the operation to stop failing by removing the "start asc" part of the Order By (so, leaving only "isAllDay desc"), which is kind of counter-intuitive. I also don't trust that the ordering will actually be correct, though, without enforcing the "start" order as well.
What am I missing here?
Four years later and this saved some major hair pulling. What a dumb issue.
Just adding some history, discussions on OData breaking changes about datetime/datetimeoffset.
OData V4 service should support DateTime · Issue #136 · OData/WebApi (github.com)
Seems it took a bit for this spec to trickle into flows.
The filter and order only support 1 condition like IsAllDay desc only or Start asc only
Brilliant that you figured this out. This was a life saver for me. I had a Flow that broke within the last month and a half after working for about a year before that because of this syntax change.
Closest explanation of that I can find is that the "/DateTime" syntax implies that the "start" property has a related (or sub-?) property called "DateTime"...
https://www.odata.org/documentation/odata-version-2-0/uri-conventions/
(search for "forward slash")
🤕
Hmm.... but where did the idea for the "/DateTime" syntax come from? That's the bit that I hadn't seen before, and which I think enables ordering by the "start" property. I can't tell if it's OData syntax or Graph syntax or Power Automate syntax or ...
@jbedfordp All thanks to the trial-and-error in your previous post. It's the start of my inspiration.
I was struggling with the Filter Query for utcNow.
Then I found this from github:
https://github.com/microsoftgraph/msgraph-sdk-javascript/issues/43
At first, I was using:
Start/DateTime gt 'utcNow('yyyy-mm-ddThh:mm:ss')'
and it gets translated to this instead:
Start/DateTime gt '2020-30-08T06:30:57'
so unless we are in different planet, clearly the calendar does not have 30 months.
then I change the date time format to:
'yyyy-MM-ddThh:mm:ss'
and voila!
Seriously, Microsoft needs to provide a better manual especially how to use OData and its syntax in Power Automate.
I see that now! Well lots of thumbs ups to @Anonymous as well. 😁
I can't claim credit for this solution at all -- all of my trial and error ended in error! 🤣
@Anonymous identified the syntax that works. It appears to cast the "start" field as a "DateTime" type or format?
I'd love to know where this syntax comes from, though! I didn't see this in any of my searching thru ODATA or Flow or Graph API syntax manuals. Wherever this is documented undoubtedly has a bunch of other tips and tricks to offer!
Fantastic, @jbedfordp! That totally worked. So many thumbs-up button clicks for you. Was this a bunch of trial and error, or did you find something online that explains this behaviour?
WarrenBelz
146,765
Most Valuable Professional
RandyHayes
76,287
Super User 2024 Season 1
Pstork1
66,091
Most Valuable Professional