You'll be able to determine which approach is right for your application after analyzing the code. Request a free application analysis.
Application Modernization at SUE · Application Modernization Assessment
Application modernization is the process of updating existing business-critical software while preserving the business logic it contains. You do this to make the application secure and patchable again, reduce maintenance costs, and enable integration with new technologies such as AI, APIs, and cloud platforms. The most important decision is which approach to take for each application—ranging from leaving it as-is to completely rebuilding it. Projects are most likely to succeed when you first understand exactly what’s in the code and then modernize in small, reversible steps.
First, understand what's in the code. A preliminary analysis ensures that planning and budgeting are reliable. → Section 7
Choose the path for each application, from leaving it as is to rebuilding it. → Section 4
Modernize in small, reversible steps, without downtime. → Section 8
Take into account the costs of doing nothing. Those are usually the strongest argument. → Section 3
Application modernization, also known as legacy modernization, is the set of measures taken to bring outdated software up to today’s standards: security, scalability, cost, integrations, and AI. This can range from small changes, such as deploying an application in containers, to large-scale projects, such as rewriting a monolithic application in a modern programming language.
Application modernization is different from cloud migration. With migration, you move an application to a different environment; with modernization, you change the application itself. In practice, the two often go hand in hand. You can read more about migration in the guide at Cloud Migration.
An application gradually becomes outdated. It starts with a framework that no longer receives updates or an expert who leaves the team. If you recognize three or more of these points, it’s time for an analysis.
The framework, programming language, database, or operating system no longer receives (security) updates—or will stop receiving them soon.
One or two people understand how the application really works.
Documentation is missing or is no longer accurate.
Even a small change takes weeks, and every release is nerve-wracking.
Integrations with SaaS, APIs, or AI applications are difficult or impossible.
License and maintenance costs rise every year.
During audits (BIO, ISO 27001, NIS2), the application is a recurring area of concern.
Developers for this technology are hard to find.
The application runs on hardware or virtualization platforms that you want to phase out, such as VMware.
Doing nothing feels like the cheapest option, but the costs just get pushed off. They'll come back later—and usually even higher.
Maintenance is taking up an increasingly large portion of the IT budget, at the expense of innovation.
Security: Vulnerabilities in outdated components are no longer patched.
Knowledge: When the last expert leaves or retires, every change becomes a gamble.
Opportunities: New products, integrations, and AI applications are held back by the legacy core system.
A longer process down the road: the longer you wait, the more things will have to change all at once.
Depending on the source, there are 5, 6, or 7; the principle is the same. In practice, most workflows combine multiple routes, even within a single application.
Plot each application on two axes: business value (how important is it to revenue, customers, or core processes?) and technical condition (how maintainable, secure, and future-proof is it?).
Do this for your entire application landscape, not just for the application that’s currently causing problems. Often, it turns out that some parts can be phased out or replaced, freeing up budget for the applications that really matter.
Modernization isn't always the best approach. Whether you modify, rebuild, or replace an application depends primarily on how unique the business logic is.
Modernization (refactoring, replatforming) preserves business logic that is often not documented anywhere else, and can be done in stages. Choose this approach if the logic is valuable and distinctive.
Building from scratch offers the most freedom, but also carries the most risks. Hidden business logic must be rediscovered, and the old system must continue to run until the new one is finished.
Replacing these with SaaS or a software package is a smart move for processes that are the same across all organizations, such as HR, accounting, or CRM. Expect that your processes will need to adapt to the software package.
Low-code platforms (such as Mendix or OutSystems) can be an alternative for administrative applications that involve many forms and workflows. Be sure to consider vendor lock-in and long-term licensing costs.
Modernization starts with knowing what's running. Only then can you choose a path for each application and modernize in steps that you can reverse.
Take inventory of the application landscape: applications, dependencies, owners, and costs.
Conduct an in-depth analysis of the key applications: code, business logic, integrations, and data flows. For poorly documented systems, this step takes the most time, and that’s where AI is most effective at speeding up the process.
Select the route by application or by component.
Start with a pilot: a single, well-defined component with clear value.
Modernize in stages, with automated tests and the ability to roll back.
Set up the target platform (cloud, on-premises, or sovereign), including CI/CD and monitoring.
Phase out the old system as soon as all functionality has been migrated.
Ensure proper management, including knowledge transfer and documentation.
You can rarely shut down mission-critical applications over the weekend. That's why you replace the old system gradually, while it continues to run.
The Strangler Fig pattern: you build new functionality alongside the old system and gradually redirect traffic until the old system is no longer in use. The pattern was described by Martin Fowler.
Running in parallel: The old and new systems process the same input for a while, and you compare the results before switching over.
Characterization tests: Before you make any changes, capture the current behavior in automated tests. That way, you can immediately see if a change breaks something, even if no one remembers exactly how it’s supposed to work.
Areas where AI is already making a big difference:
What to look for:
To learn how SUE uses AI with Re:App, visit " Approach with AI."
| Factor | Effect |
|---|---|
| Size of the codebase | More code means more analysis and more testing |
| Number of links and dependencies | Every integration must continue to function and requires design, development, monitoring, support, updates, and ultimately decommissioning, both during and after the project. |
| Existing Test Coverage | Without tests, you first need to document the current behavior |
| Documentation and Available Knowledge | A lack of knowledge costs analysis time |
| Selected route | Rehosting is the least expensive option, and rebuilding is the most expensive; however, rebuilding offers the most flexibility and the lowest maintenance costs. |
| Use of AI | Focus on streamlining analysis and conversion |
As a general guideline: a well-defined application can often be modernized in a few months, while a large application landscape typically requires phased projects lasting one to two years. A reliable budget always starts with an analysis of the code.
In a survey conducted by Wakefield Research on behalf of vFunction, 79% of the IT leaders surveyed reported that a modernization project had failed. The survey focused on organizations with more than 5,000 employees, but we also recognize these causes in smaller organizations:
| Cause | How to Prevent It |
|---|---|
| Underestimated complexity and unknown dependencies | First, a thorough analysis; then, planning |
| Too much all at once (big bang) | Small steps with interim results |
| No support from the business community or developers | One business owner per application, and involve developers early on |
| Scope That Continues to Grow | Fixed scope per phase; new requirements only after the transition |
| Knowledge is lost during the process | Capturing Business Logic in Documentation and Tests |
A modernization project that can't be costed properly will stall halfway through. So start with the business case, and involve the people who know the application from the very beginning.
Business case. List four categories side by side over a three- to five-year period: the costs of the current situation, the risks, the costs of modernization, and the benefits. Always factor in the costs of doing nothing; that’s usually the strongest argument.
Team. The people who are familiar with the old application are your most important resource. Make them domain experts in the process rather than mere observers, and capture their knowledge in tests and documentation.
Choosing a Partner. Choose a partner who starts with an analysis, has experience with your technology, is transparent about where your code is going, and provides rollback capabilities.
| Technology | Main Focus |
|---|---|
| .NET Framework | WebForms and WCF services do not exist in modern .NET |
| Java 8 | Licensing costs and the transition from javax to jakarta |
| Delphi | Business logic is embedded in the screen code |
| Oracle Forms | Logic in Triggers; Support for Version 12c Is Ending |
| COBOL | Batches, data, and JCL are often more challenging than the code itself |
| PowerBuilder and Uniface | The screen, logic, and database form a single unit |
Technical debt is the extra effort you end up paying for later as a result of hasty or outdated software decisions. It is measured using indicators such as code complexity, outdated dependencies, test coverage, the time it takes to implement changes, and the number of incidents per release.
No. A modern application can run just as well on-premises or in a sovereign European cloud. With containers and Kubernetes, you keep that option open.
For administrative applications with many forms and workflows, sometimes yes. For complex, computationally intensive, or tightly integrated systems, usually not. Also consider vendor lock-in and licensing costs.
A well-defined application often takes a few months, while a large-scale implementation takes one to two years, carried out in phases. The preliminary analysis determines how reliable that estimate is.
You'll be able to determine which approach is right for your application after analyzing the code. Request a free application analysis.
Application Modernization at SUE · Application Modernization Assessment
You'll be able to determine which approach is right for your application after analyzing the code. Request a free application analysis.
Application Modernization at SUE · Application Modernization Assessment
* required