
- Sector
- Healthcare · Public health
- Year
- 2017
- Role
- Team lead · architect · migration
- Outcome
- ~1M records migrated · ~40 sites · primary↔secondary guideline sync · team of 4
What needed fixing.
Medical guidelines are not a place for 'close enough'. The system spanned around forty sites with primary and secondary guideline databases, where regional guidelines deviate from the national source in specific, deliberate ways — and must stay aligned with it everywhere else. The legacy Drupal 7 system held it together; the task was to move ~1M records to a new architecture without losing a single deviation or breaking the alignment.
How I built it.
I reverse-engineered the legacy system to understand exactly how the guidelines related, designed a new Drupal 8 architecture, and led a team of four through the migration — ~1M records moved, functionality rewritten for D8. The heart of it is a custom mechanism that keeps versions and deviations in sync between the secondary guideline sets and the main database, so a change at the source propagates correctly and the deliberate regional differences survive. Delivery ran on Jenkins and Ansible.
The Dutch antibiotic-guidelines database, reverse-engineered and rebuilt on Drupal 8 — a million records, forty sites, and a sync mechanism that keeps regional guidelines aligned with the national source.
- 01Reverse-engineer and re-launch the national antibiotic-guidelines database on Drupal 8
- 02Migrate ~1M records from Drupal 7 to a new architecture
- 03Keep ~40 sites of primary and secondary guidelines correctly in sync
- 04Lead a team of four through architecture, migration and launch
- ~1M records migrated from Drupal 7 to a new Drupal 8 architecture
- ~40-site setup with primary and secondary guideline databases
- Custom sync mechanism for guideline versions and deliberate regional deviations
- Functionality rewritten to suit Drupal 8
- Delivery automation with Jenkins and Ansible
Reverse-engineering a system nobody fully remembered
An antibiotic-guidelines database is the kind of system where being wrong is not a UX problem. This one — the Dutch-market reference, spanning around forty websites — needed re-launching on Drupal 8, except the full picture of how it worked lived partly in an old D7 codebase and partly in people's memories. So we reverse-engineered it: established the architecture, then led a team of four to rebuild the functionality properly rather than port the confusion forward.

A million records is the easy half
Migrating roughly a million records D7 → D8 sounds like the headline, and it was a serious piece of work — but it wasn't the clever bit. The clever bit was the synchronisation mechanism: a primary guidelines database and its secondaries, with local versions and deliberate deviations that all had to stay in step with the source of truth without flattening the differences that were there on purpose. Keeping forty sites consistent and individually correct at the same time is the actual engineering.
