Legacy Training Platform Modernization

A long-term modernization project focused on reducing technical debt, separating development from production, improving payment workflows, and preparing the platform for future LMS integration.
Period
2023 - Present
Domain
EdTech
Tech
Dynamics 365, C#, Umbraco CMS, Dataverse Sync Bridge

About the project

Our client is an IT training provider offering a broad portfolio of technology courses: both proprietary and from leading tech vendors like Microsoft. Over time, the platform had grown into a suite of five interconnected applications spanning sales, event management, course administration, staff booking tools, and license management. While each application served a distinct purpose, together they formed the backbone of how the client sold, scheduled, and delivered training at scale.

Keeping this ecosystem running and evolving required deep technical expertise across Microsoft Dynamics, Dataverse, C#, and Umbraco CMS. We've been the client's trusted technical partner, providing ongoing development, integration, and support across the entire platform. This long-term collaboration has allowed us to continuously align the system with the client's growing business needs and an expanding range of third-party integrations.

Business challenge

Over nearly a decade, the client's platform had accumulated significant technical debt, resulting in complex legacy logic that made any modifications time-consuming and risky. One of the most pressing structural issues was the reliance on a single shared environment for both development and production, meaning that implementing new features or running tests posed a direct threat to live data integrity.

Compounding this, the system was built on an "Early Bound" approach in its plugin architecture, an approach that had since become unsupported, leaving the codebase increasingly incompatible with modern tooling. Beyond the foundational architecture, the client faced several specific operational challenges:

  • Payment functionality required fixes to ensure reliable transaction processing
  • Integration with the Brevo marketplace was needed to extend the platform's commercial reach
  • Stripe had to be connected as a payment gateway
  • Incoming data from a new client partner required rewriting to meet compliance standards

Together, these issues created a compounding effect. An outdated technical foundation made it harder and riskier to deliver the business-critical improvements the platform urgently needed.

Solution

As the foundation of our solution, we established a proper development infrastructure. We created and separated the dedicated development environment from production, eliminating the risk of compromising live data during testing or feature implementation.

While this required changes across a large portion of the code, it made the system significantly easier to maintain and extend going forward. That's how we laid the groundwork to address the client's more immediate needs: resolving payment processing issues, integrating Stripe as a payment gateway, establishing a data sync with the Brevo marketplace, and rewriting client data to meet compliance requirements.

Results

By separating development and production environments, the client gained a significantly safer and more predictable way to evolve their platform. New features and updates can now be tested and deployed without putting live data or active bookings at risk. With the plugin architecture updated, the team no longer had to work around code that wasn't meant to last this long. Stripe and Brevo expanded the platform’s commercial capabilities without adding fragility to the system.

Another win is that staff handling bookings day-to-day saw fewer friction points. The compliance rewrite unblocked a specific client onboarding that had been on hold, turning a technical task into a direct business outcome. The next chapter is already in motion: connecting a newly built custom LMS to the platform's Dataverse core, continuing a long-term partnership.