Custom settings

IBM Data Shift provides various customizable configurations through custom user level settings.

Configuration Keys by Category

Device Management & Startup Checks

Post-Migration Steps

Migration Behavior

Migration Scope

Feature Specific Customization

User Interface Customization

Terms & Conditions

Custom Page Icons

Administrators can customize the icon displayed on each page of the migration workflow. Icons can be specified as:

Available Icon Configuration Keys:

Example Icon Configuration:

<key>welcomePageIcon</key>
<string>https://cdn.company.com/migration-welcome.png</string>
<key>migrationPageIcon</key>
<string>/Documents/custom-migration-icon.pdf</string>

Configuration Profile Example

To configure these settings via a configuration profile, simply define the values as shown in the following schema:

<?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>
    <!-- Device Management & Startup Checks -->
    <key>skipMDMCheck</key>
    <false/>
    <key>mdmEnvironments</key>
    <array>
        <dict>
            <key>name</key>
            <string>Production</string>
            <key>serverURL</key>
            <string>https://some.server.url</string>
            <key>reconPolicyID</key>
            <string>000</string>
        </dict>
        <dict>
            <key>name</key>
            <string>QA</string>
            <key>serverURL</key>
            <string>https://some.server.url</string>
            <key>reconPolicyID</key>
            <string>000</string>
        </dict>
    </array>
    <key>enrollmentRedirectionLink</key>
    <string>https://www.some.org.enroll/doc</string>
    
    <!-- Post-Migration Steps -->
    <key>skipAppleIDCheck</key>
    <false/>
    <key>skipJamfRecon</key>
    <false/>
    <key>jamfReconMethod</key>
    <string>selfServicePolicy</string>
    <key>storePath</key>
    <string>/Applications/SelfService.app</string>
    
    <!-- Migration Behavior -->
    <key>duplicateFilesHandlingPolicy</key>
    <string>move</string>
    <key>backupPath</key>
    <string>/Desktop/Migration.Backup</string>
    <key>excludedPathsList</key>
    <array>
        <string>/some/path/1</string>
        <string>/some/path/2</string>
        <string>$HOMEFOLDER/Downloads</string>
        <string>$APPFOLDER/SomeApp.app</string>
        <!-- Example with regex patterns (v1.4.0+) -->
        <string>$APPFOLDER/.+ Creator Studio\.app</string>
    </array>
    <key>allowedPathsList</key>
    <array>
        <string>/Library/Application Support/SomeApp</string>
        <string>/Library/Preferences/com.example.plist</string>
        <string>$HOMEFOLDER/Library/ImportantFiles</string>
    </array>
    <key>excludedFileExtensions</key>
    <array>
        <string>vdi</string>
        <string>tmp</string>
    </array>
    <key>excludedFilePrefixes</key>
    <array>
        <string>temp_</string>
        <string>cache_</string>
    </array>
    <key>generateReport</key>
    <true/>
    <!-- Migration scope (next release) -->
    <key>migratePreferences</key>
    <true/>
    <key>migrateAppSupportFiles</key>
    <true/>
    <key>excludeApplicationsFolder</key>
    <false/>
    <key>checkAppsArchitecture</key>
    <true/>
    <key>skipDeviceReboot</key>
    <false/>
    <key>loggingLevel</key>
    <string>standard</string>
    
    <!-- User Interface Customization -->
    <key>orgName</key>
    <string>YourOrg</string>
    <key>networkServiceIdentifier</key>
    <string>_migrator_yourorg</string>
    <key>skipMigrationSummary</key>
    <false/>
    <key>showWelcomePageInfo</key>
    <true/>
    
    <!-- Terms & Conditions -->
    <key>shouldRequireTAndCAcceptance</key>
    <true/>
    <key>termsConditionsURL</key>
    <string>https://www.yourorg.com/terms</string>
    <key>privacyPolicyURL</key>
    <string>https://www.yourorg.com/privacy</string>
    <key>thirdPartyNotices</key>
    <string>https://www.yourorg.com/notices</string>
    
    <!-- Custom Page Icons (Optional) -->
    <key>welcomePageIcon</key>
    <string>https://cdn.yourorg.com/welcome-icon.png</string>
    <key>browserPageIcon</key>
    <string>custom-browser-icon.pdf</string>
    <key>serverPageIcon</key>
    <string>custom-server-icon.pdf</string>
    <key>codeVerificationPageIcon</key>
    <string>custom-code-icon.pdf</string>
    <key>setupPageIcon</key>
    <string>custom-setup-icon.pdf</string>
    <key>recapPageIcon</key>
    <string>custom-recap-icon.pdf</string>
    <key>migrationPageIcon</key>
    <string>custom-migration-icon.pdf</string>
    <key>jamfReconPageIcon</key>
    <string>custom-recon-icon.pdf</string>
    <key>rebootPageIcon</key>
    <string>custom-reboot-icon.pdf</string>
    <key>finalPageIcon</key>
    <string>custom-final-icon.pdf</string>
</dict>
</plist>

Afterward, you will need to create a new configuration profile in Jamf Pro (if one has not already been created for configuring PPPC values) and define a new “Application & Custom Settings” payload as shown below:

Custom Settings Configuration

Migration presets

From v2.0.0

The migrationPresets setting replaces the standard options shown in the Migration Setup picker. The Advanced option remains available. Each preset is a dictionary:

{
   id : String (required, unique),
   name : String (required, shown in the picker and not localized),
   categories : [ String ] (optional),
   additionalPaths : [ String ] (optional)
}

Available categories:

Category Migrates
desktop The user’s Desktop folder
documents The user’s Documents folder
userFolder The entire home folder (supersedes desktop, documents and additionalPaths)
apps Applications discovered in /Applications
preferences macOS preferences, discovered by the app

additionalPaths accepts the same $HOMEFOLDER / $APPFOLDER flags as the path lists. Unknown category names (for example a typo, or a category from a newer app version) are dropped individually without failing the preset. Entries that are malformed, have an empty name or reuse an existing id are dropped and logged. If no valid preset remains, the app falls back to Lite and Complete.

<key>migrationPresets</key>
<array>
    <dict>
        <key>id</key>
        <string>docs-only</string>
        <key>name</key>
        <string>Documents &amp; Projects</string>
        <key>categories</key>
        <array>
            <string>documents</string>
            <string>preferences</string>
        </array>
        <key>additionalPaths</key>
        <array>
            <string>$HOMEFOLDER/Projects</string>
        </array>
    </dict>
    <dict>
        <key>id</key>
        <string>everything</string>
        <key>name</key>
        <string>Everything</string>
        <key>categories</key>
        <array>
            <string>userFolder</string>
            <string>apps</string>
            <string>preferences</string>
        </array>
    </dict>
</array>

Usage Notes

Terms & Conditions Configuration

When enabling shouldRequireTAndCAcceptance, ensure that:

  1. The termsConditionsURL points to a valid, accessible document
  2. Users will be required to accept before proceeding with migration
  3. The acceptance is stored locally and persists across app launches

Custom Icons Best Practices

File Exclusion Strategy

The app combines both default exclusions and managed exclusions:

Using Dynamic Path Flags

Both excludedPathsList and allowedPathsList support dynamic flags for flexible path definitions:

Examples:

These flags ensure paths work correctly across different user accounts and system configurations without hardcoding specific usernames or paths.

Configuration Profile Deployment

To deploy these settings:

  1. Create a new Configuration Profile in Jamf Pro
  2. Add an “Application & Custom Settings” payload
  3. Set the Preference Domain to your app’s bundle identifier
  4. Upload the XML plist with your custom settings
  5. Scope to appropriate devices/users