Capstone Part 3 — The Wave Plan
Part 1 decided what moves. Part 2 built the place it moves to. This part decides in what order, in whose hands, and on which weekend — and that is where most migration plans quietly stop being plans. Anybody can list four waves. The craft is in the three checks that come after the list: does any wave move a system before something it depends on; does the work actually fit the people you have, once one of them leaves; and does it fit a calendar with two blackout windows, a licence renewal, and a colo contract that ends on 31 March whether you are ready or not. By the end of this page you will have a wave plan, a nine-month calendar, a risk register with rollback triggers, and — the part that matters most at 4 p.m. on a bad Tuesday — a written, date-stamped answer to “what do we cut?”
You know everything you own and you know which new room each thing goes in. Now you have to decide the order you carry them — and you only have nine weekends, two of them are your gran’s birthday and the school play, one helper quits after weekend three, and the old house’s lock changes on the last day no matter what. If you carry the fridge before you’ve run the plug socket, the fridge sits in the hall. If you leave the piano for the last weekend, you have no weekend left when it doesn’t fit through the door. That ordering — plus writing down which boxes you’d abandon if you ran out of time — is the whole job on this page.
Starting: a disposition matrix from Part 1 and a landing-zone design from Part 2. Nothing has moved. Nothing is scheduled. Leaving this page: a wave plan (Wave 0 plus four waves, each with systems, entry criteria, exit criteria, a calendar slot and a named rollback owner), a nine-month calendar with both blackout windows and the hard stop marked, a per-wave risk register where every row carries an observable rollback trigger, and a descope ladder whose rungs have expiry dates. Part 4 picks up exactly one wave from this plan — the hardest one — and writes its cutover minute by minute. You need a spreadsheet and a text editor. No cloud account, no card, nothing to provision.
What this part assumes, and what it produces
☺ Like you’re 10: You need the list of things and the map of the new house. If you skipped those pages, everything you need is restated right here.
This page is deliberately self-contained. If you have done Part 1 and Part 2, use your own answers and treat the tables below as a cross-check. If you have not, use the tables below as given and start here — nothing later depends on you having produced the earlier artifacts yourself.
| What Part 3 needs | Where it came from | If you skipped that part |
|---|---|---|
| An R for every system | Part 1 — the disposition matrix | Use the model answer restated in The sixteen systems below. |
| A dependency map | Part 1 — the edge list | Use the eleven edges restated in The dependencies that constrain order below. |
| A landing zone that exists before anything moves | Part 2 — the design doc | Treat it as Wave 0’s deliverable; the entry criteria below say what “exists” means. |
| The non-negotiable constraints | The estate fact sheet on the hub | Restated in full in The constraints you cannot move below. |
What you produce: three artifacts and one list. The wave plan, the nine-month calendar and the risk register are the artifacts a steering committee reads. The descope ladder is the list you will actually use.
A wave list says which systems move together. A wave plan says which systems move together and survives three checks: dependency, capacity, calendar. The list takes twenty minutes and feels like progress. The checks take a day and are the only reason the plan is worth printing. Wave Planning teaches the grouping craft on a friendly twelve-app estate; this page is the same craft with a deadline, a leaver, and a 41 TB archive attached.
The estate, restated — only what a wave plan needs
☺ Like you’re 10: Here are the boxes, where they sit today, and the one awkward fact about each that decides which weekend it moves.
Brambleside Veterinary Group — 22 small-animal clinics plus one 24-hour emergency hospital, one country, about 600 staff. It acquired Ashcombe Vets (3 clinics) in 2023 and never integrated it. Everything below is invented for this exercise.
Two buildings, one deadline — and they are not the same deadline
“Fort Rusty” is not one place. It is a converted server room at the flagship clinic and eight racks in a colo 40 km away, and only one of those has a contract that ends. This distinction does more work in a wave plan than anything else on the page, so establish it first:
| Where | What’s in it | The clock on it |
|---|---|---|
| The colo — 8 racks, 40 km away | Eleven systems: PIMS-Core, ImageVault, LabBridge, BramblesideOnline, RotaMaster, ClaimsFeed, StockCtrl, FileShare, BI-Reports, VetLearn, DevTest | Hard. Contract ends 31 March. No renewal beyond a three-month month-to-month extension at 2.4× the rate. |
| The flagship server room — converted office | Three systems: AD-DC01/DC02, PrintSrv, BackupVault (plus the tape library) | Soft. No contract end. The HVAC has failed twice this year, which is a risk, not a date. |
| Already elsewhere | AshBook (on a public cloud), Ashcombe PIMS (vendor-hosted) | None. Neither is affected by 31 March at all. |
Read that table again and notice what it just did to your plan. Eleven things sit under the hard deadline; ten of them move and one of them dies. Everything else — the three retained systems and the two Ashcombe systems — is schedulable at your convenience, which makes them the first things you sacrifice when the calendar tightens. A wave plan that treats all sixteen systems as equally urgent is a wave plan that will run out of March.
The sixteen systems, their R, and the fact that decides their wave
The R column is Part 1’s model answer. If yours differs and you can defend it, use yours — the checks that follow work identically.
| # | System | Where | R | Size | Downtime tolerance | The fact that decides its wave |
|---|---|---|---|---|---|---|
| 1 | PIMS-Core appointments, clinical notes, billing | Colo | Rehost now, Repurchase later | 1.9 TB 4 × Win2016 + SQL 2016 Ent cluster | ≤ 4 h, Sunday 02:00–06:00 only, never a Monday | Used every minute in every clinic, and it reads ImageVault by UNC path. The vendor’s hosted edition is the right destination but its earliest onboarding slot is 14 months out — too late for 31 March. |
| 2 | ImageVault X-ray/ultrasound archive since 2004 | Colo | Replatform | 41 TB, +900 GB/month | Reads must never break | 78% of studies untouched in 24 months. The single largest object in the estate, and the one whose copy time you do not control. |
| 3 | LabBridge polls the external reference lab | Colo | Rehost | 1 small VM | Hours | The lab allow-lists one fixed public IP. Changing it is someone else’s change ticket, with someone else’s lead time. |
| 4 | BramblesideOnline site, booking, repeat scripts | Colo | Replatform | 90 GB, MySQL 5.7 | ≤ 2 h | MySQL 5.7 is out of support. Booking writes appointments into PIMS-Core. |
| 5 | RotaMaster staff rota | Colo | Repurchase | Classic ASP on Win2012 R2 | A day | Written in 2011 by someone who left in 2015. No source control, no tests, 90 weekly users. The work is data export and training, not servers. |
| 6 | ClaimsFeed nightly insurance claims via SFTP | Colo | Replatform | 280 GB, Oracle DB 12c SE | May miss one night | Licence renewal falls in month 7 — and the non-renewal notice is due 60 days before that. Reads a nightly billing extract from PIMS-Core. |
| 7 | StockCtrl consumables + controlled-drug register | Colo | Rehost | 140 GB, SQL Server | Overnight | Supported product, vendor supports cloud hosting. 7-year controlled-drug register retention must be provably intact after the move. |
| 8 | FileShare staff file server | Colo | Rehost hot, Retire cold | 6.2 TB across 1.1 million files | A weekend | 40% untouched in 5 years. The constraint is the file count, not the size — bandwidth arithmetic will lie to you here. |
| 9 | BackupVault backup server + tape library | Flagship | Retain | — | — | Holds the 7-year finance retention. Retain is only available because it sits in the flagship room. In the colo it would be a Wave 1 emergency. |
| 10 | AD-DC01 / DC02 AD, DNS, DHCP | Flagship | Retain (for now) | 2 VMs | Minutes | Everything authenticates here. Wave 0 extends the directory into the landing zone; retiring on-prem AD is deliberately out of scope before 31 March. |
| 11 | PrintSrv dispensing-label printers, 22 clinics | Flagship | Retain | 1 VM | Hours | Latency-sensitive; must stay near the printers. A Retain still needs a confirmed home — that confirmation is a Wave 0 task. |
| 12 | BI-Reports SSRS, 40 scheduled reports | Colo | Retire | 400 GB | — | The audit log proves 31 of the 40 haven’t been opened in 18 months. The 9 survivors read from PIMS-Core, StockCtrl and ClaimsFeed — so this Retire cannot complete until all three have landed. |
| 13 | VetLearn internal CPD portal | Colo | Repurchase | 220 GB | Days | The vendor’s SaaS costs less than the VM. Course history and CPD certificates must come across intact — that is a regulator-facing record. |
| 14 | DevTest dev/test environments | Colo | Rehost some, Retire the rest | 11 VMs, 24×7, 4% average CPU | Whenever | Nobody has switched one off since 2019. Zero users, zero dependencies, zero drama — the perfect pilot. |
| A1 | AshBook Ashcombe’s online booking | Public cloud | Rehost (cloud-to-cloud) | Small | Hours | Not under the 31 March clock at all. Consolidating it into Brambleside’s booking makes sense only after BramblesideOnline has landed. |
| A2 | Ashcombe PIMS same vendor, separate tenant | Vendor-hosted | Retain (consolidate later) | — | — | Tenant consolidation is a vendor project with its own timeline. Attempting it inside these nine months is scope you cannot afford. |
The count you carry through the rest of this page: eleven systems move. Five are parked — one Retire (BI-Reports) and four Retain (BackupVault, AD-DC, PrintSrv, Ashcombe PIMS). Every check below is run against those eleven.
Retire and Retain remove a system from the waves. They do not remove it from the work. BI-Reports needs an evidence pack before anyone switches it off and its nine surviving reports rebuilt somewhere. PrintSrv needs a confirmed home. AD needs cloud domain controllers standing beside it. BackupVault needs its 7-year obligation re-homed — which is Part 5’s problem, but you will book the time for it here or it will not exist. Park the system; schedule the task.
The dependencies that constrain order
Eleven edges. Everything authenticates against AD, so that edge is drawn once rather than sixteen times.
| From | To | What kind of link | What it forces on the order |
|---|---|---|---|
| Everything | AD-DC01/DC02 | Authentication, DNS | The directory must be reachable from the landing zone before any workload lands. Wave 0. |
| PIMS-Core | ImageVault | UNC path, read-heavy, clinician-facing | The archive must be present and current in the cloud before PIMS-Core’s path flips. Same wave or earlier — never later. |
| ClaimsFeed | PIMS-Core | Nightly billing extract, ~180 MB, pulled at 23:30 | ClaimsFeed’s licence clock forces it to move before PIMS-Core. This is an inversion — it must be accepted explicitly, with a stated budget. |
| BramblesideOnline | PIMS-Core | Booking writes appointments, ~1,400/day | A second inversion, for a longer stretch. Also needs a budget, and a reason it is tolerable. |
| LabBridge | External reference lab | IPsec VPN from one allow-listed public IP | External lead time. The request goes out in Wave 0 week 1 or LabBridge does not move. |
| AshBook | BramblesideOnline | Booking consolidation | Strictly after BramblesideOnline lands. |
| BI-Reports (9 survivors) | PIMS-Core, StockCtrl, ClaimsFeed | Scheduled reads | The Retire cannot complete until all three sources have landed. A Retire with a dependency is still a dependency. |
| FileShare | AD-DC01/DC02 | ACLs and group membership on 1.1 M files | Identity must be correct before the copy, or you re-permission a million files twice. |
| StockCtrl | AD-DC01/DC02 | Auth + the controlled-drug audit trail | Wave 0, plus a compliance sign-off with its own lead time. |
| PrintSrv | Clinic printers × 22 | Latency-sensitive print path | Retained. Confirm the flagship room hosts it past March — do not discover this in month 8. |
| DevTest | — nothing — | — | No inbound or outbound edges. This is what makes it a pilot. |
The constraints you cannot move
| Constraint | The value | What it forbids |
|---|---|---|
| The colo contract | Ends 31 March, nine months from the programme start on 1 July. Extension: 3 months, month-to-month, at 2.4×. | Any plan whose last colo cutover is in April. |
| Spring vaccination campaign | Two weeks, mid-March (take it as 9–22 March) | Any change of any kind during those two weeks. |
| Emergency-cover period | 20 December – 3 January | Same. Two full weeks of a nine-month plan, gone. |
| PIMS-Core’s window | ≤ 4 h, Sunday 02:00–06:00 only, never a Monday | Everything except a handful of specific Sunday nights. Count them. |
| The team | Six people; one leaves at the end of month 3; two of the six are also on the clinic support rota | Any capacity estimate that says “six people for nine months”. |
| The link | 500 Mbps circuit, contractually shared — 150 Mbps sustainable without burst charges | Any plan that assumes you can push 41 TB whenever you like. |
| Data residency | Board policy: client and clinical data stays in-country, DR region included | Any SaaS or region that cannot prove it. |
| Retention | Controlled-drug register 7 years; finance backups 7 years | Switching anything off before the obligation has a new home. |
The people, in the only unit that matters
Six names is not six people’s worth of work. Convert to full-time equivalents before you plan anything:
| Role | FTE | Note |
|---|---|---|
| Migration lead | 1.0 | Owns the plan, the go/no-go calls, and the board conversation. |
| Platform engineer A | 1.0 | Landing zone, networking, identity. |
| Platform engineer B | 1.0 | Leaves at the end of month 3. Not replaced. |
| Data engineer | 1.0 | The 41 TB, the 1.1 M files, every database cutover. |
| Apps engineer | 0.5 | Also on the clinic support rota. |
| Service desk lead | 0.5 | Also on the clinic support rota. Owns comms to 22 clinic managers. |
| Months 1–3: 5.0 FTE. Months 4–9: 4.0 FTE. Not six. Never six. | ||
Wave 0 — the wave that isn’t a wave
☺ Like you’re 10: Before you carry anything, you build the new rooms, run the wiring, and post the letters that take other people six weeks to answer.
Wave Planning calls it “foundation first”; the journey calls it Mobilize. Either way, Wave 0 moves nothing. It builds the landing zone from Part 2 — account topology, regions, the non-overlapping address plan, hybrid connectivity, identity, and the four guardrails — and it starts every clock you do not control.
That second job is the one teams skip, and it is the one that decides whether your plan holds. Three items in Wave 0 have lead times measured in other organisations’ working weeks:
| Lead-time item | Sent when | Typical wait | What it blocks if it slips |
|---|---|---|---|
| The transfer appliance for ImageVault’s 41 TB — ordered, delivered, seeded, shipped, ingested, verified | Week 1 | 4 weeks to delivery, then ~3 weeks of round trip | Everything. See the ordering trap below. |
| The reference lab’s allow-list change — LabBridge’s new static egress IP, in writing | Week 1 | 6–8 weeks, and it is their change process, not yours | LabBridge. Lab results are clinical — there is no “we’ll wing it”. |
| SaaS vendor onboarding — RotaMaster’s and VetLearn’s replacements: contract, residency evidence, data-export format, training slot | Week 1 | 6 weeks before you can even export | Two of the three Wave 1 systems. |
“The landing zone is built” is not an exit criterion; it is an opinion. These are exit criteria: a test VM in the landing zone authenticates against a Brambleside AD account and resolves DNS in both directions; the reference lab has confirmed the new egress IP in writing; the appliance has a delivery date; PrintSrv’s post-March home is confirmed by the person who owns that room; and the tagging, budget-alert, encryption and logging guardrails are on, not designed. Wave 1 does not start until every one of those is true. Fudging Wave 0 is how a nine-month plan turns into a nine-month plan plus six weeks.
Building the four waves
☺ Like you’re 10: Easy things first to practise, awkward things next while there’s still time to be surprised, and the thing the whole business runs on last — but not so last that there’s no weekend left.
You are sorting eleven systems into four batches. The rules you are sorting under, in priority order:
- Dependencies before dependents, or an explicitly accepted, budgeted inversion. Never an accidental one.
- Externally-clocked items early. Anything waiting on a third party (the lab, a vendor, a licence notice) moves as early as its lead time allows, because slipping it is not in your gift.
- Easy → hard. The pilot exists to prove the runbook while a mistake costs nothing.
- Discover expensive surprises early. FileShare’s million files should surprise you in October, not in the week you needed the data engineer for PIMS-Core.
- Crown jewels late, but not last. The most critical system moves when the team is most practised — with enough calendar behind it for at least two fallback attempts.
ImageVault’s 41 TB must be seeded in month 2, even though PIMS-Core does not cut over until month 8. Put the archive in the same wave as the system that reads it and one of two things happens. Either PIMS-Core cuts over first and then reads 41 TB back across a 150 Mbps link for four months — every X-ray a clinician opens making a 40 km round trip — or your entire schedule becomes hostage to a single copy job whose completion date you do not control. Seed it early by appliance, keep the on-prem NAS authoritative with one-way sync into the cloud, and flip the path last, in Wave 4. A copy job that starts six months early is not on the critical path. A copy job that starts on time is.
Do the two numbers that make that concrete, because they are the reason the appliance wins:
Sustainable link rate 150 Mbps = 18.75 MB/s = 67.5 GB/hour
ImageVault online, continuous 41,000 GB / 67.5 GB/h = 607 hours = 25.3 days flat out
ImageVault online, nights only 41,000 GB / 540 GB-night = 76 nights = ~2.5 months
(540 GB = 67.5 GB/h x an 8-hour 22:00-06:00 window)
...and that leaves zero nightly capacity for anything else.
Daily delta after the seed 900 GB/month / 30 = 30 GB/day
30 / 540 = 5.6% of one night's window. Converges easily.Twenty-five days flat out on a contractually shared circuit, while the archive must stay readable, is not a plan. Seventy-six nights with nothing left over for FileShare or the databases is worse. The appliance is not a preference; it is the only option the arithmetic leaves standing — and the Size the Data Move drill makes you prove that result three more times on nastier numbers. Part 4 takes the appliance round trip apart step by step.
The wave record — one per wave
Fill this in five times: Wave 0 and Waves 1–4. If a field is blank, that is not a formatting problem, it is an unmade decision.
WAVE <n> — <name>
--------------------------------------------------------------
Calendar slot : months <n>-<n> · cutover: <day, window, duration>
Systems in scope : <system> (<R>), <system> (<R>), ...
NOT in scope : <the thing everyone will assume is in here, and isn't>
Entry criteria (all true before this wave starts)
1. ...
2. ...
Exit criteria (all true before the next wave starts)
1. ...
2. ...
Accepted couplings : <system> still talks to <thing still on-prem>
budget: <latency / volume / duration> monitored by: <who>
Cutover window : <day, time, length> · window owner: <role>
Go/no-go : <role> decides, no later than <wall-clock time>
Rollback owner : <role> · latest call: <wall-clock time>
Descope candidate : <the first thing you drop from this wave> · costs: <what>Before you read another word, sort the eleven movers into four waves on paper. Do not polish — forty minutes of a real plan beats four hours of a beautiful one. Then answer three questions about your own draft: (1) which wave contains something that depends on a system in a later wave? (2) which wave would you drop entirely if you had to, and what breaks? (3) which single system, if it slipped four weeks, would push you past 31 March? Keep your draft next to you — the three checks below are run against your waves, not the model’s.
Check 1 — the dependency check
☺ Like you’re 10: Go down your list and ask, for every arrow on the map: does this thing arrive before the thing it needs? If not, say out loud what you’re going to do about it.
Take the eleven edges above and, for each, mark one of three outcomes: satisfied (the dependency lands first), inverted and accepted (it lands second, and here is the budget), or broken (you have not decided, which means it will be decided for you at 03:40 on a Sunday). Nine of Brambleside’s eleven edges come out satisfied by any sensible ordering. Two do not — and those two are the whole exercise.
Inversion 1 — ClaimsFeed moves before PIMS-Core
ClaimsFeed reads a nightly billing extract from PIMS-Core. Dependency order says PIMS-Core first. But ClaimsFeed’s Oracle licence renews in month 7, and the whole point of replatforming it off Oracle is to not pay that renewal — so ClaimsFeed has to be in production before the renewal, and PIMS-Core cannot possibly move that early. The dependency loses to the money. Fine — but then write the coupling down:
| Field | Value |
|---|---|
| What crosses the link | One file per night, ~180 MB, pulled at 23:30 from on-prem PIMS-Core into cloud ClaimsFeed over the site-to-site VPN |
| Cost of the crossing | 180 MB at 150 Mbps ≈ 10 seconds of wire time; call it under 2 minutes with overhead and retries |
| The budget | Extract complete and validated by 23:45. Alert the data engineer if not. |
| How long you live with it | About 4 weeks — ClaimsFeed’s cutover in mid-January to PIMS-Core’s in mid-February |
| What ends it | A line in Part 4’s PIMS-Core runbook that repoints the extract source. Miss that line and the claims feed silently stops the night after the crown-jewel cutover. |
Inversion 2 — BramblesideOnline moves before PIMS-Core
The public site writes bookings into PIMS-Core. Same shape, much longer exposure — roughly thirteen weeks from BramblesideOnline’s November cutover to PIMS-Core’s in February. Is that acceptable? Only because of what actually crosses the wire: about 1,400 booking writes a day, each a small API call at human pace, adding perhaps 12–18 ms of VPN round trip. Budget it explicitly — p95 booking confirmation under 800 ms end to end, measured from month 5 — and it holds.
Change one fact and Inversion 2 becomes indefensible: if BramblesideOnline made 200 calls into PIMS-Core per page load instead of a couple per booking, thirteen weeks of cross-link chatter would make the public site visibly slow to every client in the country, and you would have to move it with PIMS-Core in Wave 4 — adding a second system to your hardest cutover night. Tightly-coupled things share a wave; loosely-coupled things may be separated if you write down the price. The difference between those two cases is a measurement, not an opinion — so measure the call volume before you decide, in Wave 0, while it is still cheap to be wrong.
The dependency people forget: the one on the thing being retired
BI-Reports is a Retire, so it is not in any wave. But nine of its forty reports are still used, and those nine read from PIMS-Core, StockCtrl and ClaimsFeed. You cannot rebuild them until all three sources have landed, and you cannot switch off the SSRS server until the rebuilt nine have run clean for at least two report cycles. That drags a Retire all the way to Wave 4’s tail — and it means the evidence work (export the 18-month audit log, get the nine owners to sign, freeze new report development) has to happen back in Wave 1 so nobody is negotiating report ownership in February. A Retire has a lead time and a dependency chain like anything else. It is simply cheaper. Anti-Patterns has the corresponding failure mode: switching a “dead” system off and discovering what it fed.
Check 2 — the capacity check
☺ Like you’re 10: Count how many weeks of people you actually have, then count how many weeks of work you actually planned, then look at which number is bigger. Most plans never do the second count.
This is the check that gets skipped, because it is the one that can tell you the plan is impossible. Do it anyway, in person-weeks, in the open.
Step 1 — what you have
| Period | Weeks | FTE | Person-weeks |
|---|---|---|---|
| Months 1–3 (Jul–Sep) | 13 | 5.0 | 65 |
| Months 4–9 (Oct–Mar), after the leaver | 26 | 4.0 | 104 |
| Gross | 39 | — | 169 |
| Less annual leave, BAU escalations, interrupts — take 15% | — | — | −25 |
| Net available | — | — | 144 person-weeks |
Note what the 15% is not. It is not pessimism; it is the two clinic-rota engineers being pulled to a broken practice-management screen on a Tuesday morning, the December holiday, and the fortnight the migration lead spends on the board pack. If your organisation’s honest figure is 25%, use 25% — but use a figure, and write down which one.
Step 2 — what you planned
Estimate each wave in person-weeks: build, migrate, test, rehearse, cut over, hypercare, document. Then add a line for the work that belongs to no wave — decommissioning, retros, evidence packs, the board reporting. Your own numbers will differ from the model answer’s and that is fine. What is not fine is not producing a number at all.
A wave costs more than the sum of its systems, because the wave itself has overheads that do not scale down: the rehearsal, the comms to 22 clinic managers, the hypercare window, the retro, and the two days somebody spends being wrong about something. This is exactly why Wave Planning’s “two-pizza wave” rule of thumb exists — and it is also why the answer to “we’re slipping, let’s split Wave 3 into two waves” is usually no: you just bought yourself a second set of wave overheads with time you do not have.
Step 3 — subtract, and believe the answer
Available minus demanded. If the result is negative, you have three honest responses and one dishonest one. The honest ones: cut scope, buy capacity, or buy calendar. The dishonest one is to assume everyone works faster under pressure, which is how a migration ends up cutting over its crown jewel on the last available Sunday with no fallback. The model answer below runs a shortfall on the first draft — deliberately, because that is what a first draft does.
A nine-month plan with two person-weeks of float across 144 is not a plan with a small margin; it is a plan that fails the first time anyone is off sick during a cutover week. If your check lands there, say so out loud to the board in month 1 and get the descope ladder pre-authorised — because the difference between “we invoked the agreed contingency” and “we missed the date” is entirely a conversation you either had in July or did not.
Check 3 — the calendar check
☺ Like you’re 10: Draw nine months. Cross out the two weeks at Christmas and the two weeks in March. Now put the moves in what’s left — and notice how much less there is than you thought.
Draw the nine months, then subtract before you add. These dates are given, not negotiable:
| Immovable | When | Effect on the plan |
|---|---|---|
| Programme start | 1 July (month 1) | Wave 0 begins; all three lead-time clocks start in week 1. |
| Platform engineer B leaves | End of month 3 (30 September) | Capacity drops from 5.0 to 4.0 FTE. Anything only they know must be handed over before Wave 2 starts. |
| Oracle non-renewal notice | 30 November — 60 days before the month-7 renewal | A decision date, not a task date. See the trap below. |
| Emergency-cover blackout | 20 December – 3 January | Two weeks removed. Not reduced-change — no change. |
| Oracle licence renews | 31 January (month 7) | ClaimsFeed must be live on its replacement before this, or you pay for another year. |
| Spring vaccination campaign | 9–22 March | Two more weeks removed, from the month you were counting on as contingency. |
| Colo contract ends | 31 March | The eleven colo systems are out, or you are paying 2.4× and explaining why. |
| PIMS-Core’s window | Sundays, 02:00–06:00, never a Monday | Roughly one usable slot per week — and the March blackout deletes two of them. |
Now count the Sundays. Between the New Year and the March blackout there are only about nine of them, and the ones in the first half of January are spoken for by ClaimsFeed’s cutover and PIMS-Core’s rehearsals. You are choosing a crown-jewel cutover date from a shortlist of four or five specific Sundays, and you need at least two of them left over as fallbacks. Work backwards from that and the rest of the calendar arranges itself.
The constraint reads “≤ 4 h, Sunday 02:00–06:00, never a Monday” and the second half is doing more work than the first. Cutting over into Sunday morning gives you one full, low-volume clinic day of real production traffic — real clinicians, real appointments, real image lookups — before Monday, which is the busiest day of the week in all 22 clinics. You get a day of genuine evidence while the cost of being wrong is at its lowest, and a full working day of engineers awake to act on it. A Friday-night cutover, by contrast, buys you two quiet days in which nothing exercises the system and then drops you straight into Monday.
“Oracle renews in month 7” reads like a month-7 problem. It is a month-5 problem, because the non-renewal notice is due 60 days earlier — 30 November. And that means the decision to not renew has to be made before you have finished ClaimsFeed and after only one replatform has been proved. So make BramblesideOnline’s cutover — the other replatform, a smaller one, with the same shape of work — the evidence for that decision, and schedule it in the third week of November so its result is known before the notice is due. That is not calendar tidying; that is one wave’s exit criteria becoming another wave’s go/no-go input. Every contract in the estate has a decision date that is earlier than its expiry date. Find all of them in month 1 and put the decision dates on the calendar, not the expiry dates.
The risk register
☺ Like you’re 10: For each thing that could go wrong: how likely, how bad, what you’ll do about it, who’s in charge, and — the important one — what you’d actually see that tells you to press the undo button.
Six columns. Five of them are the usual ones. The sixth is the one that makes the register useful at three in the morning:
| Column | What goes in it |
|---|---|
| Risk | One sentence, specific enough to be wrong. “The appliance is late”, not “data risk”. |
| Likelihood | L / M / H. Argue about it once, then move on. |
| Impact | L / M / H — and for anything rated H, one clause saying impact on what: the date, the data, the clinics, or the regulator. |
| Mitigation | What you are doing in advance. If it starts with “we would…”, it is not a mitigation, it is a hope. |
| Owner | A role, and one role. Two owners is no owner. |
| Rollback trigger | The observable condition that means stop and reverse. A number and a time, not a feeling. “Replication lag not zero by 03:00” — not “if it looks bad”. |
That last column is the one Best Practices and 🐢 Timmy both refuse to sign a wave without, and it is the reason the Write a Rollback Plan drill exists. A trigger written at 4 p.m. on a Wednesday is a decision. A trigger “decided” at 03:40 on a Sunday, by tired people who have already invested six hours, is 👺 Gizmo leaning over your shoulder saying we’re nearly there, just push through. Two worked rows, so the shape is unambiguous:
| Wave | Risk | L | I | Mitigation | Owner | Rollback / escalation trigger |
|---|---|---|---|---|---|---|
| 0 | The reference lab does not confirm LabBridge’s new egress IP in time | M | H — clinical: lab results stop | Request in week 1 with the exact IP and a named contact; chase at week 4; pre-agree a fallback that keeps LabBridge reachable from the old IP via a retained appliance | Platform engineer A | No written confirmation by the end of month 2 → LabBridge moves out of Wave 2 into Wave 3 and the fallback is costed that week |
| 4 | PIMS-Core cutover overruns the 4-hour window | M | H — 22 clinics open Monday on a half-migrated system | Two full rehearsals in January against a restored copy, timed; validation queries written and expected results known in advance; the rollback path rehearsed, not just documented | Migration lead decides; data engineer executes | Replication lag not zero by 03:00, or any validation query failing at 04:30 → roll back; clinics open Sunday on the old system; retry the following Sunday |
Write six to ten of these, at least one per wave. The full model register is in the answer key below.
The descope ladder — what you cut, and when the option expires
☺ Like you’re 10: Write down, now, which boxes you’d leave behind — because when you’re out of time you won’t be thinking clearly, and some of those choices stop being available months before you need them.
Every constrained plan needs a written answer to “we are three weeks late — what goes?”, and it needs it in month 1. Rank your cuts cheapest-first, and — this is the part almost nobody does — put an expiry date on each rung, because several of them stop being available long before you would think to use them.
The rungs come in four flavours: cut scope (free, costs capability), buy capacity (costs money, needs lead time), buy calendar (costs money, only helps if the date is the binding constraint rather than the people), and break glass. Brambleside’s break-glass rung is the standing temptation from the 7 R’s: Relocate — move the remaining colo VMs wholesale into a cloud VMware service in one bulk operation, no per-application runbooks, and migrate out of it app-by-app over the following year. It beats the date and it is the only rung that can absorb a two-month slip. It also raises the steady-state run-rate that Part 5 has to get back under $42,000/month, which is precisely why it is the last rung and not the default.
The obvious thing to cut in month 7 is ClaimsFeed’s replatform — rehost the Oracle VM as-is, pay one more year of licence, replatform it later, and hand three engineers back to Wave 4. Except you served the non-renewal notice on 30 November, so the licence is gone and the cut is not available. The decision you made in month 5 removed your best option in month 7. That is not a mistake — serving the notice was correct — but it is exactly why the ladder is written in month 1 with expiry dates: so that when you take a rung away from your future self, you do it knowingly.
Show the worked answer — the model wave plan, calendar, capacity maths, risk register and descope ladder
The model plan in one line: Wave 0 builds and posts the letters; Wave 1 pilots on things nobody will miss while the 41 TB starts moving in the background; Wave 2 takes the three awkward singletons while there is still time to be surprised by them; Wave 3 does the two replatforms around the December blackout and hangs the Oracle decision off the first one; Wave 4 moves the crown jewel in February with three fallback Sundays behind it, and March is contingency and decommissioning — not delivery.
Artifact 1 — the wave plan
| Wave | Calendar | Systems (R) | Entry criteria | Exit criteria | Rollback owner |
|---|---|---|---|---|---|
| 0 · Foundation | Months 1–2 Jul–Aug | Nothing moves. Landing zone, VPN, cloud domain controllers, address plan, four guardrails. Three lead-time clocks started in week 1. | Part 2 design signed off by the board sponsor and the clinical systems lead | Test VM authenticates against Brambleside AD and resolves DNS both ways; lab has confirmed the egress IP in writing; appliance has a delivery date; both SaaS vendors contracted with residency evidence; PrintSrv’s post-March home confirmed by the room owner; tagging, budget alerts, encryption and central logging all on | Platform engineer A |
| 1 · Pilot & seed | Months 2–3 Aug–Sep | DevTest (Rehost 5, Retire 6), VetLearn (Repurchase), RotaMaster (Repurchase). Plus: BI-Reports evidence pack — audit-log export, nine report owners signed, new report development frozen. Plus: ImageVault appliance seed begins in month 2. | All Wave 0 exit criteria true. Platform engineer B’s handover documented and reviewed. | Rota and CPD data reconciled row-for-row against the source and signed by the service desk lead; six DevTest VMs powered off and their storage released; ImageVault seed verified in the cloud and one-way sync running with lag under 2 h | Apps engineer |
| 2 · The awkward singletons | Months 4–5 Oct–Nov | LabBridge (Rehost), StockCtrl (Rehost), FileShare (Rehost hot ~3.7 TB, Retire cold ~2.5 TB) | Lab’s written IP confirmation in hand; compliance sign-off pack drafted for the controlled-drug register; FileShare file-rate measured on a 50,000-file sample before the wave starts | Lab results flowing through the new egress IP for 10 consecutive nights; controlled-drug register hash-manifest matches before and after; FileShare cutover complete with permissions verified on a sampled 1,000 files | Data engineer |
| 3 · The replatforms | Months 5–7 Nov–Jan | BramblesideOnline (Replatform, MySQL 5.7 → managed MySQL 8) — third Sunday of November. AshBook (Rehost, cloud-to-cloud) — early December. ClaimsFeed (Replatform, Oracle 12c → managed PostgreSQL) — mid-January. | Wave 2 exited. Landing zone proven under real user traffic. Both accepted inversions documented with budgets and monitoring in place. | BramblesideOnline live inside its 2 h window with p95 booking confirmation under 800 ms; Oracle non-renewal notice served on 30 November on the evidence of that cutover; ClaimsFeed producing a validated nightly claims file for 5 consecutive nights before 31 January | Apps engineer (web); data engineer (databases) |
| 4 · The crown jewels | Months 7–8 Jan–Feb | PIMS-Core (Rehost, 4 VMs + SQL cluster) and the ImageVault path flip — cutover on the third Sunday of February, 02:00–06:00. Tail: rebuild BI-Reports’ nine survivors, prove for two report cycles, switch off SSRS. | Two timed rehearsals completed in January against a restored copy; ImageVault delta lag under 2 h for 14 consecutive days; validation queries and expected results written and reviewed; comms plan agreed with all 22 clinic managers and the emergency hospital | PIMS-Core live inside 4 h with validation passed; ImageVault reads served from the cloud path with the on-prem NAS demoted to read-only; nine reports running clean; ClaimsFeed’s extract source repointed and verified the same night | Migration lead decides; data engineer executes |
| Contingency & exit | Month 9 Mar | Fallback Sunday available in the first week of March. Then: decommission the colo, capture evidence, cancel licences, close the contract. | Wave 4 exited, or a fallback Sunday invoked | Colo empty and contract closed by 31 March. Blackout 9–22 March respected. Retro written. | Migration lead |
Artifact 2 — the nine-month calendar
| # | Month | What runs | Locked dates |
|---|---|---|---|
| 1 | July | Wave 0 build. Week 1: appliance ordered, lab IP request sent, both SaaS vendors engaged. Contract-decision dates mapped. Descope ladder written and pre-authorised by the board. | Programme starts 1 Jul |
| 2 | August | Wave 0 exits. Wave 1 starts: DevTest, BI-Reports evidence pack. ImageVault appliance seeding begins. | Appliance on site ~1 Aug |
| 3 | September | Wave 1 finishes: VetLearn and RotaMaster live on SaaS. ImageVault seed verified in cloud; one-way sync on and monitored. | Platform engineer B leaves 30 Sep |
| 4 | October | Wave 2: LabBridge, then StockCtrl. FileShare file-rate sample measured. Capacity now 4.0 FTE. | — |
| 5 | November | Wave 2 finishes: FileShare. Wave 3 starts: BramblesideOnline cutover, third Sunday. Oracle decision taken on its evidence. | Oracle non-renewal notice due 30 Nov |
| 6 | December | AshBook consolidation, early December. Wave 4 build begins. Everything stops on the 20th. | Blackout 20 Dec – 3 Jan |
| 7 | January | ClaimsFeed cutover, mid-month. Two PIMS-Core rehearsals. The busiest month of the plan and the one with the least float — this is the register’s top programme risk. | ClaimsFeed live before 31 Jan, when the Oracle licence lapses |
| 8 | February | PIMS-Core + ImageVault path flip — third Sunday, 02:00–06:00. Hypercare. BI-Reports survivors rebuilt and proved; SSRS off. | Fallback Sundays: fourth in Feb, first in Mar |
| 9 | March | Last fallback Sunday in week 1. Then decommission Fort Rusty’s colo racks, capture evidence, cancel licences, exit the contract. | Blackout 9–22 Mar · colo empty 31 Mar |
Two features of this calendar are the answer, not decoration. First, delivery finishes in month 8, not month 9 — March is contingency and decommissioning, because a plan whose last cutover is on the last available weekend has no plan at all. Second, the crown jewel has three shots: the third Sunday of February, the fourth, and the first Sunday of March — after which the vaccination blackout closes the door.
Artifact 3 — the capacity check, worked
| Line | Person-weeks |
|---|---|
| Available, gross (65 + 104) | 169 |
| Less leave, BAU and interrupts at 15% | −25 |
| Net available | 144 |
| Wave 0 — foundation, connectivity, identity, guardrails, lead-time chasing | 18 |
| Wave 1 — pilot, two SaaS migrations, BI evidence pack, appliance seed | 22 |
| Wave 2 — LabBridge, StockCtrl (with compliance), FileShare (1.1 M files) | 30 |
| Wave 3 — two replatforms plus AshBook, across a blackout | 38 |
| Wave 4 — PIMS-Core, ImageVault flip, two rehearsals, BI rebuild | 34 |
| No-wave work — decommissioning, retros, evidence, board reporting | 12 |
| Demanded, first draft | 154 |
| Shortfall | −10 |
The first draft does not fit, and that is the expected outcome. Three cuts made in month 1, not month 7, close it: defer FileShare’s cold-40% archive cleanup to Part 5 (−4); buy four weeks of a migration partner for the FileShare bulk copy, which is pure grind and needs no Brambleside context (−6); retire six DevTest VMs instead of four (−2). Demand becomes 142 against 144 available.
And then say the honest thing out loud: two person-weeks of float across nine months is 1.4%, which is not slack. The correct response is not to re-estimate until the number looks better. It is to take that figure to the board in month 1, get the descope ladder pre-authorised, and agree that any wave running more than three weeks late triggers the next rung that week.
Artifact 4 — the risk register
| Wave | Risk | L | I | Mitigation | Owner | Rollback / escalation trigger |
|---|---|---|---|---|---|---|
| 0 | Reference lab does not confirm the new egress IP in time | M | H — clinical | Request week 1 with exact IP and named contact; chase week 4; retained-appliance fallback pre-costed | Platform eng A | No written confirmation by end of month 2 → LabBridge slips to Wave 3, fallback costed that week |
| 1 | Appliance is late, damaged, or fails verification | M | H — date | Order week 1; request two units; verify checksums before shipping back; monitor ingest daily | Data engineer | Seed not verified in cloud by end of month 4 → switch to online seed and accept it saturating the link, or invoke ladder rung 4 |
| 1 | RotaMaster’s data export is incomplete — Classic ASP, no source control, no one who wrote it | H | M — staff rota | Export twice, two weeks apart, reconcile row counts; keep the old VM powered but read-only for 60 days | Apps engineer | Any unreconciled rota row after the second export → users revert to the read-only original and re-export |
| 2 | FileShare copies at file-count speed, not byte speed — 1.1 M files, per-file round trips and ACL enumeration | H | M — date | Measure files/sec on a 50,000-file sample in month 3, before the wave; parallelise by top-level folder; retire the cold 40% first so you copy 3.7 TB not 6.2 TB | Data engineer | Measured rate implies more than 3 weeks of copying → invoke ladder rung 2 (partner weeks) immediately |
| 2 | The controlled-drug register cannot be proved intact after the move | L | H — regulator | Hash-manifest the register before and after; compliance sign-off is an exit criterion, not a nice-to-have | Clinical systems lead | Any hash mismatch → stop, do not decommission the source, escalate to compliance the same day |
| 3 | Notice served on Oracle but ClaimsFeed slips past 31 January | M | H — date and money | Hang the 30 November decision on BramblesideOnline’s November cutover; hold two weeks of float before the licence lapses | Migration lead | ClaimsFeed not in production by 18 January → escalate to the Oracle account team that week and negotiate a wind-down tail; do not wait for the 31st |
| 3 | Change-freeze creep — clinics push the December blackout back to 15 December | M | M — date | Agree the exact freeze boundary in writing in month 1, with the clinical director, not in December with 22 clinic managers | Service desk lead | Any request to extend the freeze → the wave it displaces is named and rescheduled the same week, in writing |
| 4 | PIMS-Core cutover overruns the 4-hour window | M | H — 22 clinics | Two timed rehearsals in January against a restored copy; validation queries and expected results written in advance; rollback rehearsed, not just documented | Migration lead decides; data engineer executes | Replication lag not zero by 03:00, or any validation query failing at 04:30 → roll back, clinics open Sunday on the old system, retry the following Sunday |
| 4 | ImageVault delta sync falls behind, so the path flip exposes missing recent studies | L | H — clinical | Nightly delta is ~30 GB against ~540 GB of nightly capacity — an 18× margin; monitor lag daily from month 3 and alert above 2 h | Data engineer | Lag above 24 h on two consecutive days → pause the flip, re-seed the gap, re-verify before rescheduling |
| All | The 31 March stop is missed | L | Severe — contractual | The descope ladder below, agreed and signed by the board in month 1, not month 8; wave status reported against it every fortnight | Migration lead + board sponsor | Any wave more than three weeks late → the next available ladder rung is invoked that week, not next month |
Artifact 5 — the descope ladder, with expiry dates
| Rung | Cut | Buys | Costs | Expires |
|---|---|---|---|---|
| 1 · cut scope | Drop the AshBook consolidation to the Part 5 roadmap | ~6 person-weeks | Nothing financial — Ashcombe stays un-integrated another year | Never. Always available. |
| 2 · buy capacity | Migration partner for FileShare’s bulk copy and the DevTest rehosts — the two packages that are pure grind and need no Brambleside context | ~10 person-weeks | Contractor cost; 3–4 weeks of lead time to onboard | Useless after mid-January — nobody new can learn PIMS-Core in time |
| 3 · cut scope | Do not serve the Oracle non-renewal notice; rehost the Oracle VM as-is and replatform ClaimsFeed in the Part 5 roadmap | ~14 person-weeks | One more year of Oracle licence | 30 November. After the notice is served, this rung is gone. |
| 4 · buy calendar | Take the three-month colo extension at 2.4× — $33,120/month against $13,800 | Up to 3 months of calendar | About +$19,320/month for up to three months | Depends on the colo’s own notice period — find that date in month 1 |
| 5 · break glass | Relocate the remaining colo VMs wholesale into a cloud VMware service, then migrate out app-by-app over the following year | The date. It is the only rung that absorbs a two-month slip. | The highest steady-state run-rate of any option — it pushes Part 5’s $42,000/month target out and defers, rather than removes, all the per-app work | Needs ~6 weeks to stand up — so it expires around mid-February |
The month-7 answer, for real. Three weeks late in January: rung 1 is likely already taken, rung 3 expired on 30 November, rung 2 is only good for the FileShare tail. What is genuinely left is rung 4 — buy the colo extension — combined with reducing Wave 4 to PIMS-Core alone and deferring the ImageVault path flip behind a temporary read-back path, which the extension is exactly what makes possible. Rung 5 sits behind that. Notice that the answer at month 7 is mostly determined by decisions taken in months 1 and 5. That is the point of writing the ladder in July.
What “done” looks like for Part 3, and where Part 4 picks up
☺ Like you’re 10: Four things you can point at and check yourself, without anybody marking it.
Part 3 is done when all four of these are objectively true of your plan, not the model’s:
- Every one of the eleven moving systems appears in exactly one wave. Not zero, not two. Count them.
- No dependency is violated. Every edge is either satisfied by the ordering, or inverted and accepted with a written budget — a volume, a latency, a duration, and who watches it.
- The plan fits the calendar with the blackouts removed. No cutover falls in 20 December – 3 January or 9–22 March, PIMS-Core has a Sunday 02:00–06:00 slot with at least two fallbacks before the March blackout, and the last colo system is out before 31 March.
- You have written down what you would cut first if you were three weeks late in month 7 — with an expiry date on each rung, and knowing which rungs your own earlier decisions have already removed.
| Part | What it does with Part 3’s artifacts |
|---|---|
| 4 — The Data Move & the Cutover Runbook | Takes Wave 4 — PIMS-Core plus the ImageVault path flip — and writes it minute by minute inside the 4-hour window this plan chose, with the validation, the go/no-go gate and the rollback. The appliance arithmetic above is where Part 4 starts. |
| 5 — Operate, Optimize & Modernize | Inherits every “defer to Part 5” in this plan — FileShare’s cold archive, BackupVault’s 7-year obligation, AshBook’s consolidation, PIMS-Core’s eventual Repurchase — and has to get the run-rate back under $42,000/month with all of it on the list. |
| Drills | Size the Data Move drills the arithmetic behind ImageVault’s appliance decision. Write a Rollback Plan drills the register’s trigger column. Pick the Right R drills the dispositions this plan is sequencing. |
Foxy: Four waves, nine months. Why not three waves and finish in February with time to spare?
Nutty the Squirrel: Because a wave costs more than the things in it. Merge two and you save one set of overheads but you double the blast radius of one bad night — and you still can’t move PIMS-Core before the archive is seeded.
Benny the Beaver: And I need the pilot. DevTest has no users and no dependencies — that’s the wave where I find out my runbook is wrong for free.
Gizmo the Gremlin: Or skip the maths! Six people, nine months, that’s loads. Just work a few weekends in March.
Nutty: It’s not six people, Gizmo. Two are on the clinic rota and one leaves in September. It’s a hundred and forty-four person-weeks, and the first draft wanted a hundred and fifty-four. I’d rather know that in July.
Ellie the Elephant: And the forty-one terabytes go on the appliance in August. Not because anything needs them in August — because nothing should ever be waiting on my copy job.
Timmy the Turtle: Every wave has a rollback owner and a trigger with a clock on it. “Lag isn’t zero by three” is a decision. “It feels a bit slow” at half three in the morning is Gizmo talking.
Gizmo: …fine. But when you’re late in January, you’ll wish you’d kept the Oracle licence.
Nutty: We knew that in July. It’s rung three of the ladder, and it expires on the thirtieth of November. That’s why we wrote it down.
Milestones
☺ Like you’re 10: Tick each box only when the thing is actually written down in your own sheet — not when you’ve decided it in your head.
Work these in order — each check is run against the plan the one before it produced. Progress saves in this browser.
(1) Why must ImageVault’s 41 TB be seeded in month 2 when PIMS-Core does not cut over until month 8 — and what are the two specific bad outcomes of getting that order wrong? (2) Two of Brambleside’s dependency edges are inverted by this plan. Name them, and say what has to be written down for an inversion to be acceptable rather than reckless. (3) The team is six people over nine months. Why is 144 the right number of person-weeks and not 234? (4) “The Oracle licence renews in month 7.” Why is that a month-5 problem, and what does that fact do to your descope ladder? (5) The plan finishes delivery in month 8 with month 9 empty. Give two independent reasons that is correct rather than lazy.
Check your answers
- Because the copy takes 25.3 days flat out — 41,000 GB at 67.5 GB/hour on the 150 Mbps sustainable rate — or about 76 nights if you only use the 22:00–06:00 window, and you do not control when it finishes. Seed it early by appliance, keep the on-prem NAS authoritative with one-way sync, flip the path last. The two bad outcomes: either PIMS-Core cuts over first and reads 41 TB back across the link for four months, so every clinician opening an X-ray waits on a 40 km round trip; or the whole schedule becomes hostage to one copy job. A copy that starts six months early is not on the critical path.
- ClaimsFeed before PIMS-Core (it reads the nightly billing extract, but its Oracle licence clock forces it earlier) and BramblesideOnline before PIMS-Core (its booking writes go into PIMS-Core, but it is the evidence for the 30 November Oracle decision). An inversion is acceptable only when four things are written down: what crosses the link (180 MB nightly; ~1,400 booking writes/day), the budget (extract validated by 23:45; p95 booking confirm under 800 ms), how long you live with it (about 4 weeks; about 13 weeks), and what ends it — a named line in Part 4’s runbook that repoints the source. Without those, it is not an accepted coupling, it is an undiscovered outage.
- Because six names is not six FTE and nine months is not nine months of delivery. Two of the six are on the clinic support rota at 0.5 each, and one full-timer leaves at the end of month 3 — so it is 5.0 FTE for 13 weeks (65 person-weeks) and 4.0 FTE for 26 weeks (104), giving 169 gross. Then subtract a stated overhead for leave, BAU escalations and board reporting — 15% here, −25 — leaving 144 net. The 234 figure (6 × 39) is the number that makes plans fail, because it assumes nobody is ever pulled away and nobody ever leaves.
- Because the non-renewal notice is due 60 days before the renewal — 30 November. The decision date, not the expiry date, is what belongs on the calendar, and it forces BramblesideOnline’s cutover into the third week of November so its result can be the evidence for that decision. The effect on the ladder is that rung 3 — “don’t serve the notice, rehost Oracle as-is, replatform later” — expires on 30 November. Serving the notice was correct, but it knowingly removes your best month-7 option, which is exactly why the ladder is written in month 1 with expiry dates against every rung.
- First, the crown jewel needs fallbacks. PIMS-Core cuts over on the third Sunday of February so the fourth Sunday of February and the first Sunday of March are still available; a plan that cuts over on the last usable weekend has no plan at all. Second, month 9 is not actually empty — it holds the 9–22 March blackout, which deletes half of it, plus decommissioning the colo racks, capturing evidence, cancelling licences and closing the contract by 31 March. Delivery and exit are different work, and the exit is contractual.
Part 3 turned a disposition matrix and a landing zone into something with dates, owners and triggers on it — and, more usefully, into a written answer for the week it starts going wrong. Continue to Capstone Part 4 — The Data Move & the Cutover Runbook, which takes Wave 4 and writes the hardest four hours of this plan minute by minute. Step back to Part 2 — The Landing Zone if Wave 0’s exit criteria felt thin, or to Move Brambleside — Start Here for how the five parts fit together. For the theory underneath this page: Wave Planning for the grouping craft, The Journey for where Mobilize sits, Anti-Patterns for big bang and the missing rollback, and Best Practices for piloting small and always keeping a way back.