Technical deep dive into converting Apple mobileconfig payloads to Microsoft Intune Settings Catalog format.
Organizations migrating from Apple Configurator/Profile Manager to Microsoft Intune face a significant challenge: hundreds of existing mobileconfig policies need manual recreation in Intune's Settings Catalog.
Each policy requires understanding both Apple's plist format and Intune's JSON structure, then manually mapping individual settings. This hackathon project demonstrates automated conversion between these formats.
Leverages Apple's official YAML specifications
Handles undocumented and custom payloads
Hybrid Approach: The system runs both converters and merges results, providing maximum coverage while detecting deprecated Apple settings.
github.com/apple/device-management/
└── mdm/profiles/
├── com.apple.applicationaccess.yaml
├── com.apple.mobiledevice.passwordpolicy.yaml
└── com.apple.screensharing.yaml
Example: allowPhotoStream
supportedOS:
iOS:
deprecated: "17.0"
removed: "18.0"
payloadKeys:
allowPhotoStream:
type: boolean
deprecatedIn: "17.0"supportedOS sections for platform deprecation infopayloadKeys definitionsPrivacy payloads require specialized handling due to complex service-app combinations:
<key>Services</key>
<dict>
<key>Camera</key>
<array>
<dict>
<key>BundleID</key>
<string>com.apple.camera</string>
<key>Allowed</key>
<true/>
</dict>
</array>
</dict>tcc_{service}_{bundleId}Example: blacklistedAppBundleIDs
→ Converted to SimpleCollection with individual StringSettingValue entries
Example: Font definitions, WiFi configurations
→ Converted to GroupSettingCollectionInstance with nested property structures
{
"id": "uuid-generated",
"name": "Converted: {original-policy-name}",
"platforms": "iOS",
"technologies": "mdm",
"settings": [...]
}choiceSettingInstance - Boolean values, enumssimpleSettingInstance - Strings, integersgroupSettingCollectionInstance - Complex objectssimpleSettingCollectionInstance - ArrayssettingDefinitionId = payloadType + "_" + keyNamePayloadType:
com.apple.mobiledevice.passwordpolicy
Key: allowSimple
com.apple.mobiledevice.passwordpolicy_allowSimple
Note: These IDs are placeholders for demonstration. Production implementation would map to actual Intune Settings Catalog definition IDs.