← Work

Case study · Upgrades without downtime

ASMBS: modernizing a medical society's systems while payments stayed live

The American Society for Metabolic and Bariatric Surgery runs its members, events and content on two systems, a private AMS and a public-facing CMS. I led full stack work across both: updating the stack, keeping payment portals running, and cleaning up duplicate member records without losing any of them.

My roleManager, Software Engineering (contract)

TimelineMarch - May 2025 · Newberry, FL

BuildWordPress · Symfony · PHP · MariaDB

Outcome10+ features shipped across both systems

Fig. 1A short walkthrough of ASMBS. The live site is linked below.

Old systems, live payments, messy member data

A medical association lives by its data: memberships, certifications, events, dues. At ASMBS that data sat in a private Association Management System built on Symfony and a public WordPress site, and both were overdue for updates.

Members pay dues and register for events through those systems every day, so the payment portals couldn't go down while I worked. The AMS also had duplicate member entries that needed to be merged without losing anyone's history. My job was to update and extend both systems without breaking anything critical, with no documentation to start from.

What I did

Updated the stack on a copy first. Cloned production, including the MariaDB data, into a staging environment and ran the PHP, Symfony, WordPress core and plugin updates there. Nothing touched the live site until we thoroughly tested everything.

Kept the payment portals live. Tested every dues and registration checkout against the payment provider's sandbox before each release, deployed during low-traffic hours, and kept the previous release ready to roll back to in minutes.

Merged duplicates without losing records. Wrote queries to flag likely duplicates by email, name and member ID, then merged each set into one record and moved its dues, certifications and event history over. Merged records were archived and logged rather than deleted, so any merge could be undone.

Left it maintainable. Documented what I changed and why, so the next developer could get up to speed in half the time it took me.

Fig. 2The public WordPress site, updated with no downtime.
Fig. 3Membership and dues, which stayed open the whole time.
Fig. 4Find a Surgeon reads from the AMS, so clean member data shows up here.
Results

10+Features shipped in the engagement

55%Faster on key admin page loads

~7 hrsStaff time saved per week

What I learned

Running both upgrades side by side showed me how much the AMS and the WordPress site depend on each other. Mapping every place the two share data is what made this job go smoothly. On the next system like this, it's the first thing I'll write and the first thing I'll hand the next developer.

Next: Albany Park Theater Project

Visit the live site← All work