Skip to content

Add support for replicating Jamf App Installers - #137

Open
Jordy Thery (JordyThery) wants to merge 1 commit into
jamf:mainfrom
JordyThery:feature/app-installers
Open

Jordy Thery (JordyThery) wants to merge 1 commit into
jamf:mainfrom
JordyThery:feature/app-installers

Conversation

@JordyThery

@JordyThery Jordy Thery (JordyThery) commented Oct 3, 2026 •

Copy link
Copy Markdown

Summary

Adds support for replicating Jamf App Installers between servers, as requested in #105.

"App Installers" appears as a new object type on the macOS tab (bulk) and in the selective migration dropdown. Deployments are read from the source via the Jamf Pro API (/api/v1/app-installers/deployments) and created/updated on the destination with their dependencies remapped by name:

  • Category and Site ids
  • Smart computer group (deployment scope) — if the group does not exist on the destination, the deployment is created without a scope and disabled, with a log entry explaining why
  • Self Service category ids

Read-only fields (id, titleAvailableInAis, selectedVersion, latestAvailableVersion, versionRemoved) are stripped before POST/PUT. App title ids are passed through unchanged since both servers share the Jamf-hosted App Installers catalog.

Implementation

Follows the existing patterns in the codebase:

  • Object listing/caching modeled on api-roles/api-integrations (paged Jamf Pro API via Jpapi.getAll/pagedGet, AppInstaller model + source/destination caches in JsonObjects.swift)
  • Dependency remapping modeled on patch management: new AppInstallersDelegate.swift (mirrors PatchDelegate.swift) fetches categories, sites, and computer groups from both servers before processing
  • Exported JSON embeds the dependency names (categoryName, siteName, smartGroupName, Self Service category names) so file-based import can remap ids on a different destination server

Supported workflows

  • Bulk replication (macOS tab checkbox)
  • Selective replication (dropdown + object list)
  • Export to files (raw/trimmed) and import from files
  • Removal (delete mode)
  • Command line (-objects app-installers, included in allobjects)

Testing

Tested against two Jamf Pro cloud instances:

  • ✅ Bulk copy — deployments created on empty destination; re-run updates existing ones
  • ✅ Selective copy of individual deployments
  • ✅ Category/site/smart group/Self Service categories correctly remapped by name
  • ✅ Delete mode removes deployments from the destination

Resolves #105

🤖 Generated with Claude Code

Adds "App Installers" as a selectable object type on the macOS tab and
in selective migration, using the Jamf Pro API
v1/app-installers/deployments endpoints. Deployment records are copied
between servers with the category, site, smart computer group, and
Self Service category ids remapped by name on the destination server.
Deployments whose smart group cannot be found on the destination are
created without a scope and disabled. Supports bulk and selective
replication, export to and import from files, and removal.

Resolves jamf#105

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Feature Request - App Installers Support

1 participant