r/macsysadmin • u/Ketan_Kamble • 1h ago
ios went 18 to 26, so any n-1 compliance rule doing math is now pointing at a version that never shipped
if your intune ios compliance floor is worked out by arithmetic, the 18 to 26 jump probably broke it
ran into this a couple weeks back. we keep apple devices on n-1 for corporate and n-2 for personal, and the minimum version was getting worked out by subtracting from the current major. fine for years.
then apple moved to year based numbers and ios went 18 straight to 26. so "current minus 1" is now 25, which never shipped, and the floor ends up pointing at a version that doesn't exist. devices that should be non compliant just quietly are not.
there are already a few runbooks that auto-update the policy off the SOFA feed (rozemuller and skiptotheendpoint both have good ones). those are solid. i just didn't want mine writing to intune, so i went the other way: a power automate flow that reads the SOFA feed every morning and emails the service desk the day after a new major ships. a human makes the actual policy change. no graph scopes, no write access, it literally can't touch a compliance policy.
two things that got me if anyone builds the same:
read the version by position in the feed (OSVersions[0], [1], [2]), not by subtracting. after the jump, position is the only thing that stays right.
apple's own gdmf feed wouldn't work from power automate's http action, the cert chain isn't trusted and there is no skip-cert option. SOFA served over a normal cert so it just worked.
wrote it all up with the expressions, jcan drop the link if it's useful.
https://ketankamble.com/blog/apple-os-release-watch-for-intune-compliance/