Skip to content

macOS Device Compliance

I use two Smart Groups in Jamf to define how many devices are in compliance in regards to macOS version. The Smart Groups are pretty simple:

  • Devices who have checked in within the past two weeks running the latest compliant version of macOS or newer
  • Devices who have checked in within the past two weeks running a version of macOS older than the minimum compliant version

The problem is that only gives us a snapshot of a moment in time, rather than historical data. My solution was to log that data in a Google Sheet.

I created a new Okta Workflow. The Workflow kicks off once a day at 1 am PST.

I want to store the date and time, so I need to convert it into the appropriate format. This will give me 2024-04-09 and 10:49:00 PST (based on time I’m writing this). It stores that values as dateReturn and timeReturn.

Then we need the Jamf Bearer Token. We can pass that data into the Custom API action. I’m using the /v1/smart-computer-groups/{id}/recalculate endpoint. I changed the ID to the appropriate ID from Jamf. Nothing needs to go into Headers, Query, or Body. Then I use JSON Parse and Object Get to get the count.

We’re doing the exact same thing again, but this time with the non-compliant devices.

Finally, I create a row on a Google sheet. putting in the date, time, compliantCount and nonCompliantCount. The sheet has some calculations to get total number, and to get percentage. On that sheet is also a chart which will track the historical percentage. You can see on April 14, the compliant version changed. As such we have a large dip and need to climb back up into compliance.

Here’s a link to the Google Sheet with fake data in it.

Leave a Reply