Your country

Tools that support it use your country for local currency, number formats, units and paper size. Your choice is saved only in this browser.

Type a name or a two-letter code. Use the up and down arrow keys to move through the countries, Enter to choose one and Escape to close.

IT Support & Help Desk Fundamentals  Module 12 – Service desk practice

Change management for support teams

Sort standard, normal and emergency changes, write a change request with a rollback plan, schedule around freezes, and close with user acceptance.

  • Intermediate
  • 20 minutes
  • Examples run with Python 3.14.8 and Pyodide 314.0.7
  • By MySmartCoPilot
Free lesson, Pro answers: 20 minutes
Free: the whole lesson. With a pass: the model answers to its 2 interview questions.

What you will learn

  • Classify a change as standard, normal or emergency and name who authorises each
  • Write a change request with scope, risk, test evidence and a rollback plan
  • Schedule changes inside maintenance windows and respect published change freezes
  • Verify success with the user and record the result before closing

Before you start

What you’ll learn · Before you start

What you will learn

  • Classify a change as standard, normal or emergency and name who authorises each
  • Write a change request with scope, risk, test evidence and a rollback plan
  • Schedule changes inside maintenance windows and respect published change freezes
  • Verify success with the user and record the result before closing

Before you start

On this page

A Friday-evening firmware update went to a fleet of forty laptops to fix a flaky Wi-Fi driver. By Monday the Wi-Fi worked on thirty-seven of them, and three would not start at all: the firmware changed while the drive was still protected, the encryption no longer trusted the boot path, and each machine stopped at a recovery prompt asking for a key nobody had to hand. None of that was bad luck. One paragraph in a change request would have caught it: suspend the encryption first, try it on a few machines, and keep a way back.

This lesson turns that paragraph into a habit. You will sort a change into one of three kinds and say who authorises each, write a change request with the fields that stop surprises, pick a window that respects a published freeze, and close a change only once the user has accepted it and the systems have stayed healthy.

The kind of change decides who authorises it

Not every change needs the same care, so change management sorts each one into a kind first. A standard change: A pre-authorised, low-risk, repeatable change that follows a template permitted once, so a support team can run it without returning to the change-advisory board each time. is pre-authorised, low-risk and repeatable: it follows a template that has been permitted once, so the desk just runs it. A normal change: A change new or risky enough to need assessment, so it goes to a change-advisory board that weighs its risk and clears it before a scheduled window. is new or risky enough to need assessment, so it goes to a change-advisory board: The group that assesses a normal change, weighs its risk against its benefit, and authorises or declines it before it runs. that weighs the risk and clears it. An emergency change: A change that fixes an urgent problem which cannot wait for the normal path, so it gets fast authorisation and its full documentation afterwards rather than before. fixes an urgent problem that cannot wait for that path, so it gets fast authorisation and its full documentation afterwards rather than before.

Getting the kind right decides everything that follows: how fast it can move, who has to agree, and how much evidence you gather up front. This table is the one to keep in your head:

Kind What it is Example Who authorises it
Standard Pre-authorised, low risk, repeatable A monthly update to the finance app Its template; no board each time
Normal New or risky; needs assessment A database schema change for a feature The change-advisory board
Emergency Fixes an urgent problem now Replacing a failed switch at 02:30 Fast authorisation, documented after

The mistake that causes outages is treating a normal change as if it were standard: skipping the assessment because the work “feels routine”. The opposite mistake wastes a night: forcing an emergency fix through the full board while a floor of users sits offline. The kind is a judgement about risk and urgency, and it is the first thing a change request records.

Calling a risky change 'standard' to skip the queue

Wrong: a change is only standard when it is already on the pre-authorised list, with a template and a known rollback. Right: a one-off database change, however confident you feel, is a normal change and goes to the board. The standard label is earned by a change that has run safely many times, not claimed to move faster.

Checkpoint

Check: Standard, normal and emergency changes

  1. Question 1 of 2 A one-off database schema change is needed for a new feature. Which kind of change is it?

    Choose one answer.

    Show the answer: Question 1 of 2

    Answer: A normal change, assessed and cleared by the change-advisory board

    A one-off, risky alteration is a normal change: it carries test evidence and a rollback plan to the change-advisory board, which weighs the risk and clears it.

  2. Question 2 of 2 What makes a change a standard change rather than a normal one?

    Choose one answer.

    Show the answer: Question 2 of 2

    Answer: It is pre-authorised by a template because it has run safely many times

    The standard label is earned by a repeatable, low-risk change with a template and a known rollback, not claimed to skip the queue.

A change request records the risk and the way back

A change request: The record that carries a change from idea to close, stating its purpose, scope, risk, test evidence, steps, rollback plan, people, window, authorisations and how success will be verified. is the record that carries a change from idea to close. CompTIA’s A+ V15 objective 4.2 lists the fields it should hold, and they fall into two groups: planning the change, and running then closing it. Walk through them once and the shape sticks.

Interactive · step by step What a change request carries Step through the fields a change request needs, grouped by planning the change and by running then closing it.
What a change request carries, step 5 of 5. Showing Plan the change, Purpose, Scope and users, Affected systems, Risk level, Test evidence, Run and close, Steps to do it, Rollback plan, People, Scheduled window, Authorisations, Verification plan. In focus: Authorisations, Verification plan.Plan the changepurpose to evidencePurposewhy it is neededScope and userswho it touchesAffected systemswhat it touchesRisk levellow, medium, highTest evidencesandbox or pilotRun and closesteps to verifySteps to do itin orderRollback planhow to undo itPeoplewho does itScheduled windowa clear time slotAuthorisationswho cleared itVerification planproof of success

The drawing shows the whole scene; its 5 steps are listed below.

Every step as text
  1. Say why and what it touches. A change request opens with its purpose: the reason the change is needed. Then it names the scope and the users it affects, and the systems it touches, so a reader can see how far it reaches.
  2. Rate the risk, show the test. Next comes the risk level, low, medium or high, and the test evidence: proof the change worked on a sandbox or a pilot before the real systems. No evidence means no confidence.
  3. Write the steps and rollback. The second group is about doing it. The implementation steps say, in order, how to make the change. The rollback plan says how to undo it if it fails, and a change without one should not run.
  4. Name the people and the window. Name the people responsible for the work, and the scheduled window: when it will run, chosen to sit outside every published freeze and inside a maintenance window where possible.
  5. Record who cleared it and how. Last, record the authorisations the change carries, who gave the go-ahead and for what, and the verification plan: how you will confirm success afterwards, in numbers a user can see.

The first group describes and assesses the change. The purpose says why it is needed. The scope names the users it affects and the affected systems say what it touches, so a reader sees how far it reaches. The risk level, low, medium or high, sets how much care it needs, and the test evidence is proof it worked on a sandbox or a pilot before the real systems. A change with no evidence is a guess.

The second group is about doing it safely. The implementation plan: The ordered steps that make a change happen, written so the work can be followed in order and repeated if needed. is the ordered steps to make the change, and the rollback plan: The recorded way to return a system to its previous working state if a change fails; a change without one should not run. is how to undo it if it fails. A change without a rollback plan should not run, because it leaves you with no way back when something breaks. Then come the responsible people, the scheduled window, the authorisations the change carries, and the verification plan: how you will confirm success afterwards, in something a user can see.

Key idea

The rollback plan is the field that separates a change you can try from a change you can only hope works. Write it before you run anything, and make sure it has been tried, not just typed.

A standard change fills this record once, as a template, and reuses it. A normal change fills it fresh and hands it to the board. Either way, the fields are the same, and the empty ones are exactly where the risk hides.

Checkpoint

Check: The fields of a change request

  1. One question A change request is complete except that the rollback plan is empty. What should happen?

    Choose one answer.

    Show the answer: One question

    Answer: It should not run until a tried rollback plan is added

    The rollback plan is the field that turns a change you can only hope works into one you can safely try, so an empty one blocks the change.

Three Windows safety measures give every change a way back

On Windows fleets, three safety measures turn a risky change into a reversible one, and the opening disaster skipped the first. Before firmware or driver work on an encrypted machine, suspend the drive encryption so the changed boot path does not lock the user out. The command is Suspend-BitLocker, and its -RebootCount controls how long the pause lasts: Microsoft’s documentation says that if you do not set it, the value is one, so protection resumes after the next restart, while a value of 0 suspends it until you run Resume-BitLocker. For a quick firmware update that reboots once, the default is usually what you want.

Suspend encryption before firmware work

Before a BIOS or firmware update on a BitLocker-protected Windows machine, suspend protection for the system drive with Suspend-BitLocker -MountPoint "C:" -RebootCount 1, do the update, and let the machine restart. Protection resumes on its own. Use -RebootCount 0 only when several restarts are needed, and resume it yourself afterwards, so a machine is never left unprotected by accident.

The second measure stages the rollout instead of pushing it everywhere at once. Microsoft’s guidance on deployment plans describes a common shape of three rings: preview for the IT staff, limited for pilot and validation, and broad for everyone else. The limited ring is your pilot ring: A small group of machines that receive an update first, so a problem shows on a few recoverable devices before the broad rollout to everyone else.: a few devices chosen to represent the fleet’s hardware and applications, and the broad ring follows only once the pilot has had a long enough spell of stable running. A bad change then surfaces on a handful of recoverable machines rather than across the whole fleet. The updates, patches and drivers lesson goes deeper into staged rollouts and build-number checks.

The third measure is the oldest: before a risky configuration change, take a restore point or a full disk image, so “undo” is a restore rather than a rebuild. These settings, and when to change them, are the subject of the Windows security settings lesson. Together the three give every Windows change a way back, which is the same thing the rollback plan field asks for. Read the table by its last column: each measure is a different way back.

Measure Use it before The way back
Suspend BitLocker Firmware or driver work Protection resumes after the set restarts
Pilot ring A fleet-wide update A bad change stops on a few devices
Restore point or image A risky configuration change Undo is a restore, not a rebuild

Checkpoint

Check: Windows safety measures for change

  1. Question 1 of 2 You run Suspend-BitLocker before a firmware update without setting -RebootCount. What happens to protection?

    Choose one answer.

    Show the answer: Question 1 of 2

    Answer: It resumes automatically after the next restart

    With no -RebootCount set the value is 1, so BitLocker protection resumes after the next restart; -RebootCount 0 keeps it suspended until you resume it yourself.

  2. Question 2 of 2 Why send an update to a small pilot ring before the broad ring of everyone else?

    Choose one answer.

    Show the answer: Question 2 of 2

    Answer: A problem then shows on a few machines you can recover, before it reaches the fleet

    A pilot ring of a few devices that represent the fleet catches a bad update before it reaches everyone, which is why the rollout is staged.

Only an emergency change may run inside a freeze

A change needs a time as well as a plan. A maintenance window: An agreed period, often an evening or a weekend, when a change may run with the least disruption to users. is an agreed slot, often an evening or a weekend, when a change may run with least disruption. A change freeze: A published period, such as quarter-end, exams or a big launch, when no non-emergency change may run because the business cannot afford the risk. is the opposite: a published period when no non-emergency change may run, because the business cannot afford the risk. Freezes cluster around quarter-end, exams, festivals and big launches for your organisation, and the rule that makes them work is simple: publish them in advance, and let only an emergency change run inside one.

The linter from a change request can enforce this. This program checks three recorded requests against a published freeze calendar: it looks for the required fields, checks the window sits outside every freeze, and makes sure an emergency carries its after-the-fact note.

Checking three change requests against the freeze calendar Python · change/change_lint.py
# Check a recorded change request the way a change-advisory board would read it:
# are the required fields present, is the scheduled window clear of every published
# freeze, and does an emergency carry its after-the-fact documentation note? The
# requests and the freeze calendar live in the code, so there is no network call and
# the run is the same every time. validate_change does the checking; the rest prints
# a short report for three requests.

# The fields CompTIA's A+ objective 4.2 lists for a change request.
REQUIRED_FIELDS = [
    "purpose",
    "scope",
    "affected_systems",
    "risk_level",
    "test_evidence",
    "implementation_steps",
    "rollback_plan",
    "responsible_people",
    "scheduled_window",
    "authorisations",
    "verification_plan",
]


def _overlaps(window, freeze):
    """True when the scheduled window's date touches a freeze's date range."""
    day = window["start"][:10]
    return freeze["start"] <= day <= freeze["end"]


def validate_change(request, calendar):
    """Return (ok, problems) for one change request against a freeze calendar."""
    problems = []
    for field in REQUIRED_FIELDS:
        if not request.get(field):
            problems.append(f"missing {field}")
    window = request.get("scheduled_window")
    kind = request.get("kind")
    if window:
        inside = [f["name"] for f in calendar if _overlaps(window, f)]
        if inside and kind != "emergency":
            problems.append(f"window falls inside freeze: {inside[0]}")
    if kind == "emergency" and not request.get("post_change_note"):
        problems.append("missing post_change_note")
    return (not problems, problems)


# A published freeze calendar: a week of exams and the quarter-end week.
CALENDAR = [
    {"name": "exam fortnight", "start": "2026-03-16", "end": "2026-03-27"},
    {"name": "quarter-end freeze", "start": "2026-04-01", "end": "2026-04-05"},
]

REQUESTS = [
    {
        "id": "CHG-201 (standard)",
        "kind": "standard",
        "purpose": "Install the permitted finance app update",
        "scope": "Finance team laptops",
        "affected_systems": "12 managed laptops",
        "risk_level": "low",
        "test_evidence": "Passed on the pilot laptop",
        "implementation_steps": "Push via the management tool, verify version",
        "rollback_plan": "Remove the update and reinstall the previous version",
        "responsible_people": "Asha (desk), Ravi (apps)",
        "scheduled_window": {"start": "2026-04-09T19:00", "end": "2026-04-09T20:00"},
        "authorisations": "Pre-authorised standard change",
        "verification_plan": "Confirm the version and that the app opens",
    },
    {
        "id": "CHG-202 (emergency)",
        "kind": "emergency",
        "purpose": "Replace a failed switch to restore the second floor",
        "scope": "Second-floor network",
        "affected_systems": "One access switch, 40 users",
        "risk_level": "high",
        "test_evidence": "Spare switch tested on the bench",
        "implementation_steps": "Swap the switch, copy the saved config",
        "rollback_plan": "",
        "responsible_people": "Ravi (network on call)",
        "scheduled_window": {"start": "2026-04-02T02:30", "end": "2026-04-02T03:30"},
        "authorisations": "Fast authorisation by the on-call lead",
        "verification_plan": "Ping every port and confirm users are back",
        "post_change_note": "Write up the fix and raise a problem record",
    },
    {
        "id": "CHG-203 (normal)",
        "kind": "normal",
        "purpose": "Change the database schema for a new feature",
        "scope": "Shared application database",
        "affected_systems": "App server and database",
        "risk_level": "medium",
        "test_evidence": "Migration run on the staging copy",
        "implementation_steps": "Run the migration, then redeploy the app",
        "rollback_plan": "Restore the pre-change snapshot",
        "responsible_people": "Ravi (apps), Meera (database)",
        "scheduled_window": {"start": "2026-04-03T22:00", "end": "2026-04-03T23:30"},
        "authorisations": "Cleared by the change-advisory board",
        "verification_plan": "Smoke-test the feature and watch error rates",
    },
]

print("Published freeze calendar:")
for freeze in CALENDAR:
    print(f"  {freeze['name']}: {freeze['start']} to {freeze['end']}")
print()

for request in REQUESTS:
    ok, problems = validate_change(request, CALENDAR)
    verdict = "PASS" if ok else "FAIL"
    window = request["scheduled_window"]["start"].replace("T", " ")
    print(f"{request['id']}: {verdict}  (window {window})")
    for problem in problems:
        print(f"    - {problem}")

Output

Published freeze calendar:
  exam fortnight: 2026-03-16 to 2026-03-27
  quarter-end freeze: 2026-04-01 to 2026-04-05

CHG-201 (standard): PASS  (window 2026-04-09 19:00)
CHG-202 (emergency): FAIL  (window 2026-04-02 02:30)
    - missing rollback_plan
CHG-203 (normal): FAIL  (window 2026-04-03 22:00)
    - window falls inside freeze: quarter-end freeze

Recorded with Python 3.14.8 on macOS 26 arm64. To run it yourself: mise exec python@3.14.8 -- python3 change_lint.py

The standard request CHG-201 passes: every field is filled and its window, 2026-04-09, is clear of both freezes. The emergency CHG-202 fails for one reason, missing rollback_plan, even though it runs at 02:30 inside the quarter-end week, because an emergency is allowed to run during a freeze. The normal request CHG-203 is rejected with window falls inside freeze: quarter-end freeze, because it is scheduled for 2026-04-03, inside the published 2026-04-01 to 2026-04-05 freeze. The fix is not to force it through but to move it.

So the next question is when the window can move to. A second program reads the same calendar and, for each proposed window, finds the first open day after it:

Finding the next open day after a freeze Python · freeze-calendar/freeze_calendar.py
# Read a published change-freeze calendar and test three proposed change windows
# against it: does each fall inside a freeze, and if so, when is the next open day?
# Everything is in the code, with fixed India Standard Time offsets, so there is no
# network call and the run is the same every time.

from datetime import date, datetime, timedelta, timezone

IST = timezone(timedelta(hours=5, minutes=30))

# A published freeze calendar: a pre-exam window and the quarter-end week.
FREEZES = [
    {"name": "pre-exam window", "start": date(2026, 3, 16), "end": date(2026, 3, 27)},
    {"name": "quarter-end freeze", "start": date(2026, 4, 1), "end": date(2026, 4, 5)},
]

# Three proposed change windows, each a start time in IST.
WINDOWS = [
    datetime(2026, 3, 20, 21, 0, tzinfo=IST),
    datetime(2026, 4, 3, 22, 0, tzinfo=IST),
    datetime(2026, 4, 9, 19, 0, tzinfo=IST),
]


def freeze_for(day, freezes):
    """Return the freeze that covers this day, or None when the day is open."""
    for freeze in freezes:
        if freeze["start"] <= day <= freeze["end"]:
            return freeze
    return None


def next_open_day(day, freezes):
    """Walk forward from this day to the first day no freeze covers."""
    while freeze_for(day, freezes) is not None:
        day = day + timedelta(days=1)
    return day


print("Published freezes:")
for freeze in FREEZES:
    print(f"  {freeze['name']}: {freeze['start']} to {freeze['end']}")
print()

for window in WINDOWS:
    day = window.date()
    stamp = window.strftime("%Y-%m-%d %H:%M %z")
    freeze = freeze_for(day, FREEZES)
    if freeze is None:
        print(f"{stamp}: open, the window may run")
    else:
        opens = next_open_day(day, FREEZES)
        print(f"{stamp}: inside {freeze['name']}; next open day is {opens}")

Output

Published freezes:
  pre-exam window: 2026-03-16 to 2026-03-27
  quarter-end freeze: 2026-04-01 to 2026-04-05

2026-03-20 21:00 +0530: inside pre-exam window; next open day is 2026-03-28
2026-04-03 22:00 +0530: inside quarter-end freeze; next open day is 2026-04-06
2026-04-09 19:00 +0530: open, the window may run

Recorded with Python 3.14.8 on macOS 26 arm64. To run it yourself: mise exec python@3.14.8 -- python3 freeze_calendar.py

A window on 2026-03-20 falls inside the pre-exam freeze, so the earliest open day is 2026-03-28; a window on 2026-04-03 falls inside the quarter-end freeze, so it moves to 2026-04-06; and a window on 2026-04-09 is already open, so it may run. Converting a window’s time across the zones a fleet sits in is exactly what the timestamp converter tool is for.

Running a normal change during a freeze because it is 'small'

Wrong: a freeze is guidance, so a tiny low-risk change is fine. Right: a freeze blocks every non-emergency change, of any size, because its point is to keep the systems still when the business is most exposed. Move the change to the next open window, or raise it as an emergency only if it genuinely cannot wait.

Checkpoint

Check: Maintenance windows and freezes

  1. One question change_lint.py rejects a normal request with "window falls inside freeze". What is the right response?

    Choose one answer.

    Show the answer: One question

    Answer: Move the change to the next open window after the freeze

    A published freeze blocks non-emergency changes, so the fix is to reschedule to the next open window, which freeze_calendar.py finds for you.

Close a change only after the user accepts it

A change is not done when the work finishes; it is done when it is confirmed and recorded. Close a change only after user acceptance: Confirmation from the person affected that a change works as intended, part of what must happen before a change is closed., where the person who feels the change agrees it works, and after a spell of monitoring to be sure nothing broke quietly. The verification plan you wrote earlier is what you check against: the feature opens, the numbers look right, the error rate stays flat.

Interactive · stage by stage A change from request to closed Step through a change's life, from raising the request to closing it, and the path a failed change takes back to problem management.
A change from request to closed, step 6 of 6. Showing Raise the request, Authorise the change, Implement change, Verify success, Close the change. In focus: Close the change.failed: incidentRaise the requestfill every fieldAuthorise the changethe right peopleImplement changein the windowVerify successuser accepts, monitorClose the changerecord the result

The drawing shows the whole scene; its 6 steps are listed below.

Every step as text
  1. Raise the request. Fill every field the request needs — purpose, scope, risk, test evidence, steps, rollback plan, people, window, authorisations and the verification plan. A standard change uses its pre-written template.
  2. Authorise the change. A standard change is already permitted. A normal change goes to the change-advisory board to weigh the risk and clear it. An emergency gets fast authorisation from the on-call lead.
  3. Implement in the window. Make the change inside its scheduled window, following the steps in order. The window sits outside every published freeze, unless this is an emergency that cannot wait.
  4. Verify success. Confirm the change worked against its verification plan, let the user accept it, and watch the systems for a while. Acceptance and monitoring, not the install finishing, decide success.
  5. A failed change loops back. If verification fails, the change has caused a fault, so you roll back and raise an incident. That incident feeds problem management, which looks for the root cause before anyone tries again.
  6. Close with the result recorded. Only after acceptance and quiet monitoring do you close the change, recording what was done, how it was verified and who accepted it, so the record is there next time.

When verification fails, the change has caused a fault, so you roll back using the plan you prepared, and the failure becomes an incident. That incident feeds problem management, which looks for the root cause: The condition that makes a fault happen. Fixing it stops the fault from coming back, while fixing only a symptom, or working around it, leaves the cause in place. More in “A troubleshooting method that holds under pressure” before anyone tries the change again; an emergency fix often arrives through an escalation: Moving a ticket to people with more skill or access (functional escalation) or with more authority (hierarchical escalation), together with the evidence of what has been tried so far. More in “IT support roles, tiers and channels” path for just this reason. A change that fails and is quietly left in place is how a one-off problem becomes a recurring one, which the incidents, problems and major incidents lesson treats in full.

Only after acceptance and quiet monitoring do you close the change, and you record what was done, how it was verified and who accepted it. That record is what makes the next similar change faster and safer, and it is why a closed change is worth more than a finished one.

Practise: find the first slot a change may use

The two programs above say whether a window is allowed and on which day a freeze ends. The exercise takes the next step: from a change’s kind, the earliest moment it could start, how long it runs, the desk’s weekly maintenance windows and the freeze calendar, return the first moment it may start. Its sample tests cover a change that waits for the next window, one that starts inside an open window, one too long for what is left of a window, one that ends exactly at a close, a freeze in the way, and an emergency, which starts at once. Then check yourself on the whole lesson.

Exercise · Medium · Python

Find the first slot a change may use

The lesson's programs say whether one window is allowed and on which day a freeze ends. A desk also needs the next answer: the first moment a change may start. Write first_slot(kind, earliest, minutes, windows, freezes) for a desk with the rules below. Return that moment as "YYYY-MM-DDTHH:MM" text, or None when there is none in the DAYS_AHEAD (28) days that start on the date of earliest.

  • kind is "standard", "normal" or "emergency".
  • earliest is the first moment the change could start, as "YYYY-MM-DDTHH:MM" text on the desk's clock.
  • minutes is how long the change runs, a whole number above 0.
  • windows lists the desk's weekly maintenance windows, such as {"weekday": 1, "start": "19:00", "end": "22:00"}. weekday counts as datetime.weekday() does (0 is Monday), and a window opens and closes on the same day. A day may have more than one window, in any order in the list.
  • freezes is the freeze calendar of the lesson, such as {"name": "quarter-end freeze", "start": "2026-04-01", "end": "2026-04-05"}, with both end days inside the freeze.

The rules:

  1. An emergency is not held for a window or a freeze: it starts at earliest.
  2. Any other change starts inside one maintenance window, at the window's open or at earliest when that is later, and it must end (its start plus minutes) no later than that window's close.
  3. No standard or normal change starts on a day inside a freeze.
  4. Return the earliest start that keeps rules 2 and 3.

Starter code · change_slot.py

"""Starter for first_slot: the first moment a change may start (see the task)."""

from datetime import datetime, time, timedelta

DAYS_AHEAD = 28


def in_freeze(day, freezes):
    """True when a freeze covers this date: the freeze test of the lesson's freeze-calendar program."""
    text = day.isoformat()
    return any(f["start"] <= text <= f["end"] for f in freezes)


def first_slot(kind, earliest, minutes, windows, freezes):
    """Return the first allowed start as "YYYY-MM-DDTHH:MM", or None."""
    # TODO: an emergency starts at earliest.
    # TODO: walk the DAYS_AHEAD days that start on earliest's date and skip a frozen day. Try that day's windows in
    #       order of their start: a change starts at the later of the window's open and earliest, and it fits when
    #       its start plus minutes is no later than the window's close.
    return None
The sample tests · test_change_slot.py
"""Sample tests for first_slot(kind, earliest, minutes, windows, freezes)."""

from change_slot import first_slot

# Tuesday and Thursday evenings, and a Saturday morning.
WINDOWS = [
    {"weekday": 1, "start": "19:00", "end": "22:00"},
    {"weekday": 3, "start": "19:00", "end": "22:00"},
    {"weekday": 5, "start": "07:00", "end": "11:00"},
]
FREEZES = [{"name": "quarter-end freeze", "start": "2026-04-01", "end": "2026-04-05"}]


def test_a_change_waits_for_the_next_window():
    # Monday 6 April at 10:00: the next window is on Tuesday evening.
    assert first_slot("normal", "2026-04-06T10:00", 60, WINDOWS, FREEZES) == "2026-04-07T19:00"


def test_a_change_may_start_inside_an_open_window():
    assert first_slot("standard", "2026-04-07T20:15", 60, WINDOWS, FREEZES) == "2026-04-07T20:15"


def test_a_change_that_no_longer_fits_moves_on():
    # At 21:30, 30 minutes of the Tuesday window are left and the change needs 45.
    assert first_slot("standard", "2026-04-07T21:30", 45, WINDOWS, FREEZES) == "2026-04-09T19:00"


def test_a_change_may_end_exactly_at_the_close():
    assert first_slot("normal", "2026-04-07T21:00", 60, WINDOWS, FREEZES) == "2026-04-07T21:00"


def test_no_change_starts_inside_a_freeze():
    # 22:30 on Tuesday 31 March is after that window closes; Thursday 2 and Saturday 4 April are frozen.
    assert first_slot("normal", "2026-03-31T22:30", 30, WINDOWS, FREEZES) == "2026-04-07T19:00"


def test_an_emergency_starts_at_once_even_in_a_freeze():
    assert first_slot("emergency", "2026-04-02T02:30", 90, WINDOWS, FREEZES) == "2026-04-02T02:30"
A hint

Turn earliest into a datetime once, with datetime.fromisoformat, and walk range(DAYS_AHEAD) days from its date. On a day that in_freeze lets through, keep the windows whose weekday is the day's own and sort them by their start. datetime.combine(day, time.fromisoformat(window["start"])) is the moment a window opens; compare start + timedelta(minutes=minutes) with the moment it closes.

The sample tests run on this device, in your browser (Pyodide): nothing is sent to mysmartcopilot.com. The first run downloads Python (about 13.5 MB), which is kept for the next runs. A check in your browser is feedback for you, not proof that the code is right for every input.

Practice that adapts to you

Practise this lesson

10 questions about 5 ideas of this lesson. Each answer is explained at once, and what you get right is kept in this browser.

  1. Question 1 of 10 What is an emergency change?

    Choose one answer.

    Show the answer: Question 1 of 10

    Answer: A change that fixes an urgent problem now, with fast authorisation and documentation after

    An emergency change fixes an urgent problem at once, with fast authorisation and its full documentation gathered afterwards rather than before.

  2. Question 2 of 10 A failed switch has taken a whole floor offline and a spare is ready. Which kind of change is the swap?

    Choose one answer.

    Show the answer: Question 2 of 10

    Answer: An emergency change

    An outage that cannot wait for the board is an emergency change: authorise it fast, then write up the fix and raise a problem record.

  3. Question 3 of 10 Which field of a change request tells you how to undo the change if it fails?

    Choose one answer.

    Show the answer: Question 3 of 10

    Answer: The rollback plan

    The rollback plan records how to reverse the change, which is why a request without one should not run.

  4. Question 4 of 10 A normal change request has no test evidence. Why is that a problem?

    Choose one answer.

    Show the answer: Question 4 of 10

    Answer: Without evidence the change is a guess, so the board cannot weigh its real risk

    Test evidence from a sandbox or pilot is proof the change works, so without it the board is weighing a guess.

  5. Question 5 of 10 What does Suspend-BitLocker do before firmware work on an encrypted Windows machine?

    Choose one answer.

    Show the answer: Question 5 of 10

    Answer: It pauses drive protection so the changed boot path does not lock the user out

    Suspend-BitLocker pauses protection so a firmware change does not leave the machine asking for a recovery key, then protection resumes on the schedule -RebootCount sets.

  6. Question 6 of 10 Before a risky configuration change, why take a restore point or a full disk image first?

    Choose one answer.

    Show the answer: Question 6 of 10

    Answer: So "undo" is a restore rather than a rebuild if the change goes wrong

    A restore point or image taken first turns a failed configuration change into a restore, which is far quicker and safer than rebuilding the machine.

  7. Question 7 of 10 What is a change freeze?

    Choose one answer.

    Show the answer: Question 7 of 10

    Answer: A published period when no non-emergency change may run

    A change freeze is a published period, around quarter-end, exams or launches, when only emergency changes may run.

  8. Question 8 of 10 During a published freeze, a switch fails and a floor goes offline. May the repair run?

    Choose one answer.

    Show the answer: Question 8 of 10

    Answer: Yes, because only emergency changes are allowed to run inside a freeze

    An emergency change may run inside a freeze, because a freeze exists to block risk, not to keep a floor offline.

  9. Question 9 of 10 When is a change ready to be closed?

    Choose one answer.

    Show the answer: Question 9 of 10

    Answer: After the user accepts it and monitoring stays clean

    A change is closed after user acceptance against the verification plan and a spell of monitoring, with the result recorded.

  10. Question 10 of 10 A change fails verification and is rolled back. Beyond undoing it, what should the desk do?

    Choose one answer.

    Show the answer: Question 10 of 10

    Answer: The failure becomes an incident that feeds problem management to find the root cause

    A failed change is rolled back and raised as an incident, which feeds problem management to find the root cause before the change is attempted again.

Interview questions

Warm-up (fresher): Three changes land on your desk at 09:00: a pre-authorised monthly software update to the finance app; an emergency switch replacement to restore a floor; and a one-off database schema change for a new feature. Which is standard, which is emergency, which is normal, and what authorisation does each need?

The monthly finance-app update is a standard change: it is pre-authorised by its template, so the desk runs it in a maintenance window without going to the board. The switch replacement is an emergency change: a floor is offline, so it takes fast authorisation from the on-call lead now and its full documentation, including a problem record, straight afterwards. The database schema change is a normal change: it is new and risky, so it carries test evidence from a staging copy and a rollback plan to the change-advisory board, which weighs the risk and clears it for a window outside any freeze.

Two harder questions start where this lesson stops: one about putting a night-time emergency fix on record the next morning, and one about a security fix that arrives in the middle of a freeze. Decide your own first move for each, then compare it with how the model answer begins:

Model answers open with any pass: ₹79 for 1 week ($2.99), one payment that never renews.

  1. Mid

    At 02:40 a night technician changed a firewall rule to restore the payment terminals, authorised by the on-call lead over the phone, with nothing written down. Service is back. You take over at 08:00. What do you put on record, what do you check, and what decides whether the rule stays?

    Model answer, Pro. Model answers open with any pass; prices are in the notice on this page. First step and follow-ups

  2. Senior

    Your quarter-end freeze runs from the first to the fifth of April. On the second, the vendor of your remote-access gateway publishes a critical security fix for a flaw already being exploited elsewhere. The finance director says the freeze forbids any change. Walk through who decides, how, and what the change looks like if it goes ahead.

    Model answer, Pro. First step and follow-ups

Flashcards · 6 cards

Recall it, then check

Say the answer to yourself before you look: recalling it is what makes it stick.

  1. What are the three kinds of change, and how does each get authorised?

    A standard change is pre-authorised and repeatable, run from its template. A normal change is assessed and cleared by the change-advisory board. An emergency change gets fast authorisation now and its full documentation afterwards.

  2. What does a change request record?

    Its purpose, scope, affected systems, risk, test evidence, implementation steps, rollback plan, responsible people, window, authorisations and verification plan. The empty fields are where the risk hides.

  3. Why is the rollback plan written before a change runs?

    It separates a change you can try from a change you can only hope works, so it is written, and tried, before anything runs.

  4. Which three Windows measures give a change a way back?

    Suspend BitLocker before firmware work (-RebootCount 1 resumes it after the next restart), roll out to a pilot ring before a broad one, and take a restore point or an image before a risky configuration change.

  5. Which changes may run inside a change freeze?

    Only emergency changes. Every other change moves to the next open maintenance window.

  6. When is a change closed?

    Only after the user accepts it and monitoring stays clean, with the result recorded. A failed change becomes an incident that feeds problem management.

Key takeaways

  • Sort every change into standard (pre-authorised and repeatable), normal (assessed and cleared by the board) or emergency (fast authorisation now, full documentation after), because the kind decides how it may move.
  • A change request carries its purpose, scope, affected systems, risk, test evidence, implementation steps, rollback plan, responsible people, scheduled window, authorisations and verification plan; the empty fields are where the risk hides.
  • On Windows, suspend BitLocker before firmware work (-RebootCount 1 resumes after the next restart), roll out in a pilot ring then a broad ring, and take a restore point or image before a risky configuration change.
  • Publish maintenance windows and change freezes, and let only an emergency change run inside a freeze; move every other change to the next open window.
  • Close a change only after the user accepts it and monitoring stays clean, record the result, and turn a failed change into an incident that feeds problem management.

Terms in this lesson

change freeze
A published period, such as quarter-end, exams or a big launch, when no non-emergency change may run because the business cannot afford the risk.
change request
The record that carries a change from idea to close, stating its purpose, scope, risk, test evidence, steps, rollback plan, people, window, authorisations and how success will be verified.
change-advisory board
The group that assesses a normal change, weighs its risk against its benefit, and authorises or declines it before it runs.
emergency change
A change that fixes an urgent problem which cannot wait for the normal path, so it gets fast authorisation and its full documentation afterwards rather than before.
implementation plan
The ordered steps that make a change happen, written so the work can be followed in order and repeated if needed.
maintenance window
An agreed period, often an evening or a weekend, when a change may run with the least disruption to users.
normal change
A change new or risky enough to need assessment, so it goes to a change-advisory board that weighs its risk and clears it before a scheduled window.
pilot ring
A small group of machines that receive an update first, so a problem shows on a few recoverable devices before the broad rollout to everyone else.
rollback plan
The recorded way to return a system to its previous working state if a change fails; a change without one should not run.
standard change
A pre-authorised, low-risk, repeatable change that follows a template permitted once, so a support team can run it without returning to the change-advisory board each time.
user acceptance
Confirmation from the person affected that a change works as intended, part of what must happen before a change is closed.

References

Related tools

Report a problem with this lesson

Quick answers and tool search

Type to search tools or to get a quick answer, for example 18% of 2500. Use the up and down arrow keys to move through the results, Enter to choose, and Escape to close.