Skip to content

Releases: karthikeyan-mac/AxMJamfSync

v2.3

Choose a tag to compare

@karthikeyan-mac karthikeyan-mac released this 08 Sep 16:37
00d6a82

v2.3 — Scheduling

Highlights

  • Automatic scheduling — set a recurring cadence (e.g. every 4 hours, daily at 9:00 AM) with a plain-language builder. No cron syntax required — pick "Repeat Every: Minute(s) / Hour(s) / Day(s) / Week(s) / Month(s)" and fill in the values.
  • Advanced (Raw Cron Expression) — a collapsible field for anyone who wants to hand-write a 5-field cron expression instead.
  • Launch at Login — optionally reopen AxM Jamf Sync automatically so scheduled syncs keep running unattended.
  • Menu bar icon — always available, with Sync All Now, next/last sync times, and quick access to Settings.
  • Show in Dock toggle — run as a normal Dock app or menu-bar-only, independent of the menu bar icon.
  • Scheduled runs go through the same serial sync queue as Sync All — one environment at a time, never in parallel.
  • Notifications for schedule start and completion, alongside the existing per-environment sync notifications.
  • A live Next Sync badge in the header bar doubles as a shortcut into Settings.

Fixes

  • Devices tab no longer hides the list behind an "Apply a filter or search to narrow the list before viewing" screen on large environments — the full list now always renders, regardless of device count.
  • Fixed a UI freeze (spinning beachball) when clearing a filter on a large device list.
  • Fixed Auto Layout constraint warnings (has a maximum length that doesn't satisfy min <= max) logged by sync-progress spinners.

Notes

  • No new requirements — still macOS 14.0 (Sonoma) or later.
  • Scheduled syncs only run while the app is open (or reopened via Launch at Login) — a fully quit app won't wake itself up.

v.2.2

Choose a tag to compare

@karthikeyan-mac karthikeyan-mac released this 02 Jun 09:53

v2.2

May 2026

What's New

Multi-Environment Sync Queue

  • New Sync All button in the sidebar header — opens a checklist to select environments and add them to the sync queue
  • All syncs (single and multi-environment) now run through a single serial queue — no parallel Apple API calls, no race conditions
  • The queue advances automatically after each environment finishes, saving progress along the way
  • While the queue is running, a progress banner appears in the header showing which environment is syncing and how many remain

Queue-Aware Run Sync Button

  • The Run Sync button now enqueues rather than triggering immediately — clicking it while another environment is syncing adds it to the queue rather than blocking or starting a parallel sync
  • While an environment is waiting in the queue, the button shows In Queue in a muted style
  • The button correctly shows Stop Sync when that environment's sync is active, even after switching away and back

Stop & Save from the Banner

  • Stop & Save in the queue progress banner stops the currently-running sync, saves all progress, and advances the queue to the next environment
  • Cancel All stops the current sync and clears the entire queue — both actions show a confirmation dialog

Bug Fixes

  • Fixed environment switching being blocked while a sync was running — you can now browse Dashboard, Devices, and Export freely on any environment while another is syncing
  • Fixed Run Sync button reverting to its idle state when switching away from an environment mid-sync and returning
  • Fixed Stop & Save in the banner having no effect when the user had switched to a different environment
  • Fixed sync log showing empty when switching away from an environment mid-sync and returning

Upgrade Notes

No migration required. The sync queue is in-memory and resets on app restart.

v2.1

Choose a tag to compare

@karthikeyan-mac karthikeyan-mac released this 20 Apr 09:32

v2.1

April 2026

What's New

MDM Server Visibility

  • Device list now shows the assigned MDM server name as a badge on each device row
  • Devices registered in AxM but not enrolled in any MDM server are marked Unassigned
  • New MDM Server filter in the Devices tab — filter by server name or by Unassigned
  • Device detail panel includes a new MDM Assignment section with server name, type, and ID
  • Three new CSV export columns: MDM Assignment, MDM Server, MDM Server Type
  • Dashboard includes a new MDM Assignment card showing assigned/unassigned counts and a per-server device breakdown
  • Sync log and Sync tab summary card now include MDM server counts and assigned device totals after each run
  • MDM data only refreshes when v1/orgDevices runs a live fetch — respects Device Cache (days) and Force Refresh Devices

AppleCare Coverage Date Format

  • Start Date and Expired On in the coverage detail now respect System Settings → General → Language & Region date format

Bug Fixes

  • Force Refresh Coverage ignored Sync Device Types — selecting Mobile Only or Mac Only and enabling Force Refresh Coverage still fetched coverage for all devices. Fixed: Force Refresh Coverage now applies the same device type scope filter as a normal coverage run
  • Environment scope mismatch — fixed a bug where an environment created as ABM could store and display ASM credentials (or vice versa). v2.1 auto-corrects on launch using the Keychain scope key, clientId prefix, or cached sync scope as fallbacks — survives Keychain deletion
  • Scope-agnostic Keychain keys — ABM and ASM credentials within the same environment no longer share the same Keychain key, preventing one from overwriting the other
  • Scope change not persisted — tapping ABM/ASM in Setup now correctly updates the environment record so the change survives app restart
  • Credential data in error logs — Apple's token endpoint error responses could echo back the client_assertion JWT containing the API clientId. Response bodies are no longer logged on auth errors — status code only
  • ProgressView Auto Layout warnings — eliminated NSProgressIndicator constraint warnings in the console

Improvements

  • Account Type picker removed from the New Environment sheet — scope is set automatically from credentials
  • macOS HIG compliance pass: semantic colours, native toolbar materials, SF Symbol hierarchical rendering, compact header bar

Upgrade Notes

No manual migration required. Existing environments with a scope mismatch are corrected automatically on first launch.

v2.0

Choose a tag to compare

@karthikeyan-mac karthikeyan-mac released this 07 Apr 10:52

🆕 What's new in v2.0:

• Multi-Environment support — manage multiple ABM/ASM + Jamf Pro configurations from a single app, each fully isolated (credentials, device cache, logs)
• Sidebar navigation — switch between environments instantly
• Automatic v1 migration — existing data carries over on first launch, no re-sync needed
• More Jamf fields — PO Number, PO Date, and Vendor (with Purchase Source ID) now written to Jamf purchasing records
• External change detection — if someone edits warranty data in Jamf, the next sync detects and restores it automatically
• Sync Device Types — choose Mac only, Mobile only, or both per environment

Still free, open source, signed & notarized for macOS 14+.

Built for Mac admins. Runs entirely on your Mac — no cloud relay, no third-party servers.

v1.2

Choose a tag to compare

@karthikeyan-mac karthikeyan-mac released this 28 Mar 11:56

AxM Jamf Sync v1.2

What's New

Sync Device Types — Choose Mac + Mobile, Mac Only, or Mobile Only in Setup. Controls which devices are included in AppleCare coverage fetch and Jamf write-back. Apple org devices always fetched in full.

More fields synced to Jamf — PO Number, PO Date, and Vendor (now "purchaseSourceType (purchaseSourceId)") from ABM/ASM are written to Jamf purchasing fields.

Re-sync on external changes — If warranty date, vendor, PO number or PO date are edited in Jamf after a successful sync, the app detects and re-queues those devices automatically.

Fixes

  • Fixed HTTP 401 mid-sync on Jamf servers with short token TTLs — token now refreshes per page and per write-back chunk
  • Fixed app launching as ABM despite ASM credentials being saved in Keychain
  • Account type selector now locked when credentials or cache exist — requires both to be cleared to switch
  • Write-back log now shows device type: Jamf Update Mac [659/840] SERIALNO: OK
  • External purchasing changes now logged as a single count rather than one line per device

Note: CoreData schema migrates automatically — no cache wipe required.

v1.1

Choose a tag to compare

@karthikeyan-mac karthikeyan-mac released this 24 Mar 10:40

AxM Jamf Sync v1.1

What's New

Large Organisation Support (20k+ devices)
Fixes app freezing mid-fetch due to API connection limit. Progress is now saved every 10,000 devices and automatically resumes on next sync if interrupted. AppleCare coverage is skipped until all device pages are fetched.

Reliability

  • Fixed failed Jamf write-back devices being permanently stuck — now retried every sync
  • Fixed -999 connection errors on Jamf PATCH requests
  • Fixed Force Refresh Devices resetting already-synced devices
  • Fixed Force Coverage skipping already-fetched devices

Performance

  • AppleCare coverage fetch restored to v1.0 speed (~8 mins per 1,000 devices)

Security

  • Credentials migrated to macOS Data Protection Keychain automatically on first launch
  • Credential values no longer appear in debug logs

Other

  • Mac/mobile breakdown added to write-back summary
  • Detailed run summary added to log (start time, end time, total duration, counts)

Requirements: macOS 14.0 · Apple Business Manager or Apple School Manager API credentials · Jamf Pro OAuth2

Note: Existing credentials migrate automatically — no re-entry required.

v1.0.0

Choose a tag to compare

@karthikeyan-mac karthikeyan-mac released this 16 Mar 12:21

v1.0 — First Public Release

AxM Jamf Sync is a macOS utility that syncs AppleCare warranty coverage from Apple Business Manager / Apple School Manager into Jamf Pro.

Highlights
• Fetch devices from ABM / ASM
• Pull device inventory from Jamf Pro
• Match devices by serial number
• Retrieve AppleCare coverage
• Update warranty data back into Jamf Pro
• Native SwiftUI macOS app
• Secure credentials stored in macOS Keychain

⚠️ Please test carefully before using in production environments.

Thanks to the MacAdmins community for the inspiration and feedback.