Skip to main content
Solved

Smart Group for Devices With and Without SIM/eSIM

  • November 13, 2025
  • 1 reply
  • 57 views

KP.Zhang

Hi everyone,

I’m trying to figure out whether it’s possible to distinguish between devices with a physical SIM, devices without a SIM, and eSIM devices using Smart Groups. I’m not sure if anyone else is seeing the same behavior I am.

My Environment:

  • Jamf Pro On-Prem 11.22.1-t1762179835791 (Windows Server)

Devices under management:

  • iPhone (China version)
  • iPad (China version)

What I try to Achive:
Create Smart Groups that can identify:

  1. Devices with a physical SIM inserted
  2. Devices without a SIM card
  3. Devices using eSIM

What I’ve tested so far:

  • Using Phone Number: Some devices can’t retrieve the SIM’s phone number.
  • Using Current Carrier Network: All devices running iOS 26 and later fail to return this field. However, devices that could read the phone number on iOS 18 can still do so after upgrading to iOS 26.
  • Using Current Mobile Country Code and Current Mobile Network Code: These values are available for devices with a SIM card on both iOS 18 and iOS 26.
    However, I also found that unactivated eSIM devices still report values for Current Mobile Country Code and Current Mobile Network Code, making it difficult to distinguish them from devices with a physical SIM.

Has anyone found a reliable field or method to identify eSIM-only devices versus physical SIM ones?

 

Best answer by h1431532403240

Hi @KP.Zhang,

Great question! Unfortunately, the standard Jamf Pro inventory fields can't reliably distinguish between Physical SIM and eSIM - you've already discovered the limitations with Phone Number, Current Carrier Network, and MCC/MNC fields.

 

The Solution: API v2 + Extension Attributes

The Jamf Pro API v2 provides a serviceSubscriptions array with the key field needed: EID (eSIM Identifier)

  • Physical SIMEID is nullICCID has value
  • eSIMEID has value, ICCID has value
  • No SIM: Has IMEI but no ICCID in any subscription

 

I've created a Python script that populates Extension Attributes based on this logic, allowing you to create the Smart Groups you need.

 

GitHub: https://github.com/h1431532403240/jamf-sim-classifier

 

Usage

python3 jamf_sim_classifier.py \
-s https://yourserver.jamfcloud.com \
-u admin -p password

 

Your 3 Smart Groups

After running the script:

Smart Group Criteria
Devices with a physical SIM inserted Has Physical SIM is Yes
Devices without a SIM card SIM Summary is No SIM
Devices using eSIM Has eSIM is Yes

 

Reference: Jamf Pro API - Mobile Device Detail

Hope this helps!

1 reply

h1431532403240
Forum|alt.badge.img+6
  • Contributor
  • Answer
  • January 14, 2026

Hi @KP.Zhang,

Great question! Unfortunately, the standard Jamf Pro inventory fields can't reliably distinguish between Physical SIM and eSIM - you've already discovered the limitations with Phone Number, Current Carrier Network, and MCC/MNC fields.

 

The Solution: API v2 + Extension Attributes

The Jamf Pro API v2 provides a serviceSubscriptions array with the key field needed: EID (eSIM Identifier)

  • Physical SIMEID is nullICCID has value
  • eSIMEID has value, ICCID has value
  • No SIM: Has IMEI but no ICCID in any subscription

 

I've created a Python script that populates Extension Attributes based on this logic, allowing you to create the Smart Groups you need.

 

GitHub: https://github.com/h1431532403240/jamf-sim-classifier

 

Usage

python3 jamf_sim_classifier.py \
-s https://yourserver.jamfcloud.com \
-u admin -p password

 

Your 3 Smart Groups

After running the script:

Smart Group Criteria
Devices with a physical SIM inserted Has Physical SIM is Yes
Devices without a SIM card SIM Summary is No SIM
Devices using eSIM Has eSIM is Yes

 

Reference: Jamf Pro API - Mobile Device Detail

Hope this helps!