Every mid-size and large enterprise has at least one mission-critical application written 10 to 20 years ago that nobody wants to touch. The product team keeps shipping features on top of it. The infrastructure team keeps patching the host OS to keep it running. The security team keeps flagging it. And every quarter, someone proposes a $500K - $2M rewrite that never happens because the risk is too high. We're the alternative.
Typical legacy stacks we see in enterprise
- .NET Framework 2.0 - 4.8 — The vast majority of internal LOB apps. C#, VB.NET, ASP.NET WebForms, WCF services. Often still on Windows Server 2012 / 2016.
- ASP.NET WebForms with custom server controls — The "internal portal" that grew into a 200-screen system. Often still uses ViewState, server-side validation, and master pages.
- Classic ASP and VBScript — Older intranet sites, internal reporting, and admin tools that "just need to keep working until the rewrite ships." Still running 8 years later.
- VB6 and COM components — Desktop apps that talk to internal databases, file shares, and external systems. Often registered as COM objects called from web apps.
- SOAP web services / WCF — Internal APIs from before REST became standard. Still consumed by half a dozen client apps.
- SSRS, RDL reports, Crystal Reports — Critical operational reporting that nobody dares change.
- Custom Windows services — Polling-based file movers, scheduled job runners, message processors. Each one is mission-critical and barely documented.
The risks unique to enterprise legacy software
Enterprise systems have a different risk profile from manufacturing or healthcare. Production downtime is less catastrophic but more frequent. The cost of failure is reputational, financial, and slow-burning rather than immediate. Critical issues:
- End-of-support frameworks. .NET Framework 4.8 is the last version Microsoft will ship. Security patches still come, but no new features, and the platform is steadily being deprecated by tooling and library vendors.
- Compounding security debt. Old TLS versions, weak password hashing, hardcoded connection strings, vulnerable dependencies. Each unaddressed item raises your audit risk.
- Vendor lock-in to deprecated platforms. Components you bought 10 years ago (UI control libraries, reporting components, third-party APIs) have all hit end-of-life. You can't upgrade them without modernizing the surrounding code.
- The "frozen for stability" trap. The longer the system goes without updates, the riskier each change becomes. Eventually a bug surfaces that requires modifying code nobody understands — usually at the worst time.
- Audit and compliance pressure. SOC 2, ISO 27001, PCI DSS, SOX — auditors are increasingly unforgiving of unpatched legacy systems handling sensitive data.
- Talent attrition risk. The developers who can maintain a WebForms or VB6 app are retiring. Hiring replacements is expensive and slow.
Our approach for enterprise rescues
Enterprise engagements always start with a free consultation. We don't propose a rewrite. We propose a sequence of small, deliverable changes that each leave the system in a better state than they found it — and we scope only after understanding your situation. The highest-leverage moves come first.
Common enterprise rescue work includes:
- .NET Framework to .NET 8/9 migration, done in phases — usually starting with the most isolated services or batch jobs, leaving the web front-end for last.
- WebForms to MVC or Razor Pages migration, screen by screen, sharing the same database and authentication layer so the old and new versions can co-exist.
- Classic ASP to ASP.NET Core — rewriting page by page, with the legacy site still serving the un-migrated pages from its original host.
- VB6 desktop to web migration — usually the most complex, because the desktop app is tightly coupled to Windows-specific UI metaphors that don't translate to the web. We do this in iterations with operator feedback.
- SOAP / WCF to REST or gRPC — with the old SOAP endpoints kept alive (as facades over the new REST core) until every client has migrated.
- Crystal Reports / RDL to modern reporting — preserving exact output format so consumers downstream don't notice.
- Database modernization — SQL Server upgrades, Always Encrypted, performance tuning, removing deprecated features.
The goal is always the same: at the end of every engagement, your system is closer to a modern, maintainable, supportable state than when we started. No big-bang cutovers. No re-validation triggered by us moving a button. No rewrite that fails 18 months in.
Related case study
API integration rescue — enterprise client whose internal SOAP layer was the bottleneck for adding any new partner. We replaced the core with a REST gateway while keeping the SOAP endpoints alive as facades. New partners onboarded in days instead of months.