Custom declarative device management configurations allow you to define advanced settings tailored to specific needs, offering unmatched flexibility and control. With these custom configurations, you can configure options beyond the standard blueprint capabilities, enabling advanced functionality that supports unique use cases.
Important:Keep the following in mind when using custom declarations with blueprints:
Misconfigurations can lead to unintended behavior, affecting device performance and security. Jamf recommends only using custom declarations if you have an advanced understanding of Apple's declarative device management protocol and testing custom declarations in a sandbox environment before deploying to a production environment. For more information, see Use declarative device management to manage Apple devices in Apple Platform Deployment.
Custom declarations fall outside the scope of Jamf support, meaning that troubleshooting and maintenance is the sole responsibility of the organization.
Updates to Elevate or device operating systems may conflict with custom declarations, potentially causing disruptions.
- Create a blueprint. For instructions, see Building a Blueprint from a Library of Components.
- In the Components library, use the Search field to search for the Custom Declarations component.
- Click the Custom Declarations component, and then click Get started.
- Click +Add item.
- In the Kind field, select either Configuration or Asset as the declaration type.
- Configuration —Configurations are the actual settings and policies that define how devices should be configured, functioning similarly to profile payloads. They represent specific device management elements such as email accounts, passcode policies, Wi-Fi settings, VPN configurations, and device restrictions. Configurations have a many-to-many relationship with assets, allowing multiple configurations to reference the same assets.
- Asset —Assets contain ancillary or supporting data required by configurations, such as user identities, certificates, credentials, configuration files, scripts, and user profiles. They have a many-to-many relationship with configurations, meaning a single asset can be referenced by multiple configurations, which enables reusability and reduces data duplication. Assets can be updated independently of the configurations that reference them, allowing administrators to modify items like user credentials or certificates without changing the underlying policies, thereby minimizing impact to devices since the configuration itself remains unchanged.
Note:Some custom declarations consist of an Asset declaration type and a Configuration declaration type. Assets consist of reference data required by configurations, such as large data items and per-user data. Asset files must be self-hosted.
When building a custom declaration, the configuration must reference the asset using a placeholder variable in the format $PAYLOAD_#, where # represents the asset's position in the blueprint's list of objects. For example, if the asset is the first object listed, the configuration references it as $PAYLOAD_1; if it is the second object listed, use $PAYLOAD_2, and so on.
- In the Channel field, select either System or User as the status channel for the declaration.
- System —The system channel applies settings to the device, regardless of which user is logged in.
- User —The user channel applies settings to specific user accounts.
- In the Type field, enter a declaration type.
Example:Configuration Type: com.apple.configuration.passcode.settings
Asset Type: com.apple.asset.useridentity
- In the Payload field, enter the configuration in JSON format.
- Click Save.
A custom declaration component is configured and ready to be scoped and deployed. For more information on managing your blueprints, see Blueprints Management.