Case study 01

Moving a government training portal onto Moodle 5.0, now with 3,800+ users

Period
Aug 2025 – present
Role
Technical lead, then project manager and main LMS administrator
Reading time
5 min read

I was the project manager for a state government training portal's move from an outdated Drupal LMS to Moodle 5.0, which brought online modules and facilitated session booking onto one platform.

The situation

The portal trains school council members across the state. It ran on a Drupal-based LMS that had fallen several major versions behind, and updating it in place was no longer a safe option.

The old portal also covered only half the program. It delivered the online modules, while the training delivery partner ran face-to-face and virtual sessions through its own booking system. Participants used two systems for one program.

The new platform had to bring both pathways together, give them equal standing, and carry across every existing user and their training history.

My role

I work for a small Melbourne eLearning studio, where I'm the sole employee. I was the technical lead from scoping in December 2024. When the project was approved in August 2025, I also took on project management.

In practice I sit between the department, the delivery partner and the vendor. The vendor builds. I write what needs building, track it, and sign off each release. The director and I agree positions on priorities and changes before they go to the client.

What I did

Turned the brief into requirements and a permissions model

I wrote the requirements and a role and permissions matrix for seven user roles, from council members to department administrators. The new platform uses custom page templates instead of Moodle's standard pages, so the matrix decided what each role sees on every page, not just what it can do. Once it was agreed, it gave the department, the partner and the vendor one shared reference for how each role should work.

Kept one numbered record of the work

I run weekly meetings with the vendor and regular catch-ups with the partner, and I keep the minutes and action log. I also maintain the issue tracker, where every item has a number.

Since August 2026 the vendor confirms each release by item number. I check each item on staging, then on live, before closing it. I keep evidence for every check, such as screenshots and report downloads. That keeps conversations about status short and factual.

Took the partner and department through testing

During user acceptance testing (December 2025 to January 2026), I gave the partner and the department testing resources and a draft user guide. I then combined their feedback into one list for the vendor, so nothing was lost between three organisations. I later expanded the draft into a 30-page participant guide.

Trained the partner and walked everyone through the system

I ran one-on-one virtual training with the partner's staff so they could run the system themselves: setting up sessions, managing users and bookings, and pulling reports. In group meetings with the partner and the department, I walked through the whole system and showed how each role interacts with it, from a council member booking a session to a facilitator marking attendance and an administrator downloading reports. The aim was for everyone to see where their part fitted.

Launched, then checked the migrated data

The portal launched in February 2026 with over 1,700 users carried across from the old portal. Over 2,000 more have registered since, taking it past 3,800. As the main LMS administrator, I'm also the support contact for users, through live chat and the portal's support requests.

After launch, I compared 29,016 user-module completion records across two report types. I traced 826 mismatches to one migration rule for part-completed records, and checked the fix cell by cell until the comparison showed no mismatches.

I also reviewed the platform's 26 system emails and got them corrected and released. Alongside the main build, I built small tools: help and FAQ pages, a training enquiry form and a certificate designer. Routine changes now don't need developer time.

Kept the platform current

Catching up on several major versions at once is far harder than staying current. On the new platform, I track the Moodle version against its support dates and raise upgrades early.

Results

Since launch

  • 2,000+ new users
  • 1,500+ session bookings
  • 800+ module completions by new users
  • Launched in February 2026 with over 1,700 users carried across from the old portal.
  • Over 2,000 new users registered since launch, taking the portal past 3,800 users.
  • Over 1,500 session bookings and over 1,000 attendances recorded through the new booking system.
  • Over 800 online module completions by users who joined after launch.
  • Online modules and face-to-face and virtual session booking now run on one platform.
  • About 140 functional items tracked by number after launch, each closed only after checks on staging and live.
  • 29,016 completion records reconciled, with 826 mismatches traced to one migration rule and fixed.
  • 26 system emails reviewed, corrected and released in October 2026.
  • A 30-page participant user guide, one-on-one training for the partner, and whole-system walkthroughs for the partner and the department.

What I'd do differently

  • Reconcile migrated data before launch. The part-completed records only showed up when I compared reports months after launch. Next time I'd run a record-level comparison on a trial migration and sign it off before go-live.
  • Agree the release rule on day one. Confirming releases by item number made progress clear to everyone, but we only adopted it six months after launch. I'd put it in the kickoff agreement, together with the evidence standard.

Tools and skills

  • Platforms: Moodle 5.0, Drupal-based LMS
  • Delivery: requirements, role and permissions matrix, issue tracking in Excel and SharePoint, minutes and action logs, user acceptance testing, release sign-off
  • Data: Excel, Python (pandas)
  • Technical: PHP, JavaScript and HTML/CSS for the supporting tools
  • AI: I worked with an AI assistant (Claude) on analysis scripts, tools and drafting. The work split roughly evenly; I set the approach and checked every result.
  • Skills: stakeholder coordination across three organisations, vendor management, training and system walkthroughs, quality control, technical writing

What it looked like (recreated)

Role and permissions matrix (cut-down). Recreated with invented data.
Capability LearnerLocal leaderFacilitatorProgram adminSite admin
View modules Yes Yes Yes Yes Yes
Book a session Yes Yes No Yes Yes
Mark attendance No No Own group only Yes Yes
View learner progress No Own group only Own group only Yes Yes
Download reports No Own group only Own group only Yes Yes
Issue a certificate No No No Yes Yes
Edit sessions No No Own group only Yes Yes
Manage users No No No Yes Yes
Change site settings No No No No Yes
Project timeline Recreated with invented data.

Project timeline Six phases, from scoping in December 2024 to post-launch releases, which are ongoing. My role changed from technical lead to project manager when the project was approved in August 2025. Scoping Approval Requirements and build User acceptance testing Launch Post-launch releases Project timeline Six phases, from scoping in December 2024 to post-launch releases, which are ongoing. My role changed from technical lead to project manager when the project was approved in August 2025. Scoping Approval Requirements and build User acceptance testing Launch Post-launch releases
Project timeline as a table
Project timeline
Phase Start End My role Status
Scoping Dec 2024 Jul 2025 Technical lead Done
Approval Aug 2025 Aug 2025 Technical lead, then project manager Done
Requirements and build Aug 2025 Jan 2026 Project manager and technical lead Done
User acceptance testing Dec 2025 Jan 2026 Project manager Done
Launch Feb 2026 Feb 2026 Project manager and main LMS administrator Done
Post-launch releases Feb 2026 Present Project manager and main LMS administrator In progress

Release tracker layout. Recreated with invented data.
Item no.AreaDescriptionRaisedVendor statusStaging checkLive checkEvidenceStatus
#101 BookingsWaitlist email shows the wrong session time3 MarDone, 10 MarPass, 11 MarPass, 13 MarEV-101Closed
Detail, #101: Checked with a test booking on staging, then a live booking from a test account. Screenshot of both emails saved.
#102 ReportsCompletion column blank for one module4 MarDone, 10 MarPass, 11 MarPass, 13 MarEV-102Closed
Detail, #102: Report downloaded before and after the fix on both sites. Both downloads saved with the item.
#103 CertificatesCompletion date prints in the wrong format6 MarDone, 17 MarPass, 18 MarFail, 20 MarEV-103Reopened
Detail, #103: Passed on staging but failed on live: the live site uses a different date setting. Reopened with a screenshot of each.
#104 UsersBulk upload skips the group field9 MarDone, 17 MarPass, 18 MarPass, 20 MarEV-104Closed
Detail, #104: Test file of five invented users uploaded on each site. Group membership checked user by user.
#105 SessionsFacilitator can’t edit the venue12 MarDone, 24 MarPass, 25 MarNot yetEV-105Awaiting live check
Detail, #105: Staging check passed with a facilitator test account. Live check waits for the next release window.
#106 HelpHelp link opens a retired page16 MarIn progressNot yetNot yet–Open
Detail, #106: With the vendor. No checks until they confirm the item number in a release note.

Client, partner and vendor names, and some details, are left out. Any visuals are recreations with invented data.

Jump to a case study

Arrow keys move through the results.