Skip to main content
Your progress
0 of 6 lessons complete0%
T1 / M1.3 / L1 OF 6 / Operator TIER / 10 min

Anatomy of a schedule: name, timezone, crons

Outcome

By the end of this lesson, you will be able to create a minimal schedule with the four required fields and explain the role each field plays in execution.


TierOperator
JTBD”Create a schedule end-to-end without copy-paste from a template I don’t understand.”
PersonasPlatform Engineer · FinOps Analyst
PrerequisitesTrack 0 M0.3 (the math), M1.1 + M1.2
Time10 minutes
Bloom verbCreate (Apply) and Explain (Understand)

1. Concept

A schedule in ZopNight has four required fields and a few optional ones. Once you know the four, every other complication (presets, groups, overrides) is a layer on top.

The four required fields

Terminal window
NAME Human-readable, unique within the org
e.g., "dev-and-staging-business-hours"
DESCRIPTION One line of context for teammates
e.g., "Stops dev and staging non-prod Mon-Fri 8pm,
starts 8am ET. Excludes ephemeral envs."
TIMEZONE IANA format
e.g., "America/New_York" not "EST"
CRONS One or more cron expressions, each with an action
e.g., start cron + stop cron

Why timezone matters

A cron without a timezone is ambiguous. ZopNight requires IANA timezone (e.g., Europe/London, Asia/Kolkata, America/Los_Angeles) so that:

  • Crons fire at the same local clock time regardless of daylight saving transitions
  • A team in India and a team in California can each have their own schedules in their own timezones
  • The visual 24-hour grid renders in the timezone of the schedule, not the viewer

A common mistake: setting a schedule in UTC for a team in a different timezone. The team sees crons firing at “wrong” hours after DST shifts. The fix: use the team’s local IANA timezone.

Why multiple crons

A schedule typically has at least two crons:

Terminal window
SCHEDULE: dev-business-hours
Timezone: America/New_York
Cron #1 "0 8 * * 1-5" Action: start "Weekdays 8 AM"
Cron #2 "0 20 * * 1-5" Action: stop "Weekdays 8 PM"

The same schedule can have additional crons for finer control:

Terminal window
SCHEDULE: aggressive-cost-saver
Timezone: Europe/London
Cron #1 "0 7 * * 1-5" Action: start "Weekdays 7 AM"
Cron #2 "0 19 * * 1-5" Action: stop "Weekdays 7 PM"
Cron #3 "0 0 * * 0,6" Action: stop "Weekend midnight"

Three crons combine into one schedule that turns on at 7am weekdays, stops at 7pm weekdays, and ensures it’s off all weekend.

Optional fields

A schedule can also carry:

  • Tags (for organizing many schedules)
  • Notification overrides (per-schedule webhook routing)
  • Max override duration (the longest a force-on / force-off override can be set; see M1.5)
  • Schedule scope tags (filter resources by tag at attach time)

These are not required to create a working schedule. Leave them blank for the first one.

What the schedule does NOT carry

Three things are deliberately separate from the schedule:

  1. Resource attachment: covered in L5. A schedule is the cadence; the attachment is what it acts on. Many resources can share one schedule.
  2. Group attachment: also L5. Same principle: a schedule attaches to groups for cascade application.
  3. Action sequencing: covered in M1.4 (groups). Sequencing lives on the group, not the schedule.

The separation lets schedules be reused across many resources and groups without duplication.

The create flow

Terminal window
T+0 Schedules page → New Schedule
T+5 sec Type a name and description
T+10 sec Pick timezone (IANA format from the dropdown)
T+15 sec Add cron #1 with action (start | stop)
T+20 sec ZopNight shows human-readable summary ("every weekday at 8:00 AM")
T+25 sec Add cron #2 with action
T+30 sec Save → schedule is created
T+35 sec Schedule is empty (no resources yet). Next: attach resources (L5)

Less than a minute to create the schedule. Attachment is a separate step.

Visual preview before save

The create dialog shows a 24-hour weekly grid preview as the user adds crons. Each cron lights up the corresponding hours. The grid makes it obvious whether the schedule has gaps or overlaps before save. (Full coverage in L3.)

Update and delete

A schedule can be edited at any time. Editing affects future firings; past firings are not retroactive.

Deleting a schedule requires name-confirmation (typing the schedule name into a confirmation field) to prevent accidents. The name-confirmation pattern is the same one used for destructive operations elsewhere in the product.


2. Demo

A complete schedule, created step by step:

Terminal window
CREATE SCHEDULE
─────────────────────────────────────────────────────────
Name: dev-and-staging-eu-business-hours
Description: Starts dev and staging non-prod Mon-Fri 8am UTC+1,
stops 8pm UTC+1. EU team coverage.
Timezone: Europe/London
Crons:
┌───────────────────────────────────────────────────────┐
│ Cron expression "0 8 * * 1-5" │
│ Human readable "every weekday at 8:00 AM" │
│ Action [Start ▾] │
└───────────────────────────────────────────────────────┘
┌───────────────────────────────────────────────────────┐
│ Cron expression "0 20 * * 1-5" │
│ Human readable "every weekday at 8:00 PM" │
│ Action [Stop ▾] │
└───────────────────────────────────────────────────────┘
+ Add another cron
VISUAL PREVIEW (24-hour weekly grid)
Mon ▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░ (ON 8am-8pm)
Tue ▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░
Wed ▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░
Thu ▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░
Fri ▓▓▓▓▓▓▓▓▓░░░░░░░░░░░░░░░
Sat ░░░░░░░░░░░░░░░░░░░░░░░░ (OFF: last stop on Fri 8pm)
Sun ░░░░░░░░░░░░░░░░░░░░░░░░
ESTIMATED SAVINGS (with resources attached)
Active hours/week: 60
Inactive hours/week: 108
Savings vs always-on: 64.3%
[Cancel] [Save schedule]

The grid + savings estimator together give the user confidence before saving.


3. Hands-on (6 min)

Create your first schedule (use a sandbox if production resources are at risk):

Terminal window
1. Open Schedules → New Schedule.
2. Name it something clear: "non-prod-business-hours-test".
3. Description: one sentence.
4. Pick your team's IANA timezone.
5. Add cron #1: "0 8 * * 1-5" → action = Start (weekdays 8am)
6. Add cron #2: "0 20 * * 1-5" → action = Stop (weekdays 8pm)
7. Verify the human-readable preview.
8. Note the 24-hour grid in the preview.
9. Save. The schedule is created but empty.
For now, do not attach resources. We'll cover attachment in L5.

4. Knowledge check

Q1

The four required fields on a ZopNight schedule are:

A. Name, description, timezone, crons
B. Name, region, account, resources
C. Cron, timezone, action, resource
D. Name, tags, action, schedule type

Show answer

Correct: A. Name + description + timezone + at least one cron. Resources are attached separately.

Q2

A schedule’s timezone is set to “EST” (not “America/New_York”). The most likely consequence:

A. Works fine
B. Fails to save: IANA format is required. EST is not a valid IANA timezone (DST is ambiguous; America/New_York correctly handles the EDT transitions).
C. Saves but fires twice
D. Saves but fires at midnight always

Show answer

Correct: B. ZopNight requires IANA timezones because they handle DST correctly. EST without an offset adjustment becomes ambiguous when DST shifts.

Q3

A schedule has two crons: “0 8 * * 1-5” start and “0 20 * * 1-5” stop. The same schedule is attached to 47 resources. The total schedule executions per week:

A. 47
B. 2 × 5 × 47 = 470 actions per week (2 crons × 5 weekdays × 47 resources)
C. 2
D. 10

Show answer

Correct: B. Each cron fires once per day, each firing acts on each attached resource. 470 actions per week is the total. The worker pool processes these in parallel; the customer doesn’t see 470 individual moments.


5. Apply

Schedule creation is in:

  • Schedules page → New Schedule
  • The form validates IANA timezone strings and cron syntax inline
  • The visual preview updates as you type
  • The savings estimator activates once resources are attached (L5)

For complex schedule design patterns (rolling environments, freeze windows, demo prod), see T5.M5.2: Schedule design patterns.


Glossary terms touched

Schedule · IANA timezone · Cron expression · Name-confirmation


Start with the bill.

Foundations takes about five hours. The first lesson is nine minutes.

Open curriculum. No login. No paywall. 237 lessons across 7 courses, three publicly verifiable credentials. Read it on the train, take the exam on a Saturday, list the credential on your résumé Monday.

5h median time to finish Foundations
0 logins, paywalls, or marketing forms
open curriculum, public credential verifier
Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 30% average cloud cost cut· 4 platforms · 1 console· Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 30% average cloud cost cut· 4 platforms · 1 console·