> ## Documentation Index
> Fetch the complete documentation index at: https://docs.zappl.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Jamf Pro

> This guide provides step-by-step instructions on how to use Jamf Pro to configure and deploy Zappl in your environment.

> For a successful Zappl deployment with Jamf Pro, please follow the steps in the order outlined below. It is important that all configuration profiles are installed prior to the Zappl installer being deployed.

## <Icon icon="layer-group" size={32} /> Zappl Category

<Info>This category is not essential for deployment, but it can help keep your Jamf Pro environment neat and organised.</Info>

We’d recommend creating a new `Zappl` category for housing the necessary Configuration Profiles, Policies, Scripts etc.

**To add the category:**

<Steps>
  <Step>
    Navigate to *Jamf Pro > Settings > Categories* and click **New**.
  </Step>

  <Step>
    Type in **Zappl** for the Category name.

    <img src="https://mintcdn.com/daretechnology/G9NJALb-Jzzab81F/images/new_category.webp?fit=max&auto=format&n=G9NJALb-Jzzab81F&q=85&s=150452370cd25c648e70d146a11384cc" alt="Jamf Pro Category" width="964" height="312" data-path="images/new_category.webp" />
  </Step>

  <Step>
    **Save** the Category.
  </Step>
</Steps>

<Check>The Zappl category is now ready to use throughout the Zappl deployment in Jamf Pro.</Check>

<br />

<br />

## <Icon icon="sliders" size={32} /> Configuration Profiles

#### Adding the JSON Schema

<Steps>
  <Step>
    Open/download our [JSON file](https://latestinstaller.zappl.co/Resources/JSON%20Schema/Zappl%20Preferences.json?v=3.0.0).
  </Step>

  <Step>
    In Jamf Pro, navigate to *Computers > Configuration Profiles* and click **New**.
  </Step>

  <Step>
    In the general payload, give the new profile a name, assign it to a category, set the level as **Computer Level** and the distribution method as **Install Automatically**.

    <img src="https://mintcdn.com/daretechnology/G9NJALb-Jzzab81F/images/json_profile.webp?fit=max&auto=format&n=G9NJALb-Jzzab81F&q=85&s=21c9c1e08fd58d3c8b1013674244dc78" alt="JSON Profile" width="1950" height="1234" data-path="images/json_profile.webp" />
  </Step>

  <Step>
    Under the payload options, locate the **Application & Custom Settings** payload, select **External Applications** and select **Add**.

    <img src="https://mintcdn.com/daretechnology/G9NJALb-Jzzab81F/images/json_add.webp?fit=max&auto=format&n=G9NJALb-Jzzab81F&q=85&s=1c97d4d01724f261d43e250f8ab83a6b" alt="JSON Profile" width="1711" height="522" data-path="images/json_add.webp" />
  </Step>

  <Step>
    Under the Source dropdown, select **Custom Schema**.

    <img src="https://mintcdn.com/daretechnology/G9NJALb-Jzzab81F/images/json_schema.webp?fit=max&auto=format&n=G9NJALb-Jzzab81F&q=85&s=24cdf5e629128614172a9ce97f8d4053" alt="JSON Schema" width="1024" height="454" data-path="images/json_schema.webp" />
  </Step>

  <Step>
    Set the preference domain as `com.dare.zappl.preferences` and click **Add Schema**.

    <img src="https://mintcdn.com/daretechnology/G9NJALb-Jzzab81F/images/json_add_schema.webp?fit=max&auto=format&n=G9NJALb-Jzzab81F&q=85&s=48035f8bb13fe39481400abb3fa544f6" alt="JSON Schema" width="1024" height="400" data-path="images/json_add_schema.webp" />
  </Step>

  <Step>
    Copy the entire JSON Schema that we opened in an earlier step, Paste it into the text area and click **Save**.

    <img src="https://mintcdn.com/daretechnology/G9NJALb-Jzzab81F/images/json_add_custom.webp?fit=max&auto=format&n=G9NJALb-Jzzab81F&q=85&s=e6446615fcd052afff3147913221c105" alt="JSON Schema" width="932" height="708" data-path="images/json_add_custom.webp" />
  </Step>

  <Step>
    ### Customise Preferences

    Configure your desired Zappl behaviour and user experience using the keys outlined in our [Preferences page](/customise/preferences).
  </Step>

  <Step>
    Scope the profile to all computers where you plan to deploy Zappl (e.g. *All Managed Clients*), then click **Save**.

    <img src="https://mintcdn.com/daretechnology/G9NJALb-Jzzab81F/images/json_scope.webp?fit=max&auto=format&n=G9NJALb-Jzzab81F&q=85&s=d45d81a8b2a51ed1bb28d8738f2633df" alt="JSON Schema" width="1626" height="1350" data-path="images/json_scope.webp" />
  </Step>
</Steps>

<br />

#### Managed Login Items

<Note>As of macOS 13 (Ventura), users can disable launch daemons through the Login Items option in System Settings. Zappl uses launch daemons to run automatically in the background, and these daemons must always be enabled for Zappl to function.</Note>

> The following profile ensures Zappl can run in the background by preventing users from disabling Zappl's launch daemons. This is achieved by whitelisting Zappl's Team ID (`JTYACQP7Y5`).

<Steps>
  <Step>
    Download our [.mobileconfig file](https://latestinstaller.zappl.co/Resources/Configuration%20Profiles/Zappl%20-%20Managed%20Login%20Items.mobileconfig?v=3.0.0).
  </Step>

  <Step>
    In Jamf Pro, navigate to *Computers > Configuration Profiles* and click **Upload**.
  </Step>

  <Step>
    Click **Choose File**, then locate the `.mobileconfig` file you downloaded in the first step and click **Upload**.

    <img src="https://mintcdn.com/daretechnology/G9NJALb-Jzzab81F/images/loginitems_upload.webp?fit=max&auto=format&n=G9NJALb-Jzzab81F&q=85&s=4520cc8319d388b9efc2d7d29c9d7a14" alt="Login Items" width="986" height="564" data-path="images/loginitems_upload.webp" />
  </Step>

  <Step>
    Click **Scope**, add your desired scope target for the profile and click **Save**.

    <img src="https://mintcdn.com/daretechnology/G9NJALb-Jzzab81F/images/loginitems_scope.webp?fit=max&auto=format&n=G9NJALb-Jzzab81F&q=85&s=1649b2c60bbe511bc20a3eb4b58dc17d" alt="Login Items" width="1626" height="1350" data-path="images/loginitems_scope.webp" />
  </Step>
</Steps>

<br />

#### Full Disk Access

<Note>As of macOS 13 (Ventura), full disk access is required in order to update or remove macOS apps. The Zappl agent is responsible for performing all app updates, therefore full disk access (`SystemPolicyAllFiles`) needs to be granted to the agent via a configuration profile.</Note>

> To ensure Zappl is allowed to perform updates, simply add the below configuration profile to your MDM and scope it out to devices which Zappl will be deployed to.

<Steps>
  <Step>
    Download our [.mobileconfig file](https://latestinstaller.zappl.co/Resources/Configuration%20Profiles/Zappl%20-%20PPPC.mobileconfig?v=3.0.0).
  </Step>

  <Step>
    In Jamf Pro, navigate to *Computers > Configuration Profiles* and click **Upload**.
  </Step>

  <Step>
    Click **Choose File**, then locate the `.mobileconfig` file you downloaded in the first step and click **Upload**.

    <img src="https://mintcdn.com/daretechnology/U85uvC5AROFPwwzV/images/pppc_upload.webp?fit=max&auto=format&n=U85uvC5AROFPwwzV&q=85&s=76e0040f2f194c59b679e55c4e1b5832" alt="PPPC" width="986" height="564" data-path="images/pppc_upload.webp" />
  </Step>

  <Step>
    Click **Scope**, add your desired scope target for the profile and click **Save**.

    <img src="https://mintcdn.com/daretechnology/G9NJALb-Jzzab81F/images/loginitems_scope.webp?fit=max&auto=format&n=G9NJALb-Jzzab81F&q=85&s=1649b2c60bbe511bc20a3eb4b58dc17d" alt="PPPC" width="1626" height="1350" data-path="images/loginitems_scope.webp" />
  </Step>
</Steps>

<br />

#### Notifications

<Note>Zappl and AppBar use macOS notifications to alert users of available updates, completed installs, and any failures. These notifications must be pre-approved via a configuration profile, otherwise macOS will prompt users to allow them individually.</Note>

> To ensure Zappl and AppBar notifications are approved, simply add the below configuration profile to your MDM and scope it out to devices which Zappl will be deployed to.

<Steps>
  <Step>
    Download our [.mobileconfig file](https://latestinstaller.zappl.co/Resources/Configuration%20Profiles/Zappl%20-%20Notifications.mobileconfig?v=3.0.0).
  </Step>

  <Step>
    In Jamf Pro, navigate to *Computers > Configuration Profiles* and click **Upload**.
  </Step>

  <Step>
    Click **Choose File**, then locate the `.mobileconfig` file you downloaded in the first step and click **Upload**.

    <img src="https://mintcdn.com/daretechnology/jSHtt17maR42Knha/images/notifications_upload.webp?fit=max&auto=format&n=jSHtt17maR42Knha&q=85&s=f027c65fa1a6b22bf9be54897307e4fd" alt="Notifications" width="986" height="564" data-path="images/notifications_upload.webp" />
  </Step>

  <Step>
    Click **Scope**, add your desired scope target for the profile and click **Save**.

    <img src="https://mintcdn.com/daretechnology/G9NJALb-Jzzab81F/images/loginitems_scope.webp?fit=max&auto=format&n=G9NJALb-Jzzab81F&q=85&s=1649b2c60bbe511bc20a3eb4b58dc17d" alt="Notifications" width="1626" height="1350" data-path="images/loginitems_scope.webp" />
  </Step>
</Steps>

<br />

<br />

## <Icon icon="square-code" size={32} /> Deploy the Installer

<Info>You can easily deploy the latest version of Zappl to your estate using our Zappl installer script. Follow the steps below to add the script to your Jamf Pro server and deploy Zappl using a policy.</Info>

<Steps>
  <Step>
    Download our [Zappl installer script](https://latestinstaller.zappl.co/Resources/Scripts/Install%20Zappl.zsh).
  </Step>

  <Step>
    In Jamf Pro, navigate to *Settings > Computer Management > Scripts* and click **New**.
  </Step>

  <Step>
    In the *General* tab, give the new script a name and assign it to a category.

    <img src="https://mintcdn.com/daretechnology/G9NJALb-Jzzab81F/images/installer_general.webp?fit=max&auto=format&n=G9NJALb-Jzzab81F&q=85&s=a11f46ade47aecdedbce89e0758c7fd3" alt="Installer" width="1392" height="586" data-path="images/installer_general.webp" />
  </Step>

  <Step>
    In the Script tab, drag and drop the `Install Zappl.zsh` script you downloaded in **Step 1** into the text area.

    <img src="https://mintcdn.com/daretechnology/G9NJALb-Jzzab81F/images/installer_script.webp?fit=max&auto=format&n=G9NJALb-Jzzab81F&q=85&s=5463299429edd0a3231070393ee13307" alt="Installer" width="2048" height="1036" data-path="images/installer_script.webp" />
  </Step>

  <Step>
    In the **Options** tab, set the below parameter labels for parameter 4 and 5 and click **Save**.

    **Parameter 4 |** `Activation Token (Optional, recommended)`

    **Parameter 5 |** `Public Key (Optional, recommended)`

    <img src="https://mintcdn.com/daretechnology/G9NJALb-Jzzab81F/images/installer_parameters.webp?fit=max&auto=format&n=G9NJALb-Jzzab81F&q=85&s=7ce6f9774881a2c738bef987cd91b165" alt="Installer" width="1114" height="666" data-path="images/installer_parameters.webp" />
  </Step>

  <Step>
    Navigate to *Computers > Policies* and click **New**.
  </Step>

  <Step>
    In the **General** payload, give the policy a name, assign it to a category, set the trigger as **Recurring Check-in** and set the execution frequency as **Once per computer**.

    <img src="https://mintcdn.com/daretechnology/G9NJALb-Jzzab81F/images/installer_policy.webp?fit=max&auto=format&n=G9NJALb-Jzzab81F&q=85&s=8e0060ec0acdc0e356d02c4f83689b04" alt="Installer" width="969" height="809" data-path="images/installer_policy.webp" />
  </Step>

  <Step>
    In the **Scripts** payload, click **Configure**, then locate the Deploy Zappl script you added in the previous steps and click **Add**.

    <img src="https://mintcdn.com/daretechnology/G9NJALb-Jzzab81F/images/installer_add_script.webp?fit=max&auto=format&n=G9NJALb-Jzzab81F&q=85&s=5186a12ae87f275d7b9ad44ff4e7ff73" alt="Installer" width="1440" height="148" data-path="images/installer_add_script.webp" />
  </Step>

  <Step>
    We recommend that you paste your customer-specific activation and public keys to the first 2 script parameters. This will ensure Zappl activates even if the configuration profile fails to install. If you do not know your activation and public keys, [contact our helpdesk](mailto:helpdesk@dare.tech).

    <img src="https://mintcdn.com/daretechnology/G9NJALb-Jzzab81F/images/installer_values.webp?fit=max&auto=format&n=G9NJALb-Jzzab81F&q=85&s=20109a864db26f7b0bc299bcd764cacb" alt="Installer" width="1028" height="472" data-path="images/installer_values.webp" />
  </Step>

  <Step>
    In the **Scope** tab, select your desired scoping target for the Zappl deployment and click **Save**.

    <Warning>
      Zappl is a patch management tool that actively downloads and installs software updates in the background. When deploying to **large numbers of devices on the same network**, we strongly recommend **phasing your rollout in batches** rather than deploying to your entire fleet at once. Deploying to all devices on the same network in one go will result in all outdated apps downloading updates simultaneously on the first run, which may result in significant network load.
    </Warning>
  </Step>
</Steps>

<br />

<br />

## <Icon icon="layer-plus" size={32} /> Additional Scripts

<Info>**The following scripts are optional for deploying Zappl but provide extra functionality.** It's recommended to add these scripts to your Jamf Pro environment while setting up the Zappl deployment, ensuring they're readily available when needed.</Info>

#### Deploy Software Script

<Info>**This script enables the installation of any app from our [app catalog](https://zappl.co/app-catalog).** It eliminates the need for Jamf Pro admins to manually package and deploy software. For instructions on using this script, refer to Adding Scripts to Jamf Pro below.</Info>

Download our [Deploy Software script](https://latestinstaller.zappl.co/Resources/Scripts/Zappl%20-%20Deploy%20Software.zsh), and utilise the Parameter Labels below.

<AccordionGroup>
  <Accordion title="Parameter 4" icon="square-4">
    Application Name (Use the Installation Format from the Zappl App Catalog - E.g. com.google.Chrome)
  </Accordion>

  <Accordion title="Parameter 5" icon="square-5">
    Action (Options are "install" to have Zappl install the App silently, "install-showProgress" to install with a progress prompt or "update" to mark an App for a forced update)
  </Accordion>

  <Accordion title="Parameter 6" icon="square-6">
    Grace Period in Minutes (Only applicable if specifying "update" as the action. This is the amount of time the user has to save and quit the App before it quits automatically. Leave blank for 15 minutes)
  </Accordion>

  <Accordion horizontal title="Parameter 7" icon="square-7">
    Deferrals Allowed (Only applicable if specifying "update" as the action. This is the amount of times a user can defer an update prompt before being forced to update. Leave blank for no deferrals and just a grace period timer)
  </Accordion>

  <Accordion horizontal title="Parameter 8" icon="square-8">
    Minimum Deferral Window (Only applicable if specifying "update" as the action. This is the minimum time in minutes Zappl will prompt users to update again after they defer. Leave blank for the the default value of 60 minutes)
  </Accordion>
</AccordionGroup>

#### Collect Logs Script

<Info>This script provides an easy method for collecting Zappl log files when troubleshooting. For instructions on using this script, refer to Adding Scripts to Jamf Pro below.</Info>

Download our [Log Collection script](https://latestinstaller.zappl.co/Resources/Scripts/Zappl%20-%20Collect%20Logs.zsh), and utilise the Parameter Labels below.

<AccordionGroup>
  <Accordion title="Parameter 4" icon="square-4">
    Jamf Pro URL
  </Accordion>

  <Accordion title="Parameter 5" icon="square-5">
    API Client ID
  </Accordion>

  <Accordion title="Parameter 6" icon="square-6">
    API Client Secret
  </Accordion>
</AccordionGroup>

#### Adding Scripts to Jamf Pro

<Info>Follow the steps below to add either of the above scripts to your Jamf Pro server.<br />
For information on using the Deploy Software script, see [Application Installations](/apps/installs).<br />
For information on using the Log Collection script, see [Logs and Errors](/other/logs-errors).</Info>

<Steps>
  <Step>
    In Jamf Pro, navigate to *Settings > Computer Management > Scripts* and click **New**.
  </Step>

  <Step>
    In the **General** tab, give the script a name and assign it to a category.

    <img src="https://mintcdn.com/daretechnology/G9NJALb-Jzzab81F/images/example_script.webp?fit=max&auto=format&n=G9NJALb-Jzzab81F&q=85&s=469d45f1e183ecab1b962832cbf3272d" alt="Script" width="1456" height="592" data-path="images/example_script.webp" />
  </Step>

  <Step>
    In the **Script** tab drag and drop the downloaded script into the text area.

    <img src="https://mintcdn.com/daretechnology/G9NJALb-Jzzab81F/images/example_script_add.webp?fit=max&auto=format&n=G9NJALb-Jzzab81F&q=85&s=ace33d82ba07329475c9f76ba5d5806b" alt="Script" width="2048" height="1036" data-path="images/example_script_add.webp" />
  </Step>

  <Step>
    In the **Options** tab, paste in the parameter labels outlined above into the relevant parameter fields, then click **Save**.

    <img src="https://mintcdn.com/daretechnology/G9NJALb-Jzzab81F/images/example_script_parameters.webp?fit=max&auto=format&n=G9NJALb-Jzzab81F&q=85&s=5381b46b6aedffd8445f25c5c6aa1499" alt="Script" width="1232" height="778" data-path="images/example_script_parameters.webp" />
  </Step>
</Steps>

<br />

<br />

## <Icon icon="puzzle-piece" size={32} /> Extension Attributes

<Info>**Jamf Pro offers extension attributes which provide better visibility into Zappl's status across your estate.** While the Zappl portal displays all necessary information for admins, adding Jamf Pro extension attributes can be beneficial for administrators who primarily use Jamf Pro and may not have access to your Zappl portal.</Info>

**Download our pre-configured Extension Attributes [here](https://latestinstaller.zappl.co/Resources/Extension%20Attributes/Zappl%20Extension%20Attributes.zip?v=3.0.0).**

<AccordionGroup>
  <Accordion title="Installation Status" icon="circle-check">
    Displays whether Zappl is installed.
  </Accordion>

  <Accordion title="Cached Updates" icon="window-restore">
    Displays which app updates are currently cached locally due to the app(s) being in use.
  </Accordion>

  <Accordion title="Deferrals Remaining" icon="timer">
    Displays how many recurring update deferrals are remaining.
  </Accordion>

  <Accordion horizontal title="Last Run Result" icon="flag-pennant">
    Displays the output from the most recent recurring background update or any forced updates. This can range from simple information, such as whether the user chose to defer or install updates, to details about any errors encountered during the update process.
  </Accordion>

  <Accordion horizontal title="Version Installed" icon="code-merge">
    Displays the version of Zappl installed.
  </Accordion>
</AccordionGroup>

#### Adding Extension Attributes to Jamf Pro

<Info>Download the **Zappl Extension Attributes** above, then follow the steps outlined below to add the `.xml` files to your Jamf Pro server.</Info>

<Steps>
  <Step>
    In Jamf Pro, navigate to *Settings > Computer Management > Extension Attributes*.

    <img src="https://mintcdn.com/daretechnology/G9NJALb-Jzzab81F/images/ea-settings.webp?fit=max&auto=format&n=G9NJALb-Jzzab81F&q=85&s=d417f4de1c1077b0436d2bde2600655c" alt="Extension Attributes" width="1408" height="514" data-path="images/ea-settings.webp" />
  </Step>

  <Step>
    Click **Upload**.

    <img src="https://mintcdn.com/daretechnology/G9NJALb-Jzzab81F/images/ea-upload.webp?fit=max&auto=format&n=G9NJALb-Jzzab81F&q=85&s=d1dd5e60a290c3dbf9dabf39ad566729" alt="Extension Attributes" width="1480" height="312" data-path="images/ea-upload.webp" />
  </Step>

  <Step>
    Click **Choose File**, then select the extension attribute you wish to add, and click **Upload**.

    <img src="https://mintcdn.com/daretechnology/G9NJALb-Jzzab81F/images/ea-upload2.webp?fit=max&auto=format&n=G9NJALb-Jzzab81F&q=85&s=df456d659206ede838da29bc8a279a18" alt="Extension Attributes" width="990" height="568" data-path="images/ea-upload2.webp" />
  </Step>

  <Step>
    Optionally, change the **Inventory Display** dropdown to the category you would like Zappl information to be stored.
  </Step>

  <Step>
    Finally, click **Save**.
  </Step>
</Steps>
