We still support these, and we have moved production systems off them. Each entry carries the route we would take, and the delivered work that took it.
VB.NET
Legacy The Visual Basic language targeting .NET, still present in older line of business applications.
How we move off it
Visual Basic no longer receives new language features. C# is the usual target when rewriting.
IdentityServer 4
Legacy An OpenID Connect and OAuth 2.0 framework for .NET, used to issue tokens for APIs and applications.
How we move off it
IdentityServer 4 is out of support. Duende IdentityServer is the maintained successor.
ASP.NET Web Forms
Legacy The event driven page model from early ASP.NET, still found in older enterprise applications.
How we move off it
Blazor or ASP.NET Core MVC are the usual targets when replacing Web Forms.
jQuery UI
Legacy A widget and interaction library built on jQuery, found in older web applications.
How we move off it
Modern component libraries or native browser APIs are the better choice for new work.
.NET Core
Legacy The earlier cross-platform generation of .NET, superseded by the unified .NET 5 and later releases.
How we move off it
.NET Core 3.1 and earlier are out of support. Target .NET 8 or later.
TFS
Legacy Team Foundation Server, Microsoft's older source control and work tracking server.
How we move off it
Azure DevOps Server and Azure Repos are the current equivalents.
FTP
Legacy A long-standing protocol for transferring files between systems, now usually replaced by secure alternatives.
How we move off it
Use SFTP or FTPS instead. Plain FTP sends credentials and file contents in the clear.
Vuex
Legacy The original state management library for Vue 2 applications.
How we move off it
Pinia is the recommended store for new Vue 3 work.
.NET Framework
Legacy The original Windows-only .NET runtime and class library, still in use across older enterprise applications.
How we move off it
New work should target .NET 8 or later. Existing Framework applications can usually be ported in stages rather than rewritten.
BizTalk Server
Legacy BizTalk Server is Microsoft's enterprise integration platform for connecting different business systems, automating workflows, and transforming data between formats. It handles scenarios where multiple applications need to exchange information: ERP systems talking to suppliers, financial systems processing transactions, or healthcare systems sharing patient data. BizTalk provides adapters for various protocols and systems, orchestration for complex workflows, and tools for mapping data between formats.
For non-technical readers, BizTalk acts as a central hub that allows different business systems to communicate. When your order system needs to update inventory, notify shipping, and trigger billing, BizTalk can coordinate these steps automatically, handling the technical details of talking to each system in its own language.
BizTalk has been a cornerstone of enterprise integration for two decades. However, BizTalk Server 2020 is the final version; Microsoft is not developing new releases and recommends migration to Azure Integration Services for new projects.
How we move off it
BizTalk Server 2020 is the final version. Microsoft recommends migrating to Azure Integration Services, which provides modern equivalents: Logic Apps for workflows, Service Bus for messaging, API Management for APIs, and Functions for custom code. Migration requires careful planning: map existing integrations to Azure equivalents, prioritise based on business criticality, and migrate incrementally. Microsoft provides migration guidance and tools, but expect significant effort for complex deployments.
SpecFlow
Legacy SpecFlow was a popular behaviour-driven development (BDD) framework for .NET that allowed teams to write automated tests in plain language using Gherkin syntax (Given-When-Then). It bridged communication between business stakeholders and developers by expressing requirements as executable specifications. Tests written in natural language served as both documentation and automated verification.
For non-technical readers, SpecFlow made it possible to write test scenarios in everyday language that both business people and developers could understand. Instead of technical test code, you'd write statements like "Given a customer with items in their basket, when they proceed to checkout, then they should see a payment form." The framework then executed these statements automatically.
In December 2024, SpecFlow was officially deprecated by its maintainers. The project has been succeeded by Reqnroll, a community-driven fork that continues development with the same functionality and an easy migration path.
How we move off it
SpecFlow was deprecated in December 2024. Migration to Reqnroll is recommended and straightforward: Reqnroll maintains compatibility with SpecFlow syntax and provides migration tooling. Most projects can migrate with minimal changes. Plan your migration soon to avoid accumulating technical debt on an unsupported framework and to benefit from ongoing improvements in Reqnroll.
ASP.NET Web API
Legacy ASP.NET Web API is a Microsoft framework designed to build HTTP-based APIs—interfaces that other applications can call to exchange data. Instead of rendering HTML pages for people, Web API returns structured data (for example JSON) for apps, websites, or mobile clients to consume. It was widely adopted by enterprises moving toward service-oriented and microservice architectures in the 2010s.
Web API encouraged clear resource-based endpoints (e.g., "/customers/123") and worked hand-in-hand with security standards, versioning strategies, and documentation tools. It ran on the Windows-only .NET Framework, often alongside ASP.NET MVC for the human-facing parts of a site. Many corporate systems still rely on it today to connect front-end apps, mobile apps, and partner integrations.
How we move off it
The modern successor is ASP.NET Core minimal APIs and controllers on .NET 6/8. Migrating unlocks much higher performance, cross-platform hosting, and the latest security and observability features. Remaining on legacy Web API increases technical debt and can make recruiting harder. A staged approach—standing up new endpoints in ASP.NET Core while keeping legacy ones running—lets you modernise safely without a "big bang" rewrite.
Silverlight
Legacy Silverlight was a Microsoft browser plugin technology for delivering rich, app-like experiences on the web at a time when browsers lacked modern capabilities. It enabled video, animation, and sophisticated user interfaces inside the browser using XAML and C#. In its era it powered streaming media and internal business tools that needed more than basic web pages could provide.
How we move off it
Silverlight is end-of-life and unsupported by current browsers. Migration is strongly recommended to modern web standards (HTML5/JavaScript/TypeScript with frameworks like React or Vue) or to desktop alternatives (WPF/.NET) depending on the use case. Continuing on Silverlight creates security, compatibility, and staffing risks and blocks future improvements.
VB6
Legacy VB6 is a legacy Microsoft programming environment for building Windows desktop applications, popular in the late 1990s and early 2000s. It provided a visual drag-and-drop way to design screens and a simple language for writing the logic. Many businesses created critical internal tools with it because it allowed rapid results with limited resources.
While VB6 helped organisations digitise processes quickly in its time, it predates modern development practices, security expectations, and deployment models. Tooling and community support are now minimal, and running VB6 apps often requires older Windows environments or special compatibility layers.
How we move off it
VB6 is long out of support. Migration reduces security risk, unlocks modern integrations, and makes it far easier to hire developers. A common path is to rebuild in .NET (e.g., WPF for desktop or a web app) with a phased approach: re-platform the highest-value modules first, run both systems in parallel, and retire VB6 progressively to minimise disruption.
jQuery
Legacy jQuery is a small JavaScript library that became popular for making websites interactive in the late 2000s and early 2010s. It smoothed over browser quirks and made common tasks—like showing/hiding elements, handling clicks, and making AJAX requests—much simpler with a concise, readable syntax. At a time when browsers behaved inconsistently, jQuery was a unifying layer that allowed developers to build rich experiences reliably and quickly.
How we move off it
Modern browsers have standardised, and frameworks like React, Vue, and native Web APIs now cover jQuery's use-cases with better structure and performance. For new projects, prefer modern frameworks or vanilla JavaScript. For existing jQuery code, migrate gradually by replacing widgets and introducing components where it delivers clear value.
ASP.NET MVC
Legacy ASP.NET MVC is a web application framework from Microsoft that brought the Model-View-Controller pattern to the .NET world. In practical terms, it separates "what the app does" (models and controllers) from "how it looks" (views). That separation makes medium-to-large websites easier to organise, test, and evolve over time. It runs on the classic Windows-only .NET Framework and was the standard choice for many corporate intranets and public-facing sites throughout the 2010s.
Developers used ASP.NET MVC to deliver server-rendered HTML pages, handle user input, talk to servers for fresh data, and can animate or customise the interface. It offered strong security features, robust routing of URLs, and a vast library ecosystem. Many successful, long-lived sites were built with it, and it set the stage for today's patterns in modern .NET web development.
How we move off it
ASP.NET MVC is in maintenance mode; new development has shifted to ASP.NET Core (on modern .NET). Migrating provides cross-platform hosting, significant performance gains, simpler cloud deployments, and access to new features. Over time, staying on legacy frameworks increases risk: fewer updates, shrinking talent pools, and higher operating costs. A phased migration—starting with APIs or critical modules—reduces disruption while gradually unlocking the benefits of ASP.NET Core.