It looks like your properties field is an object, not an array, which is what isnotEmpty() would check. It’s only available for arrays, so this would actually be expected.
Does Object.keys($json.properties).length fix this up for you, by chance?
Had a test around with this @Rodolphe - looks like {{ Object.keys($json.stringify(obj)) }} and setting it to look for Empty will trigger it as as true branch / an empty object. You could also look for is not empty to trigger false, if that works better for how your workflow is set up… but it looks like that is appropriately looking to see if it’s empty or not.
Using your workflow you provided, this is triggering true under empty: