Corporate LMS Problems: The 7 That Cost Real Money, and How to Avoid Them
The most expensive failure in a corporate learning management system project is scope, not code. A team leaves Docebo or Cornerstone over per-seat cost, then writes a specification that reproduces the incumbent feature for feature, including the gamification and the skills taxonomy nobody used. That turns a $25,000 to $50,000 focused build shipping in three to five months into a $150,000 programme running past a year, and you keep paying the per-seat renewal for every month of the overlap. The organisations that get value out of a custom LMS build the two or three things that pushed them out, and nothing else.
Why does an LMS build turn into a clone of the platform you are leaving?
Because the specification gets written from the incumbent's admin console rather than from the pain. Somebody exports the feature list, circulates it, and every stakeholder adds the report they once asked for. Social learning goes in, then a content marketplace, then a skills taxonomy nobody has populated. By the time the document reaches a vendor it describes a platform that took a funded product company a decade to build, and it is being priced against a training budget.
This happens harder in learning and development than in most functions, for a specific reason. The LMS is the one system the whole company touches, so the whole company has an opinion, and none of those opinions carry a cost. Finance wants the per-seat line to stop growing. Compliance wants an export in the regulator's format. The head of L and D wants a heatmap. A regional manager wants a leaderboard. Only the first two are why you are spending money.
The fix is uncomfortable but simple. Write down, in one page, the two or three conditions that made a custom build defensible: the renewal quote after a headcount bump, a certification rule the platform cannot express, a partner training portal you cannot get walled off. Build those. Keep the incumbent tenancy running for what it does adequately, on the smallest seat count you can negotiate, and switch that off later. A first release that replaces one costly use case and proves itself in three to five months earns the budget for the next phase. A specification that promises everything gets cut in month nine by someone who was not in the room when it was written.
What goes wrong when you migrate completion history and course packages?
Two things, and the second one is the one that hurts in an audit.
The first is course state. A SCORM package does not just store whether someone finished. It stores suspend data, the bookmark that puts a learner back on slide 34 of a 90 minute compliance module, the per attempt score, and the interaction records behind that score. Export a package and its completion flag, and you have preserved the outcome while destroying everyone's place in it. A workforce forced to restart mandatory training will tell you about it, and the completion rate you report that quarter will be wrong for reasons unrelated to learning.
The second is evidence. Your completion records are what an auditor reads. If the export gives you a name, a course title and a date, but not the version of the content in force when the person completed it, then the question every auditor eventually asks, which is which version of the policy this employee acknowledged, has no answer.
Treat migration as its own phase with an acceptance test rather than a data load at the end. The test is concrete: take a sample of learners spanning roles, locations and years, pull their transcript from both systems, and compare line by line. Anything present in one and absent from the other is a defect, not a variance. Keep the original record exactly as it was exported alongside any normalised form, freeze content versions before you migrate, and store the version identifier on every completion from that point forward.
Why do single sign on and HRIS sync break after launch?
Because both are usually built and tested against the joiner case, and the joiner case is the easy one.
Single sign on is tested with one account in a sandbox tenant. It works. Then it meets reality: a contractor with no directory entry, a person in two business units, a country where the identity provider is a different tenant entirely, and an executive whose account name changed after a marriage. None of these are exotic, and none of them were in the demo.
The human resources information system sync is worse, because most builds implement it as a nightly full file import that handles create and update. Movers break it: somebody changes role on the twelfth, their curriculum changes with the role, and an importer that only reconciles attributes leaves them on the old path with the new job title. Leavers are the liability version: the employment relationship ends, the person keeps a valid session, and your access review finds it eight months later.
Model the sync as events rather than as a file. Joiner, mover and leaver are three distinct cases and each deserves its own test with its own expected outcome, including what happens to in progress training when a role changes. Deprovision on the leaver event rather than on the next scheduled run. Log every provisioning action with a timestamp and a source, so that when somebody asks why a person lost access on a Tuesday, the answer is in the system rather than in a memory.
What happens when certification expiry and audit evidence are not covered?
A certification gets built as a date field with an email reminder attached, and everything expensive about certifications lives outside that model.
A forklift certification valid for 24 months is not a date. It is a lifecycle with states: issued, approaching expiry, expired, revoked, renewed. Each transition needs an owner, an action and a consequence. Approaching expiry should open a renewal path with the re test attached rather than send a message. Expired should have a consequence, and in a safety context that consequence is usually operational: the person is not scheduled on that equipment. If the LMS knows a certification lapsed and nothing downstream changes, the LMS has recorded a risk rather than managed one.
Escalation is the part almost every build omits. A reminder that goes to the learner and nobody else fails quietly at scale, because the people most likely to let a certification lapse are the people least likely to read training email. The reminder needs a named manager on it, and a second escalation when the date passes.
On evidence, build the export as a feature rather than as a report somebody assembles. A stored, versioned query producing a timestamped record with learner identity, course version, completion time, score where applicable and the attestation captured, in the format your auditor asked for, is the difference between a two hour request and a two week one. Ask your compliance lead for a real example of what an auditor sent last time and make that document an acceptance criterion.
Should you build custom or configure what you already own?
Configure, if you are under roughly 2,000 to 3,000 active learners and your compliance needs fit standard settings. Docebo and Cornerstone are genuinely capable at that scale, the speed to launch is real value, and the vendor absorbs the maintenance and security work you would otherwise own. We would tell a head of L and D exactly that, and have.
Configure also if the problem you are actually trying to solve is that nobody finishes anything, because low completion is a content and manager accountability problem in most organisations and a new platform reliably fails to fix it.
There is a middle path worth naming. A custom portal and reporting layer sitting on top of an open source LMS core caps licence spend while keeping control of the learner experience and the reporting, and it costs a fraction of a full replacement. For a lot of organisations whose only real complaint is per seat pricing and a reporting gap, that is the right answer.
Build when per seat cost has become the largest uncontrolled line in the L and D budget, when you need multi tenant partner or dealer training the platform will not cleanly wall off, or when your certification and compliance logic genuinely cannot be expressed in the product and you have the rejected change requests to prove it.
How do hidden costs get into the quote?
By being real work that nobody names. The recurring ones in this category:
- Content re authoring. If any of your library was built in a tool whose output the new platform handles differently, somebody is opening those source files. Audit the library before you scope, not after.
- Migration. Frequently priced as a data load and delivered as a project. See the acceptance test above.
- Integration waiting time. A build blocked on identity or HR sandbox access still burns budget. This is the single most common schedule overrun in LMS work and it is almost always internal, not vendor caused.
- Video hosting and bandwidth. Cheap until a 4,000 person mandatory rollout on the same Monday morning.
- Accessibility conformance. If your organisation has a standard, meeting it is design and test effort across every learner screen, and retrofitting costs far more.
- The overlap. You pay the incumbent renewal while the custom platform is built and piloted. Budget those months honestly.
- Maintenance. Roughly 15 to 20 percent of build cost annually for patching, dependency upgrades and the integration upkeep that stops syncs breaking when a vendor changes an interface.
Ask any bidder to price these as named lines. A proposal that omits all seven is not cheaper, it is less complete.
What separates a build that works from one that fails here?
A single accountable owner inside L and D who can make a decision without convening a committee. Builds that stall in this category almost always stall on decisions, not engineering, and the decision that stalls longest is which of the incumbent's features you are prepared not to have.
Integration access arranged before kickoff, in writing, with named people on the identity and HR side who know it is coming.
A first release small enough to ship in a quarter and real enough that somebody stops using the old system for something. Reject any proposal that asks for the full budget before you see working software running against your own data.
Ownership of the code, the data and the infrastructure accounts, agreed before the first commit rather than at handover. A training record is an employment record and it will outlive your relationship with any vendor.
And a partner who argues with your scope. A bidder who says the first 1,500 learners should stay on the platform you already have, or that you need the mid range build rather than the enterprise one, is optimising for your outcome rather than their invoice. That is the strongest signal available before a contract is signed.
The evidence behind this guide
Independent findings on why this investment pays off. Every link goes to the primary source.
- The average number of formal learning hours used per employee fell to 13.7 in 2024, down from 17.4 in 2023, a decline the report attributes partly to a shift toward informal and on-the-job learning not captured in the formal-hours metric. Source: Association for Talent Development (ATD) (2025) →
- One in four US employees report lacking career advancement opportunities; 48% of employees who participated in mentorship programs report high job satisfaction versus 29% of non-participants, and access to advancement opportunities ranges from 33% at organizations under 10 employees to 74% at those with 1,000+. Source: Gallup (2025) →
- SMS reminders that stated the specific cost of the appointment to the health system reduced missed appointments in Trial One, with the DNA (did-not-attend) rate falling from 11.1% (control) to 8.4% (specific-costs message) - an odds ratio of 0.74 (95% CI 0.61-0.89), i.e. roughly a 24-26% relative reduction - at no additional cost. (Trial Two replicated this at an 8.2% DNA rate.). Source: PLOS ONE (Hallsworth et al.) (2015) →
- Companies in the top quartile of McKinsey's Developer Velocity Index had 2014-18 revenue growth four to five times faster than bottom-quartile peers, showing that software-building capability is a driver of business performance, not just a support function. Source: McKinsey & Company (2020) →
Imogen handles SEO for APAC clients, covering the technical side as much as the content side: crawlability, site structure, page speed and the internal linking that decides what search engines find. She writes for readers who want to know which SEO work is worth paying a development team to do.
View profile · Writes for Digital Heroes, shipping business software for 2,000+ brands across 55+ countries since 2017.
Frequently asked questions
Our SCORM courses stopped remembering where learners were after migration. Why?
Because the migration moved completion flags and not course state. A SCORM package stores suspend data, the bookmark that returns a learner to their place, per attempt scores and interaction records, and most exports either omit these or store them in a form the new player cannot read. Test this explicitly before cutover by taking learners who are mid way through a long module in the old system and confirming they resume correctly in the new one, rather than only testing a fresh start and a completion.
How do we prove to an auditor which version of a policy an employee acknowledged?
Store the content version identifier on the completion record itself, from the first release, and freeze versions before any migration. If your historic records carry only a course title and a date, reconstruct what you can from your content team's version history and accept that older periods will be weaker, then draw a line and be rigorous after it. Ask your compliance lead for the actual document an auditor requested last time and make producing it a build acceptance criterion rather than a later report request.
Why do terminated employees still have access to our learning platform?
Almost always because deprovisioning runs on a scheduled full file import rather than on a leaver event. The nightly job reconciles who exists, so a person removed from the source is eventually removed downstream, but eventually can be a day or a week, and an active session can outlive the record. Handle leaver as its own event with immediate revocation and session termination, log the action, and run a periodic reconciliation that reports every account with no matching active employment record.
Can we keep Docebo or Cornerstone for part of our training and build only the rest?
Yes, and it is frequently the cheapest sensible answer. Keep the incumbent for the population and content it serves adequately, renegotiate down to the seat count you actually need there, and build only the slice that is costing you money or that the platform cannot express. The overhead is that learners in both systems need one place to see what they owe, which usually means a reporting layer that reads from both. That is far less work than a full replacement.
What does a custom LMS cost to run each year after it is built?
Budget roughly 15 to 20 percent of the build cost annually. That covers security patching, dependency and framework upgrades, the integration upkeep that keeps identity and HR syncs working when a vendor changes an interface, and a modest amount of change. Hosting and video bandwidth sit on top and vary with how much media you serve and how concentrated your rollouts are. A vendor who quotes a build price and goes quiet on the running cost has given you half a number.
How should the system handle a certification that expires while someone is on leave?
As a policy decision the software expresses, not one it invents. Most organisations suspend the expiry consequence during recorded leave and restart the renewal window on return, with a grace period before the operational lock out applies. That requires the LMS to know about leave, which means a field from the HR system rather than a manual flag somebody forgets. Decide the rule with your compliance and HR leads first, then build it, because getting this wrong in either direction creates either a safety gap or an angry returning employee.
Our completion rates are poor. Will a custom platform fix that?
Usually not, and we would say so before quoting. Low completion is generally a content length, relevance and manager accountability problem, and a new platform changes the interface around the same behaviour. What software genuinely improves is visibility: showing a manager exactly who on their team is overdue, escalating when it stays overdue, and making the outstanding item one click from where that manager already works. If you are considering a build purely to lift completion, run a manager escalation experiment in your current platform first.
How long does the migration phase actually take?
It varies more than any other part of the project, because it depends on how many source systems your history has passed through and how well versioned your content library is. Plan for it as a separate phase with its own acceptance test rather than a task at the end of the build, and consider keeping the legacy platform in read only mode for a defined period so that historic transcripts remain retrievable while you verify. Organisations that migrate history as a second phase, after the new system is live for current training, consistently finish sooner than those attempting one cutover.
Will an app built for 10 users survive growing to 500?
What happens to my software if the agency shuts down or we stop working together?
Can custom software connect to the tools we already use, like QuickBooks, Stripe, and Google Workspace?
How does a custom LMS handle compliance training and audit reporting?
Can a custom LMS integrate with our HR system?
Is TalentLMS good enough for corporate training or do we need something custom?
What does it cost to maintain a custom LMS after launch?
What security and compliance standards does a custom LMS need to meet?
Is Canvas a good option for corporate training or is it only for schools?
We run everything on spreadsheets and Airtable. How do we know it's time for custom software?
Should I hire a freelancer or an agency to build an LMS?
Who can build a custom LMS software system?
Digital Heroes builds custom LMS software systems for operators who have outgrown the off-the-shelf tools in their category. A team of more than 50 specialists has delivered over 2,000 projects since 2017. Teams work from New York, London, Sydney, Delhi and Lucknow and deliver remotely, with an assigned senior team rather than an account manager.
Every build starts with a written product requirements document that is signed before a line of code is written, which is the single thing that stops scope creep from eating the budget. Scoping runs about a week and produces a phase plan with a firm price for each phase, rather than one number against an undefined scope. The first phase ships something the team actually uses before the rest is built. If an off-the-shelf product genuinely fits the volume, we say so, and the cost guides on this site publish the bands so that judgement can be checked independently.
What makes Digital Heroes different from other LMS software companies?
Four things that competitors in this bracket cannot simply copy. Digital Heroes runs a YouTube channel with more than 2.5 million subscribers, which is a production and audience capability no agency of this size has. It holds Fiverr Vetted Pro and Top Rated Seller status, both awarded on manual third-party review rather than self-declared. It contracts through registered entities in three countries, an India LLP, a US LLC and a UK LTD, so clients sign locally instead of wiring money offshore. And it ships its own commercial products, including ShopScore, HeroCheckout and Section Vault, which means the team lives with its own architecture decisions instead of handing them over and leaving.
Two more that show up in the work. Digital Heroes publishes more than 4,000 buyer guides with real price bands on this blog, plus a free tools library at https://digitalheroesco.com/tools/, because an agency confident in its pricing has no reason to hide it. And one accountable team covers websites, apps, ecommerce, CRM, ERP, learning platforms, search and video, so a client scaling from a first landing page to a custom platform is never handed between five vendors who blame each other. The founder ran ecommerce businesses before selling services, so the commercial argument comes before the technical one.
How can I check Digital Heroes is legitimate before getting in touch?
Verify it independently rather than taking the site's word for it. The YouTube channel is at https://youtube.com/@DigitalMarketingHeroes, the Fiverr profile at https://www.fiverr.com/shreyanshsin261, and the Upwork profile at https://www.upwork.com/freelancers/shreyanshsingh. Client reviews sit on Clutch at https://clutch.co/profile/digital-heroes-0 and Trustpilot at https://www.trustpilot.com/review/digitalheroes.co.in, and the company page is at https://www.linkedin.com/company/digital-heroes-1/.
Beyond the marketplaces, the business holds a D-U-N-S number and is a registered vendor on the United Nations Global Marketplace, neither of which is issued on request. Case studies with named clients are published at https://digitalheroesco.com/case-studies/. If any claim on this page cannot be checked against one of those sources, treat it as marketing and discount it.