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
| Concern | What it provides |
|---|---|
| Course | Course entities, structure, visibility and lifecycle |
| Enrolment | Enrolment types, seat control, waitlists and status |
| Training assignment | Assigning learning to people by role, group or structure |
| Activity | The learning activity types available inside a course |
| Assessment | Question banks, quizzes, scoring and results |
| Certification | Certificates, validity periods and renewal |
| Live training | Scheduled sessions, rooms, trainers and attendance |
| Reporting | Aggregated views over participation, completion and demand |
| Training path | Sequenced learning paths and prerequisites |
| Notification | Messaging triggered by workflow events |
No rows match your filter.
Core entities and what they hold
| Entity | Purpose |
|---|---|
| Training | A unit of learning that can be delivered in more than one way |
| Course | A container for training content, activities and assessment |
| Activity | A specific learning action within a course, of a given type |
| Activity type | The definition of what an activity does — which is where the plugin architecture does its work |
| Learner | A person in the system, with a learning profile |
| Group | A set of learners used for structure, targeting and reporting |
No rows match your filter.
Why the entity model matters to a buyer
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.
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.
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.
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.