Skip to content

Workflow Schedule Behavior

Kevin M. White edited this page Oct 28, 2024 · 3 revisions

The default super workflow behavior is to always remain "active" until that workflow is completed as soon as possible. However, many environments prefer to schedule "maintenance windows" for any workflow that interrupts the user. As such, super can be configured to only run workflows during specific weekdays and times.

All super workflows also have a zero date (and time) defined the beginning of a super workflow. All day-based super options rely on the zero date as the "starting" time of the workflow. For example, if you have a deadline option set for "2 days", the deadline would be active 2 days after zero day.

The default super behavior automatically sets the workflow zero date to the date (and time) when the workflow is initial configured or a new Apple software update is discovered by super. There are several options that allow you to specify an alternate workflow zero date.

Schedule Workflow Active

Only allow the super to be active at specific weekdays and times.

Command option example:
--schedule-workflow-active=TUE:13:00-17:00,WED:13:00-17:00,THU:13:00-17:00

Command option disable example:
--schedule-workflow-active=X

Configuration Profile Example:
<key>ScheduleWorkflowActive</key>
<string>TUE:13:00-17:00,WED:13:00-17:00,THU:13:00-17:00</string>

Each schedule workflow active time frame must be specified using the following format DAY:hh:mm-hh:mm where weekdays are defined as MON|TUE|WED|THU|FRI|SAT|SUN and times are in 24-hour format. Multiple time frames are separated by a comma with no spaces.

For example, if you want super to only be active on the afternoons during the middle of the work week then you would specify --schedule-workflow-active=TUE:13:00-17:00,WED:13:00-17:00,THU:13:00-17:00. Also, you can specify multiple time frames for any weekday. For example, if you want super to only be active during non-business hours on Monday, then for that weekday you would specify multiple time frames around your normal work hours like so, MON:00:00-09:00,MON:17:00-23:59.

Enabling this option directly affects other super features and options including deferral, scheduled installation, and deadline behaviors. In most cases super can automatically adjust workflow timings to fit within the scheduled active time frames. These automatic adjustments always show as warnings in the super.log.

Schedule Zero Date macOS Release

Set the workflow zero date to the release day of the target macOS update or upgrade.

Command option example:
--schedule-zero-date-release

Command option disable example:
--schedule-zero-date-release-off

Configuration Profile Example:
<key>ScheduleZeroDateRelease</key>
<true/>

This option relies on the Mac Admins Open Source SOFA macOS data feed. Specifically, if the workflow target is a macOS update or upgrade, then super downloads https://sofafeed.macadmins.io/v1/macos_data_feed.json to determine the specific macOS version release date. This date is used to set the workflow zero date.

When this option is enabled, if the super workflow target is not a macOS update or upgrade, then the default automatic workflow zero date is used. Similarly, if the SOFA data feed can't be reached or the target macOS version isn't found, then the default automatic workflow zero date is used.

Schedule Zero Date Custom SOFA URL

Use a specific (presumably internal) custom SOFA url for the macOS releases data feed.

Command option example:
--schedule-zero-date-sofa-custom-url=https://sofa.example.com/v1/macos_data_feed.json

Command option disable example:
--schedule-zero-date-sofa-custom-url=X

Configuration Profile Example:
<key>ScheduleZeroDateSOFACustomURL</key>
<string>https://sofa.example.com/v1/macos_data_feed.json</string>

This option requires that you have also specified the --schedule-zero-date-release option. Similarly, if the custom SOFA data feed can't be reached or the target macOS version isn't found, then the default automatic workflow zero date is used.

Schedule Zero Date Manual Override

Set a specific workflow zero date and time.

Command option example:
--schedule-zero-date-manual=2024-10-02:10:15

Command option disable example:
--schedule-zero-date-manual=X

Configuration Profile Example:
<key>ScheduleZeroDateManual</key>
<string>2024-10-02:10:15</string>

At a minimum, you must always specify "YYYY-MM-DD". Hours are represented by a 24-hour clock, and any non-specified hours or minutes are rounded to "00".

This option is largely used for testing days-based workflows, but it can also be used in production to set potentially more consistent day zero behavior. Note that you need to manually update this value every time you want to set a new manual day zero.

Clone this wiki locally