← Back to PortfolioCase Study · Education

Alphabet Media Academy

Retiring WordPress for good: migrating a training portal onto ERPNext Frappe LMS, with admissions, payments and enrollment unified in one system.

Homepage of mediaacademy.ng — Alphabet Media Academy
Client
Alphabet Media Academy — postgraduate media management training institute, Lagos
Sector
Education · Media & advertising management training
Engagement
Full platform migration — WordPress/LearnDash to ERPNext Frappe LMS, plus a custom admissions & payment layer
Delivered by
Inventrium — IBSS
Stack
React 19 · Vite · Tailwind · Vercel · ERPNext / Frappe LMS (Frappe Cloud) · Flutterwave

At a glance

Alphabet Media Academy ran its postgraduate media management programmes on WordPress and LearnDash — fine for hosting lessons, but everything around the teaching was fragmented. Applications came in as emails. Two separate fees had to be chased and matched to students by hand. Paying did not automatically grant access to a course.

Inventrium migrated the academy off WordPress entirely, onto ERPNext Frappe LMS — moving the curriculum, the alumni base and the admissions pipeline into a single platform that also handles CRM and accounting, then built a fast, self-service front end on top of it so a prospective student can discover a programme, apply, pay and land in class without a staff member touching a single step.

We didn’t bolt a new front end onto WordPress — we retired it, migrated the curriculum and the people onto one system, and rebuilt admissions and payments to run themselves.

The challenge

The academy was growing in spite of its systems, not because of them:

  • WordPress and LearnDash hosted lessons well, but the journey from “I’m interested” to “I’m in class” was broken into disconnected, manual steps.
  • Applications arrived as emails and had to be tracked by staff in a spreadsheet.
  • An application fee and a tuition fee both had to be paid, chased and reconciled by hand for every single student.
  • Course access did not follow automatically from payment — enrollment was another manual step, every time.

What we did

Retiring WordPress in two staged workstreams

We did not risk a single big-bang cutover. Public content — faculty profiles, board information, news — moved first, onto a static, build-time content registry. Only once that was live did we tackle the harder half: admissions, payments and the LMS itself. WordPress was kept read-only throughout as a safety net, and only retired once the new platform had proven itself end to end.

Migrating the curriculum without losing a lesson

Custom migration scripts pulled every LearnDash course, chapter and lesson via the WordPress REST API, converted the lesson content into Frappe LMS’s native format while stripping out legacy page-builder markup, and re-downloaded and re-uploaded every referenced PDF. The scripts were built to be idempotent and resumable — safe to re-run without duplicating a single lesson.

Migrating people, not just content

Alumni with real, paid course access became enrolled Frappe users; everyone else in the old database became a tracked CRM lead instead of dead data. WordPress stores passwords in a format that cannot be carried over to the new platform, so migrated accounts were given no usable password and prompted to reset on first login — the honest, secure option, not a workaround. The migration’s own validation caught and correctly rejected at least one spam record along the way, rather than importing it.

One system instead of four

ERPNext now runs the learning management system, the admissions CRM, and the accounting layer — Sales Invoices, Payment Entries — together, in one instance. That single move replaced WordPress, LearnDash, WooCommerce and manual bookkeeping with one platform the academy’s team can actually see and act on.

Secure, automatic payments and enrollment

Students pay application and tuition fees through Flutterwave — card, bank transfer or USSD — with every transaction verified server-side against amount, currency and reference before it is ever recorded. Guest-facing endpoints only log a payment event; a separate scheduled worker performs the actual accounting writes, a deliberate design that works within ERPNext’s own permission model instead of bypassing it. Installment plans are supported with an automatic surcharge, and the moment a payment clears, the student is enrolled — no manual step, no waiting.

One seamless front door

A fast, modern React front end replaced the old theme-locked WordPress site — a guided, multi-step application, conversion-focused programme pages, and direct sign-in to the branded Frappe LMS portal for students and faculty. Native LMS features — quizzes, certificates, progress tracking — came with the platform and did not need to be rebuilt.

Under the hood

  • Migrating the curriculum: custom scripts pulled every LearnDash lesson and topic via the WordPress REST API, converted the HTML into Frappe LMS course chapters and lessons while stripping legacy page-builder markup, and re-downloaded and re-uploaded every referenced PDF — resumable and safe to re-run.
  • Migrating people, honestly: alumni became enrolled Frappe users, prospects became ERPNext CRM leads; WordPress password hashes cannot be carried over, so migrated accounts got a forced password reset rather than a faked login.
  • One ERPNext instance, four jobs: the LMS, the admissions CRM (Leads) and the accounting layer (Sales Invoices, Payment Entries) now run in a single system instead of WordPress, LearnDash, WooCommerce and a spreadsheet.
  • Payments that respect the platform's own security model: Flutterwave transactions are verified server-side against amount, currency and reference before anything is recorded; the guest-facing endpoint only ever logs an event, while a scheduled worker performs the actual accounting writes — working within ERPNext's permission model rather than around it.
  • Installments, handled properly: diploma and certificate fees can be paid in four or three instalments with an automatic surcharge applied, and the student is enrolled the instant each payment clears.
  • A same-origin proxy that fixed two problems at once: a CORS issue where applications were saving but the browser couldn't read the response was solved with a same-origin API proxy — which also made preview deployments work without extra configuration.

The results

  • The curriculum moved without losing a lesson — every course, chapter, lesson and referenced PDF migrated from LearnDash into Frappe LMS.
  • People moved cleanly too — 13 active alumni enrolled and 174 prospects captured as CRM leads, with zero migration errors.
  • One system now runs the whole operation — LMS, admissions CRM and accounting live together in ERPNext, replacing four disconnected tools.
  • Enrollment is instant and automatic — the moment a payment clears, the student is enrolled, no staff step in between.
  • WordPress came down in stages, not a big-bang switch — kept read-only as a safety net until the new platform was proven end to end.

Impact

For students: enrolling is self-service and immediate — discover a programme, apply, pay, and get into class without waiting on a staff member at any point.

For the academy: the back office runs itself. Applications arrive structured, payments reconcile automatically, enrollment follows payment without a manual step, and the same system that runs the classroom also runs the CRM and the books.

Strategically: the academy went from four disconnected, manually-bridged systems to one platform that recruits, teaches, enrols and gets paid — migrated carefully enough that not a single lesson, alumni record or legitimate lead was lost along the way.

Why it matters for Inventrium

This is not a front-end reskin — it is a real backend migration, executed with the discipline a live institution’s data deserves: idempotent, resumable scripts; honest handling of a security constraint (non-portable passwords) instead of a shortcut; a staged rollout with WordPress kept as a safety net until the new platform was proven. It demonstrates that Inventrium can take on the harder half of a migration — the data, the people, the money — not just the pages a visitor sees.

Outgrown the platform running your institution?

We migrate real data — courses, students and payments — carefully, not just the front end.

Chat on WhatsApp