Get Support

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.

OptionSupported Value
--frequencydaily, weekly, or monthly
--interval1 through 12
--weekdaysComma-separated sun,mon,tue,wed,thu,fri,sat
--monthly-day1 through 28
--start-dateYYYY-MM-DD
--timeHH:mm
--timezoneIANA time zone, such as America/New_York
--connectionsOne or more comma-separated mapped connection IDs; required for outbound schedules
--enabledon 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

  1. In Sync Scheduling, select Managed by MDM, save the schedule, and select Copy JAMF JSON.
  2. 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 SymptomResolution
Tenant schedule execution is not managed by MDMSelect Managed by MDM for that tenant, save, and export fresh configuration.
JSON is invalidSelect Copy JAMF JSON again, rerun pbpaste, and validate with jq empty.
Permission error reading JSONPipe the payload through standard input and use --configuration -.
No occurrence is dueCheck date, time, time zone, weekdays, and next occurrence. Invoke during the 15-minute window; do not expect backfill.
Export does not match the scheduleExport and deploy fresh JSON, plist, or mobileconfig after every schedule change.
Outbound validation failsConfirm each connection ID still exists, is enabled, and remains mapped to the tenant.
No scheduled badge appearsConfirm 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?

ChooseWhen
Runs in ABM WarrantyThe app can stay open and you want scheduling managed on the Mac.
Managed by MDMYou 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.