When a self-hosted course platform beats a hosted marketplace
An organization that sells or delivers courses should host the platform itself when it needs to own the learner relationship, the branding and the learner data. Open edX suits course-led catalogs and cohort programs with a public-facing storefront, while Moodle suits blended corporate training and academic delivery where instructors manage courses inside an institutional workflow. Both need a separate ecommerce layer to take payments, manage price lists and issue invoices, so the real decision is which learning stack and which commerce stack will run together under one domain and one identity model.
A hosted marketplace makes sense when speed to first sale matters more than control. It carries the audience, the payment processing and the platform operations, but the marketplace usually sets the checkout flow, the terms of sale, the certificate design and the rules for exporting learner records. A self-hosted platform changes that trade. The team controls the catalog structure, the cohort enrollment logic, the certificate templates and the data retention settings, and it can connect the platform to the CRM, the HR system and the single sign-on provider the organization already runs. The cost moves from a revenue share or per-seat fee to infrastructure, integration and ongoing operations, which the organization must staff or contract.
Before committing, confirm three things with the vendors and your own counsel: which Open edX or Moodle release you will run and how long it receives security fixes, which payment and tax obligations the ecommerce layer will carry, and whether your learner data and payment flows fall inside the scope of any compliance program you already follow. Ask any implementation partner to write the decision down as a fixed scope, with the hosting model, the integrations and the support window agreed before work starts.
Requirements to agree before choosing a self-hosted course platform
Most course platform choices come down to a handful of answers: how many learners arrive at once, what kind of courses you run, how money moves, and where data must live. Settle these with legal, learning and finance owners before comparing Open edX, Moodle or any commerce layer, because each answer narrows the options.
Learner volume and cohort peaks
Count concurrent learners, not total enrollments. A cohort that starts on the same morning, or an exam window that closes at one deadline, creates a traffic spike that a platform sized for average use will not absorb. Ask for peak concurrency, the number of cohorts running in parallel, and how long a launch burst must be served. These figures decide the hosting tier, database design and whether you need a caching and queueing layer. Confirm them with the vendor's sizing guidance and your own load tests.
Course types and content formats
Self-paced catalogs, cohort-based programs and instructor-led courses stress the platform differently. Ask whether you need SCORM packages, LTI tool launches to external content, or both. Open edX and Moodle handle these formats with different strengths, and some third-party tools expose only one of them. Inventory every existing course file and external tool before selecting a platform, since content that does not import cleanly becomes a migration project of its own.
Sales model and payment flows
Decide whether you sell individual seats, group licenses, subscriptions or free enrollment with paid certificates. Each model needs different catalog rules, tax handling, refund terms and invoicing. The commerce layer, whether a plugin, a separate storefront or an external payment provider, carries the card data and therefore affects PCI scope. Ask who owns the merchant account, how refunds reverse course access, and how enrollment is revoked when a payment fails.
Certificate rules and verification
Define who earns a certificate, what completion means (time, score, attendance or a passed assessment), whether certificates expire, and how employers or regulators verify them. These rules shape the grading engine, the certificate template and the retention of completion records. If a certificate supports a regulatory or licensing claim, ask the vendor and your compliance lead how records are signed, stored and produced on request.
Branding and custom domains
White-label requirements affect theme work, email templates, the login page and the certificate design. Some platforms let you change themes through configuration, while others need code changes that must be carried through every upgrade. Decide early whether learners should see your domain, a subdomain or a partner brand, because changing the domain later breaks saved links, single sign-on trust and certificate verification URLs.
Accessibility obligations
Identify which jurisdictions and customers set accessibility requirements. For public-sector bodies in the US, the ADA Title II rule requires state and local government web content and mobile apps to meet WCAG 2.1 Level AA, with compliance dates that depend on the entity's size. Ask every candidate for its conformance statement, how it tests custom themes and third-party course players, and who remediates course content, since platform accessibility does not guarantee accessible course material.
Data residency and identity
Establish where learner records, payment data and recordings may be stored, which countries can administer the system, and whether learners authenticate through your identity provider. Self-hosting lets you pin the platform to a specific region or data center, but backups, email relays and third-party video tools can move data elsewhere. Map each data flow, then confirm that single sign-on, backups and logs stay within the approved boundary.
Which open-source course platform fits which delivery model
This table compares Open edX, Moodle and Canvas LMS on licensing, release support, catalog fit, and operating effort for self-hosted course delivery. Read it by first matching your delivery model to the fit row, then checking the release window and effort rows against your internal capacity. Ecommerce is usually a separate layer, so budget for it as its own component.
| Criterion | Open edX | Moodle | Canvas LMS |
|---|---|---|---|
| License | AGPL-3.0 | GPL-3.0 | AGPL-3.0 |
| Current release and support window | Verawood is the current named release; only the latest release is supported. Willow is planned for December 2026 and Xylon for June 2027. | Moodle 5.3.0 (released October 5, 2026) is the next long-term support release, with bug fixes until October 4, 2027 and security fixes until October 1, 2029. | Confirm the current release line, upgrade cadence and support terms with the vendor or community before selection. |
| Best fit for MOOC-style catalogs | Strong fit for large public or semi-public catalogs with self-paced and cohort-based courses, built around a course authoring studio. | Workable for smaller catalogs, but large open enrollment usually needs extra tuning and plugins to scale. | Confirm whether its course model and enrollment features match your catalog size and public access needs. |
| Best fit for blended corporate or compliance training | Possible, but usually needs more custom work for HR and instructor-led workflows. | Strong fit for blended training, with mature grading, cohort groups and a large plugin ecosystem. | Strong fit for instructor-led and blended programs in environments already using Canvas for academic delivery. |
| Ecommerce and payments | Usually handled by a separate open-source commerce layer or a payment plugin, not built in. | Usually handled by a separate commerce layer or a payment plugin, not built in. | Usually handled by a separate commerce layer or integration, not built in. |
| Operating effort | Higher: multi-service architecture, specialized operations skills and more frequent upgrades to stay on a supported release. | Moderate: a PHP and database stack with a large community of administrators and plugins to vet. | Moderate to higher: confirm the required services, scaling model and upgrade path with the vendor documentation. |
| Versions to confirm at selection | Current named release and the Willow and Xylon timelines. | Moodle 5.3.0 and the support windows listed above. | Current release line and its published support terms. |
How the ecommerce layer connects to the course platform
In this pattern a storefront such as WooCommerce (licensed under GPL version 2 or later, with WooCommerce 11.2.1 published on October 9, 2026) or Magento Open Source (OSL-3.0, with 2.4.9 as the latest stable tag) takes the order, collects payment and issues the invoice, then passes a signed enrollment instruction to the course platform. The storefront is usually the system of record for the sale, while the LMS is the system of record for access and progress. Payment card data stays with the payment processor if the storefront uses hosted fields or redirects, which keeps the storefront and LMS largely out of card data scope, but the storefront server still has its own PCI obligations and must be assessed as part of the environment.
- Payment handling: Confirm whether the processor's hosted checkout is used, since direct card entry on your own pages widens the scope.
- Tax and invoicing: The storefront calculates tax and issues invoices, so the tax configuration lives in one place.
- Refunds: A refund in the storefront should trigger an unenrollment call to the LMS, and that flow must be tested end to end.
- Enrollment record: The LMS holds access and completion data, while the order record stays in the storefront and should carry the LMS enrollment ID.
- Delivery mechanism: Confirm whether the bridge is a webhook, a queue or a scheduled sync, and how failed calls are retried and reconciled.
Check with your implementation partner how a failed enrollment call is surfaced to support staff and the buyer.
A headless commerce API such as Saleor (BSD-3-Clause, with 3.23.42 published on October 16, 2026) or Medusa (MIT, except materials covered by its Enterprise Edition license, with v2.21.2 published on September 28, 2026) manages products, carts and orders through an API, while your own frontend or a separate service handles the buyer journey. A small integration service listens for paid order events and calls the LMS enrollment API. This gives you more control over checkout and the enrollment workflow, but you own more of the code path, the payment integration and the security testing of the custom services.
- Payment handling: Use the payment app or provider integration supported by the commerce API, and confirm where card data is tokenized.
- PCI scope boundaries: Each custom frontend or service that touches checkout pages or payment webhooks enlarges the assessed environment, so map it before build.
- Tax and invoicing: Confirm which component calculates tax and generates invoice documents, since an API-first design can split those duties across services.
- Refunds: Define whether refunds originate in the commerce API, with an event that revokes LMS access, or in the LMS, with a callback to the commerce order.
- Enrollment record: Decide which system owns the enrollment; most teams keep the LMS as the access authority and store the commerce order reference on the enrollment.
Confirm with the vendor or partner that the commerce API's webhook signing and retry behavior meets your security requirements.
In this pattern the course platform itself sells access through paid enrollment plugins or built-in payment gateways. Moodle (GPL-3.0, with Moodle 5.3.0 released on October 5, 2026) and Open edX (AGPL-3.0, with Verawood as the current named release) both support paid course options through their plugin ecosystems, and Canvas LMS (AGPL-3.0) can be extended in a similar way. The LMS then becomes the single system for catalog, payment, access and certificates, which simplifies the data path but places payment and tax logic inside a platform that was designed for learning. Plugin quality, maintenance and payment gateway certification become your responsibility.
- Payment handling: Confirm which gateways the plugin supports and whether it redirects buyers to a hosted payment page.
- PCI scope boundaries: If the LMS hosts only redirects, card data stays with the processor; any custom payment form brings the LMS into scope.
- Tax and invoicing: Built-in plugins often offer limited tax handling, so confirm whether invoices meet your jurisdiction's requirements.
- Refunds: Check whether refunds can be issued from the LMS and whether they automatically revoke access and certificates.
- Enrollment record: The LMS holds the enrollment, but finance records may live elsewhere, so define the reconciliation process.
Ask the plugin maintainer for its update history and confirm it is supported on the LMS release you plan to run.
Reference architecture components for cohort-scale delivery
A cohort launch concentrates logins, video playback, quiz submissions and checkout into a short window, so each tier must be sized for the peak rather than the average. The components below connect through identity, storage and the ecommerce tier, and each one needs a load test that reflects how learners actually use the course before enrollment opens.
LMS application tier
Run Moodle or Open edX as stateless web and worker pods behind a load balancer, with background workers handling grading, certificate generation and enrollment imports separately from page requests. Size the pool for concurrent quiz submissions at the deadline, not for steady-state traffic. Confirm how your chosen release handles session affinity and how many worker processes each node can run. Load test the quiz submission path at peak concurrency before launch.
Relational database
The LMS database holds enrollments, grades and completion records, and it is the component most likely to become the bottleneck during a cohort start. Plan a primary with a tested failover standby, connection pooling in front of it, and sized storage for grade history across every cohort you expect to run. Ask your implementation partner for the replication method and the recovery point you can meet, and confirm both with a restore drill.
Object storage and video delivery
Lecture video, slide decks and downloadable assets belong in object storage, not on application nodes. Decide whether video is transcoded in-house or delivered as uploaded files, since transcoding adds worker capacity that must be sized before a cohort uploads a new module. Check how each platform references stored media, and test concurrent playback of the largest file in your catalog from several regions.
Cache and catalog search
Use a shared cache for session data, course metadata and frequently read catalog pages, and a separate search index for catalog filtering so that browsing does not query the transactional database. Keep the index rebuildable from source data and confirm how new course listings reach it. Test search latency while cohort enrollments and catalog updates run at the same time.
Ecommerce tier and payment flow
Paid cohorts add a commerce layer that handles carts, tax, invoices and payment callbacks, which should scale independently from the LMS. Choose between a monolith such as WooCommerce or Magento Open Source and a headless option such as Saleor or Medusa based on your team's skills and integration needs. Confirm that the payment provider handles card data, which limits PCI scope, and load test checkout and webhook retries together with enrollment.
Identity, email and monitoring
Connect the LMS to your identity provider through SAML or OpenID Connect so learners and staff sign in with one account, and make sure provisioning and deprovisioning run from the source directory. Send enrollment, reminder and certificate email through a dedicated transactional provider with verified sending domains. Monitor login latency, queue depth, email bounce rates and error budgets, and set alerts before the first cohort opens.
Build in-house, partner, or buy hosted course marketplace SaaS
This table compares running an open-source course platform yourself, running it with an implementation partner, and using a hosted course marketplace across branding and data control, effort, recurring obligations, and cost structure. Read each row as a question of who is paid for what and which costs repeat every year. The main takeaway is that open source moves license fees to zero but keeps hosting, upgrades, and support as recurring work, whichever model you choose.
| Dimension | In-house operation of open source | Open source with an implementation partner | Hosted course marketplace SaaS |
|---|---|---|---|
| Branding and learner experience | Full control over themes, domains, and course pages, limited by in-house front-end and LMS skills | Full control, with the partner building and maintaining theme and integration work under a written scope | Control limited to the vendor's templates and white-label options, so confirm what can change before signing |
| Data location and ownership | Learner and course data stays in your cloud account, data center, or air-gapped network | Data stays in your environment, with the partner accessing systems only under agreed access controls | Data is held by the vendor, so confirm hosting region, export formats, and what happens to data at contract end |
| Upfront work | Internal staff plan, install, configure, and test the platform, including catalog, payments, and certificates | Partner delivers the setup, customization, integrations, and migration of existing course content as fixed-scope deliverables | Account setup and course import, usually with less configuration effort but fewer options for custom payment or certificate logic |
| Ongoing platform operations | Your team patches, backs up, monitors, and scales the stack, including cohort load peaks | Retainer or agreed support covers upgrades, security updates, backups, and incident response, while your team keeps ownership | Vendor operates the platform, and you manage content, users, and vendor performance |
| Upgrade and support windows | Your team tracks each Open edX or Moodle release and its support window and schedules upgrades | Partner plans upgrades against the release calendar you approve, with support scope written into the contract | Upgrades happen on the vendor's schedule, so confirm notice periods and whether custom features survive |
| Recurring costs | Hosting, staff time, monitoring, backups, and any paid third-party services for email or video | Hosting, the partner retainer if chosen, and any third-party services, paid on top of your own staff time | Subscription fees that usually scale with learners, courses, or administrators, plus any transaction fees on sales |
| One-time costs | Initial build, internal training, and any migration project carried out by your own team | Setup, customization, integration, migration, and acceptance testing quoted from the written scope | Initial configuration, content migration, and any professional services the vendor charges for |
| Cost drivers to ask about | Engineering headcount, infrastructure sizing, and how many releases your team must absorb | Scope of custom features, number of integrations, retainer level, and hosting sizing for cohort peaks | Pricing tier, learner volume, per-transaction fees, and charges for exporting data or leaving |
| Best fit | Organizations with platform engineers, strong security operations, and a long-term plan to own the stack | Organizations that want open-source control and data residency but lack in-house capacity for every operational task | Organizations that need to launch quickly, accept vendor-run operations, and can live with its branding and data limits |
How a self-hosted course platform rollout runs
The sequence moves from agreed requirements to a tested, documented course platform that your own team can operate after hand-over. Each phase closes with a named output, so you can check progress before the next phase starts.
Scope requirements and course operating model
DeployOpen and your learning, IT, security and compliance leads document who enrolls, which courses are paid or free, how cohorts start and end, which systems must sign learners in, and what certificates must prove. The output is a written scope with requirements, integration list, out-of-scope items and a timeline agreed before work starts. Ask for the timeline and fixed deliverables in that document, not in a verbal estimate.
Select the platform through a proof of concept
Compare Open edX, Moodle and, where it fits, Canvas LMS against the requirements, including course authoring tools, SCORM and LTI support, and the support window for each release. Open edX is licensed under AGPL-3.0 and Moodle under GPL-3.0, and both licenses carry obligations you should review with counsel. The output is a signed platform decision record and a proof of concept that runs one real course end to end.
Build the hosting and integration layer
DeployOpen deploys the chosen platform into your cloud account, data center or private network, then connects single sign-on, HR or directory feeds, the ecommerce or payment flow and your storage and backup services. Environments for development, staging and production are configured with infrastructure as code and secrets kept in your vault. The output is a working production-like environment with an integration test report and an architecture diagram your team owns.
Migrate course content and learner data
Existing courses are exported, converted where needed and imported into the new platform, with SCORM or LTI packages checked for playback on the target release. Learner records and enrollment history are mapped and reconciled against source counts, and unmapped fields are logged rather than silently dropped. The output is a migration report listing each course, its status and any content that needs manual rework.
Test payments, enrollment and certificates
Checkout, refunds, coupon codes, enrollment triggers and certificate issuance are tested with test payment credentials and sample learners in staging. Certificate templates are checked against your branding and against the wording your compliance or accreditation owners require. The output is a signed test script with pass or fail results, plus a list of open defects and their owners before go-live.
Load test for cohort launch peaks
Load tests simulate the traffic pattern of a cohort opening, including many learners logging in and starting video or assessments within a short window. Results are compared against agreed response-time and error-rate targets, and bottlenecks in the database, cache, media delivery or autoscaling are tuned and retested. The output is a load test report with the tested concurrency, the observed limits and the scaling settings to use for each launch.
Review accessibility and content conformance
Course pages, player controls, assessments and certificates are tested against WCAG 2.1 Level AA, using automated checks plus manual testing with a screen reader and keyboard. If you are a state or local government body, the DOJ ADA Title II rule requires WCAG 2.1 Level AA for web content and mobile apps, with compliance dates that depend on your population size. The output is an accessibility report listing issues, fixes made and remaining items with owners.
Hand over with runbooks and operating support
DeployOpen delivers runbooks for deployment, backup and restore, release upgrades, incident response, user administration and certificate reissue, and trains the operators who will run the platform. Support after hand-over can be provided through a retainer that covers upgrades and continuous testing. The output is a signed hand-over record, tested restore evidence and a named support model for the first operating period.
Systems a course platform must connect to and what each involves
How does single sign-on with a corporate identity provider work for a self-hosted course platform?
Single sign-on usually works through a standards-based protocol such as SAML 2.0 or OpenID Connect, where the course platform trusts the corporate identity provider to authenticate learners and pass back their identity and attributes. Both Moodle and Open edX can be configured for federated login, but the exact connectors and attribute mapping depend on the release you deploy, so confirm them against the current documentation for your version. The typical failure points are mismatched attribute names (for example, email versus username), group claims that do not map to course roles, expired signing certificates, and clock skew between servers. Test with a pilot group of learners and a staff admin account before cutover, and document a break-glass local admin path. Cost comes from identity configuration and testing time, which is one-time, plus ongoing certificate rotation and role mapping changes that recur as the organization changes.
How do HR and LMS records connect for compliance training assignments?
The usual pattern is a scheduled or event-driven sync that imports employee records from the HR system (or the identity directory) into the course platform, creates or updates user accounts, assigns courses by job role, location or department, and writes completion status back for audit. Two common approaches are a flat file exchange on a fixed schedule and an API-based sync, and the choice depends on what your HR system exposes and how quickly leavers must lose access. Typical failure points include duplicate accounts when employee IDs change, leavers who keep access for weeks, role changes that do not reassign mandatory courses, and completion records that cannot be reconciled with the HR system of record. Ask your compliance lead which records must be retained and for how long, and confirm how completion evidence is exported. Costs are mostly integration build and data-mapping work (one-time), plus monitoring and reconciliation effort that recurs.
What does a CRM integration involve for lead and buyer records in a paid course platform?
For a course business, the CRM holds the lead, prospect and buyer record, while the course platform holds enrollment and progress. The integration typically pushes enrollment and purchase events to the CRM, and may pull contact preferences or campaign tags back into the platform, using the CRM's API or a middleware layer. Failure points include duplicate contacts created from different email addresses, enrollment events lost during API rate limiting or outages, and consent flags that are not carried across, which creates privacy exposure for marketing messages. Decide early which system is the source of truth for each field and who owns the mapping. Mautic and other open source tools can sit in this role if you do not already run a CRM, but that is a separate decision. Cost drivers are the number of objects synced, the complexity of field mapping, and the event volume during launches.
How should payment provider webhooks be handled so enrollments are not lost or duplicated?
Payment providers notify your system of successful, failed or refunded payments through webhooks, and the course platform should grant or revoke access only after a verified event. The safe pattern is to verify each webhook signature, store the raw event, respond quickly with a success code, and process the event asynchronously with idempotency keys so retries do not create duplicate enrollments. Common failure points include unverified endpoints that accept forged events, handlers that time out and cause the provider to retry, events arriving out of order (a refund before a payment), and enrollments that were paid but never provisioned because a queue worker was down. Test each event type with the provider's sandbox and keep a reconciliation report that compares payments with enrollments. Payment processing fees are set by the provider, so confirm them directly. The engineering effort is mostly one-time, with monitoring and reconciliation recurring.
Which email and notification services does a course platform need, and what goes wrong?
A course platform sends transactional messages (account creation, receipts, password resets, certificate delivery, deadline reminders) and often needs bulk or marketing messages, which should usually go through a separate sending path. Most teams connect an SMTP relay or transactional email API, configure SPF, DKIM and DMARC for the sending domain, and set bounce and complaint handling. Typical failure points are emails landing in spam because the domain is not authenticated, reminders sent to learners who already completed a course, certificate links that expire, and missing messages when the mail queue backs up during a cohort launch. Confirm the sending limits and suppression behavior with your provider, and keep consent records for any marketing messages. Costs include the email provider's volume pricing, which recurs with usage, and the one-time DNS and template configuration work.
How do SCORM packages and LTI tools connect to the course platform?
SCORM packages are zipped content files that the platform launches and reads for completion and score data through a defined run-time API, while LTI (Learning Tools Interoperability) lets an external tool launch inside the course with a signed, standardized handoff and return a grade. Moodle supports SCORM and LTI natively, and Open edX has its own content model with LTI support that you should confirm against your release. The integration work is usually tool-by-tool: test each package in the target platform version, check that completion and score reporting reaches the gradebook, and verify that LTI keys are stored securely. Common failure points include SCORM packages built for an older standard that report nothing, LTI launches blocked by cookie or iframe settings, and content that cannot be sent to a mobile browser. Ask vendors which SCORM and LTI versions their content uses before you commit. Costs depend on the number of tools, the testing effort, and any licensing for third-party content.
How should analytics and tax and invoicing systems connect to a self-hosted course store?
Analytics usually means exporting learning events (enrollments, completions, time on task) to a warehouse or BI tool, often through the platform's reporting database, an event stream, or scheduled exports, and this should be designed with privacy rules for learner data in mind. Tax and invoicing is a separate integration: the ecommerce or payment layer calculates the applicable tax from the buyer's location and product type, and an invoicing system issues the legal invoice. Failure points include reports that count enrollments instead of unique learners, reporting queries that slow the production database, incorrect tax rates for digital goods in some jurisdictions, invoice numbers that are not sequential, and refunds that do not adjust tax records. Confirm tax treatment with your tax advisor, since rules vary. Cost drivers are the number of data sources, the reporting depth required, and the tax engine chosen, which may be a recurring subscription.
Accessibility and branding obligations for public course content
If you are a state or local government entity in the United States, ADA Title II now sets a concrete accessibility bar for your course content. The Department of Justice's rule requires web content and mobile apps to meet WCAG 2.1 Level AA. An interim final rule published April 20, 2026 set compliance dates of April 26, 2027 for entities serving 50,000 or more people and April 26, 2028 for smaller entities and special districts. Public universities, agencies and training bodies that deliver public courses through a self-hosted platform fall inside that scope only if they are government entities, so confirm your status and applicability with counsel before you plan the work. Private organizations should not assume the same deadlines apply to them, but many use WCAG 2.1 AA as their internal target anyway.
For a self-hosted course platform, the obligation reaches three layers you control. The first is the theme: Open edX, Moodle and Canvas each ship with their own templates, and any custom branding, color palette, navigation or login page must be tested for contrast, keyboard operation and focus order after every change. Treat theme work as product development with an accessibility test step, not as cosmetic styling. The second is video captions and transcripts: captions must be produced or verified for every lecture, and the player, caption files and transcript download must work within the platform. Confirm which caption formats your chosen LMS and video host accept and who is responsible for proofreading automatic captions.
The third layer is course content review. Authors often upload PDFs, slide decks and embedded third-party widgets that the platform cannot make accessible on its own. Set a review gate in the publishing workflow where someone checks heading structure, alt text, table markup and link text before a course goes live, and keep the evidence of that review with the course record. Ask any implementation partner to show how accessibility testing is scoped in the fixed-price plan, which tools and manual checks will be used, and how remediation of existing courses is handled when the theme changes.
Compliance evidence a self-hosted course platform can support
A course platform that holds training records, certificates and learner data becomes part of your compliance story. The cards below map the evidence an assessor or procurement reviewer is likely to ask for to the platform components that produce it. DeployOpen prepares the systems, settings and records for assessment, while independent auditors and certification bodies issue any reports or certifications.
Accessibility conformance records
If your courses are delivered by a state or local government body, the ADA Title II web rule requires content to meet WCAG 2.1 Level AA, with compliance dates in April 2027 for larger entities and April 2028 for smaller ones. Keep an accessibility conformance report for the LMS theme, the course player and the authoring tools, plus remediation records for third-party SCORM or LTI content, which you may not control. Ask the platform team to test with assistive technology, not only automated scanners.
Access control and audit logs
Training records are only credible if you can show who could change them and when. Document role assignments for learners, instructors, course authors and administrators, and retain logs of enrollments, grade overrides, certificate issuance and admin actions. Confirm in each platform's documentation which events are logged by default and where logs are stored, because some are kept only in the application database and may be lost in a rollback.
Identity and single sign-on evidence
Assessors frequently ask how learner accounts are created, federated and removed. Show the integration with your identity provider, the mapping of HR-driven group membership to course access, and the deprovisioning procedure for leavers. Test that a suspended employee loses access to in-progress compliance courses and that certificates remain verifiable after the account is closed.
Data protection and retention settings
Learner records contain personal data, and the retention period should be a documented decision rather than a database default. Record the retention rule for completion data, assessment answers and uploaded files, the encryption settings for data at rest and in transit, and the process for honoring access and deletion requests. Ask your legal team which records must be kept for a defined period and which must be erased.
Hosting and backup evidence
Where the platform runs determines which infrastructure controls an assessor reviews. Keep the architecture diagram, network boundaries, backup schedules and tested restore results for the database, object storage and certificate signing keys. A restore test that recovers course completions and issued certificates is stronger evidence than a backup policy on its own.
Change management for LMS upgrades
Open edX and Moodle both publish release and support windows, so an upgrade plan is part of the control environment. Open edX supports only its latest named release, while Moodle 5.3.0 is the long-term support release with security fixes until October 1, 2029. Record each change in a ticket with a test plan, a staging run, the rollback procedure and sign-off, and confirm the support window of the version you deploy before you commit to it.
Questions to ask a course platform implementation partner before signing
Start by asking which LMS and ecommerce layer the partner has deployed in production, and how many of those deployments ran paid cohorts with live payments. Ask for the platform version each one runs, who on the team handled the Open edX or Moodle configuration, and how they connected the storefront to the LMS enrollment flow. Ask for a reference you can call, and ask what broke during the first cohort. A partner that cannot describe a failure in specific terms has probably not run enough real enrollments to know where the risks sit.
Ask how upgrades will follow the vendor's release and support windows. For Moodle, confirm which branch the partner intends to run, since the vendor states that Moodle 5.3.0 receives bug fixes until October 4, 2027 and security fixes until October 1, 2029. For Open edX, confirm that the partner understands only the latest named release is supported, and who pays for the work to move between releases. Ask who tests plugin and theme compatibility before each upgrade, where the staging environment lives, and how long a rollback takes.
Ask how card data stays out of the course platform. The answer should name a hosted payment page or tokenizing provider, and it should show that the LMS and the ecommerce layer never receive primary account numbers. Ask the partner to draw the data flow and state which PCI DSS requirements the design reduces scope for, without claiming compliance on their behalf. Ask who signs the responsibility matrix, and who performs the annual scope review.
How much work is a self-hosted course platform, and what do you need to provide?
What drives the total cost of a self-hosted course platform?
The total depends mainly on how many integrations you need, how deep the customization goes, how much content you migrate, where the platform is hosted, and how much support you buy. Costs fall into two groups. One-time costs cover planning, configuration, custom theming, integrations, content migration, security testing and the first rollout. Recurring costs cover hosting, storage, email and payment fees, licenses for any commercial add-ons, upgrades, backups, monitoring and support. Moodle is licensed under GPL-3.0 and Open edX under AGPL-3.0, so the software itself carries no license fee, but Open edX and Moodle still need a team to run them. Ask any implementation partner for a quote that separates these two groups and names who is paid for each line.
Can our internal team operate a self-hosted course platform?
Often yes, if you already run production web applications, databases and identity systems, but the platform adds specific load. Moodle and Open edX both release on fixed cycles, and you need someone who can apply upgrades, review security fixes and test custom code before each change. Moodle 5.3.0 was released on October 5, 2026, with bug fixes until October 4, 2027 and security fixes until October 1, 2029, which gives you a planning window. Open edX supports only its latest release, so an upgrade is required to stay supported. Ask yourself whether you have at least one person who can own upgrades, one who can own the database and backups, and someone accountable for course content. If any of these is missing, plan for a partner to cover it under a retainer.
How long does a self-hosted course platform take to launch?
The timeline depends on scope more than on the software. The main drivers are the number of course catalogs and payment flows, the amount of content to migrate, the number of systems that need single sign-on or HR data, the amount of custom branding and theming, and how many rounds of accessibility and security testing you require. A pilot with one catalog, one payment provider and a single sign-on connection is much shorter than a multi-brand launch with custom certificates and cohort scheduling. We do not publish durations in advance. Agree a fixed scope, deliverables and milestones in writing before work starts, then ask for a timeline built from that scope.
What do subject matter experts and IT need to provide?
Subject matter experts own the content and assessment design. They need to approve the course structure, write or review learning objectives, validate quiz banks, and sign off on certificate wording. IT owns the infrastructure and access. Plan for IT to provide cloud or data center accounts, network paths, DNS, TLS certificates, an identity provider for single sign-on, email sending configuration, a payment provider account, and backup storage. Security teams should provide hardening requirements and approve the test plan. Ask your partner to list each input with an owner and a due date in the scope document, because late inputs are the most common cause of schedule slips.
Does a self-hosted platform need more effort than a hosted course marketplace?
Yes, the work is different. A hosted marketplace handles hosting, upgrades, payment processing and most storefront tasks for you, and you pay through a platform fee, a revenue share or a subscription. Self-hosting shifts those tasks to your team or a partner, but gives you control over data location, branding, integrations and fees. Choose self-hosting when data residency, custom integrations with your HR or learning records, or institutional branding matter more than setup speed. Compare total cost over the period you plan to run the platform, including your own staff time, not only the first-year invoice. Marketplace fees are usually recurring and scale with revenue, while self-hosting costs are more often fixed plus support.
What should we ask for in a quote for a self-hosted course platform?
Ask for a written scope that lists each integration, each course catalog, each payment flow and each content migration batch. The quote should separate one-time work from recurring services, and it should name what is excluded. Request the following items: the target hosting model, the support hours and response expectations, the upgrade and backup responsibilities, the testing deliverables, and the handover documents. Ask how changes to scope are priced and how many change requests are included. Confirm who holds the cloud accounts and licenses, and what happens to the platform if the engagement ends.
What makes content migration take longer than expected?
Migration effort rises with the volume of content, the number of formats and the quality of the source data. Courses built as SCORM packages, older quiz formats, embedded video links and learner records all need separate handling. Learner progress and completion history are often the hardest part because they must map to new course identifiers. Start with an inventory that counts courses, active learners, media files and assessment types. Then agree which history must move and which can be archived. Confirm that your source system's export tools and your legal retention rules support the plan before you commit to a migration date.
Does the platform need security testing and accessibility checks before launch?
Yes, for most organizations. A learning platform holds personal data, assessment results and sometimes regulated training records, so it should be tested before learners use it. Include application and API testing, configuration review of the hosting and identity layers, and an accessibility review. If you are a US state or local government entity, the ADA Title II web rule requires web content to meet WCAG 2.1 Level AA, with an interim final rule published April 20, 2026 setting compliance dates of April 26, 2027 for entities with 50,000 or more people and April 26, 2028 for smaller entities and special districts. Confirm your own obligations with counsel, and budget for remediation of the findings from testing.
How DeployOpen scopes, builds and supports a course platform
DeployOpen plans, implements, customizes, integrates, hardens, backs up, documents and supports self-hosted open-source learning platforms inside your own cloud accounts, data centers or air-gapped networks. For a course platform, that means agreeing the learning, commerce and identity scope in writing before work starts, then delivering it with the evidence your teams need to run it.
How we scope
- Written scope that names the LMS, the commerce layer, payment providers, and which course catalog and branding requirements are included
- Confirmation of identity integration, certificate rules, and the cohort sizes and peak enrollment windows the platform must handle
- Agreed deliverables, timelines and acceptance criteria, documented before any build work starts under a fixed-scope engagement
How we build
- Installation and configuration of Open edX or Moodle in your environment, with catalog, payment, and certificate workflows set up as scoped
- Customization of theme, branding and course templates, plus integration with SSO, HR systems and content formats such as SCORM or LTI
- Security testing of the learner-facing application and APIs, with findings tracked to closure before handover
How we hand over
- Operational documentation covering architecture, configuration, backup and restore procedures, and upgrade runbooks
- Evidence packs for accessibility, access control and change management, prepared for your own auditors or assessors to review
- Knowledge transfer sessions with your platform, identity and learning operations staff, tied to the written scope
How we support
- Ongoing support, upgrades and continuous security testing available as a retainer after handover
- Planned upgrades aligned to the release windows of the chosen LMS, so your team knows which versions receive fixes
- Retainer scope agreed in writing, so response expectations and included services are clear before you commit

