Fraher Digital

Work · Healthcare training · 566,000 users

Hardening a 566,000-user training platform with no downtime

A live learning platform that was crashing, slow to administer, and open to abuse. Two weeks of reversible work, with the site never taken offline.

The situation

A healthcare training platform on WordPress and LearnDash, with over 566,000 user records. It was crashing repeatedly. The admin interface had become slow enough to be a hazard in itself, because routine administration on a user table that size is exactly when a tired person makes an irreversible mistake.

Certificates were failing to generate, which on a training platform is not a cosmetic problem: the certificate is the product. Registration was open to abuse and being abused. A security review found weak passwords in use, publicly exposed backups, and server ports open that had no business being open.

The constraint

None of it could go offline. People were mid-course, certificates were being requested, and access to training was not something that could pause for a fortnight while somebody tidied up. Every piece of work had to be applied to a running system with learners on it.

That constraint is what dictated the approach: reversible steps, checked after each one, in an order where nothing depended on a later step succeeding.

What was done

  • Runtime upgrades, and the certificate and PDF generation failures fixed.
  • Scheduled jobs moved off the request cycle to proper server-side scheduling, so a visitor was no longer paying for the platform’s background work.
  • Admin components that were draining performance identified and removed.
  • A reversible archive-and-quarantine process built for the user table, so records could be brought under control without destructive deletion. Nothing was thrown away.
  • A full security scan, then the fixes: weak passwords reset, public registration closed, exposed backups secured, server ports restricted.
  • Custom admin tooling for completions, expiries, certificate downloads and spam review, so the day-to-day work stopped being dangerous.

The outcome

About two weeks of work, and the public site was never taken down. The platform went from fragile, overloaded and abuse-prone to controlled and supportable, with checks after the hardening confirming the site, login and admin were all healthy.

The archive-and-quarantine decision is the one worth dwelling on. Deleting several hundred thousand user records would have been faster and would have looked like a cleaner result. It would also have been unrecoverable if the criteria turned out to be wrong, on data belonging to real people who had completed real training. Reversible was slower and correct.

Why it is here

Not every job is a build. Some are a platform somebody already depends on, in a state nobody intended, that needs a steady hand rather than a proposal to replace it.

Client

A healthcare training provider. Named only by sector, at the client's request.

Talk about similar work All work