The Graph API for messages states that 'NOT' is supported in filters:
Support for $filter operators varies across Microsoft Graph APIs. The following logical operators are generally supported:
equals (eq) in (in) not equals (ne) greater than (gt) greater than or equals (ge) less than (lt), less than or equals (le) and (and) or (or) not (not)
And yet a simple request to find messages with "$filter=not startswith(subject,'text')" fails:
"error": { "code": "BadRequest", "message": "Filter not supported.", "innerError": { "date": "2020-08-06T17:53:27", "request-id": "a885e3e3-1c9f-476c-9c5c-9951abf601a8" } }
Is this an API bug?
Another issue with the docs, contains(prop,'text') actually works fine for messages!
The contains string operator is currently not supported on any Microsoft Graph resources.
But we really need to use NOT and I believe it worked in the past.