Guide
Manage Sync Schedules with the ABM Warranty CLI
Inspect, configure, invoke, and troubleshoot tenant schedules from Terminal or MDM.
Use the schedule command group to inspect, configure, enable, remove, and review tenant-specific sync schedules. You can also use the managed-run contract to let Jamf Pro or another MDM invoke saved jobs safely.
Beta: This reference applies to ABM Warranty 0.6.0, build 29. Every schedule command requires an explicit tenant ID.
Prerequisites
- Run the CLI in the logged-in tenant owner's user context so the correct Keychain credentials and tenant databases are available.
- Configure outbound connections and tenant mappings in the app before creating an outbound schedule.
- For MDM invocation, select Managed by MDM for the tenant, save, and export fresh configuration.
Discover Tenants and Inspect Schedules
abm-warranty --list-tenants
The command prints available tenant IDs and display names. Copy the intended ID into <TENANT_ID> below.
abm-warranty schedules list --tenant-id <TENANT_ID>
abm-warranty schedules list --tenant-id <TENANT_ID> --json
The first form lists the tenant's schedules for human review; --json returns machine-readable output.
abm-warranty schedules show \
--tenant-id <TENANT_ID> \
--kind inbound
abm-warranty schedules show \
--tenant-id <TENANT_ID> \
--kind outbound
Each command shows the saved definition for one schedule kind.
Configure Schedules
Inbound Example
abm-warranty schedules configure \
--tenant-id <TENANT_ID> \
--kind inbound \
--frequency daily \
--weekdays mon,tue,wed,thu,fri \
--start-date 2026-09-01 \
--time 08:00 \
--timezone America/New_York \
--enabled on
This saves and enables a weekday inbound schedule for the named tenant.
Outbound Example
abm-warranty schedules configure \
--tenant-id <TENANT_ID> \
--kind outbound \
--frequency weekly \
--interval 1 \
--weekdays mon,wed,fri \
--start-date 2026-09-01 \
--time 09:00 \
--timezone America/New_York \
--connections <CONNECTION_ID_1>,<CONNECTION_ID_2> \
--enabled on
This saves and enables a weekly outbound schedule using only the specified mapped connections, in saved order.
| Option | Supported Value |
|---|---|
--frequency | daily, weekly, or monthly |
--interval | 1 through 12 |
--weekdays | Comma-separated sun,mon,tue,wed,thu,fri,sat |
--monthly-day | 1 through 28 |
--start-date | YYYY-MM-DD |
--time | HH:mm |
--timezone | IANA time zone, such as America/New_York |
--connections | One or more comma-separated mapped connection IDs; required for outbound schedules |
--enabled | on or off |
Enable, Disable, or Remove
abm-warranty schedules enable \
--tenant-id <TENANT_ID> \
--kind inbound
abm-warranty schedules disable \
--tenant-id <TENANT_ID> \
--kind outbound
abm-warranty schedules remove \
--tenant-id <TENANT_ID> \
--kind inbound
Disabling preserves the schedule definition and history. Removing deletes the definition but preserves historical dispatch and run records.
Review History and Trigger Origin
abm-warranty schedules history --tenant-id <TENANT_ID>
abm-warranty schedules history --tenant-id <TENANT_ID> --json
These commands return scheduled-run history; use the JSON form for scripts.
abm-warranty --show-jobs \
--tenant-id <TENANT_ID> |
grep 'trigger=scheduled\|trigger=managed-scheduled'
abm-warranty connections show-jobs \
--tenant-id <TENANT_ID> |
grep 'trigger=scheduled\|trigger=managed-scheduled'
The first pipeline checks inbound history and the second checks outbound history. scheduled identifies local execution; managed-scheduled identifies MDM execution.
Run an Exported Job from Jamf Pro or Another MDM
- In Sync Scheduling, select Managed by MDM, save the schedule, and select Copy JAMF JSON.
- Optionally validate the clipboard payload locally:
pbpaste > /tmp/abm-warranty-jamf.json
jq empty /tmp/abm-warranty-jamf.json &&
echo "JSON valid"
jq exits successfully and prints JSON valid when the copied payload contains valid JSON.
For deployment, pass exported JSON or plist content through standard input. This is the portable contract for the sandboxed executable:
cat /path/to/abm-warranty-jamf.json |
abm-warranty schedules managed-run \
--tenant-id <TENANT_ID> \
--kind inbound \
--configuration -
cat /path/to/abm-warranty-jamf.json |
abm-warranty schedules managed-run \
--tenant-id <TENANT_ID> \
--kind outbound \
--configuration -
The trailing hyphen in --configuration - means “read configuration from standard input.” Path-based input can work when macOS grants access, but piping is recommended because a sandboxed process may not be able to open an arbitrary path.
If a managed-preferences plist or mobileconfig is deployed successfully, the CLI can load managed configuration from preferences. Your MDM must still invoke each inbound or outbound command at the configured time. Profile deployment and execution are separate actions.
Warning: Exported mobileconfig files are unsigned. Review, sign, and deploy them according to your security requirements. Exports contain scheduling configuration but no credentials, private keys, tokens, secrets, or connection URLs.
Managed Invocation Window
An MDM invocation is accepted only during the 15 minutes after its configured occurrence. For an 8:00 AM schedule, invoke from approximately 8:00 through 8:15 AM. An early invocation is not due; a late invocation is missed. Missed occurrences are never backfilled.
Retries inside the valid window reuse the same durable occurrence identifier, preventing duplicate runs. Outside the window, this message means configuration validation succeeded but no run is eligible:
error: no occurrence is due within the 15-minute managed invocation window; next=<DATE>
Troubleshooting
| Message or Symptom | Resolution |
|---|---|
| Tenant schedule execution is not managed by MDM | Select Managed by MDM for that tenant, save, and export fresh configuration. |
| JSON is invalid | Select Copy JAMF JSON again, rerun pbpaste, and validate with jq empty. |
| Permission error reading JSON | Pipe the payload through standard input and use --configuration -. |
| No occurrence is due | Check date, time, time zone, weekdays, and next occurrence. Invoke during the 15-minute window; do not expect backfill. |
| Export does not match the schedule | Export and deploy fresh JSON, plist, or mobileconfig after every schedule change. |
| Outbound validation fails | Confirm each connection ID still exists, is enabled, and remains mapped to the tenant. |
| No scheduled badge appears | Confirm a run executed for the same tenant, its trigger is scheduled or managed-scheduled, and filters are not hiding it. |
Which Execution Mode Should I Use?
| Choose | When |
|---|---|
| Runs in ABM Warranty | The app can stay open and you want scheduling managed on the Mac. |
| Managed by MDM | You need centralized policy timing and can invoke the CLI in the logged-in tenant owner's context. |
Compact Command Reference
abm-warranty --list-tenants
abm-warranty schedules list --tenant-id <TENANT_ID> [--json]
abm-warranty schedules show --tenant-id <TENANT_ID> --kind <inbound|outbound>
abm-warranty schedules configure --tenant-id <TENANT_ID> --kind <inbound|outbound> [OPTIONS]
abm-warranty schedules enable --tenant-id <TENANT_ID> --kind <inbound|outbound>
abm-warranty schedules disable --tenant-id <TENANT_ID> --kind <inbound|outbound>
abm-warranty schedules remove --tenant-id <TENANT_ID> --kind <inbound|outbound>
abm-warranty schedules history --tenant-id <TENANT_ID> [--json]
abm-warranty schedules managed-run --tenant-id <TENANT_ID> --kind <inbound|outbound> --configuration -
Related Articles
Publication Details Still Needed
- A screenshot of Scheduled Sync Jobs with projected occurrences and an expanded historical row.
- A screenshot of the scheduled indicator in inbound and outbound history, including the preferences link where present.
- A screenshot showing the Monthly and time-zone controls.
- The exact managed-preferences domain and keys, exported filenames, and complete successful CLI output examples, if those should be published.