Executive Summary
REMI Team operates a mission-critical DotNetNuke platform that processes real estate licensing certifications for thousands of students annually. Their custom Course Completion List (CCL) Dashboard is the operational heartbeat of their business handling course completions, generating certificates, and ensuring regulatory compliance for real estate professionals across multiple states.
How a suite of custom DotNetNuke extensions transformed AccordLMS into a fully trackable, state-compliant real estate certification engine processing every learner's journey across 15+ US states.
US States Served
Daily Certifications Processed
Custom DNN Extensions Built
Learner Records Tracked
Client Profile
REMI Team delivers state-approved real estate education courses to aspiring salespersons and brokers. Their business depends entirely on a custom DotNetNuke module called the Course Completion List (CCL) Dashboard a sophisticated system that tracks student progress, validates course completions, and generates official certificates required for state licensing boards.
The CCL Dashboard isn't just software it's the operational backbone of their entire certification workflow. When it fails, certificates can't be processed, students can't meet regulatory deadlines, and revenue stops flowing. During peak licensing periods (end of month, end of year), the system handles 100+ course completions daily, making reliability and performance absolutely critical.
REMI's daily operations demanded far more than AccordLMS natively offered. They needed to know, in real time, exactly where each learner stood in their licensing journey which stage of which course they had completed, which required steps remained, and precisely when they qualified for an official certificate recognised by their state licensing board.
AccordLMS captured learning activity. What it could not do was expose, transform, or act on that activity in the granular, multi-stage, compliance-grade way REMI needed. The gap between what the LMS recorded and what the business required was costing them certificates, compliance, and customers.
Our answer was not to replace AccordLMS. Our answer was to build an entire ecosystem of custom DotNetNuke extensions around it a purpose-built intelligence layer that extracted AccordLMS data, interpreted learning events at every stage, tracked each learner's real-time status, and drove the complete certification workflow for every active course across every state they served.
DNN Technology Stack
The compromised environment consisted of the following technical architecture:
- DNN Platform: Version 9.x
- Database: Microsoft SQL Server
- Web Server: ASP.NET with Internet Information Services (IIS) on Windows Server
- Authentication: Standard DNN authentication with role-based access control
- Third-Party Extensions: AccordLMS Platform
- Custom DNN Modules: Development and Support AccordLMS Platform
- Hosting: AWS Infrastructure
The platform integrates with AccordLMS's learning catalog system, uses role-based course assignment, and processes complex multi-step completion workflows involving quizzes, surveys, and required learning elements marked with special indicators ("double asterisk" notation for final steps).
Design Philosophy: Build Around the LMS, Not Against It
The instinct in scenarios like this is to replace the third-party platform. We made a deliberate and strategically sound decision not to. AccordLMS managed course delivery, content access, learner authentication, and role management reliably. Replacing it would have disrupted years of operational workflow. Instead, we designed a non-invasive extension ecosystem that used AccordLMS as a data source while building the entire operational intelligence layer above it.
Every extension in the ecosystem was designed with one constraint: AccordLMS must remain completely unmodified. Our custom SQL sync engines, DNN scheduled tasks, and event registration logic operated entirely on REMI's own database tables reading AccordLMS data through approved access, transforming it into structured operational intelligence, and acting on it through their own DNN module layer.
The Challenge: DNN Extensions over Third-Party Solution
Over the course of our engagement, we systematically addressed a wide range of critical issues that threatened daily operations and business continuity:
1. Recurring Data Integrity Crisis: Duplicate Interaction IDs
Business Impact: Missing completions meant students couldn't receive their certificates on time, potentially missing state licensing deadlines. The client couldn't reliably track who needed processing, creating operational chaos during peak certification periods.
Technical Complexity: The root cause involved how AccordLMS tracked learner interactions across course attempts, retakes, and role changes. The existing DNN module wasn't designed to handle duplicate interaction scenarios, and the data model had evolved organically over years without proper error handling.
2. Catastrophic Performance Degradation
Business Impact: Processing 100+ daily certifications became painfully slow. Staff were waiting 2-3 minutes for pages to load, then repeating this 5-10 times per day. The inefficiency was compounding during their busiest periods, creating customer service backlogs.
Root Causes Identified:
- Database had grown to millions of records with no archival strategy
- SQL queries were retrieving and filtering massive datasets on every page load
- Course-by-course processing was executing hundreds of database calls sequentially
- No caching layer or optimization for repeat queries
- Browser rendering struggled with large DOM structures from thousands of table rows
3. Missing Course Completions: CCL Reliability Crisis
Examples Documented:
- Gerrit (gpetersonmaui@gmail.com): Completed May 17, didn't appear until May 23 (6-day delay)
- Jake (jake@maunakearealty.com): Completed May 21, still missing on May 24
- Keith (keithhz@hotmail.com): Completed May 30, missing from broker list entirely
Investigation Findings: The synchronization script was timing out when processing large datasets, the "Double Asterisk" logic for identifying final course steps had edge cases, and role assignment workflows created scenarios where completion data existed but wasn't being captured by the CCL query logic.
4. Critical UI Failures During Peak Operations
Business Impact: This was a complete operational shutdown. The client couldn't process any certificates whatsoever and was facing a mounting backlog with regulatory deadlines approaching.
5. Email Delivery Crisis: Spam Blocking
Urgency: "We are being blocked for spam. Can you let me know we can make [FIRSTNAME] appear in subject?" This was blocking critical business communications to customers.
6. Data Volume Approaching System Limits
Long-term Threat: Without a strategic data archival solution, the system would eventually become completely unusable or the hosting provider would force removal of the custom module.
The business couldn't onboard new customers, existing clients were experiencing daily service disruptions, and customer support tickets were accumulating faster than they could be addressed. Revenue growth had completely stalled.
Deep Technical Investigation & Methodology
Our approach to every issue followed a systematic diagnostic methodology that prioritized root cause analysis over quick patches:
Investigation Process
Request complete database backups from AccordLMS (often 2-5 day turnaround due to database size). Download and restore to local SQL Server development environment for safe analysis.
Reproduce reported issues using real production data. Identify specific user cases (email addresses, completion dates) that trigger failures. Trace SQL execution paths and log application events.
Analyze database query patterns, examine stored procedure logic, review SQL Server execution plans, and inspect AccordLMS integration points. Document findings with evidence (query results, error logs, performance metrics).
Propose targeted fixes with technical specifications. For complex changes, provide effort estimates and implementation timeline. Distinguish between emergency temporary fixes and permanent solutions.
Test solutions against real production data scenarios in development environment. Coordinate with client for validation testing on live system during low-traffic periods.
Provide source code, explain changes made, document file locations and deployment procedures to enable client's internal team learning.
Example: Diagnosing Duplicate Interaction ID Failures
Investigation Approach:
- Database Analysis: Examined AccordLMS's interaction tracking tables to understand how course attempts, retakes, and role changes created duplicate interaction IDs for the same completion event.
- Code Review: Analyzed the existing CCL synchronization stored procedure to identify where duplicate handling logic was missing.
- Data Pattern Analysis: Identified specific scenarios causing duplicates: students retaking courses from previous years, users with changed roles, manually assigned course access by administrators.
- Error Handling Design: Created comprehensive error handling document (error handling.pdf) outlining multiple solution approaches with pros/cons of each.
Implemented Solutions: Systematic Fixes & Enhancements
Phase 1: Emergency Stabilization (September-October 2021)
Duplicate Interaction ID Permanent Fix
Technical Implementation:
- Created new SQL Server table to log all interaction processing attempts
- Modified SyncCourseCompletionList stored procedure with duplicate detection logic
- Added intelligent filtering to capture all attempts (not just first try) while preventing duplicate CCL entries
- Implemented error handling that logs issues without crashing entire sync process
Outcome: Eliminated recurring sync failures. System could now handle retakes, role changes, and edge cases that previously caused crashes.
Dashboard Critical Error Resolution
Solution: Provided temporary fix to restore functionality, then implemented permanent fix after obtaining database backup for thorough analysis. Resolved SQL query issues causing page load failures.
Phase 2: Performance Optimization (May-July 2022)
Query Optimization & Selective Loading
Key Changes:
- Modified interface to allow processing 15 courses at a time instead of all courses simultaneously
- Optimized SQL queries to reduce join complexity and improve execution plans
- Changed sync script to log all attempts while maintaining single CCL row per completion
- Reduced data fetched from database by filtering irrelevant historical records
Performance Impact: Page load times improved significantly. Client reported noticeable performance improvement after implementation.
UI Component Fixes
- Markup/Notes Popup: Restored functionality for adding administrative notes to student records (June 2022)
- User Profile Editing: Resolved "unauthorized access" errors preventing dashboard profile updates
- Search Functionality: Restored ability to pull up user course information from dashboard search
Phase 3: Major Architectural Enhancement (August-October 2022)
Course-Wise CCL Implementation
New Architecture:
- Created separate CCL processing flow for individual courses instead of bulk processing
- Built dropdown course selection interface for targeted processing
- Implemented new menu navigation structure for course-specific views
- Designed system to handle course qualification logic more reliably
Strategic Value: This architecture set foundation for future scalability improvements and provided fallback option if original dashboard became unusable.
Mobile Responsiveness & UI Improvements
- Persistent Overlay Fix: Removed DIV layer that was disabling page interaction (August-November 2022)
- Mobile Menu Fix: Corrected menu behavior on smaller screens menu couldn't be minimized, taking full screen in portrait mode
- SFTP Access & Skin Customization: Secured proper access credentials to modify theme/skin files safely
Phase 4: Communication & Feature Enhancements (December 2022)
Email Personalization Token Implementation
Solution:
- Identified token replacement logic in email notification code
- Found and fixed multiple locations where subject line parsing differed from body parsing
- Tested across default emails and course-specific emails (Core B course)
- Implemented fixes for both primary notification system and course-specific override templates
Business Impact: Restored email deliverability, eliminated spam blocking, improved customer communication professionalism.
Role Filtering Enhancement
Value: Reduced clutter in interface, improved data accuracy by filtering out historical/expired course assignments.
Phase 5: Strategic Data Management Planning (2023)
Database Archival Architecture
Proposed Solution Architecture:
- Archive 1: Records from inception until 12/31/2020 (oldest historical data)
- Archive 2: Records from 01/01/2021 through 12/31/2022
- Active Database: Records from 01/01/2023 forward (current operations)
Design Principles:
- Archived databases would be search-only (no active sync with AccordLMS)
- Active database would handle daily course completion queries and certificate processing
- Separation would dramatically improve performance for daily operations
- Historical records remain accessible for compliance and audit purposes
Technical Approach: Investigated feasibility of automated monthly exports, evaluated cloud storage options (Azure/AWS), designed dual-search system for unified user lookup across active and archived data.
Technical Code Example: Error Handling Implementation
One of our most impactful fixes involved robust error handling for the synchronization process. Here's how we transformed fragile code into a resilient system:
-- Original stored procedure would crash entirely on ANY duplicate
SELECT CourseCompletion INTO CourseCompletionList
FROM AccordLMS_Interactions
WHERE CompletionStatus = 'Complete'
-- No duplicate handling - entire sync fails if ANY duplicate exists
Key Improvements:
- Atomic Processing: Each completion is processed independently one failure doesn't crash entire sync
- Duplicate Prevention: Check for existing InteractionID before inserting to CCL
- Comprehensive Logging: CourseCompletionListLog tracks every processing attempt with status and error details
- Operational Visibility: Administrators can query log table to identify specific failed completions
- Retry Capability: Failed records remain in log with 'Error' status, enabling targeted reprocessing
Results & Measurable Impact
Operational Reliability Restored
Results & Impact: Ecosystem Delivered
Operational Outcomes
- Daily certification processing became systematic — 50-100+ completions processed without manual verification or student-initiated phone calls
- Learning journey visibility achieved — administrators could see every learner's stage status from enrolment to certificate issuance
- End-of-period rush handled confidently — peak periods (month-end, year-end licensing deadlines) processed without system failure or backlog
- Email deliverability fully restored — personalised certificate notifications with correct subject-line tokens eliminated spam blocking entirely
- Accidental data corruption recovered — when cloned learning elements generated thousands of erroneous CCL entries, the extension's log system allowed safe, surgical removal of incorrect records without affecting legitimate completions
Technical Outcomes
- Dashboard performance restored — selective course-load architecture brought 2-3 minute page loads back to operational speed
- Duplicate interaction handling eliminated — zero sync crashes caused by duplicate AccordLMS interaction IDs after CourseCompletionListLog implementation
- Archival strategy deployed — year-tiered data architecture preserved millions of historical records while keeping the active database lean
- Platform independence established — when AccordLMS threatened to deprecate custom integrations, REMI's' own extension ecosystem provided a fallback operational layer independent of any single LMS decision
- Knowledge transferred — full source code, SQL scripts, and architectural documentation delivered, enabling REMI's internal team to participate in ongoing development
Performance Improvements
- Page Load Optimization: Dashboard load times improved from 2-3 minutes to acceptable performance levels through query optimization and selective data loading
- Data Processing Efficiency: Course-wise filtering enabled processing 15 courses at a time, dramatically reducing resource consumption
- Eliminated Processing Delays: Missing completion issues resolved students now appear on CCL consistently without multi-day delays
Business Continuity Protected
- Peak Period Support: System reliably handled 100+ daily completions during rush periods (end of month, end of year licensing deadlines)
- Zero Revenue Disruption: No extended outages that would prevent certificate processing and student progress
- Regulatory Compliance Maintained: Consistent, timely certificate generation ensuring students meet state licensing board deadlines
- Customer Satisfaction: Reduced customer service inquiries related to missing completions and delayed certificates
Technical Debt Reduction
- Error Handling Maturity: Transformed fragile sync process into robust system with comprehensive logging and error recovery
- Code Documentation: Provided source code with clear explanations enabling client's internal team to understand system architecture
- Scalability Foundation: Course-wise CCL architecture and archival planning laid groundwork for sustainable long-term growth
- Knowledge Transfer: Delivered documentation, database scripts, and technical guidance to empower client's development team
Communication & Responsiveness
Emergency Response
Same-day or next-day response to critical production issues affecting daily operations
Clear Communication
Technical explanations provided at appropriate level for stakeholders, documentation of all changes
Proactive Planning
Identified long-term scalability issues early, proposed strategic architectural improvements
"We need this fixed permanently. The deadline is at the end of this month and we do not want to miss anyone... I see there has been changes. Thank you... Could you let us know a status and plan forward. As the year closes we get into a busier time... We really want to figure this out."
Multiple urgent requests throughout the engagement demonstrate the mission-critical nature of our support and the trust placed in our ability to resolve complex issues under deadline pressure.
Building extensions over a third-party LMS is not a coding challenge. It is a systems design challenge requiring deep understanding of how enterprise platforms store and expose data, and what a business actually needs from that data at the operational level.