Skip to content

JAMF Setup Checklist

Scott Kendall edited this page May 28, 2026 · 12 revisions

Introduction

The JAMF Concepts team came up with this little gem called "Setup Checklist" (https://github.com/Jamf-Concepts/setup-checklist). Often times after an enrollment, you need to make sure that users are logged into specific apps, screen sharing is enabled, dock applications are installed, etc...That is what this program does for you, in a nicely formatted step-by-step GUI window. Here is a sample of what you can do with it

Export.Setup.Video.mp4

Full details on how this application works can be found here: https://github.com/Jamf-Concepts/setup-checklist

For the recording above, I used the open source application called Recordly https://recordly.dev

Learning how to use the JAMF Setup Checklist can be a little overwhelming as there are a lot of configuration options. I have listed my Configuration Profile below for your reference:

Configuration Profile

Domain: com.jamf.setupchecklist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <!-- General configuration -->
    <key>DEBUG</key>
    <false/>
    <key>openWhenFinished</key>
    <string>com.apple.safari</string>
    <key>accentColor</key>
    <string>##red</string>
    <key>hideOtherApps</key>
    <false/>
    <key>icon</key>
    <string>/Library/Application Support/GiantEagle/Enrollment/GE_Icon.png</string>
    <key>title</key>
    <string>Enrollment Checklist</string>
    <key>message</key>
    <string>Let&apos;s finish setting up your new Mac!</string>
    <key>showIconInDock</key>
    <true/>
    <key>steps</key>
    <array>
        <!-- Welcome step -->
        <dict>
            <key>identifier</key>
            <string>welcome-message</string>
            <key>icon</key>
            <string>symbol:list.bullet.clipboard</string>
            <key>iconColor</key>
            <string>##red</string>
            <key>image</key>
            <string>/Library/Application Support/GiantEagle/Enrollment/HQWallpaper.jpg</string>
            <key>kind</key>
            <string>message</string>
            <key>title</key>
            <dict>
                <key>en</key>
                <string>Welcome to macOS Setup</string>
            </dict>
            <key>message</key>
            <dict>
                <key>en</key>
                <string>Just a few more steps to configure your new Mac.</string>
            </dict>
        </dict>
        <!-- Device Compliance step -->
        <!-- Device Compliance registration happens silently and Company Portal is enabled as an Autofill Extension -->
        <dict>
            <key>title</key>
            <string>Register for Platform SSO</string>
            <key>message</key>
            <string>Platform SSO allows your computer to sync its password to your organizational account, and enables sign-ins across most of our platforms.</string>
            <key>kind</key>
            <string>script</string>
            <key>identifier</key>
            <string>script-psso</string>
            <key>icon</key>
            <string>/Applications/Company Portal.app</string>
            <key>buttonLabel</key>
            <string>Register for PSSO</string>
            <key>windowPosition</key>
            <string>left</string>
            <key>openAutomatically</key>
            <true/>
            <key>buttonScript</key>
            <string>if [[ $(/Library/Application\ Support/JAMF/Jamf.app/Contents/MacOS/Jamf\ Conditional\ Access.app/Contents/MacOS/Jamf\ Conditional\ Access gatherAADInfo | grep -c "AAD ID acquired") == 1 ]]; then touch /Users/Shared/.compliance; pluginkit -e use -i com.microsoft.CompanyPortalMac.Mac-Autofill-Extension; else open -a "Company Portal"; fi</string>
            <key>updateStatusScript</key>
            <string>if [[ -f /Users/Shared/.compliance ]]; then exit 0; else exit 1; fi</string>
            <key>prepareScript</key>
            <string>if [[ -f /Users/Shared/.compliance ]]; then setupchecklist status script-compliance completed; fi</string>
        </dict>
        <dict>
            <key>identifier</key>
            <string>script-companyportal</string>
            <key>icon</key>
            <string>/Applications/Company Portal.app</string>
            <key>image</key>
            <string>/Applications/Company Portal.app</string>
            <key>kind</key>
            <string>script</string>
            <key>actionButtonLabel</key>
            <string>Register</string>
            <key>actionButtonScript</key>
            <string>/Library/Application\ Support/JAMF/Jamf.app/Contents/MacOS/Jamf\ Conditional\ Access.app/Contents/MacOS/Jamf\ Conditional\ Access registerWithIntune</string>
            <key>title</key>
            <dict>
                <key>en</key>
                <string>Register with Company Portal</string>
            </dict>
            <key>message</key>
            <dict>
                <key>en</key>
                <string>Company Portal allows access to Giant Eagle cloud resources. Sign in with your Giant Eagle credentials when Company Portal opens and follow the on‑screen prompts. Your device must meet Giant Eagle compliance and security requirements to continue using corporate applications and services, for example Microsoft Teams and Microsoft Outlook</string>
            </dict>
            <key>updateStatusScript</key>
            <string>defaults read com.microsoft.CompanyPortalMac "com.microsoft.intune.connectivityCheck.lastHeartbeatTime" 2&gt;/dev/null | grep -c "+"</string>
        </dict>
        <!-- Wallpaper step -->
        <dict>
            <key>identifier</key>
            <string>wallpaper</string>
            <key>icon</key>
            <string>symbol:photo.artframe</string>
            <key>iconColor</key>
            <string>##red</string>
            <key>kind</key>
            <string>wallpaper</string>
            <key>path</key>
            <string>/Library/Application Support/GiantEagle/Wallpapers</string>
            <key>title</key>
            <dict>
                <key>en</key>
                <string>Choose a Wallpaper</string>
            </dict>
            <key>message</key>
            <dict>
                <key>en</key>
                <string>Please choose a background from our list of wallpapers. You can always change it later</string>
            </dict>
        </dict>
        <!-- Dock step -->
        <dict>
            <key>dockAction</key>
            <array>
                <string>add</string>
                <string>replace</string>
            </array>
            <key>dockItems</key>
            <array>
                <string>com.jamf.selfserviceplus</string>
                <string>com.apple.apps.launcher</string>
                <string>com.apple.systempreferences</string>
                <string>com.apple.Safari</string>
                <string>com.microsoft.outlook</string>
                <string>com.microsoft.teams2</string>
                <string>Downloads</string>
            </array>
            <key>identifier</key>
            <string>dock</string>
            <key>kind</key>
            <string>dock</string>
            <key>iconColor</key>
            <string>##red</string>
            <key>mayKeepCurrent</key>
            <true/>
            <key>message</key>
            <string>For convienient access, we recommend adding these apps and items to your Dock.</string>
        </dict>
        <!-- Open Outlook step -->
        <dict>
            <key>identifier</key>
            <string>open-outlook</string>
            <key>item</key>
            <string>/Applications/Microsoft Outlook.app</string>
            <key>kind</key>
            <string>open</string>
            <key>title</key>
            <dict>
                <key>en</key>
                <string>Sign In to Outlook</string>
            </dict>
                <key>message</key>
            <dict>
                <key>en</key>
                <string>Outlook is a comprehensive personal information manager that integrates email, calendaring, task management, and contact organization.  Sign in with your Giant Eagle credentials when prompted.</string>
            </dict>
        </dict>
        <!-- Default mail step -->
        <dict>
            <key>identifier</key>
            <string>default-app-mail</string>
            <key>bundle-id</key>
            <string>com.microsoft.Outlook</string>
            <key>icon</key>
            <string>symbol:envelope.badge</string>
            <key>iconColor</key>
            <string>##red</string>
            <key>kind</key>
            <string>defaultApp</string>
            <key>mayKeepCurrent</key>
            <false/>
            <key>title</key>
            <dict>
                <key>en</key>
                <string>Set Default Mail App</string>
            </dict>
            <key>message</key>
            <dict>
                <key>en</key>
                <string>Please verify that your default email app is set to Outlook.</string>
            </dict>
            <key>urlScheme</key>
            <string>mailto</string>
        </dict>
        <!-- Teams Screen Recording configuration step -->
        <dict>
            <key>bundle-id</key>
            <array>
                <string>com.microsoft.teams2</string>
            </array>
            <key>icon</key>
            <string>symbol:rectangle.on.rectangle.angled</string>
            <key>iconColor</key>
            <string>##red</string>
            <key>movie</key>
            <string>/Library/Application Support/GiantEagle/Enrollment/Security_Privacy.mp4</string>
            <key>identifier</key>
            <string>screensharing</string>
            <key>kind</key>
            <string>screensharing</string>
            <key>message</key>
            <string>Enable Screen &amp; System Audio Recording for Microsoft Teams</string>
            <key>openAutomatically</key>
            <true/>
            <key>title</key>
            <string>Configure Screen Sharing</string>
            <key>windowPosition</key>
            <string>right</string>
        </dict>
        <!-- Open Teams step -->
        <dict>
            <key>identifier</key>
            <string>open-teams</string>
            <key>item</key>
            <string>/Applications/Microsoft Teams.app</string>
            <key>kind</key>
            <string>script</string>
            <key>actionButtonLabel</key>
            <string>Open Teams</string>
            <key>actionButtonScript</key>
            <string>open "/Applications/Microsoft Teams.app"</string>
            <key>title</key>
            <dict>
                <key>en</key>
                <string>Sign In to Teams</string>
            </dict>
            <key>message</key>
            <dict>
                <key>en</key>
                <string>Teams is a cloud-based collaboration platform that centralizes chat, video meetings, and file sharing into a single workspace.  Click on your profile name to sign in.</string>
            </dict>
            <key>updateStatusScript</key>
            <string>/usr/bin/plutil -extract "MCMMetadataInfo.SandboxProfileDataValidationInfo.Parameters._USER" raw "$HOME/Library/Containers/com.microsoft.teams2/.com.apple.containermanagerd.metadata.plist" | grep -c "$USER"</string>
        </dict>
        <!-- Open OneDrive step -->
        <dict>
            <key>identifier</key>
            <string>open-onedrive</string>
            <key>item</key>
            <string>/Applications/OneDrive.app</string>
			<key>image</key>
			<string>/Applications/OneDrive.app</string>
            <key>kind</key>
            <string>script</string>
            <key>title</key>
            <dict>
                <key>en</key>
                <string>Sign In to OneDrive</string>
            </dict>
            <key>message</key>
            <dict>
                <key>en</key>
                <string>OneDrive stores your work files and syncs your Desktop and Documents folders to the cloud. Sign in with your Giant Eagle credentials and complete the folder setup when prompted.</string>
            </dict>
            <key>buttonLabel</key>
            <string>Open OneDrive</string>
            <key>prepareScript</key>
            <string>#!/bin/zsh
                # Verify OneDrive is installed before showing this step.
                # If missing, mark error so it's visible rather than silently pending.
                if [[ ! -e "/Applications/OneDrive.app" ]]; then
                    /usr/local/bin/setupchecklist status open-onedrive error 2&gt;/dev/null
                    exit 1
                fi
                exit 0
            </string>
            <key>buttonScript</key>
            <string>#!/bin/zsh
                open /Applications/OneDrive.app
                exit 0
            </string>
            <key>updateStatusScript</key>
            <string>/usr/libexec/PlistBuddy -c "Print AccountInfo_Business1:UserEmail" ~/Library/Group\ Containers/UBF8T346G9.OneDriveStandaloneSuite/Library/Preferences/UBF8T346G9.OneDriveStandaloneSuite.plist</string>
        </dict>
        <!-- Get help step -->
        <!-- This step only shows the Support App recording. -->
        <dict>
            <key>identifier</key>
            <string>gethelp-message</string>
            <key>icon</key>
            <string>symbol:questionmark.circle</string>
            <key>iconColor</key>
            <string>##red</string>
            <key>movie</key>
            <string>/Library/Application Support/GiantEagle/Enrollment/supportapp.mp4</string>
            <key>kind</key>
            <string>message</string>
            <key>title</key>
            <dict>
                <key>en</key>
                <string>Need Help?</string>
            </dict>
            <key>message</key>
            <dict>
                <key>en</key>
                <string>Use our Support App to get help with your Mac.</string>
            </dict>
        </dict>
        <!-- This step only shows the New to Mac video. Opens Self Service and runs a Send Inventory. -->
        <dict>
            <key>buttonLabel</key>
            <string>Open Self Service</string>
            <key>icon</key>
            <string>symbol:macbook.badge.checkmark</string>
            <key>identifier</key>
            <string>open-jamfrecon-selfservice</string>
            <key>item</key>
            <string>jamfselfservice://content?entity=policy&amp;id=66&amp;action=execute</string>
            <key>kind</key>
            <string>open</string>
            <key>message</key>
            <dict>
                <key>en</key>
                <string>This step hands off to Self Service to run the Jamf inventory update policy and refresh the device information in our MDM.</string>
            </dict>
            <key>title</key>
            <dict>
                <key>en</key>
                <string>Update device information in Jamf</string>
                <key>nl</key>
                <string>Update toestel informatie in Jamf</string>
            </dict>
            <key>icon</key>
            <string>symbol:gearshape</string>
            <key>iconColor</key>
            <string>##red</string>
            <key>movie</key>
            <string>/Library/Application Support/GiantEagle/Enrollment/NewToMac.mp4</string>
            <key>buttonLabel</key>
		</dict>
        <!-- Thank you step -->
        <dict>
            <key>identifier</key>
            <string>thankyou-message</string>            
            <key>icon</key>
            <string>symbol:quote.bubble</string>
            <key>iconColor</key>
            <string>##red</string>  
            <key>image</key>
            <string>/Library/Application Support/GiantEagle/Enrollment/SetupCompleted.jpeg</string>
            <key>kind</key>
            <string>message</string>
            <key>title</key>
            <dict>
                <key>en</key>
                <string>Thank you</string>
            </dict>
            <key>message</key>
            <dict>
                <key>en</key>
                <string>The configuration is complete, enjoy your Mac!</string>
            </dict>
        </dict>
        <!-- end of steps-->
    </array>
</dict>
</plist>

Videos & Links

Inside of the Checklist app, I have a few other movies, they can be found here: https://github.com/ScottEKendall/JAMF-Pro-Scripts/tree/main/WikiPages/JAMF_CheckList. I have also included the preview(s) below

Apple Support New To Mac:

https://www.youtube.com/watch?v=rqI6Nq9rJ74&t=19s. (too big to embed, so here is the direct link)

Support.app demo:

supportapp.mp4

I am trying to drive my users to use the support.app as much as possible. Details about this app can be found here: https://github.com/root3nl/supportapp and I have some examples on my Wiki pages as well...

Clone this wiki locally