KnowledgeCity · Enterprise LMS · 2025
Updating a course used to break everyone enrolled in it.
A version lifecycle system, configurable migration controls, and a full compliance audit trail — built for enterprise organizations where course updates cannot disrupt active learners.
Version State Machine
Three discrete lifecycle states — Draft isolates in-progress edits from enrolled learners, Active publishes the canonical version, and Archived freezes completed versions for compliance audit and rollback.
Zero
Learner disruption during draft edits — isolation is architectural
11 → 5
Admin steps to publish a course update
Full
Version history with timestamps for compliance audits
Executive Summary
A system that made course updates safe.
KnowledgeCity's enterprise LMS had no safe mechanism for updating course content. Every edit to a live course overwrote active learner progress — creating compliance risk, eroding administrator trust, and generating significant support overhead. As organizations scaled their training programs, particularly in regulated industries, the inability to version content was becoming a contract retention issue.
I led the end-to-end design of a Course Versioning framework: a structured lifecycle system enabling administrators to create, edit, and publish course updates without disrupting enrolled learners. The solution introduced a configurable migration model, a historical archive layer, and a learner-facing communication system.
The framework shipped in Q1 2025. Post-launch, administrator confidence in making course updates increased substantially, and the system established the architectural foundation for compliance tracking and learning path versioning.
Project Details
- Timeline
- 5 months (Discovery → Engineering Handoff)
- Platform
- Enterprise SaaS LMS, B2B, multi-tenant
- Scope
- Versioning framework · Admin workflow · Migration controls · Audit trail
- Role
- Senior Product Designer — end-to-end
Project Impact Overview
Note on metrics: Quantitative post-launch data is ongoing. The above reflects directional outcomes observed in the first 60 days, combined with pre-launch baseline estimates from Customer Success interviews.
The Problem
"Administrators stopped updating courses — not because the content was fine, but because updating it was too risky."
Synthesized from Customer Success interview notes, Q3 2024. No direct quote — paraphrase reflecting the consistent pattern across six conversations.
Who it affected
Updating content felt like defusing a bomb.
- No safe preview environment — changes went live immediately.
- Admins working around the system by duplicating entire courses, then manually re-enrolling learners.
- Most avoided non-critical updates altogether; the risk outweighed the effort.
Progress disappeared. With no warning.
- Course updates mid-enrollment could reset or corrupt learner progress.
- No communication mechanism — learners discovered changes by encountering broken state.
- Compliance training was highest-risk: a reset could mean a missed certification deadline.
Compliance requirements were non-negotiable.
- Enterprise clients in healthcare, finance, and government required audit trails for course content.
- The absence of version history was a recurring blocker in enterprise procurement conversations.
- Support overhead from update-related errors was consistent in monthly ticket analysis.
Before / After
From an 11-step workaround to a 5-step workflow.
Manual workaround — 11 steps
- 1Navigate to course library
- 2Find and open the course
- 3Manually duplicate the course (no built-in tool)
- 4Edit the duplicate — changes go to a renamed copy
- 5QA the changes in the duplicate
- 6Manually re-enroll affected learners in the duplicate
- 7Overwrite the original course with new content
- 8Hope nothing breaks for active learners
- 9Handle support tickets from learners whose progress reset
- 10Manually archive or delete the old duplicate
- 11Update any learning paths referencing the old course
Steps 7–9 were the highest-risk zone — edits went live with no rollback.
11 → 5
Admin steps to publish an update
6
Steps eliminated from the old workaround
4
Support-ticket-generating steps removed