Move Brambleside, start to finish
Twenty-three lessons in, you can name the 7 R’s, sketch a landing zone, and explain why a big-bang cutover is a bad idea. That is not the same skill as being handed a real estate, a real deadline, and a set of constraints that quietly contradict each other — and having to write down what you would actually do. This is where you do that. Brambleside Veterinary Group is invented for this lab: 22 small-animal clinics, one 24-hour emergency hospital, 16 systems, about 51 TB of data, a colo contract that ends in nine months, and a board that will not accept a bigger bill afterwards. Across five connected parts you produce the five documents a real steering committee gets walked through — a disposition matrix, a landing-zone design, a wave plan, a data-and-cutover runbook with a rollback, and an optimization-and-decommission plan. If all you have is an afternoon, the fast path below still gets you a full pass over every one of them.
Imagine your family has to be out of a big old house in nine months, because the landlord won’t renew. Long before anyone touches a box, somebody has to sit at the kitchen table with a list of everything in the house and go room by room: this comes with us, this goes in the bin, this we replace with a new one when we arrive, this stays at Grandma’s. Then somebody has to decide which van goes on which weekend, and what happens if the new house isn’t ready on the day the old key stops working. That list, that order, and that what-if — that is what this lab makes you write. Driving the van turns out to be the easy part.
You need a spreadsheet and a text editor. That is the entire toolchain. There is no cloud account to open, no card to enter, and no infrastructure to provision or tear down anywhere in this track — every deliverable is a document, because on a real migration every one of these decisions is made in a document weeks before anything moves. If you want to put a real tool beside the exercise, a read-only or free-tier look at AWS Application Discovery Service, Azure Migrate or Google Cloud Migration Center (see The Tools Landscape) will show you what a machine-generated inventory looks like next to yours — but no step below depends on it, and nothing here should ever cause a bill.
Brambleside does not exist. Every dollar figure, transfer rate, utilization percentage and licence cost in this track was made up to make the exercise bite, and none of it should be quoted at anyone as a real price. Real cloud pricing changes monthly, varies by region and commitment, and is the one thing you must always check against the provider’s own calculator on the day you need it. The skill being practised here is the method — how you find the levers, do the arithmetic, and show your working — not the number that falls out.
The estate you’re moving
☺ Like you’re 10: Here is the whole house, written down once — every room, every awkward cupboard, and the date the landlord changes the locks. Every part of this lab starts from this page.
This is the canonical fact sheet. The five parts each restate the three or four rows they need and link back here, so you never have to re-derive anything. Read it once now, properly — the constraints are doing more work than the inventory, and almost every wrong answer in this track comes from skimming them.
The company
Brambleside Veterinary Group, founded 1987: 22 small-animal clinics plus one 24-hour emergency hospital, all in one country, about 600 staff. In 2023 it acquired Ashcombe Vets (3 clinics) and never integrated it — Ashcombe still runs its own network, its own booking site, and its own tenant of the same practice-management product. Internal IT is five people who also answer the clinic helpdesk. The migration team is six, two of whom are on that helpdesk rota, and one of the six leaves at month 3.
Fort Rusty — where everything lives today
VMware vSphere 7 on 8 hosts, split across two sites: a converted server room at the flagship clinic (whose HVAC has failed twice this year) and 8 racks in a colo 40 km away. This is the course’s Fort Rusty — only now it has a specific address and a specific eviction date.
The clock
The colo contract ends 31 March — nine months out. No renewal is offered beyond a three-month, month-to-month extension at 2.4× the current rate. Two windows are closed to cutovers, non-negotiably: the two-week spring vaccination campaign in mid-March, when every clinic runs at capacity, and 20 December – 3 January, when the group drops to reduced staffing and emergency cover only. Plan against the calendar you actually have, not the nine months printed on the contract.
The inventory — 14 Brambleside systems and 2 from Ashcombe
| # | System | What it does | Runs on | Data | Users / criticality | The awkward fact |
|---|---|---|---|---|---|---|
| 1 | PIMS-Core | Practice management — appointments, clinical notes, prescribing, billing | Vendor product; 4 × Windows Server 2016 + a SQL Server 2016 Enterprise failover cluster | 1.9 TB | All 600 staff, all 23 sites, continuously. Business-critical. | The vendor now sells a hosted SaaS edition of the same product. PIMS-Core also reads imaging studies straight off ImageVault by UNC path, and authenticates against AD. |
| 2 | ImageVault | X-ray and ultrasound archive, every study since 2004 | Aging NAS in the colo | 41 TB, growing ~900 GB/month | Every clinic, read-heavy. Reads must never break. | 78% of studies have not been opened in 24 months. The largest single thing in the estate, and the hardest to move quietly. |
| 3 | LabBridge | Polls the external reference lab for test results and files them into PIMS-Core | 1 small VM, IPsec VPN to the lab | ~2 GB | Every clinic, daily. High impact if broken. | The reference lab allow-lists one fixed public IP address. Changing it needs a change request on their side, with a lead time you don’t control. |
| 4 | BramblesideOnline | Public website, online booking, repeat prescription requests | 2 VMs + MySQL 5.7, behind an on-prem load balancer | 90 GB | Clients, 24×7. Revenue-facing. | MySQL 5.7 is out of support. Downtime tolerance ≤ 2 hours. |
| 5 | RotaMaster | Staff rota and shift swaps | Classic ASP on Windows Server 2012 R2 | ~5 GB | 90 weekly users. Annoying, not fatal, if down. | Written in 2011 by someone who left in 2015. No source control, no tests, no documentation. |
| 6 | ClaimsFeed | Nightly insurance claims batch, pushed to insurers over SFTP | Oracle Database 12c SE | 280 GB | Finance team. Can miss one night. | The Oracle licence renewal falls due in month 7. Pulls its nightly batch from a PIMS-Core billing extract. |
| 7 | StockCtrl | Consumables stock plus the statutory controlled-drug register | Vendor app on SQL Server | 140 GB | All clinics. Regulated. | Actively supported, and the vendor supports cloud hosting. The register carries a 7-year retention obligation. |
| 8 | FileShare | General staff file server — letters, scans, policies, spreadsheets | Windows file server | 6.2 TB across 1.1 million files | All staff. Low criticality, high nuisance. | 40% untouched in 5 years. The binding constraint here is file count, not size — which is exactly what pure bandwidth arithmetic will mislead you about. |
| 9 | BackupVault | Backup server plus an LTO tape library | On-prem appliance + tape | — | IT only. | Holds the 7-year finance retention. That obligation outlives the data centre, whatever you decide about the server itself. |
| 10 | AD-DC01 / AD-DC02 | Active Directory, DNS, DHCP | 2 VMs | small | Everything. Absolutely critical. | Every other system on this list authenticates here. It is the one dependency that is an edge on every single row. |
| 11 | PrintSrv | Print server for the dispensing-label printers in all 22 clinics | 1 VM | small | All clinics, all day. | Latency-sensitive and physically tied to the printers. A label that prints two seconds late is a queue at the dispensary. |
| 12 | BI-Reports | SQL Server Reporting Services — 40 scheduled reports | 1 VM | 400 GB | Head office. “Business-critical”, allegedly. | The SSRS audit log proves 31 of the 40 have not been opened in 18 months. |
| 13 | VetLearn | Internal CPD / training portal | 1 VM | 220 GB | All clinical staff, occasionally. | The vendor’s SaaS edition costs less per year than running the VM does. |
| 14 | DevTest | Development and test environments | 11 VMs, running 24×7 | 1.1 TB | 2 developers. | 4% average CPU, and nobody has switched one off since 2019. |
| A1 | AshBook | Ashcombe’s online booking site (3 clinics) | Already on a public cloud — a different provider | 40 GB | Ashcombe clients. | Never integrated. Is this a cloud-to-cloud move, or something you retain and integrate? |
| A2 | Ashcombe PIMS | Ashcombe’s practice management — same vendor as PIMS-Core | Vendor-hosted, separate tenant | vendor-held | Ashcombe staff. | Consolidating the two tenants is a data-merge project in its own right. Now, or later? |
Sixteen rows, and the whole exercise lives in the last column. Nothing on this list is hard to move because it is big; things are hard to move because of the one fact sitting beside them — a UNC path, an allow-listed IP, a licence renewal date, a retention obligation, a file count. Discovery is not the act of listing servers; a script can list servers. Discovery is the act of finding those facts before they find you.
The constraints that do the work
| Constraint | The rule | Why it bites |
|---|---|---|
| Downtime tolerance | PIMS-Core ≤ 4 hours, and only in a Sunday 02:00–06:00 window — never running into a Monday, the clinics’ busiest day. BramblesideOnline ≤ 2 hours. ClaimsFeed may miss one night. ImageVault reads must never break. | Four hours is not much room for a 1.9 TB clustered database plus validation plus a go/no-go decision plus the option to reverse it all. |
| Data residency | Board policy: client and clinical data stays in-country — DR region included. | Rules out some regions outright, and rules out some SaaS answers entirely. Check it before you fall in love with a Repurchase. |
| Card payments | Payments are taken by redirect to the processor’s hosted page. No cardholder data ever touches a Brambleside system. | Keeping it that way is the cheapest correct answer. Any design that starts handling card data drags a compliance programme into a nine-month project. |
| Retention | Controlled-drug register: 7 years. Finance backups: 7 years. | These outlive the data centre. Somewhere in Part 5 they must be re-homed before Fort Rusty is switched off, not after. |
| Network addressing | Clinics use 10.20.0.0/16. The colo uses 10.30.0.0/16. Ashcombe uses 10.0.0.0/16. | 10.0.0.0/16 is also the default VPC/VNet CIDR every cloud console offers you. Accept the default and your new landing zone overlaps the network of the clinics you already bought. |
| Transfer capacity | The colo circuit is 500 Mbps but contractually shared; Brambleside can sustain at most 150 Mbps without burst charges. The imaging archive must stay readable throughout. | 41 TB at a sustained 150 Mbps is roughly 25 days of continuous copying — and the archive grows another 900 GB every month while you do it. |
| Team capacity | Six people, two of them also on the clinic support rota, and one leaves at month 3. | A wave plan that ignores this is a wish list. Person-weeks are a hard constraint in exactly the way bandwidth is. |
What Fort Rusty costs today
The board attached exactly one financial condition to the whole programme: the steady-state run-rate after the migration is no worse than the run-rate before it. So this table is the number every decision in Part 5 gets weighed against — and the reason Part 1’s Retire pass matters far more than it looks like it should.
| Line item | Per month |
|---|---|
| Colo contract — 8 racks, power, cross-connects | $13,800 |
| Flagship server room — power, cooling, maintenance | $2,400 |
| Licensing, amortized — VMware, Windows, SQL Server Enterprise, Oracle SE, vendor apps | $16,300 |
| Hardware refresh fund + vendor support contracts | $9,500 |
| Today’s run-rate | $42,000 |
Gizmo’s plan is Relocate: move the entire vSphere estate wholesale into a cloud VMware service, be out of the colo by Christmas, decide everything else later. It is a genuine strategy, it really does beat the clock, and on some estates it is the right call. On this one it is the default you have to argue against on purpose — because it carries the 31 dead reports, the cold 40% of FileShare and the eleven idle DevTest VMs along with everything else, keeps every licence you were already paying for, and converts a deadline problem into a run-rate problem. Part 1 makes you cost it and write the one-sentence reason, so that you are convinced rather than merely told.
The five parts
☺ Like you’re 10: Five chapters of one story. Each chapter hands the next one a document that’s a bit more finished than the one before.
Work them in order. Each part consumes the artifact the one before it produced: a wave plan built without a disposition matrix is guesswork, and a cost review built without a wave plan has nothing to count. Every part opens by naming exactly what it assumes and what it produces, and closes with a “done when” bar you can check objectively rather than hopefully.
| # | Part | Pairs with | Done when |
|---|---|---|---|
| 1 | Discovery & the Disposition Matrix — 🐿️ Nutty & 🦉 Owl | The 7 R’s · The Journey (Assess) · Cloud-to-Cloud · Anti-Patterns | all 16 systems carry an R, each justified in one sentence, none contradicting the dependency map — and every row names the single fact that would flip it. |
| 2 | The Landing Zone — 🦫 Benny & 🐦 Pip | Architecture Patterns · Security, Cost & Resilience · Best Practices | no two CIDRs overlap, both regions satisfy the residency policy, LabBridge’s allow-listed IP has a documented answer, and someone who wasn’t in the room could build it from your page. |
| 3 | The Wave Plan — 🐿️ Nutty & 🦫 Benny | Wave Planning · The Journey (Mobilize) · Anti-Patterns | every moving system sits in exactly one wave, no dependency is violated, the plan fits the calendar with both blackouts removed — and you’ve written down what you’d cut if you were three weeks late in month 7. |
| 4 | The Data Move & the Cutover Runbook — 🐘 Ellie & 🐢 Timmy | Data Migration & Data Gravity · Architecture Patterns · Best Practices | your own arithmetic shows why the appliance beats the wire, every dataset has a named validation step, the runbook fits inside four hours with slack, and your rollback plan says what happens to the clinical note written at 04:12. |
| 5 | Operate, Optimize & Modernize — 🦥 Sol & 🦋 Mira | Modernization · Security, Cost & Resilience · The Journey (Operate) | the steady-state run-rate is under $42,000/month with arithmetic that actually adds up, you can name the one thing you refused to optimize and why, and Fort Rusty has a switch-off date with its retention obligations already re-homed. |
Three guided drills sit alongside the capstone and are deliberately not about Brambleside — isolated reps on the three things people get wrong most often, with no continuity to carry: Pick the Right R, Size the Data Move, and Write a Rollback Plan. Do them whenever you like — before Part 1 as a warm-up, or after Part 4 when you already know which one you got wrong.
The fast path — for an afternoon
☺ Like you’re 10: No time for five chapters? Here’s the whole story in seven moves — still real work, still worth doing.
The five parts are the deep version of this track. If you only have an afternoon, or you want one condensed pass before an architect exam, work these seven items instead. They touch every part at a lighter depth against the same estate above, so nothing you produce here is wasted if you come back and go deep later. Tick them off as you go — progress saves in this browser.
10.20.0.0/16, 10.30.0.0/16, Ashcombe’s 10.0.0.0/16 and your new cloud networks; hybrid connectivity, including how LabBridge keeps one stable egress IP through the move; identity — extend AD first or federate first, and why that order; and four guardrails — a tagging standard with a cost-centre key, budget alerts with named recipients, encryption with stated key ownership, and one logging destination everything writes to.“Everyone on a migration has a feeling about the numbers. The colo feels expensive. The archive feels enormous. The dev machines feel like nothing at all. Feelings are how whole estates get moved wholesale and how bills quietly double. So count instead: seventy-eight per cent of that archive is cold, thirty-one of forty reports are dead, eleven machines idle at four per cent around the clock, and forty per cent of a six-terabyte file server hasn’t been read in five years. Not one of those is a hunch — every one of them is a line in an audit log somebody could have read at any point in the last three years and didn’t. Slow, boring arithmetic is the cheapest tool in this whole track, and it’s the only one that tells you the truth before the invoice does.”
What you’ll have built
☺ Like you’re 10: Not a cloud account — a folder of five documents you could hand to the people who pay for the move, and then defend.
Finish the five parts (or the fast path) and you’ll hold a migration pack: the actual set of documents a real steering committee is walked through before a programme like this gets approved. That is the deliverable, and it is deliberately not a running system — because on a nine-month, sixteen-system move, the running system is the consequence of these five documents being right, and every expensive mistake in this course’s anti-patterns lesson is a consequence of one of them being skipped.
| Document | What’s in it | From |
|---|---|---|
| The disposition matrix | 16 rows: system, owner, criticality, downtime tolerance, dependencies, data size, licence and support state, chosen R, one-sentence rationale, and the single fact that would flip the answer. Plus a dependency edge-list and a rationalization tally. | Part 1 |
| The landing-zone one-pager | Account and subscription boundaries, region and DR region with the residency argument written out, a non-overlapping address plan, hybrid connectivity, the identity sequence, four guardrails, and the shared-responsibility split for your chosen cloud. | Part 2 |
| The wave plan | Wave 0 plus four waves — contents, entry and exit criteria, calendar slot, named rollback owner — laid on a nine-month calendar with both blackouts and the hard stop marked, plus a per-wave risk register with triggers. | Part 3 |
| The data & cutover runbook | The transfer arithmetic and the online-vs-appliance decision, a per-dataset validation plan, a minute-by-minute PIMS-Core runbook that fits the four-hour window, the comms plan for 22 clinic managers and the emergency hospital, and a rollback plan with an explicit point of no return. | Part 4 |
| The optimize & decommission plan | Six costed levers landing under $42,000/month, the one thing you refused to optimize, a 12-month modernization roadmap with a strangler-fig outline, and Fort Rusty’s shutdown order with the 7-year retention obligations already re-homed. | Part 5 |
No vendor sells a “cloud migration” certification — as Certifications explains, the architect badges test this material sideways, inside scenario questions about landing zones, cutover windows, replication choices and cost control. Those questions get dramatically easier once you have made these five decisions yourself, on a clock, against constraints that fight each other. Pair this track with the Migration Checklist for the operational view of the same work, the case studies for how it went for other people, and the Exam Simulator when you want it timed.
Already comfortable? Re-run the whole thing with a single variable changed, and watch how far the answer moves. Cut the deadline to six months and see which R’s collapse into Relocate — and which you’d still refuse to. Pick a different cloud and redo Parts 2 and 5: the concepts survive intact, the service names and the arithmetic do not. Fail the vendor’s hosted PIMS edition on residency and watch Part 1’s biggest row change, dragging Parts 3 and 4 behind it. Merge Ashcombe properly and add the tenant-consolidation project to the wave plan you already thought was full. Or hand your finished pack to someone else and make them find the one dependency you missed — that last one is the most useful and by far the least comfortable.
Foxy: Genuine question. The clock says nine months. Why can’t we just Relocate the whole lot into a cloud VMware service and be done by Christmas?
Professor Owl: You could, Foxy — and it’s a real strategy, not a joke answer. It buys you the deadline, and it gets you out from under a server room whose cooling has already failed twice this year. What it doesn’t buy you is a single licence saving, a single rightsized machine, or one fewer thing to run on the other side.
Nutty the Squirrel: And it moves the junk. I counted: thirty-one reports nobody has opened in eighteen months, forty per cent of a six-terabyte file server untouched in five years, eleven dev machines idling at four per cent since 2019. Relocate carries every one of those into the new house, and then you pay rent on them forever.
Sol the Sloth: Which is how the bill goes up. The board didn’t ask you to beat the colo contract, Foxy. They asked you not to spend more afterwards. Those are two very different projects, and only one of them is on the whiteboard.
Gizmo the Gremlin: So do it anyway and optimise later! Later is a wonderful time. Later is my favourite time.
Timmy the Turtle: Later is when the team is six people minus one and everything is already live in production, Gizmo. Retire is free now and expensive later. And I still haven’t heard anybody say what happens to a clinical note written at 04:12 if the cutover goes wrong at 04:30.
Professor Owl: Which is exactly why the first thing you write isn’t a plan — it’s a list. Sixteen rows, sixteen decisions, each with the one fact that would change it. Start at Part 1.
1. Gizmo wants to Relocate the entire estate and be out by Christmas. Name two things that plan genuinely buys and three it does not. 2. Which single system has to start moving around month 2 even though it doesn’t cut over until the final wave — and what breaks if you leave it until month 6? 3. Ashcombe’s network is 10.0.0.0/16. Why is that one line arguably the most dangerous row on the whole fact sheet? 4. Before you assign a single R, which two of the seven do you decide first, and what does deciding them do to the size of the problem?
Check your answers
- It genuinely buys two things: the deadline — the whole vSphere estate can move as virtual machines without per-application replatforming work, which is the only approach that comfortably clears 31 March — and the immediate removal of physical risk, both the colo eviction and the flagship server room whose HVAC has failed twice. It does not buy: (a) any licensing saving — SQL Server Enterprise, Oracle SE, Windows and the VMware stack all travel with you, and licensing is $16,300 of the $42,000; (b) any rightsizing — machines specced for on-prem peak arrive at full size, so eleven DevTest VMs averaging 4% CPU cost you 100% of their capacity in the new place too; (c) any rationalization — the 31 dead reports, the cold 40% of FileShare and everything else you would have retired comes along, and now you pay for it monthly rather than once. Relocate converts a deadline problem into a run-rate problem, which is precisely the constraint the board actually set. It is a defensible answer for a subset of the estate under time pressure; it is not defensible as the default for all sixteen.
- ImageVault. 41 TB at a sustained 150 Mbps is roughly 25 days of continuous transfer — and the archive adds about 900 GB every month while you are copying it. So it gets seeded early, by offline appliance, around month 2, with the on-prem NAS staying authoritative and a one-way sync catching the delta, even though PIMS-Core itself doesn’t cut over until the final wave. Leave it to month 6 and you get one of two bad outcomes: PIMS-Core cuts over and then reads 41 TB back across a 150 Mbps link for months, or the entire nine-month schedule becomes hostage to a single copy job that cannot be compressed, accelerated, or comfortably re-run if it fails. Note the shape of the insight, because it generalizes: seed order and cutover order are not the same order.
- Because
10.0.0.0/16is also the default VPC / VNet CIDR that every cloud console proposes on the first screen. Click accept, and your brand-new landing zone overlaps the network of the three clinics you already own. Routing between them then cannot be fixed with configuration at all — one side has to be renumbered, which is an unplanned re-IP project across live clinical systems, and it will be discovered at the worst possible moment, usually mid-cutover with a clinic on the phone. The address plan is the cheapest document in Part 2 to write, and the most expensive one to write late. - Retire and Retain. They cost nothing to execute, they are the only two of the seven that reduce work instead of creating it, and on this estate they take you from 16 systems down to roughly 11 before a single migration strategy is argued about — BI-Reports’ 31 dead reports, FileShare’s cold 40%, several idle DevTest VMs, and PrintSrv plus the tape retention obligations staying exactly where they are. Every subsequent decision is then made against a smaller, cheaper, faster problem, and every dollar you were about to spend moving something nobody needed is saved outright. Deciding them last — or never — is precisely how an estate gets moved wholesale and how the bill in Part 5 lands higher than the one you started with.