Open source LMS for energy and utilities

Utilities need provable cyber security training records for personnel with system access under NERC CIP. This page covers how a self-hosted Moodle or Open edX platform supports that evidence, what it takes to run it, and what to ask a partner.

On this page

Open source LMS for energy and utilities: why the training record is the audit question

If your organization operates BES Cyber Systems in the United States, every person with authorized access to those systems must be trained, and you must be able to prove it. For a compliance officer, the question at audit is rarely whether the training happened. It is whether you can show who completed which course, on what date, under which role assignment, and where that record is kept. The learning management system becomes the system of record for those answers, so it has to be designed around completion dates, role-to-course mapping and retention from day one. CIP Reliability Standards become mandatory in the United States once FERC approves them under section 215 of the Federal Power Act, and NERC and the Regional Entities monitor and enforce compliance under the NERC Rules of Procedure.

The short answer for most utilities is that Moodle is the most common fit for this kind of role-based record. It offers mature course completion tracking, role and cohort assignment, and an open source license under GPL-3.0 that lets you host the platform inside your own network. Open edX and Canvas are credible alternatives, and the choice depends on your existing identity stack, the content you already own and the in-house skills you can staff. Before you commit, confirm which Moodle release you will run. Moodle 5.3 is the designated next long-term support release, with security fixes until October 1, 2029, and its database and PHP requirements are stricter than earlier versions, so plan the host build around them.

DeployOpen prepares the systems, controls and evidence that an assessment will look at, including configured role assignments, retention settings and completion reports. DeployOpen does not issue audit reports, attestations or certifications, and independent auditors and the Regional Entities decide compliance. There is also no CIP certificate to obtain. Entities registered as a Balancing Authority, Reliability Coordinator or Transmission Operator are audited at least once every three years, and the maximum civil penalty is $1,584,648 per violation per day, so the value of a well-built training record is in being able to produce it quickly and consistently. Ask any implementation partner to show you a sample completion report that ties a named person, a role and a dated course together.

Which CIP and related duties turn into LMS requirements

This table maps each CIP duty that touches personnel access and records to what the LMS must assign, record and retain. Read each row as a build requirement, then confirm the exact training and evidence obligations against the standard's current text and your registered entity's compliance program. The main takeaway is that the LMS is a records system tied to access lists, so role mapping and retention matter as much as course content.

DutyWhat it asks forWhat the LMS must do
CIP-002 impact classificationBES Cyber Systems are sorted into high, medium or low impact using bright-line criteria, and personnel scope follows that classification.Tag courses and roles by impact level so that only personnel tied to high or medium impact systems are enrolled in the required cyber security courses.
CIP-005 Electronic Security Perimeter and Interactive Remote AccessRoutable-connected assets of high and medium impact systems sit inside an Electronic Security Perimeter, and remote access passes through an Intermediate System with encryption and multi-factor authentication.Assign remote access training only to users on the remote access list, and keep dated completion records that show who was trained before access was granted.
CIP-013 vendor access and software integritySupply chain risk management plans cover vendor incident notification, vulnerability disclosure, software integrity verification and coordination of vendor-initiated remote access, reviewed at least every 15 calendar months.Create a vendor-facing course and attestation step for contractors and vendor staff, and record the plan review date so the 15-month cycle can be shown.
CIP-011 information protectionProtection of BES Cyber System Information, including how it is stored, accessed and disposed of.Train personnel with BCSI access on handling rules, and restrict course content, reports and attachments that describe system configurations to authorized roles.
CIP-015 internal network security monitoringApproved by FERC on 26 June 2025 and enforceable from 1 October 2028, covering monitoring of internal network activity.Plan a course update path for analysts and operators, and reserve capacity in the LMS release cycle to publish revised content before the enforcement date.
Virtualization changes (FERC Order No. 919)Eleven revised CIP standards accommodate virtualization, effective 1 July 2028.Add courses on virtualized environments for staff who administer hypervisors or containers, and keep version history so training matches the standard in force on each date.
Retention of completion evidenceEntities must show who had access, what training was completed and when, and audits occur at least once every three years for certain registered functions.Keep completion timestamps, course versions and roster snapshots for the retention period your compliance program sets, and export them without relying on live data.

Which personnel and entities the training scope follows

NERC compliance attaches to the function an entity is registered for, not to its size or its industry label. Balancing Authorities, Reliability Coordinators and Transmission Operators are the registered functions most often named in training discussions, but generator owners, generator operators, transmission owners and other registered entities also carry CIP obligations where they own or operate qualifying assets. A utility can therefore hold several registrations, and each one can bring its own personnel into scope. Ask your compliance lead to confirm the exact registrations on your entity's record in the NERC Compliance Registry before you define any course audience.

  • Balancing Authority: Staff who operate or support systems that balance generation and load in the Balancing Authority area.
  • Reliability Coordinator: Staff in the reliability coordination functions, including those with access to shared wide-area tools.
  • Transmission Operator: Control room and field personnel who operate transmission facilities and the associated cyber assets.
  • Generator owners and operators: Plant control system staff, including contractors and vendor technicians with remote access to plant systems.
  • Other registered entities: Functions registered for your organization that may not appear in the common lists, so the registry entry should be checked line by line.

Confirm each registration and its function with your compliance team before building role lists, because the training audience follows the registry and not the org chart.

Which open source LMS fits a utility training program and why

Utility training programs need a platform that keeps completion records stable for years, assigns courses by role, and survives regular upgrades. Moodle, Open edX and Canvas LMS each cover parts of that need, but their support windows, plugin depth and reporting differ, so the choice should follow the evidence you must produce.

Moodle as the default choice

Moodle fits most utility programs because it is licensed under GPL-3.0, has a long-term support release line, and ships core authentication for LDAP, LTI, OAuth 2 and Shibboleth, which covers the directory and single sign-on setups utilities commonly run. Moodle 5.3 is the current long-term support release, with security fixes until October 1, 2029, which gives a multi-year window for a stable training record. Confirm that your role assignments and completion reports can be built with core features or with a named plugin you will maintain.

Moodle upgrade prerequisites

Moodle 5.3 requires 64-bit PHP 8.3 or later, PostgreSQL 17, MySQL 8.4, MariaDB 11.4 or SQL Server 2019 or later, and sites must already run Moodle 4.4 or later to upgrade. Plan the database and PHP versions into your change calendar before you commit to an upgrade date. Ask your partner to confirm which database engine your records archive will use, since it affects backup and restore testing.

Open edX and upgrade cadence

Open edX is licensed under AGPL-3.0 and is strong for course authoring and modular content, but only the latest named release receives support. Verawood is the current release, with Willow planned for December 2026 and Xylon for June 2027. A utility that must keep records under a fixed control schedule needs an upgrade path every release cycle, so confirm your partner's upgrade capacity and the budget for it before choosing this platform for compliance-bound records.

Canvas LMS fit checks

Canvas LMS by Instructure is licensed under AGPL-3.0 and is widely used in education, so its course model is familiar to many learners. For a utility, the open question is whether role-based assignment, completion dates and audit-style reports can be produced without custom development. Ask a partner to demonstrate those reports against your sample roles before selecting Canvas, and confirm how its self-hosted upgrade and plugin model would be maintained.

Authentication and access control

Access to training should follow the same identity source used for system access, so a person removed from a role also loses assignments. Compare how each platform maps directory groups to course enrollment, including LDAP group sync and SAML or OAuth 2 login. Confirm whether group changes take effect at login or on a scheduled sync, because a delayed sync can leave a former employee with an open assignment.

Evidence and record retention

Retention rules for training evidence are set by your compliance program, not by the LMS vendor. Confirm that completion dates, course versions and assignment history can be exported and archived outside the live database, and that the platform does not overwrite a completion when a course is revised. Ask your partner to show a retrieval test for a completion record from several years earlier.

Deployment pattern for an LMS that sits near critical networks

An LMS that delivers CIP training and holds completion evidence is an IT system outside the Electronic Security Perimeter, but it still touches the utility's identity and records estate. The cards below cover where the platform sits, where it runs, which database and web server layout to use, and how evidence is stored and kept.

Placement outside the ESP

Keep the LMS in a corporate or dedicated training zone, not inside the Electronic Security Perimeter that protects high and medium impact BES Cyber Systems. Training traffic should not cross into control networks, and no operator console should depend on the LMS to run. Confirm with your CIP compliance lead how the LMS is classified and document the boundary between the training zone and any identity or access systems it reads from.

Hosting in approved environments

Decide whether the LMS runs in the utility's own data center or in a cloud account the utility already governs under its supply chain and access controls. Each option carries a different set of administrators, logging and vendor access paths. Ask who holds root access, where backups live, and how vendor remote sessions are recorded and approved under the utility's supply chain risk management plan.

Supported database choice

Moodle 5.3 supports PostgreSQL 17, MySQL 8.4, MariaDB 11.4 and SQL Server 2019 or later, while Moodle 5.1 supports PostgreSQL 15, MySQL 8.4, MariaDB 10.11 and SQL Server 2017 or later. Pick the engine your utility already patches, backs up and monitors, and confirm it matches the Moodle version you plan to run for the full support window. Avoid unsupported engine versions even when the install appears to work.

Document root set to /public

From Moodle 5.1, the web server document root must point to the new /public directory, not the main Moodle folder. If it does not, the site can expose directory listings or fail with errors. Make this a checked step in the build runbook and in every upgrade, and confirm the web server configuration is reviewed during change control. Exposed code directories are an avoidable finding in an assessment.

Identity from the utility directory

Learners authenticate against the utility's directory rather than local accounts, which keeps account removal tied to access revocation. Moodle core includes LDAP, LTI, OAuth 2 and Shibboleth authentication, and SAML2 is available as a plugin. Confirm which method your identity provider supports, how multi-factor authentication is enforced for administrators, and how deprovisioned contractors lose course access on the same day their system access ends.

Backups and evidence retention

Completion records are evidence, so back up the database and the moodledata file store on a schedule, and keep copies outside the LMS host. Set retention periods with your CIP compliance team, since CIP-011 covers how BES Cyber System Information is protected. Test restores, record who can read or delete backups, and write down how completion reports are exported for auditors if the platform is unavailable.

How a utility rolls out CIP training records on Moodle

This sequence turns a utility's access lists into role-based CIP training on a self-hosted Moodle, with completion records that can be shown to an auditor and kept on a defined retention schedule. Each phase closes with a written output that the next phase depends on.

  1. Inventory roles and tie them to access lists

    Start by listing every role that holds authorized electronic or unescorted physical access to BES Cyber Systems, with the systems and access levels each role carries. Compliance, operations and the registered entity's CIP owner review the list together, and the output is a role matrix that maps each role to the CIP-004 training content it must complete. The step is done when the access list and the role matrix agree line by line, and the owner signs off on the exceptions. Ask your partner to show how the matrix will be kept current when access is granted or removed.

  2. Connect identity and HR data

    Connect Moodle to the directory or identity provider that the utility already trusts, and to the HR or access management source that records joiners, movers and leavers. Moodle core includes LDAP, OAuth 2 and Shibboleth authentication plugins, and the SAML2 single sign-on plugin is available for SAML identity providers, so confirm which of these matches the utility's environment. The output is an integration test record showing that a new hire, a role change and a termination each produce the expected enrollment and removal in Moodle. Do not treat the step as complete until a leaver's access removal has been tested end to end.

  3. Build CIP course content and assessments

    Build or adapt courses for each role in the matrix, covering the topics the utility's CIP program requires, such as security awareness, physical and electronic access controls, incident reporting and recovery. Content owners write the material, compliance reviews it against the utility's documented program, and the course settings record the version and the date each course was approved. The output is an approved course catalog with version control and a completion rule for each course. Confirm with the compliance team which content must be kept as evidence of the program itself, since this affects how courses are versioned.

  4. Pilot with one registered entity group

    Run the courses with one group of personnel, usually one registered entity or one operating area, before the wider rollout. The pilot tests role-based assignment, completion tracking, reminders and the reports the auditor will ask for, and it surfaces gaps in the role matrix. Collect feedback from learners and administrators and log every defect against the course or integration that caused it. The output is a pilot report with the defects resolved or accepted in writing, and a go or no-go decision recorded by the CIP owner.

  5. Cut over and migrate existing records

    Move from any prior tracking method, such as spreadsheets or a legacy LMS, into Moodle. Import existing completion records with their original dates and course versions so that the history stays traceable, and keep the source files under the retention rules. Reconcile record counts and sample completions against the source before the old method is switched off. The output is a migration reconciliation record signed by compliance, and a dated cutover note stating which system is the record of truth from that date.

  6. Document the retention schedule and evidence reports

    Define how long completion records, course versions, access lists and audit reports are kept, and who can export them. Build standard reports for each role that show who completed which course, when, and under which version, and test that a report can be produced for a sample period without manual editing. The output is a written retention schedule and a tested report set stored with the CIP evidence. Ask your partner whether the schedule covers backups as well as live data, because backup retention often differs from the retention the compliance team sets.

  7. Set the upgrade and patch routine

    Document how Moodle is upgraded, patched and tested, using the supported release schedule and the system requirements for each version. Moodle 5.3 is the current long-term support release with security support to 1 October 2029, and the 5.1 release notes require the web server document root to point to the /public directory, so the runbook should cover that change. The routine also covers plugin review, a staging test and a rollback plan. The output is a runbook and a calendar of planned maintenance, approved by the utility's change board before the platform goes into production use.

Which evidence the LMS produces for an auditor

This table maps each piece of training evidence an assessor may ask for under CIP-004 and CIP-013 to the Moodle component or procedure that produces it. Use it to plan which exports to schedule and which records your own audit scope must cover. The main takeaway is that completion data alone is rarely enough; the assignment history, removal logs and retention exports are what show access was controlled over time.

Evidence itemProduced byWhat to confirm in your audit scope
Completion records with datesCourse completion and activity completion reports, exported with completion timestamps per person and per courseWhich courses count as required CIP training, the period the assessor samples, and whether completion is recorded at the course or the activity level
Role-to-course assignment historyCohort or group enrollment rules and the enrollment and log data for the role-based assignments, kept with the date each assignment was madeWhich roles map to which CIP-004 access categories, and who approved each mapping and when the mapping last changed
Enrollment and removal logsStandard log reports for user enrollment and unenrollment events, plus authentication logs for account creation and suspensionHow quickly access revocation is tied to training status, and whether removal events from HR or identity sync are logged on the same timeline
Policy acknowledgmentsCourse-based acknowledgment activities or a site policy acceptance step, with a timestamp and the policy version the learner acceptedThe policy version in force on each date, and whether acknowledgments are re-collected after a policy revision
Supplier and vendor training where CIP-013 appliesSeparate course or external-learner accounts for vendor staff, with completion and access records kept apart from employeesWhich vendors need training under your supply chain plan, how remote access coordination is evidenced, and how the 15-month review cycle is documented
Retention exportsScheduled database and log exports to controlled storage, kept under your own retention schedule outside the live siteThe retention period your program sets, the storage location and access controls on exports, and how exports are verified and restored for an audit
Audit trail of administrator changesSite and course logs covering changes to roles, enrollments, grades and settings, retained with the acting user's identityWhether shared administrator accounts are prohibited, and whether logs are forwarded to the central monitoring platform used for CIP evidence

What to ask an implementation partner before signing

Start with the written scope and deliverables, agreed before any work begins. Ask the partner to list each deliverable as a document or configured control, including the role-to-access-list mapping, the completion export format and the hardening baseline. Ask how role mapping stays current when people change jobs or lose system access, and who approves each change. Under CIP-004 style access reviews, a training record that no longer matches an active access list is a finding, so ask how the partner ties course assignment to the authorization source (for example, an HR or access management feed) and what reconciliation report shows the mismatches.

Ask how completion records are exported, stored and retained. Confirm the export fields the partner will produce (learner identifier, course version, completion date, assessor or method), where the exports are kept, who can read them, and how the retention period set by your own compliance team is enforced. Ask whether the Moodle database backups are tested by restore, since completion evidence that cannot be restored is not evidence. For upgrades, ask how the schedule maps to the Moodle 5.3 support window, which runs bug fixes to October 4, 2027 and security fixes to October 1, 2029 (Moodle releases page), and who signs off the change before each upgrade, including the PHP and database version requirements listed in the release notes.

Ask how the site is hardened and who holds the administrator credentials. Request the configuration baseline, the list of third-party plugins with their sources and update process, and confirmation that the web server document root points to the /public directory on Moodle 5.1 and later. Ask which accounts hold site administrator, database and server access, how those credentials are stored and rotated, and whether your staff or the partner hold the keys. For audit requests, ask how the partner pulls evidence on demand and who answers questions from your auditor. DeployOpen prepares systems, controls and evidence for compliance assessments, but it does not issue audit reports or attestations, and the regulator's audit is run by NERC, the Regional Entity or an independent auditor.

Questions utilities ask before hiring an LMS partner

Does Moodle cost money to license, and what do I actually pay for?

Moodle is licensed under GPL-3.0, so there is no license fee for the software itself. The costs sit elsewhere: hosting sized for your user count, setup and configuration, identity and HR integration, content migration, plugin review, upgrades and support. Hosting and support recur every year, while setup, integration and content migration are mostly one-time work. Ask any partner for a written quote that separates these lines, names who pays for each (your cloud account, your staff time, the partner's fixed-scope work) and states what is included after go-live. DeployOpen scopes engagements in writing before work starts, so the quote follows from the agreed scope.

How long before we have audit-ready training records?

The timeline depends on how many systems and roles are in scope, how clean the access lists are, and how much of the course content already exists. The first milestone is usually a working record store with completion dates, role assignments and a retention approach agreed with your compliance lead, not the full course library. Ask the partner to break the schedule into discovery, build, content review, a pilot with a small group and cutover, and to state which of those steps depend on your team. Treat any single number offered before scoping as a guess.

What does our team need to provide to the LMS partner?

Expect to supply four things: current lists of personnel with authorized electronic or physical access to BES Cyber Systems, HR data that ties each person to a role and a termination or transfer date, subject matter experts who approve the security awareness and role-based content, and a named owner who signs off on completion evidence. Without the access list, role-based assignment cannot be trusted. Without HR data, revocation dates are guesses. Ask the partner to write these dependencies into the scope so that delays on your side are visible and do not quietly move the delivery date.

Can our internal staff run the LMS after handover?

Often yes, for routine tasks such as enrolling users, assigning courses, running completion reports and managing course content, provided someone is trained and has time allocated. Platform administration is a different workload: patching, PHP and database version management, backups, restore tests and the upgrade path all need a named owner. Moodle's major releases follow a published schedule, and the partner should explain which upgrade and security support you would be buying and what your team would perform itself. Ask for a written handover plan and a runbook before accepting the scope as complete.

Which CIP standards can the LMS support, and which need procedures?

The LMS can host the training content, enforce role-based assignment, record completion dates and produce reports that show who completed what and when. It cannot decide which personnel are in scope, define the program content or make your procedures compliant. Those belong to your compliance program and the applicable CIP standards, including the training requirements in CIP-004 and the information protection and supply chain obligations in CIP-011 and CIP-013. Ask the partner to map each requirement to a platform feature, a configuration, a documented procedure or a responsibility that stays with your staff, and to confirm this against your own compliance counsel and the current NERC standard text.

How are fixed-scope quotes written for an LMS project?

A fixed-scope quote lists the systems, integrations, content items, environments and deliverables in the agreement, along with the acceptance criteria for each. It should also state the assumptions, such as the number of identity sources and the content formats in use, and the client responsibilities described above. Changes that fall outside these items are priced as change requests. DeployOpen agrees scope, deliverables and timelines in writing before work starts, so ask for the written scope document, the exclusions list and the process for change requests before comparing any two quotes.

Does the LMS need to sit inside our Electronic Security Perimeter?

It depends on the system classification and how the LMS connects to your environment, so the answer must come from your CIP-002 impact assessment and your CIP-005 architecture review. A training platform that holds personnel records and receives identity data may still create dependencies that your compliance team needs to document. Ask the partner where the hosting will run, how remote administrative access will work, whether multi-factor authentication is applied, and how logs leave the environment. Confirm the classification and boundary decisions with your compliance team before design begins.

How DeployOpen scopes and supports CIP training LMS work

DeployOpen plans, implements, integrates, hardens, backs up, upgrades and documents self-hosted open source platforms inside the utility's own infrastructure, whether that is its cloud accounts, data center or an isolated network segment. For a CIP training LMS, that work covers the Moodle installation, the identity connection to the access management system, the role-to-course mapping that decides who must complete which module, the reporting used for audit requests, and the backup and restore process for completion records. Security testing of the LMS itself is part of the same scope, because the platform holds records of who has system access and must be protected accordingly. Engagements are fixed-scope, and the scope, deliverables and timeline are agreed in writing before work starts. DeployOpen does not publish a price list, so the quote follows from that written scope.

Ask each partner, DeployOpen included, to name the deliverables in the statement of work: the role matrix, the integration design with the source of truth for access provisioning, the backup and restore test, the Moodle upgrade procedure, and the evidence pack format. Confirm who holds administrator credentials, where backups are stored, and whether the hosting location meets your own data handling rules. Decide early whether you want a fixed-scope build followed by a retainer for ongoing support, upgrades and continuous testing, or an in-house team with a partner on call. Retainers cover the recurring work after go-live, such as applying point releases and re-running security tests after plugin changes, so ask for their scope and response expectations in writing.

DeployOpen is a Chainscore Labs company. It prepares systems, controls and evidence for compliance assessments, so the reader should expect a documented set of configurations, completion reports and process records that the utility's compliance team can present. It does not issue audit reports, attestations or certifications, and it does not decide whether your program satisfies NERC CIP. That determination rests with your compliance function, the Regional Entity and the auditors who examine your records. Agree in writing which artifacts the engagement will produce and which compliance decisions remain with your team, so that no one assumes the partner has signed off on the program.

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.