Honored Contributor II
Honored Contributor II

In large enterprises and organizations with thousands of computers, it’s often necessary to break up software deployments into more manageable groups. Need to push a configuration profile out to 5,000 devices? You might want to break that into chunks of 1,000, so you don’t hammer your Jamf Pro server.

When I was a customer, we had over 17,000 devices in each of our Jamf Pro instances, and we often wanted to deploy software in stages. Right now, there is no built-in method to do this in Jamf Pro. So, I came up with a way to generate semi-randomized Smart Groups by utilizing the UDID of the device. The UDID is a 32-character identifier (Unique Device ID) that all devices have and is what Jamf Pro uses to uniquely identify all devices. You can view a device’s UDID by navigating to the device’s inventory record and selecting Hardware from the sidebar.


Each UDID contains HEX characters, which means 0 through 9 and A through F. Using a little bit of REGEX-fu, you can create a Smart Group that gathers devices with a UDID that starts with certain characters.




Pretty simple. The caret symbol is telling the REGEX to start at the beginning of the item we are evaluating. The next bit, [A1], tells REGEX to evaluate the first character of the item and find a match if that character is an A or a 1. That’s it. That simple REGEX captured 3 devices out of the 22 that I have in my Jamf Pro server. Changing it to ^[B2] pulls in 4 devices.

Want to capture more devices in one group? Just change your REGEX a little. By changing it to:


I now have 7 devices. Each of these devices has a UDID with an A, B, 1, or 2 in the first character of the UDID.

You could also use this REGEX to evaluate the first and second character of the UDID:


The above only pulled in 3 computers for me. So, adding characters at the second place and on could wind up limiting the group. But for larger orgs that might be okay if they want to have, say, 100 devices in each software group.

These groups could be used for the following:

  • Breaking up deployments (configuration profiles or policies) into smaller chunks
  • Creating a randomized Test group for software testing or a pilot group.Combined with a script to pull the user email from the computer record, you could send emails to the users ahead of deployments.

There are certainly other ways to accomplish this task, however, if you need quick and easy randomized groups of devices, this is a good option to keep in your tool belt.