Skip to content
Maintenance & updates

Before peak season: a change freeze in the maintenance plan

How a change freeze enters the maintenance plan: a calendar per change class, an exception path for security fixes, the October list and on-call windows.

18 min read ÄnderungsstoppSaisongeschäftBereitschaftWartungsplanWeihnachtsgeschäft

In short and in plain language

Before Christmas, many shops sell a lot. During this time, every change to the shop is a risk.

A change freeze helps. From a fixed day on, you change very little in the shop. The freeze starts first for new features and design.

Important security updates stay possible. For this, you agree on a fixed path in advance.

Before the freeze, there is a lot to do. Certificates and licences are renewed. You test whether the shop can be restored from a backup.

We plan the freeze with you. We are there for you during the freeze.

For many merchants the business year is decided between mid-November and the turn of the year: 18.5 percent of annual retail turnover falls into November and December, and for those two months the German retail association most recently forecast 126.2 billion euros in turnover (HDE, November 2025). A change to the shop is no worse in those weeks than it is in May - it is only more expensive, because the way back is missing and so are the people who would take it. A change freeze is the date from which the shop only does what it already knows how to do. This article describes how that date gets into the maintenance plan: which change classes rest from when, which exception path stays open for security fixes, what belongs in the October list, and who is reachable while the freeze runs.

Key takeaways

  • The freeze is a calendar, not a ban: every change class gets its own date from which it rests - features and design first, configuration and content later, security fixes not at all.
  • November and December carry 18.5 percent of annual retail turnover (HDE). The freeze does not protect the technology, it protects that share from changes without a rehearsed way back.
  • No freeze holds without a documented exception path. If the route for a critical security fix is not agreed beforehand, December produces a change without a written record instead of one with.
  • October carries the load: pull forward certificates and licenses that expire in December, rehearse the restore, check headroom on storage and compute, and clear the clock change on the last Sunday in October (Directive 2000/84/EC).
  • The freeze does not end by itself on 1 January. It ends with an approval, a fixed sequence for the changes that piled up, and a date written into the maintenance plan.

Why a change freeze is not a standstill

The objection to a change freeze sounds reasonable: precisely in the most important quarter you want to stay able to act. The objection confuses two things. A shop is able to act when it can take a fault back within minutes - not when it rolls out a new payment method in the week before the second Advent Sunday. In practice the expensive December incidents rarely come from attacks; they come from your own releases: a package version that ran fine on the test system, a setting that shifts a tax rule, a theme that pushes the order button below the fold on small screens. How a planned intervention is scheduled cleanly is described in the article on maintenance windows without revenue loss; the freeze is the level above it - it says which interventions are not even planned for a few weeks.

A change freeze has four parts, and none of them is a ban. First, a classification: what kinds of change exist in this shop at all? Second, a calendar: from which date does which kind rest? Third, an exception path: how does a critical security fix still get in without softening the rule? Fourth, on-call cover: who is reachable during that period, in which time windows, and for which kind of alert? If one of the four parts is missing, the freeze typically holds until the first urgent request.

A freeze without an exception path lasts less than three weeks

A change freeze that also covers security fixes gets broken on the first critical finding - under time pressure, without a test run and without a written record. The very change that should have been handled most carefully then runs in the messiest way. That is why the exception path belongs on the same line of the maintenance plan as the freeze itself: a basis for judging urgency, a named decision-maker, a separate test run and a rollback package that is ready before deployment. How findings are judged and ranked is covered in the article on CVE management for online shops.

The change calendar: which class rests when

A single freeze date for everything is the most common design - and the least practical one. Content and pricing have to stay movable in December, otherwise the shop cannot react to a short-notice offer. A theme update, by contrast, serves no purpose from mid-November onwards. The calendar therefore separates by change class, not by system. Where exactly the dates sit is answered better by last year's own revenue curve than by any industry figure. The industry supplies the order of magnitude: for November and December the German Retail Federation expected 22.2 billion euros in online retail turnover, nominally 3.3 percent more than the year before (HDE forecast, November 2025).

The table below shows a classification that has proven itself in small and mid-sized shops. More important than the exact number of classes are three fields per row: from when the class rests, who decides on an exception, and which way back was rehearsed beforehand. Without the third field the calendar is a statement of intent. Which work a running maintenance package already covers is shown in the overview of services - the change calendar belongs on the same line there as the maintenance window.

Change classRests fromWho decides on an exceptionWay back, rehearsed beforehand
Features and designMid-NovemberBusiness unit together with maintenancePrevious package state, release rolled backwards
Extensions and themesMid-NovemberMaintenancePrevious package state including database migration backwards
Shop configurationEnd of NovemberShop ownerExport of the previous day's settings
Content and pricingKeeps runningEditorial teamPage versioning, rollback inside the admin interface
Security fixesDoes not restOn-call leadRollback package, prepared before deployment
Infrastructure and certificatesEarly NovemberMaintenanceSecond certificate in place, old entry still valid

Two rows deserve a second look. The infrastructure class rests earliest because its faults surface latest: a certificate expiring in December does not report itself at deployment time, it reports itself on the expiry date. And the extensions class needs an inventory before the freeze, because it usually contains more than the shop owner keeps in mind - test systems, stale subdomains and forgotten installations all belong to the same attack surface. How that inventory is cleaned up is described in the article on forgotten test systems and stale subdomains.

What gets cleared in October

October carries the load of the freeze. Everything that would fall due in November and December is pulled forward or extended - and everything that can no longer be rehearsed in December is rehearsed now. One fixed date belongs in this month anyway: under European law summer time ends on the last Sunday in October (Directive 2000/84/EC, Article 3), which in 2026 is 25 October. What that night does to cron jobs, timestamps and jobs running twice is covered in the article on the clock change and its effect on cron jobs.

Pull certificates forward

Every TLS certificate expiring between 1 November and 15 January is renewed in October or moved onto an automated path. A second, already valid state sits next to it.

Renew licenses

Record the expiry date per extension, pull the renewal forward, clarify the billing route. An expired license often does not take away the feature, only the right to updates.

Rehearse the restore

The latest backup is restored in full on a separate environment until the shop there can take an order. Two durations are measured: to emergency operation and to normal operation.

Check headroom

Free space on the volumes for order data and for backups, CPU utilisation in the peak hour, database memory. What is recorded is the slope, not just the current level.

Clear the clock change

Check cron jobs on the night of the last Sunday in October: jobs running twice, runs skipped entirely, timestamps in orders and invoices.

Test the alert route

Send a test alert through the whole chain: measurement, forwarding, phone call, acknowledgement. Dead distribution lists and old phone numbers surface while there is still time to fix them.

The six items share one property: they cost hours in October and days in December. In practice the licenses item is the most unpleasant, because it has two effects that are easily confused - an expired license in many cases does not take away the feature, only the right to updates. The shop keeps running, but the security fix in January no longer arrives. Which deadlines count here and how to monitor them is set out in the article on extension license expiry.

The exception path for security fixes

The exception path is not an emergency exit, it is a second, narrower procedure. It differs from the normal route in four points: the trigger is defined more narrowly, the decision sits with a named person instead of a committee, the test run is shortened but not dropped, and the written record is more detailed than usual. Anyone who couples this path to on-call cover has built half of it already - in emergency support reachability, decision authority and record-keeping are already one process.

The trigger is what decides. Define it too broadly and every request travels down the exception path, leaving the freeze without effect. Define it too narrowly and an exploited gap stays open for three weeks. In practice a combination of two conditions works: the vulnerability is exploitable in the state actually deployed - not merely present in the product - and it affects a path the shop offers publicly. Together those two are rare enough to keep the calendar and frequent enough to catch the cases that matter.

change-freeze.yml
# Fourth-quarter change calendar - extract from the maintenance plan.
# The file lives in the repository, not in someone's mailbox.

freeze:
  start: 2026-11-14
  end:   2027-01-06
  timezone: Europe/Berlin

classes:
  features_design:
    frozen_from: 2026-11-14
    decision: business_unit + maintenance
    way_back: previous_package_state
  extensions_themes:
    frozen_from: 2026-11-14
    decision: maintenance
    way_back: previous_package_state
  configuration:
    frozen_from: 2026-11-28
    decision: shop_owner
    way_back: settings_export
  content_pricing:
    frozen_from: null          # keeps running, way back via page versioning
    decision: editorial
  infrastructure_certificates:
    frozen_from: 2026-11-07
    decision: maintenance
    way_back: second_certificate_in_place
  security_fixes:
    frozen_from: null          # not frozen, see the exception path

exception_path:
  trigger:                     # both conditions together
    - exploitable_in_the_deployed_state
    - affects_a_publicly_reachable_path
  decision_by: on_call_lead
  required:
    - test_run_on_a_separate_environment
    - rollback_package_ready_before_deployment
    - written_record_with_timestamps
  notify: shop_owner

on_call:
  weekdays:  "08:00-18:00"
  evenings:  "18:00-22:00"
  weekend:   "10:00-18:00"
  unprompted_check: "daily 07:30 and 19:30"

The file belongs in the same repository as the rest of the configuration, so that every change to the calendar is a change with a history. Two fields are easy to overlook. The timezone keeps a freeze in a distributed chain from slipping by an hour, especially after the changeover at the end of October. And notify makes sure the shop owner learns about an exception before spotting it in the figures. Whether the exception worked is then shown by ongoing shop monitoring - a change without a follow-up measurement is a bet in December.

One point comes up regularly in discussion: does content really belong in the calendar if it keeps running anyway? Yes, but with a different field. For content the interesting value is not the freeze date but the way back within the session. Anyone rebuilding a category page and removing a filter changes what is delivered just as a developer does. The difference is that an editor can take that way back inside the admin interface, provided versioning is switched on. That is exactly what should be tried once before the freeze, not assumed.

On-call cover: who is reachable and for what

The freeze shifts work, it does not remove it. What is not changed in December has to be watched - by people who are allowed to decide. An on-call plan for the fourth quarter answers four questions in writing: which time windows are covered, which alert types trigger a phone call, which ones wait until the next working day, and who stands in during illness. Without the fourth answer the plan hangs on a single person. How reachability, response time and decision authority fit together is described on the page about emergency support.

The on-call plan belongs before the freeze, not beside it. Concretely: phone numbers and mailboxes are tested in October, not asserted in December. A test alert through the entire chain - measurement, forwarding, phone call, acknowledgement - takes half an hour and in practice finds at least one dead address. Often it is a distribution list pointing at a mailbox nobody has opened since the summer. The other direction counts too: anyone keeping access on holiday that they do not need during that time has already softened the plan.

Three windows, three commitments

An on-call plan becomes readable when it knows only three windows. On working days in core hours the regular contractual response time applies. In the evenings and at weekends a shortened list of alert types triggers a phone call - as a rule reachability, the order path and the payment route. On the highest-load days a fixed time is added at which someone looks at the metrics without any prompt. That third item costs the least and finds the cases no threshold catches - an order path that is slower, for instance, but not yet broken.

Deadlines that hit in December

The most unpleasant mistake in a change freeze is not the overly strict rule, it is the overlooked deadline. A deadline does not negotiate: it expires while the freeze is running and forces exactly the change that was meant to be avoided. The list below collects the deadlines that regularly fall into December in this environment. It is worked through in October, every item gets a date, and every date between the start and the end of the freeze is pulled forward or extended.

One deadline deserves its own line, because it is not a maintenance topic and still hangs on the technology. German VAT law permits paper for turnover in 2027 only until 31 December 2027, and only where total turnover in the preceding calendar year was no more than 800,000 euros (Section 27 (38) no. 2 of the German VAT Act). For everyone above that, the paper option ends with the turn of the year. A differing electronic format stays possible alongside it for the same period without any turnover threshold, provided the recipient consents and the invoice is transmitted via EDI (Section 27 (38) no. 3 of the German VAT Act). Anyone planning the switch for January is planning it directly behind the freeze - what the shop needs to be able to do is covered in the article on e-invoicing from 2027.

  • Renew TLS certificates expiring between 1 November and 15 January, or move them onto an automated path, before the freeze starts
  • Record licenses and maintenance contracts for the extensions in use with an expiry date per package, pull renewals forward, clarify the billing route
  • Check access to payment and shipping providers: keys with expiry dates, stored callback addresses, phone numbers for queries
  • Clear domain and DNS deadlines: registration, registrar lock, records with a short validity that somebody renews by hand
  • Collect legal dates with a technical effect: VAT deadlines, price disclosure rules, withdrawal periods that sit in the shop's text blocks
  • Review contracts with a notice period at year end - an unintended renewal is annoying, an unintended termination is an outage
  • Note the people-related deadlines: holiday planning, cover arrangements, handover of access before 1 December

The restore rehearsal before the freeze

A change freeze lowers the probability of a self-inflicted outage, it does not lower it to zero. That is why a rehearsal belongs to the freeze: the latest backup is restored on a separate environment, in full, until the shop there can take an order. The difference from merely checking the backup files is considerable. A backup that can be opened proves the file is readable - not that a running shop comes out of it.

The rehearsal measures two figures that should afterwards sit in the maintenance plan: how long does it take to reach emergency operation, and how long to reach normal operation? The German BSI Standard 200-4 separates those two goals explicitly and describes the second one as follows: „Die Wiederherstellungsplanung hat zum Ziel, einen Zustand zu erreichen, in dem der Normalbetrieb wieder möglich ist.“ (BSI) - recovery planning aims at a state in which normal operation is possible again. Anyone rehearsing only emergency operation does not know the second figure - and the second figure is the one a shop owner is asked about in December. The procedure is described in the article on disaster recovery and restoring the shop.

Three details decide whether the rehearsal is worth anything. First, it runs on an environment that resembles production in size and versions, not on a developer machine. Second, what is measured is the path a customer takes: home page, category, product, basket, checkout up to the payment selection. Third, the result is written down with a date, because in January hardly anyone remembers which state was rehearsed. The rehearsal runs before the freeze starts, so that a fault it finds can still be fixed through the normal procedure.

Headroom for storage and compute

The third preparation is the least conspicuous one: headroom. In December it is not only the number of orders that rises, but also the volume of what the shop produces along the way - session data, search logs, invoice documents, images in several formats, caches. A full volume is an outage that looks like a database fault and gets hunted in the wrong place for hours. How to find that limit in advance is described in the article on load testing for peak traffic.

For practical purposes four measurements are enough, taken once in October and monitored afterwards: free space on the volume holding order data, free space on the volume holding backups, CPU utilisation in the peak hour, and memory used by the database. More important than the absolute value is the slope. A volume losing two percentage points a week is arithmetically full by the end of the freeze, even if twenty percent are still free today.

Terminal
$ headroom --shop www.example.invalid --report cw42
[OK] /var/www 41 % used slope +0.8 points/week headroom over 26 weeks [WARN] /var/backups 78 % used slope +2.1 points/week headroom 10 weeks [OK] CPU cores peak 12:40, utilisation 46 % [WARN] Database 82 % of memory used, cache entries are being evicted [ALARM] TLS certificate expires 19.12.2026 and therefore falls inside the change freeze [ALARM] Search module lic. expires 31.12.2026, no automatic renewal path 2 checks green, 2 warnings, 2 alarms - as of 2026-10-12 07:30

The report is deliberately boring. Its purpose is the headroom in weeks, not the percentage: only the headroom connects today's level with the date on which the freeze ends. The two alarms in this example are the normal case - in practice certificates and licenses show a preference for expiring between Christmas and New Year, because a year earlier they were set up between Christmas and New Year.

How the freeze ends

A freeze that simply lapses without an approval produces, on the first working day in January, a release containing everything that has piled up since November. That is the riskiest release of the year: many changes at once, a team that has just come back, and a shop still processing returns and gift-voucher redemptions. The calendar therefore needs an end date and, behind it, a sequence.

The sequence after the freeze follows the stack, not the calendar. What everything else builds on comes back first, and one at a time: infrastructure and certificates, then configuration, then extensions, finally features and design. Between the steps sits a day with measurement. Releasing everything on the same day saves a week and gives up the ability to attribute a fault to a cause. It has also proven useful to place the end date deliberately after the first working day: 6 January, or the weekend that follows, is as a rule quieter than the 4th.

A change freeze is not a vote of no confidence in the team. It is the decision to reduce the number of variables in the most expensive quarter of the year.

Managed Service Agentur

What the freeze needs in the contract

For the calendar to hold in December it belongs in the maintenance contract, not in an email. Four points are enough: the period of the freeze with its start and end, the classification of change classes with their freeze dates, the exception path with a named decision-maker and an obligation to record, and the on-call plan with its windows and alert types. How these points are usually worded and tied to response times is shown in the overview of the SLA maintenance contract.

A fifth point is often forgotten and is the only one that counts retrospectively: the record of the maintenance state before the freeze. It captures which versions were running on the cut-off date, which backups were last rehearsed and with what result, and which deadlines were deliberately extended beyond the freeze. In a dispute this record is the basis for showing that a change did not take place in December - in the normal case it is the template for next year's calendar.

Change calendar and on-call cover as one process

We set the fourth-quarter change calendar with you, work through the October list - certificates, licenses, restore rehearsal, headroom - and take on the on-call cover during the freeze, including the exception path for critical security fixes. What is included and what it costs is set out in the pricing overview with scope of services. For an assessment of your existing quarterly plan, a short message via the contact form is enough.

Sources and studies

This article draws on data from: the German Retail Federation HDE (Christmas forecast of 5 November 2025), Directive 2000/84/EC of the European Parliament and of the Council on summer-time arrangements, the German Summer Time Ordinance (SoZV), Section 27 (38) of the German VAT Act, and BSI Standard 200-4 on business continuity management.

Related Articles

Law & compliance

Shop Server Logs: How Long IP Addresses May Be Stored

How long may IP addresses stay in server logs? What the GDPR requires, what the five weeks from the BfDI mean, and how rotation, truncation and backups fit in.

18 min read
Maintenance & updates

WordPress security updates: what old branches still get

WordPress 7.1.2 closed a critical flaw and the fix was backported to 4.7 as a courtesy. What older branches receive, what they do not, and when to move up.

20 min read
Security

Discount codes in Black Week: detecting abuse early

Discount codes in Black Week: code length, a rate limit at the coupon field, alerts on failed attempts and new-customer discounts that resist multiple accounts.

21 min read