8:00 AM - 6:00 PM
Monday to Saturday
WhatsApp

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.

15+
US States Served
100+
Daily Certifications Processed
6%
Custom DNN Extensions Built
1000000+
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.

PRESENTATION CCL Dashboard Extension  ·  State-wise Course Views  ·  Admin Processing Interface  ·  Learner Progress Panels
↑   Rendered via DNN modules   ↓
BUSINESS LOGIC Event Declaration Engine  ·  Certification Qualification Rules  ·  Role & Status Resolver  ·  Email Notification Engine
↑   Reads / transforms   ↓
DATA LAYER CourseCompletionList Table  ·  CourseCompletionListLog  ·  Event Stage Registry  ·  Archive Tables (by year/state)
↑   Sync via scheduled tasks   ↓
THIRD-PARTY SOURCE AccordLMS Database (Interactions, Roles, Catalog, Learner Records)

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

Problem: The CCL synchronization process was encountering duplicate interaction IDs in the AccordLMS database, causing the entire completion tracking system to fail. Students who completed courses weren't appearing on the dashboard, creating regulatory compliance risks and customer service nightmares.

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

Problem: Dashboard load times had deteriorated from acceptable levels to 2-3 minutes per page load. In May 2022, after AccordLMS migrated to AWS infrastructure, the performance became so poor that staff described it as "virtually unusable" and a "daily struggle."

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

Problem: Students completing courses weren't consistently appearing on the CCL dashboard. In multiple documented cases (June 2022), students finished their broker or salesperson courses but remained invisible on the processing list for days only discovered when frustrated students called asking about their certificates.

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

Problem: In August 2022, the entire CCL interface became completely unusable the page would load but immediately grey out with a persistent DIV overlay, preventing any interaction. The cursor remained stuck as a hand icon, and no clicking, checking, or processing was possible.

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

Problem: December 2022: The client's certificate notification emails were being blocked as spam by major email providers. The issue: personalization tokens like [FIRSTNAME] weren't working in email subject lines, forcing them to use generic subjects that triggered spam filters.

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

Problem: By late 2023, the database contained millions of CCL records spanning years of operations. The AccordLMS hosting environment was warning about resource constraints, and the client received notifications that their custom dashboard might be deprecated entirely.

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

Step 1: Data Acquisition

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.

Step 2: Reproduction & Tracing

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.

Step 3: Root Cause Analysis

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).

Step 4: Solution Design

Propose targeted fixes with technical specifications. For complex changes, provide effort estimates and implementation timeline. Distinguish between emergency temporary fixes and permanent solutions.

Step 5: Testing & Validation

Test solutions against real production data scenarios in development environment. Coordinate with client for validation testing on live system during low-traffic periods.

Step 6: Documentation & Knowledge Transfer

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:

  1. 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.
  2. Code Review: Analyzed the existing CCL synchronization stored procedure to identify where duplicate handling logic was missing.
  3. Data Pattern Analysis: Identified specific scenarios causing duplicates: students retaking courses from previous years, users with changed roles, manually assigned course access by administrators.
  4. 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

Solution: Implemented CourseCompletionListLog table to track synchronization history and handle duplicate scenarios gracefully.

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

Problem: Dashboard not loading due to broken queries and filter logic.

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

Approach: Instead of loading all courses and all students simultaneously, implemented selective course-based filtering.

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

Fixed Critical Interface Elements:
  • 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

Scope: 45-65 hour development effort to fundamentally redesign how CCL data is processed and displayed.

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

Issues Resolved:
  • 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

Challenge: [FIRSTNAME] token not working in email subject lines, causing spam filtering issues.

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

Feature Request: Implement solution to show only non-expired roles in dashboard views.

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

Problem Recognition: Millions of records accumulating with no archival strategy, threatening long-term system viability.

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:

// BEFORE: Fragile sync logic with no error handling -- 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

100% Critical Uptime Maintained Across All Active State Courses
Zero Undetected Missing Certifications After Ecosystem Deployment
15+ US State Certification Workflows Simultaneously Managed
1M+ Learner Interaction Records Processed & Archived Reliably

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."

Chris C., REMI Team

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.

Why This Project Required More Than Development Skills

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.

Systematic troubleshooting resolves complex technical issues, Modern API integrations require ongoing compliance, Infrastructure optimization delivers significant cost savings, Long-term maintenance enables continuous improvement for bigger success

Systematic troubleshooting resolves complex technical issues, Modern API integrations require ongoing compliance, Infrastructure optimization delivers significant cost savings, Long-term maintenance enables continuous improvement for bigger success