OpenLMSHong Kong
Technical basis

What the platform is actually built on.

For technical evaluators: OpenLMS is Drupal plus the Drupal LMS contributed module ecosystem, running on Drupal 10.3 or 11. This page describes the real architecture — modules, entity model, activity types and the development stack — so your engineers can assess it before you talk to sales.

Key technical facts

Core stack
Drupal 10.3+ or Drupal 11, PHP 8.4, MariaDB 11.4, nginx with PHP-FPM. Containerised with DDEV for development; Docker for deployment.
Upstream project
Drupal LMS — a GPL-licensed learning management system contributed to Drupal, originally forked from the Opigno distribution and rewritten for Drupal 10.
Contributed modules
Ten modules covering course, enrolment, assessment, certification and reporting concerns, all sharing one data model.
Content standards
SCORM 1.2 and 2004, xAPI, H5P, and YAML course packages, all first-class rather than bolted on.
Integration surface
REST and GraphQL APIs, SAML 2.0 and OIDC single sign-on, and integration points into common HRIS and identity systems.
Localisation
Full interface translation for English, Traditional Chinese (Hong Kong) and Simplified Chinese (Mainland), with locale-specific date, number and terminology handling.

The contributed module set

ConcernWhat it provides
CourseCourse entities, structure, visibility and lifecycle
EnrolmentEnrolment types, seat control, waitlists and status
Training assignmentAssigning learning to people by role, group or structure
ActivityThe learning activity types available inside a course
AssessmentQuestion banks, quizzes, scoring and results
CertificationCertificates, validity periods and renewal
Live trainingScheduled sessions, rooms, trainers and attendance
ReportingAggregated views over participation, completion and demand
Training pathSequenced learning paths and prerequisites
NotificationMessaging triggered by workflow events

Core entities and what they hold

EntityPurpose
TrainingA unit of learning that can be delivered in more than one way
CourseA container for training content, activities and assessment
ActivityA specific learning action within a course, of a given type
Activity typeThe definition of what an activity does — which is where the plugin architecture does its work
LearnerA person in the system, with a learning profile
GroupA set of learners used for structure, targeting and reporting

Why the entity model matters to a buyer

01
Architecture

One record per person, not one per module

Because all modules share the same entities, a completion in an online course, a score in an exam and a certificate from a live session all land on the same learning profile. That is what makes a report across delivery modes possible without a data warehouse project — and it is the specific thing that makes an open-source implementation cheaper to maintain than a set of bolted-together point solutions.

02
Architecture

Activity types are plugins

What an activity can do is defined by an activity type plugin rather than hard-coded logic. Adding a new kind of learning activity means writing a plugin against a documented interface, not patching core. For an organisation that will inevitably need something slightly specific, this is the difference between a configuration task and a fork.

03
Architecture

Standards are in the data model, not a converter

SCORM, xAPI and H5P content is stored natively. A SCORM package is imported as a learning activity; H5P is authored in the browser; xAPI statements are recorded against the learner. There is no lossy import step where a course becomes a proprietary blob.

04
Architecture

The cost of open code is in maintenance, not in licence

Drupal 11 uses PHP object-oriented hooks with attributes, so upgrades are a matter of following a documented pattern. That does not make upgrades free — it makes them a known, scheduled piece of work rather than an open-ended risk.

Technical questions evaluators ask

What is the difference between Drupal LMS and Opigno?

They share a lineage. Drupal LMS was originally forked from the Opigno distribution and has since been rewritten for Drupal 10, so the two have diverged substantially. Opigno also now offers a separate commercial product, Opigno Enterprise, which is a different platform from the open-source Opigno Community distribution. We build on Drupal LMS, and we explain the differences in more detail in our comparison article.

How are upgrades handled?

Drupal 11 introduces PHP object-oriented hooks using attributes, and Drupal LMS modules follow the same pattern. The practical consequence is that an upgrade is a matter of updating dependencies and following a documented extension pattern, rather than rewriting custom code against a changed core. We schedule this as planned maintenance, not as an emergency.

Can we run this on our own infrastructure?

Yes. The deployment target is a standard containerised stack: PHP-FPM, MariaDB and nginx. On-premise deployment is a supported configuration, and examination delivery can run on a network with no public internet access.

How do you handle single sign-on?

SAML 2.0 and OIDC are supported. The specific integration is scoped separately from the platform, because the mapping between your identity provider and the organisational structure in the LMS is where the real work sits — and it is rarely a one-to-one match.

Is there an API we can build on?

Yes. REST and GraphQL are both exposed, and the entity model is documented, so custom reports and integrations can be built against a stable interface rather than by scraping the interface layer.

What is the local development experience like?

The reference stack uses DDEV, which gives a containerised Drupal environment with a single command and a browser-accessible database and file manager, plus Drush for administrative scripting and Selenium for browser-level testing. A developer can have a full environment running locally in minutes without hand-configuring PHP, MariaDB and nginx.

Want to see it running against your own scenario?

Bring a course structure, an approval chain or a report your management asks for. We will show you the platform configured around it, and be precise about what it does not do.