Capstone Part 1 — Discovery & the Disposition Matrix
This is the first of five parts that plan and run one whole migration: getting Brambleside Veterinary Group — 22 clinics, one emergency hospital, 16 systems, and a colo contract that expires in nine months — out of Fort Rusty and into Cloudville. Part 1 is the part everybody wants to skip, and it is the part that decides whether the other four are calm or frightening. You will count the estate, draw what depends on what, decide what doesn’t move before you argue about anything else, and then give all 16 systems exactly one of the 7 R’s — each with a one-sentence reason and, crucially, the one fact that would flip it. Nothing here needs a cloud account. It needs a spreadsheet and about two focused hours.
Imagine a family with nine months to move out of a big old house. Before anyone touches a box, someone walks every room with a notepad and writes down two things for each object: what is it plugged into? and do we even want it? The bin bags and the “leave it in the garage for now” pile get filled first, because those things cost nothing to move — you don’t move them. Only then do you decide, for everything that’s left, whether to carry it as-is, buy a new one, or tweak it to fit. That notepad is the disposition matrix, and this page is you filling it in.
Starting: nothing but the raw estate below — an inventory somebody typed up, a list of constraints, and a deadline. No decisions have been made. No R has been assigned. Nobody has drawn the dependency map yet, and nobody has checked whether anything on the list is still in use. Leaving this page: a dependency edge list for all 16 systems; a criticality-and-tolerance pass that says how long each one may be down and when; a 16-row disposition matrix where every row carries an R, a one-sentence rationale, and the single fact that would change the answer; a written, costed verdict on the Relocate temptation; and a rationalization tally showing how much smaller the estate got before a single box moved. Part 2 picks up from that matrix and designs the place all of it lands in.
What this part assumes, and what it produces
☺ Like you’re 10: A spreadsheet, a pen, and two hours. Nothing that costs money.
Tools you need: a spreadsheet and a text editor. That is the whole list. This is a planning-and-decision lab, and disposition is genuinely done in a spreadsheet — in real programmes it is done in a spreadsheet even when a six-figure discovery tool is also running, because the tool produces data and the spreadsheet is where the argument happens. You do not need a cloud account, a credit card, or any provisioned infrastructure for any part of this capstone.
Tools you may reach for, but must not depend on: if you happen to have a free-tier or read-only look at AWS Application Discovery Service, Azure Migrate, or Google Cloud Migration Center, open one and look at the shape of its inventory and dependency output — the column headings alone are instructive, because they are the columns a real assessment produces. See The Tools Landscape for what each one does. Nothing below requires them.
Theory this part is built on — skim any of these you haven’t read, or keep them open in a tab:
| Read | For |
|---|---|
| The 7 R’s (primary) | What each R means, what it costs, and the decision criteria per app |
| The Journey — Process & Frameworks | Stop 1 — Assess: discovery, dependency mapping, portfolio assessment |
| What & Why We Move | TCO and the business case — the language the board reads your matrix in |
| Cloud-to-Cloud, Hybrid & Repatriation | The two Ashcombe rows, which are already in somebody else’s cloud |
| Anti-Patterns & Pitfalls | “Migrating the junk” and “skipping discovery” — the two traps this page exists to prevent |
What you produce: three artifacts, in this order — a dependency edge list, a 16-row disposition matrix, and a rationalization tally. Part 2 cannot start without the matrix, and Part 3’s wave plan is checked directly against the edge list, so these are not throwaway exercises.
Brambleside Veterinary Group does not exist. Its sizes, rates, utilisation figures and currency amounts were made up to make the exercise bite, and they are internally consistent with each other and with nothing else. Real cloud prices change monthly and vary by region, commitment and negotiation — the skill being practised is the method, not the number. Never carry a figure from this page into a real business case; carry the working.
The estate you’re moving — Brambleside Veterinary Group
☺ Like you’re 10: Twenty-two animal hospitals, one big computer room that’s closing, and sixteen computer systems that all need somewhere to go.
The canonical fact sheet lives on the hub, Move Brambleside — Start Here. Part 1 is the discovery part, so the whole of it is repeated here — every later part will only restate the three or four rows it needs.
The company
Brambleside Veterinary Group runs 22 small-animal clinics plus one 24-hour emergency hospital, all in a single country. Around 600 staff. Founded 1987. In 2023 it acquired Ashcombe Vets (3 clinics), which was never integrated — Ashcombe still runs its own booking site and its own tenant of the same practice-management software. IT is five people. The migration team is six, and one of the six leaves at month 3.
Fort Rusty
VMware vSphere 7 across 8 hosts, split between a converted server room at the flagship clinic and 8 racks in a colocation facility 40 km away. The flagship server room’s air conditioning has failed twice this year. This matters more than it looks: anything you decide to Retain has to be able to live at the flagship, because the colo is what’s closing.
The clock, the blackouts, and the money
| Constraint | The detail | What it actually does to your plan |
|---|---|---|
| The colo contract ends 31 March | Nine months out. No renewal offered beyond a three-month month-to-month extension at 2.4× the current rate. | A hard stop, not a target. Everything in the colo is out by then or it costs $33,120/month to stay. |
| Blackout window 1 | The two-week spring vaccination campaign, mid-March. | Removes the two weeks immediately before the deadline. The schedule is nine months minus two weeks, at the worst possible end. |
| Blackout window 2 | 20 Dec – 3 Jan emergency-cover period. | Removes a fortnight from the middle. |
| Downtime tolerance | PIMS-Core ≤ 4 h, Sunday 02:00–06:00 only, never a Monday (clinics’ busiest day). BramblesideOnline ≤ 2 h. ClaimsFeed may miss one night. ImageVault reads must never break. | Four hours on a Sunday is the tightest window in the estate, and it belongs to the biggest system. |
| Data residency | Board policy: client and clinical data stays in-country, including the DR region. | Constrains region choice and rules out some SaaS options outright. Check it per row. |
| Card data | Payments are taken by redirect to the processor’s hosted page. No cardholder data touches a Brambleside system. | Keeping it that way is the cheapest correct answer. Any R that changes it drags a compliance programme into a nine-month move. |
| Retention | Controlled-drug register: 7 years. Finance backups: 7 years. | Two obligations that outlive the data centre and must be re-homed, not migrated. |
| Network | Clinics 10.20.0.0/16, colo 10.30.0.0/16. Ashcombe uses 10.0.0.0/16 — which is also the default VPC/VNet CIDR of every cloud console. | A collision waiting to happen. Part 2 defuses it; note it here so it’s in the record. |
| Transfer capacity | The colo circuit is 500 Mbps but contractually shared. Brambleside can sustain at most 150 Mbps without burst charges — and the imaging archive must stay readable throughout. | Part 4’s arithmetic. For now it just means “the 41 TB is not going over the wire casually.” |
| The money | Current run-rate $42,000/month: colo $13,800 · flagship server room $2,400 · licensing amortised $16,300 · refresh fund and support $9,500. | The board’s condition is that the post-migration steady-state run-rate is no worse than this. Part 5 has to prove it. |
The inventory — 14 Brambleside systems and 2 Ashcombe systems
This is what the outgoing infrastructure lead typed up before he went on leave. It has not been verified. It is the honest starting point of most real migrations.
| # | System | What it does | Runs on | Data | Users / criticality | The awkward fact |
|---|---|---|---|---|---|---|
| 1 | PIMS-Core | Practice management — appointments, clinical notes, billing | Vendor product; 4 × Windows Server 2016 + a SQL Server 2016 Enterprise cluster | 1.9 TB | Every clinician, every minute, in every clinic | The vendor now sells a hosted SaaS edition of the same product. |
| 2 | ImageVault | X-ray and ultrasound archive, unbroken since 2004 | Aging NAS in the colo | 41 TB, growing ~900 GB/month | Read constantly during consults; reads must never break | PIMS-Core references it by UNC path. 78% of studies untouched in 24 months. |
| 3 | LabBridge | Polls the external reference lab for test results | 1 small VM, IPsec VPN to the lab | < 5 GB | Results flow into clinical records daily | The lab allow-lists one fixed public IP. Changing it is their change-control, not yours. |
| 4 | BramblesideOnline | Public site, online booking, repeat prescription requests | 2 VMs + MySQL 5.7, behind an on-prem load balancer | 90 GB | Clients; the front door of the business | MySQL 5.7 is out of support. That’s true whether you migrate or not. |
| 5 | RotaMaster | Staff rota and shift swaps | Classic ASP on Windows Server 2012 R2 | 12 GB | ~90 weekly users | Written in 2011 by someone who left in 2015. No source control. No tests. No one knows how it works. |
| 6 | ClaimsFeed | Nightly insurance claims batch, delivered by SFTP | Oracle Database 12c Standard Edition | 280 GB | Finance; may miss one night without harm | The Oracle licence renews in month 7. |
| 7 | StockCtrl | Consumables stock plus the controlled-drug register | Vendor app on SQL Server (Standard) | 140 GB | Every clinic, daily; the CD register is a legal record | Fully supported, and the vendor explicitly supports cloud hosting. 7-year register retention. |
| 8 | FileShare | General staff file server | Windows file server | 6.2 TB across 1.1 million files | All staff, all day | 40% of it untouched in 5 years. The file count, not the size, is the constraint. |
| 9 | BackupVault | Backup server plus an LTO tape library | On-prem, colo rack | Tapes on rotation | Nobody, until the day somebody needs a restore | Holds the 7-year finance retention. The obligation outlives the data centre. |
| 10 | AD-DC01 / DC02 | Active Directory, DNS, DHCP | 2 VMs, one at the flagship, one in the colo | < 5 GB | Everything authenticates here | Almost everything else on this list authenticates against it. It points at nothing. |
| 11 | PrintSrv | Dispensing-label printers across 22 clinics | 1 VM at the flagship | < 5 GB | Every dispensed medicine gets a label | Latency-sensitive and physically tied to printers in 22 buildings. |
| 12 | BI-Reports | SSRS — 40 scheduled reports | 1 VM + SSRS | 400 GB | Claimed “business-critical” by three departments | The execution log proves 31 of the 40 haven’t been opened in 18 months. |
| 13 | VetLearn | Internal CPD (continuing professional development) portal | 1 VM | 220 GB | All clinical staff, occasionally | A vendor SaaS equivalent costs less per year than running this VM. |
| 14 | DevTest | Development and test environments | 11 VMs, running 24×7 | ~1 TB total | 6 IT staff | 4% average CPU. Nobody has switched one off since 2019. Four have had no login in 12 months. |
| A1 | AshBook | Ashcombe’s online booking site | Already running in a public cloud | 30 GB | Ashcombe’s 3 clinics | Not in Fort Rusty at all. Not affected by the colo deadline. |
| A2 | Ashcombe PIMS | Practice management for the 3 Ashcombe clinics | Same vendor as PIMS-Core, separate vendor-hosted tenant | 300 GB | Ashcombe clinicians | Consolidating two clinical record systems is a patient-safety project, not an IT task. |
Add it up and the estate holds roughly 50 TB of data, of which 41 TB is one archive. Hold that number; Part 4 does arithmetic with it.
Step 1 — Draw the dependency map before you touch the R column
☺ Like you’re 10: Before you decide which box goes where, find out which boxes have wires running between them. The wire you don’t know about is the one that snaps.
An inventory is a list. A dependency map is a list plus the edges between the items, and it is the edges that constrain everything downstream. Wave Planning puts it bluntly: you can’t batch what you haven’t mapped. Do this before you assign a single R, because half the R decisions are made for you by an edge you hadn’t noticed.
Write it as a flat edge list, not a diagram. Diagrams are for the steering committee; edge lists are what you can actually check a wave plan against, row by row, in Part 3.
# dependency-map.txt — one edge per line
# FROM -> TO | kind | frequency | what breaks if the edge stretches
PIMS-Core -> ImageVault | SMB/UNC path | every study opened | consults get slow, then fail
PIMS-Core -> AD-DC | Kerberos auth | constant | nobody can log in
PIMS-Core -> PrintSrv | print queue | every dispense | no dispensing labels
BramblesideOnline-> PIMS-Core | booking API | constant | online booking stops
BramblesideOnline-> MySQL 5.7 (own) | database | constant | site down
LabBridge -> external lab | IPsec, ONE allow-listed public IP | 15 min poll | results stop arriving
LabBridge -> PIMS-Core | writes results into the record | 15 min | results arrive nowhere
ClaimsFeed -> PIMS-Core | nightly billing extract | 1x/night | claims batch is empty
ClaimsFeed -> insurer SFTP | outbound batch | 1x/night | claims not submitted
StockCtrl -> AD-DC | auth | constant | no stock system
StockCtrl -> PrintSrv | dispensing labels | every dispense | as above
RotaMaster -> AD-DC | auth | constant | no rota
VetLearn -> AD-DC | auth | daily | no CPD portal
FileShare -> AD-DC | share ACLs | constant | permissions collapse
BI-Reports -> PIMS-Core (SQL) | scheduled read | nightly | 9 real reports go stale
BI-Reports -> StockCtrl (SQL) | scheduled read | nightly | as above
BackupVault -> (everything) | backup agents | nightly | no recovery point
DevTest -> AD-DC | auth | constant | dev logins fail
AshBook -> Ashcombe PIMS | booking API | constant | Ashcombe booking stops
AshBook -> (nothing at Brambleside) | — | — | this is a finding, not an omission
Now read the list back and answer three questions from it. These are the questions the edge list exists to answer, and every one of them changes an R:
| Question | What the edge list says | What it forces |
|---|---|---|
| What is the root? | AD-DC. Six systems point straight at it, a seventh (BackupVault) reaches it through its -> (everything) edge, and it points at nothing. | Identity is a Wave 0 problem. You don’t “migrate AD in wave 3” — you extend the directory before anything else moves, and Part 2 owns that decision. |
| What is the hub? | PIMS-Core, with seven edges — three out and four in. It is the crown jewel and the most-connected node at once. | Crown jewels move last, when the team is practised — but its edges have to have landed first, which is what makes the calendar tight rather than merely long. |
| What are the leaves? | VetLearn, DevTest, RotaMaster and BI-Reports. Nothing at all points at them, and what they point at is only the directory — plus, for BI-Reports, two read-only nightly queries. | Leaves are your pilot candidates. Part 3 will need one, and it should be a leaf you can roll back without telling a single clinician. |
PIMS-Core -> ImageVault is a UNC path, not an API. That means the coupling is a literal string — \\imagevault\studies\... — stored in a vendor product’s configuration and probably also baked into 20 years of database rows. A dependency expressed as an address is worse than one expressed as a service, because you can’t redirect it without either preserving the address or rewriting the data. This single line is the reason ImageVault can’t be treated as “just 41 TB of files,” and the reason Part 3 has to seed that archive months before PIMS-Core cuts over.
Step 2 — Criticality and downtime tolerance, before opinions
☺ Like you’re 10: For each thing, ask “if this broke right now, how long before somebody is really upset?” Write down the answer in hours, not adjectives.
Everyone will tell you their system is critical. The way through that is to stop asking for adjectives and start asking for two numbers: how long may it be down, and when is it allowed to be down. Those two, and not the word “critical,” are what constrain the plan — and they are the RTO conversation from Best Practices arriving early, where it’s cheap.
| System | Tier | Downtime tolerance | Permitted window | How you know (evidence, not assertion) |
|---|---|---|---|---|
| PIMS-Core | 0 | ≤ 4 h | Sunday 02:00–06:00 only, never a Monday | Board-set. Clinics’ busiest day is Monday. |
| ImageVault (reads) | 0 | 0 for reads; writes may queue | None — no read outage is permitted | A vet opening an X-ray mid-consult cannot wait. |
| AD-DC | 0 | ~0 (redundant pair, tolerate one) | Rolling only | Six systems authenticate directly against it; the backup agents make a seventh. |
| BramblesideOnline | 1 | ≤ 2 h | Any low-traffic night | Board-set. |
| PrintSrv | 1 | ≤ 1 h during clinic hours | Out of hours | No labels means no dispensing. |
| StockCtrl | 1 | ≤ 8 h with a paper CD register as fallback | Weekend | Existing documented fallback procedure. |
| LabBridge | 1 | ≤ 12 h (one polling cycle skipped) | Overnight | Lab batches results; a missed poll catches up. |
| BackupVault | 1 | No outage window — restore capability must be continuous | n/a | Retention obligation is legal, not operational. |
| ClaimsFeed | 2 | May miss one night | Any night | Board-set; insurer accepts a next-day batch. |
| RotaMaster | 2 | ≤ 2 days | Any | Rota is published weekly; a printed copy exists. |
| FileShare | 2 | ≤ 1 working day | Weekend | Helpdesk history: no P1 ever raised against it. |
| BI-Reports | 3 | ≤ 1 week | Any | SSRS execution log — see below. |
| VetLearn | 3 | ≤ 1 week | Any | CPD deadlines are annual. |
| DevTest | 3 | ≤ 1 week | Any | 4% average CPU. |
| AshBook / Ashcombe PIMS | 1 | Out of scope this round | — | Not in Fort Rusty; not on the colo clock. |
“Business-critical” is a claim. An audit log is evidence. BI-Reports is declared business-critical by three departments and its own execution log says 31 of its 40 reports have not been opened in eighteen months. When a claim and a log disagree, the log wins — and your job in the meeting is not to win an argument, it’s to put the log on the screen and let it do the work.
Step 3 — Retire and Retain, before any other R
☺ Like you’re 10: Fill the bin bags and the “leave it in the garage” pile first. Every box you don’t carry is a box you never have to carry, unpack, or pay rent on.
This is the discipline you will resist, and it is the single highest-return half hour on this page. The 7 R’s makes the point in one line: the cheapest migration is the one you skip. So before anybody argues about whether PIMS-Core should be Rehosted or Repurchased — which is a genuinely hard argument that will eat an afternoon — do two fast, evidence-led passes that shrink the problem.
The Retire pass — what should simply stop existing?
Retire needs evidence, never intuition, because Retire is the only irreversible R. For each candidate, name the artefact that proves nobody needs it:
- BI-Reports’ 31 dead reports — the SSRS execution log. Not “I think nobody runs these.” The log, exported, dated, and attached to the matrix.
- FileShare’s cold 40% — last-access timestamps across 1.1 million files. That’s ~2.5 TB that stops travelling.
- 4 of the 11 DevTest VMs — no interactive login in 12 months, per the domain controller’s logon audit.
- BackupVault, the product — the cloud has native backup. What you are retiring is a backup server; what you are absolutely not retiring is the seven-year obligation it holds. Those are two different things and conflating them is how organisations discover in year four that they can no longer read their own tapes.
Retiring 31 of 40 reports frees almost no bytes — BI-Reports is 400 GB either way. What it frees is 31 scheduled jobs, 31 things to re-point at a moved database, 31 potential cutover failures, and 31 conversations. Migration effort scales with the number of moving parts far more than with terabytes. Count things, not just gigabytes.
The Retain pass — what deliberately stays put, and where?
Retain is not “we didn’t get to it.” It is a decision with a stated reason and a stated review date, and in this estate it carries an extra condition most estates don’t have: anything Retained must be able to live at the flagship server room, because the colo is what’s closing. Retain is therefore a small, finite budget, spent in a room whose air conditioning has failed twice this year. Spend it on:
- PrintSrv — physically tied to label printers in 22 buildings, and latency-sensitive. Print is an edge workload; putting it 40 km further away in the name of “cloud” is a decision you would spend the next year regretting.
- AD-DC01 / DC02 — retained at the flagship for this round. Note carefully what that means: Part 2 will stand up new domain controllers in the landing zone, which is extending the directory, not migrating these two machines. The existing pair is retained until the last on-prem workload leaves, then decommissioned with Fort Rusty in Part 5.
- The tapes — the seven-year finance retention. Re-homed as a contract and a custody question, not a migration.
- AshBook and Ashcombe PIMS — both already outside Fort Rusty, neither on the colo clock. Doing a cloud-to-cloud move and a clinical-records consolidation during a data-centre exit is how you get all three wrong.
Before reading on, do the two passes on paper and write down two counts: how many of the 16 systems leave the estate entirely, and how many are left to argue about. Then write one sentence per Retire naming the evidence, and one sentence per Retain naming both the reason and the review date. If you can’t name the evidence, it isn’t a Retire — it’s a guess wearing a decision’s clothes, and it belongs in the “verify in month 1” pile.
Done honestly, those two passes take the estate from 16 systems to 11 before a single R has been argued about — and the eleven that remain are a fundamentally more tractable problem than the sixteen you started with.
Step 4 — The Relocate temptation, costed rather than dismissed
☺ Like you’re 10: There’s a way to move the whole house in one go without unpacking anything. It’s real, it works, and it’s usually the wrong answer here — but you have to prove that, not just say it.
Relocate is the R that moves an entire VMware estate into a cloud-hosted VMware environment without changing the machines inside it — AWS, Azure and Google Cloud all sell one. Somebody in the steering committee will propose it, roughly like this: “We have vSphere. They sell vSphere-in-the-cloud. Why are we spending nine months arguing about sixteen spreadsheet rows when we could lift the lot by Christmas?”
That is a serious question and it deserves a costed answer, not a sigh. Work it as a sub-exercise before you finish the matrix, because if Relocate is right, most of the matrix becomes irrelevant and you should find that out now.
| Test | Relocate-the-lot | Verdict |
|---|---|---|
| Does it beat the clock? | Yes, genuinely. It is the fastest way out of a closing data centre, and that is exactly what it’s for. | ✔ Its one real strength. |
| What does it carry? | Everything — including the five systems you just decided not to move, the 31 dead reports, the cold 2.5 TB of FileShare, and 4 idle VMs at 4% CPU. | ✘ It carries your junk into a place where you rent it monthly. This is the “migrating the junk” anti-pattern with a purchase order attached. |
| Does it hit the board’s condition? | Cloud VMware services are sold by the node, with minimum cluster sizes and term commitments. Sized for an 8-host estate plus 41 TB, this class of service lands at or above a $42,000/month on-prem run-rate, not below it. | ✘ It fails the board’s stated condition — “no worse than today” — before anyone argues about anything else. |
| Does it solve what’s actually urgent? | No. MySQL 5.7 is still out of support. Oracle still renews in month 7. RotaMaster is still Classic ASP on Server 2012 R2. PrintSrv still needs to be near 22 sets of printers. | ✘ It moves the problems intact and restarts the clock on all of them. |
| What’s the honest alternative for buying time? | The colo’s month-to-month extension: $13,800 × 2.4 = $33,120/month, so $99,360 buys three more months. | Worth knowing to the dollar. It is a real lever, and it is cheaper than a bad architecture — but it ends on 30 June with nothing moved. |
Change one fact in the brief and the verdict flips: if the colo had given ninety days’ notice instead of nine months, Relocate the entire estate, then dispose properly from inside the cloud at leisure. Relocate is the correct answer whenever the deadline is shorter than the disposition work — you buy time with money and do the thinking afterwards, from a building nobody is evicting you from. Brambleside’s deadline isn’t shorter than the disposition work. Nine months is enough to dispose properly, so disposing properly is what you do. Write that reasoning down; it is the single most senior-sounding sentence in your whole pack, and a committee that has heard it will stop re-proposing Relocate every fortnight.
Step 5 — Assign the remaining eleven R’s
☺ Like you’re 10: Now, finally, decide how each leftover thing travels: carry it as-is, buy a new one, tweak it to fit, or rebuild it. And write down why, in one sentence, before you forget.
Eleven systems, one R each, forty minutes. Don’t polish — the fast path is explicit about this, and a rough matrix you can argue against beats a perfect one that arrives in month 3. Four working rules keep the pass honest:
- One R per system. Two R’s on one row means you haven’t decided, and Part 3 can’t schedule an undecided row.
- Except where evidence draws the line for you. A split is legitimate when a log, not your discomfort, says where the boundary is. In this estate that happens exactly three times — FileShare (access timestamps), BI-Reports (execution log), DevTest (logon audit) — and every one of them is Retire-then-something, never “a bit of both.”
- The support matrix beats your preference. If the vendor supports a product on IaaS only, then the R is Rehost regardless of how much you’d enjoy a managed database. Check the vendor’s support statement before you write the row, not after the migration weekend.
- Refactor is off the table before 31 March. Not because refactoring is bad — Modernization exists for a reason — but because refactoring during a forced data-centre exit means doing your two hardest projects simultaneously with the same six people, one of whom leaves at month 3. Park it; Part 5 picks it up as a 12-month roadmap, which is where it belongs.
The column headed “What would change this answer” is the one that teaches, and the one a steering committee actually reads. Every row must name the single fact that would flip the decision — “Repurchase, unless the vendor’s hosted edition can’t meet the in-country residency policy, in which case Replatform.” A matrix without that column is a set of assertions. A matrix with it is a set of decisions with tripwires attached, and when one of those facts turns out differently in month 4 — and one always does — you re-open exactly one row instead of the whole document.
The artifact — your disposition matrix
☺ Like you’re 10: One row per thing, ten things written down about each. That’s the whole deliverable.
Ten columns, sixteen rows. Build it in a spreadsheet; the template below is the header row plus one worked example so you can see the shape and the tone of a good rationale.
System,Owner,Criticality,Downtime tolerance,Depends on,Data size,Licence/support state,Chosen R,Rationale (one sentence),What would change this answer
ClaimsFeed,Finance (M. Okafor),Tier 2,May miss one night,PIMS-Core billing extract; insurer SFTP,280 GB,Oracle 12c SE — licence renews month 7,Replatform,"The month-7 Oracle renewal is a forcing function we should use rather than pay through: a 280 GB batch workload with no vendor lock is the cheapest database in the estate to move off Oracle.","A schema conversion assessment showing heavy PL/SQL and >4 weeks of manual rework — then renew Oracle for one year, Rehost, and carry the licence cost openly into Part 5's run-rate."
A few notes on filling it in. Owner must be a person, not a department: a department cannot approve a cutover at 04:12 on a Sunday. Depends on is copied from your edge list, not re-derived from memory. Rationale is one sentence — if it needs two, you have two decisions hiding in one row. And What would change this answer is a testable fact with somewhere to check it, not a mood.
The rationalization tally
Under the matrix, add the count. It is four lines and it is what the board remembers:
Estate at start: 16 systems, ~50 TB
Retire: 1 system (+ 31 of 40 reports, 2.5 TB of cold files, 4 of 11 DevTest VMs)
Retain: 4 systems (2 at the flagship, 2 already outside Fort Rusty)
--------------------------------------------------------------------
Systems actually moving: 11
Data actually moving: ~47.5 TB <-- the Retire pass barely dented it. See Part 4.
Refactored before 31 March: 0 <-- deliberate, and correct
Note the third-from-last line, and be honest about it in the meeting: the Retire pass removed five systems and about 2.5 TB. It did not touch the 41 TB imaging archive, because that archive is genuinely needed and genuinely enormous. Rationalization makes the schedule tractable; it does not make the physics go away. Part 4 is where the physics gets dealt with, and Drill — Size the Data Move is where you practise the arithmetic in isolation first.
Show the worked disposition matrix — all 16 rows
One defensible answer, not the only one. Two rows are marked ◆: those are the ones where a second answer is genuinely defensible and the difference is a fact you don’t have yet. If your matrix differs on those two, you are not wrong — you are making a different bet, and the last column is where you say so.
| System | Tolerance | Chosen R | Rationale (one sentence) | What would change this answer |
|---|---|---|---|---|
| PIMS-Core ◆ | ≤ 4 h, Sun 02:00–06:00 | Rehost | The vendor supports this product on IaaS only, and moving to their hosted SaaS edition is a clinical-data conversion plus a 22-clinic retraining programme that will not fit before 31 March. | The vendor confirming an in-country hosted tenant with a migration slot before month 7 — then Repurchase, and you never touch a SQL Server Enterprise licence again. Ask them in week 1; the answer has a lead time. |
| ImageVault | 0 for reads | Replatform | Land it on a managed cloud file service that still presents an SMB/UNC path, so PIMS-Core’s hard-coded paths survive, and tier the 78% cold studies to archive storage — which is what makes Part 5’s cost case arithmetically possible. | The PIMS vendor being unable to point at anything but a literal server name — then Rehost the NAS as a VM with attached disks, lose the tiering saving, and tell Part 5 early. |
| LabBridge | ≤ 12 h | Rehost | A single small VM with one hard external constraint; the migration work is trivial and the real work is a conversation — allocating a static egress IP and getting the reference lab to re-allow-list it. | The lab offering an authenticated API instead of IP allow-listing — then Replatform the connector to that API and delete the fixed-IP problem permanently. Either way, start it in Wave 0: their change-control is measured in weeks and it is not yours to accelerate. |
| BramblesideOnline ◆ | ≤ 2 h | Replatform | MySQL 5.7 is out of support whether or not we migrate, so move to a managed MySQL 8.0 and a managed load balancer and do the upgrade we already owe once, during a move we’re already making. | An application-compatibility scan showing the booking code depends on 5.7-era sql_mode or GROUP BY behaviour — then Rehost 5.7 as-is to beat the deadline and replatform in Part 5’s roadmap year, with the out-of-support risk written down and accepted by a named person. |
| RotaMaster | ≤ 2 days | Repurchase | Classic ASP with no source control, no tests, and no living author, on an operating system that is itself out of support — there is nothing here worth carrying, and a rota SaaS costs less than one week of trying to understand it. | An undocumented export feeding payroll. If one exists, the SaaS switch needs that integration rebuilt, which may push past 31 March — then Rehost as a time-boxed stopgap with a written sunset date and compensating controls for the 2012 R2 host, and finish the Repurchase in the roadmap year. |
| ClaimsFeed | May miss one night | Replatform | The month-7 Oracle renewal is a forcing function we should use rather than pay through; a 280 GB nightly batch is the cheapest database in the estate to move off a commercial licence. | A schema-conversion assessment showing heavy PL/SQL and more than about four weeks of manual rework — then renew for one year, Rehost, and carry the licence cost openly into Part 5’s run-rate rather than hiding it. |
| StockCtrl | ≤ 8 h, weekend | Rehost | Supported product, supported version, and the vendor explicitly supports cloud hosting — this is the clean lift the estate needs early to build the team’s confidence. | The vendor offering a validated hosted edition that covers the controlled-drug register’s audit trail — then Repurchase, but after 31 March, because a CD register migration is a regulator-facing exercise and should not share a weekend with a data-centre exit. |
| FileShare | ≤ 1 working day | Retire the cold 40%, then Rehost the rest | Last-access timestamps draw the line, not us: 2.5 TB has not been touched in five years and should be archived and delisted, and the surviving ~3.7 TB moves as a straightforward file server. | Whether the surviving share fits a managed cloud file service that clinics can still map as a drive letter — if it does, this row becomes a Replatform and one Windows server leaves the estate for good. Take that only if the estate can absorb one more platform change before March. |
| BackupVault | Continuous restore capability | Retire the product | You do not migrate a backup product into a cloud that has its own; what you retire is the backup server, and what you re-home separately is the seven-year finance retention it happens to hold. | Any of the seven-year tapes being readable only by this exact library and this exact software version — then you cannot retire it: you Retain one restore-capable instance until the retention clock expires, and that cost belongs in Part 5’s run-rate, visibly. |
| AD-DC01 / DC02 | ~0 | Retain (this round) | Identity is extended, not migrated: Part 2 stands up new domain controllers in the landing zone in Wave 0, and this pair is retained at the flagship until the last on-prem workload leaves. | Nothing about the R — but the retire date moves if the flagship server room’s HVAC fails a third time, which is a risk that belongs in Part 3’s register with a named trigger. |
| PrintSrv | ≤ 1 h in hours | Retain | Dispensing labels are an edge workload physically tied to printers in 22 buildings, and putting the print path 40 km further away to satisfy a slogan is a decision we would spend a year regretting. | The label printers supporting a cloud print connector that the dispensing software is validated against — then Repurchase and delete a server. Check the vendor’s validation list before assuming it; “it supports IPP” is not the same as “it is validated.” |
| BI-Reports | ≤ 1 week | Retire 31 of 40, then Replatform the 9 | The execution log settles the argument that three departments could not: nine reports are real and move to a managed reporting service pointed at the migrated databases, and thirty-one are decommissioned with the log attached as evidence. | A regulatory or insurer reporting obligation hiding among the 31 — check before deleting, because “unopened” and “not required” are different claims. If one is obligated, it survives regardless of its usage. |
| VetLearn | ≤ 1 week | Repurchase | The SaaS equivalent costs less per year than the VM it would replace, and this is the easiest win in the estate — 220 GB, no clinical dependency, and nobody would notice a week’s outage. | The SaaS being unable to export CPD history in a durable format. That is a data-extraction task before the switch, not a change of R — but do it before you cancel anything, because CPD records are a professional-registration matter for 600 people. |
| DevTest | ≤ 1 week | Retire 4 of 11, then Rehost 7 | Four VMs have had no interactive login in twelve months and should never have survived 2019, and the seven that remain move as-is — on a 12×5 schedule, not 24×7, which is a Part 5 lever we can bank on day one. | A release cadence needing overnight builds, which would put some of the seven back on 24×7. Ask the team before you write the schedule into the cost model, not after. |
| AshBook | Out of scope | Retain | Already in a public cloud, unaffected by the colo clock, and moving it now would mean running a cloud-to-cloud migration concurrently with a data-centre exit for no deadline-driven reason. | Which cloud it is in. If it sits in a different cloud from the one chosen on the fast path, a later consolidation carries an egress bill — price it now, in Drill D2, so the roadmap decision in Part 5 is a choice rather than a surprise. |
| Ashcombe PIMS | Out of scope | Retain | Vendor-hosted, off the colo clock, and consolidating two clinical record systems is a patient-safety project with its own governance — attempting it inside a nine-month data-centre exit is how you do both badly. | The Ashcombe tenant’s contract renewing before 31 March on a punitive multi-year term — a commercial clock can force an earlier consolidation, so check the renewal date in month 1, not month 8. |
Tally: Retire 1 · Retain 4 · Rehost 5 · Relocate 0 · Repurchase 2 · Replatform 4 · Refactor 0. Sixteen rows, eleven systems actually moving, three rows carrying an evidence-led Retire alongside their main R, and two zeroes that are decisions rather than omissions.
The two zeroes, said out loud. Relocate: 0 — rejected on cost against the board’s stated condition and on the grounds that it would carry the five systems we just decided not to move; it would be the right answer on a ninety-day clock. Refactor: 0 before 31 March — deferred deliberately, because refactoring during a forced exit means running your two hardest projects at once with six people, one of whom leaves at month 3. Both zeroes go in the pack with those sentences attached. A reviewer who sees a blank cell assumes you forgot; a reviewer who sees “0 — here’s why” knows you decided.
What “done” looks like for Part 1, and where Part 2 picks up
☺ Like you’re 10: Every row filled in, nothing contradicting anything else, and you can defend the two hardest ones out loud.
Part 1 is done when all four of these are objectively true — check them, don’t feel them:
- All 16 rows carry an R. No blanks, no “TBD”, no row with two R’s that isn’t one of the three evidence-led splits.
- Every R is justified in one sentence, and every row’s last column names a specific, checkable fact that would flip it — with somewhere to go and check it.
- No row’s R contradicts the dependency map. Walk the edge list line by line against the matrix: nothing is Retired that something still points at, nothing is Retained whose only consumer is moving, and nothing sits alone in the cloud reading a UNC path 40 km away without that being an explicit, costed decision.
- You can defend the two you found hardest without saying “it depends.” Say what you decided, say what fact you’d check to change your mind, and say when you’ll check it. That sentence shape is the entire skill.
Everything you just built gets used:
| Part | What it does with Part 1’s artifacts |
|---|---|
| 2 — The Landing Zone | Designs the destination the 11 moving systems land in — boundaries, region and DR under the residency policy, the address plan that defuses Ashcombe’s 10.0.0.0/16, LabBridge’s static egress IP, identity, and four guardrails. |
| 3 — The Wave Plan | Batches those same 11 systems into Wave 0 plus four waves, and checks every wave directly against this page’s dependency edge list. |
| 4 — The Data Move & Cutover Runbook | Moves the ~47.5 TB that survived your Retire pass, and writes the minute-by-minute cutover for PIMS-Core — the row you found hardest here. |
| 5 — Operate, Optimize & Modernize | Banks the Retire and Repurchase savings you just decided, and finally picks up the Refactor you deliberately deferred. |
Want isolated practice on the hardest skill on this page before you commit to your matrix? Drill — Pick the Right R gives you ten system cards from ten unrelated organisations, three minutes each, each one hiding the fact that flips the obvious answer.
Foxy: Sixteen rows and ten columns. Nine months on the clock. Why are we in a spreadsheet instead of moving something?
Nutty the Squirrel: Because five of those sixteen aren’t moving at all, Foxy, and I can prove it with a log. That’s five systems the wave plan never has to schedule, five cutovers nobody has to be awake for. I found them in twenty minutes.
Gizmo the Gremlin: Or! Relocate. The whole vSphere estate, one motion, done by Christmas. No spreadsheet required.
Sol the Sloth: Costed it. Node-based pricing, minimum cluster, term commitment, forty-one terabytes attached — it lands at or above forty-two thousand a month. That’s the one number the board actually set. It fails on their own condition before we even get to the four idle dev boxes it would carry along.
Professor Owl: Which doesn’t make it a bad R, Gizmo — it makes it the wrong R here. Ninety days’ notice instead of nine months and I’d relocate the lot tonight and dispose from inside the cloud afterwards. The deadline isn’t shorter than the thinking, so we do the thinking.
Timmy the Turtle: And every row gets that last column filled in. “Repurchase, unless the hosted edition breaks residency.” When month four proves us wrong about one thing — and it will — we re-open one row, not the whole document.
Nutty: Sixteen down to eleven, Foxy. Now we move something.
Milestones
☺ Like you’re 10: Tick a box only when the thing is actually written down somewhere you could hand to somebody else — not because you thought about it.
Work these in order; each one uses the output of the one before. Progress saves in this browser.
FROM -> TO | kind | frequency | what breaks. Twenty edges is about right for this estate.PIMS-Core -> ImageVault edge.1. Why are Retire and Retain decided before any other R, and what did those two passes do to the size of this estate? 2. This estate has exactly one system that sits at the root of the dependency map — name it, and say why that makes it a Wave 0 problem rather than a Wave 4 one. 3. Relocate would move the whole vSphere estate in a single motion and comfortably beat 31 March. Give the one-sentence reason it isn’t the default here, and name the change to the brief that would make it right. 4. Which column of the disposition matrix does a steering committee actually read, and what does a blank cell in it tell a reviewer?
Check your answers
- Because every system you don’t move is the cheapest possible win, and both decisions are made from evidence rather than argument — an execution log, an access timestamp, a logon audit — so they’re fast. Doing them first also shrinks what’s left to argue about: Brambleside goes from 16 systems to 11 before anyone debates a single hard R, and the eleven that remain are a genuinely more tractable problem than the sixteen you started with. Note what it doesn’t do: the Retire pass removes about 2.5 TB and leaves the 41 TB archive untouched. Rationalization fixes the schedule, not the physics.
- AD-DC01 / DC02. Six systems have an edge pointing straight at it, a seventh reaches it through the backup agents, and it points at nothing itself — it is the root of the dependency map. That makes identity a Wave 0 problem: you can’t cut over anything that authenticates against a directory that isn’t reachable from the new place yet. Note also that the answer is extend, not move — Part 2 stands up new domain controllers in the landing zone and the original pair is Retained at the flagship until the last on-prem workload leaves, then decommissioned with Fort Rusty in Part 5.
- Relocate is the right answer whenever the deadline is shorter than the disposition work; Brambleside’s isn’t — nine months is enough to dispose properly, and Relocate would carry every one of the five systems we just decided not to move, plus 31 dead reports, 2.5 TB of cold files and four idle VMs, into a place we rent monthly. It also fails the board’s own stated condition: node-based pricing with minimum cluster sizes and 41 TB attached lands at or above the $42,000/month run-rate rather than below it, and it fixes none of the urgent things — MySQL 5.7 is still out of support, Oracle still renews in month 7. Change that flips it: a ninety-day notice instead of nine months. Then you relocate the lot, buy time with money, and dispose properly from inside the cloud, from a building nobody is evicting you from.
- The last one — “What would change this answer.” Every other column states what you decided; that column states what you’d have to learn to decide differently, which is precisely the question a committee is really asking when it says “are you sure?” A blank cell tells a reviewer you forgot the row. A filled one — “Repurchase, unless the vendor’s hosted edition can’t meet the in-country residency policy” — tells them you decided, and gives them a tripwire, so when month four proves one assumption wrong you re-open exactly one row instead of the whole document. The same logic applies to the two zeroes in your tally: write “Relocate: 0 — here’s why” rather than leaving the line out.
Part 1 gave you the thing every later part is checked against: sixteen decisions, each with a reason and a tripwire, and an estate that shrank by five systems before anybody carried a box. Continue to Capstone Part 2 — The Landing Zone, which designs the place all eleven survivors are going to land in — and springs the 10.0.0.0/16 trap Ashcombe left for you. Or step back to Move Brambleside — Start Here for how the five parts and three drills fit together, and revisit The 7 R’s and Stop 1 — Assess for the theory behind what you just did.