Application Modernization Guide: When and How to Modernize Legacy Systems
Application modernization is the process of updating legacy software systems, architectures, and infrastructure so they can run on current platforms, integrate with modern tools, and stop consuming 80% of your IT budget just to keep the lights on. The business case is rarely about new features. It is almost always about risk, cost, and the fact that the people who understand your oldest systems are retiring faster than you can replace them.
A manufacturing client called us in January. Mid-market, about 1,200 employees, running an on-prem Oracle ERP that had been customized so heavily over 15 years that the original vendor’s support team wouldn’t touch it. They wanted to move to a cloud-native ERP. Reasonable goal. They posted a job for a “cloud migration architect” and got 40 applicants in two weeks. Sounds fine, except zero of those 40 had ever worked with Oracle Forms. Not one. The architects who understood the target environment had never touched the source environment, and the two Oracle specialists on staff who understood every custom module had never deployed anything to AWS. The project stalled for four months before they called us. Not because the technology was wrong. Because the team didn’t exist yet.
Gregg Flecke, KORE1. I work across our IT staffing practice, which means I end up in conversations about modernization projects when the hiring part has already gone sideways. I will be direct about where we fit into this picture and where you probably don’t need a staffing partner. Some sections of this guide are genuinely vendor-neutral. A few will make it obvious when a firm like ours would help.

What Application Modernization Actually Means (and What It Doesn’t)
Application modernization means taking software that works but can’t keep up and making it work on infrastructure that can. The 40-60 word version: you’re moving legacy applications off outdated platforms, refactoring or replacing code that creates maintenance bottlenecks, and rebuilding integrations so the system can talk to the tools your business adopted in the last decade. It is not a one-time migration. It is an ongoing architectural decision.
The distinction that trips people up: modernization is not the same as migration. Migration moves an application from one environment to another without changing it much. That is rehosting, sometimes called “lift and shift,” and it is the cheapest, fastest, least transformative option. Modernization implies changing the application itself, restructuring how it’s built, what it depends on, and sometimes rewriting it in a completely different language because the original one has become a liability rather than an asset.
McKinsey’s 2025 Technology Trends Outlook pegged it at roughly 70% of Fortune 500 software having been written 20 or more years ago, which is one of those numbers that sounds impossible until you think about how many companies still run core processes on AS/400s and mainframes that predate the iPhone by decades. Some banking systems and government platforms crossed the 30-year mark and still handle millions of daily transactions. They work. They also bleed money, refuse to talk to anything built after 2015, and depend on a workforce that is steadily aging out of the labor market with no replacement pipeline behind it.
The market for modernization services hit an estimated $26.4 billion in 2026, growing at about 13.5% annually according to 360iResearch market analysis. That number will keep climbing. The reason isn’t excitement about new tech. It is fear about old tech.
Five Signs Your Systems Need Modernization
Not every old application needs modernizing. Some legacy systems run fine, cost little to maintain, and don’t interact with anything else. Leave those alone.
The ones that need attention share patterns, and after staffing enough of these projects I can usually tell within the first intake call whether a client’s system has crossed the line from “old but functional” to “actively holding the business back.” Here’s what we hear right before a modernization project lands on our desk.
Your maintenance spend is eating your innovation budget. The industry average sits between 75% and 80% of IT budgets going to maintenance of existing systems, which leaves almost nothing for building the things the business actually wants next. If your team spends most of its week patching, troubleshooting, and working around limitations in a system that was architected during the Bush administration, you are paying senior engineers to do support work. That is expensive babysitting. One client told me their Oracle DBA spent 30 hours a month just managing batch job failures that wouldn’t exist on a modern platform. Thirty hours. Every month. For four years.
You can’t hire people who know the stack. The average COBOL programmer is 55 years old. Ten percent of that workforce retires every year. Only 27% of universities still teach mainframe or COBOL coursework. If your application depends on RPG, Natural/Adabas, PowerBuilder, or classic ASP, you are recruiting from a shrinking pool that charges a premium and has options. We placed a COBOL specialist last year at $185,000 base. The client had been looking for seven months.
Integration is a constant headache. Modern SaaS tools expect REST APIs, webhooks, OAuth. Legacy systems offer flat files, batch processes, maybe SOAP if you’re lucky. Every new tool your business adopts requires a custom integration that your team builds by hand and maintains forever. One client had 14 custom middleware scripts connecting their legacy ERP to Salesforce, HubSpot, and a homegrown warehouse system. Nobody documented them. The person who wrote most of them had left two years earlier.
Security findings keep piling up. Sixty percent of data breaches involve legacy systems, according to Pragmatic Coders’ 2025 legacy code analysis. Older platforms miss patches, run unsupported OS versions, and lack the instrumentation that modern security tools require. Ransomware operators specifically target known vulnerabilities in legacy systems because the exploit kits are public and the patches never arrive. Recovery from a legacy-targeted ransomware incident averages $2.1 million.
The system blocks a business initiative. The clearest trigger. A company wants to launch a customer portal, adopt AI-powered analytics, or expand into a new market. And the legacy system can’t support it. Not “it’s hard.” Can’t. The architecture doesn’t allow it. The database can’t handle the read patterns. The API layer doesn’t exist. When the business hears “we’d need to rebuild that module first,” the modernization conversation starts whether IT planned for it or not.

The Modernization Strategy Menu: Retire, Retain, Rehost, Replatform, Refactor, Rearchitect, Rebuild
Gartner and AWS popularized the “R” framework for classifying modernization approaches. The industry has settled on seven options. Each one trades off cost, risk, timeline, and how much of the original system survives.
| Strategy | What Happens | Best For | Typical Timeline | Staffing Complexity |
|---|---|---|---|---|
| Retire | Decommission the application entirely | Apps with <5 active users or redundant functionality | 1-3 months | Low |
| Retain | Keep as-is, revisit later | Stable apps with low maintenance cost and no integration pressure | N/A | None |
| Rehost | Move to cloud infrastructure without code changes (“lift and shift”) | Quick wins, data center exits, cost reduction targets | 2-6 months | Moderate (cloud infra skills) |
| Replatform | Minor code changes to run on a new platform (e.g., swap database engine, containerize) | Apps that need cloud benefits without a full rewrite | 3-9 months | Moderate-High |
| Refactor | Restructure existing code for cloud-native patterns without changing external behavior | Core business apps worth preserving but architecturally constrained | 6-18 months | High (needs both legacy and modern skills) |
| Rearchitect | Redesign the application architecture (monolith to microservices, new data model) | Apps that need fundamentally different scalability or integration patterns | 9-24 months | Very High |
| Rebuild | Rewrite from scratch on a modern stack | Apps where the codebase is unmaintainable and the business logic is well-documented | 12-36 months | Very High (full dev team) |
Most companies don’t pick one strategy for everything. A portfolio approach is standard, and the companies that get modernization right tend to be ruthless about classification: retire the 20% of applications that nobody would notice if they disappeared tomorrow, retain the ones that run fine without intervention, rehost the quick wins where the main benefit is exiting a data center lease, and save the expensive refactor or rebuild work for the 3-5 systems that actually drive revenue and can’t survive another year on the current architecture.
The mistake we see most often: treating every application like it deserves a rearchitect. A logistics company we worked with last year planned to rearchitect 11 internal applications. Eleven. Their team of four developers and one architect would have been busy until 2031. We helped them triage. Three applications got retired. Two got rehosted. Four got a replatform. Only two actually justified the full rearchitect investment. The project timeline dropped from “five years, maybe” to 18 months.
How to Build a Modernization Roadmap That Doesn’t Stall at Month Three
Most modernization roadmaps look great in the slide deck and collapse when they hit the staffing plan. The reason is always the same. The roadmap assumes talent availability that doesn’t exist.
McKinsey’s research on digital transformation puts the failure rate for large-scale transformation programs at roughly 70%. The causes they document most frequently: underestimating complexity, trying to modernize too many applications simultaneously, and lacking a clear target architecture. All three of those are partly staffing problems. Complexity is manageable with the right specialists. Scope creep happens when you don’t have enough senior architects empowered to say “not yet” when a VP requests one more application added to the current sprint. And designing a target architecture that the team can actually execute against, rather than a theoretical diagram that looks great in the PowerPoint but falls apart when it hits the first undocumented dependency, requires someone who has built the thing you’re building toward, not just read about it in a whitepaper.
Here’s a roadmap that accounts for reality.
Step 1: Inventory and Classify
List every application in the portfolio. For each one, document: current platform, language, database, number of active users, annual maintenance cost, integration dependencies, and the names of the people who understand it. That last column is the one nobody fills in honestly. It usually contains one or two names. Sometimes one name and “(left 2024).”
Step 2: Score Business Value Against Technical Health
Plot each application on a 2×2 grid. X-axis: business value (revenue impact, user count, strategic importance). Y-axis: technical health (maintenance cost, security posture, integration friction, talent availability for the stack). High value, low health goes first. Low value, low health gets retired. High value, high health gets retained. Low value, high health also gets retained. Save arguments for the ambiguous middle.
Step 3: Match Strategy to Each Quadrant
Use the 7 Rs table above. Don’t default to the most ambitious option. A rehost that takes three months and frees your team to focus on the hard replatform is worth more than a refactor that ties up your best engineer for a year on an application that generates 4% of revenue.
Step 4: Build the Team Before You Build the Timeline
This is where it breaks. Every project plan I’ve seen from a client who later called us had timelines built on assumed headcount. “We’ll hire a cloud architect by Q2.” “Our DevOps lead can handle the Kubernetes migration alongside his day job.” “The vendor will provide migration support.”
Cloud architects command $145,000 to $200,000+ depending on platform specialization, according to Glassdoor’s 2026 salary data. 77% of employers report difficulty hiring skilled tech candidates. The people qualified to lead a modernization effort, meaning they understand both legacy architecture and cloud-native patterns, are a tiny intersection in the talent market. If your timeline assumes you’ll hire that person in 60 days, add 60 more.
Step 5: Run Parallel Workstreams, Not Sequential Phases
Don’t modernize one application at a time unless your team is genuinely that small. Run the quick rehost projects in parallel with the longer refactor efforts. Use the rehost wins to demonstrate ROI to stakeholders while the harder work runs in the background. The quick wins buy you political capital and budget runway.

The Talent Problem Nobody’s Writing About
Every modernization guide on the internet covers the technology. Pick your cloud provider. Choose microservices or serverless. Containerize with Kubernetes. Use Terraform for infrastructure as code.
Fine. All correct. None of it matters if you can’t staff the team.
Modernization projects require a specific and rare combination of skills. You need people who understand the legacy system well enough to know what it actually does (not what the documentation says it does, because the documentation is wrong or missing). You also need people who can design and build the target architecture. The overlap between those two populations is almost nonexistent, and the few people who do sit in that Venn diagram have the leverage to name their rate, pick their projects, and turn down anything that looks like it might drag on past the original timeline.
We see this pattern constantly across our IT staffing practice. A company starts a modernization project with their existing team. The existing team knows the legacy system inside out but has never built anything cloud-native. They hire a cloud architect or bring in a consultant who has done this kind of migration at three other companies and has a reference architecture they’ve been refining for years. The cloud architect designs a target state that looks brilliant on the whiteboard. Then they try to migrate the first module and discover 14 undocumented integrations, a custom authentication layer that predates OAuth by a decade, and a database schema that violates every normalization rule but somehow works because of stored procedures that nobody has read since 2017.
The cloud architect says “this needs to be refactored before we can migrate it.” The legacy team says “if you refactor that stored procedure, the nightly batch job breaks and we miss payroll.” Both are right. Neither can solve it alone.
Gartner predicted that 80% of enterprises will have used generative AI APIs or deployed GenAI-enabled applications by 2026. That prediction is playing out. But it’s creating a secondary staffing problem: the same engineers who would lead your modernization effort are being pulled into AI initiatives. Companies are choosing between modernizing their legacy ERP and building their AI strategy, and AI is winning the budget fight even when the legacy system is the bigger risk.
Staffing Models for Modernization Projects
The right staffing model depends on the strategy you picked from the table above and how long the work takes.
| Staffing Model | Best For | Typical Roles | Duration |
|---|---|---|---|
| Direct hire | Roles that persist after modernization (platform owner, SRE, cloud architect) | Cloud Architect, Platform Engineer, SRE Lead | Permanent |
| Contract | Migration-phase specialists you need for 6-18 months | Legacy system SME, Migration Engineer, Data Engineer, QA | 6-18 months |
| Project team | Full modernization engagements where you need a complete team, not individual hires | Architect + 2-4 developers + DevOps + QA | 12-24 months |
Most modernization projects use a blend, and getting the mix wrong is almost as common as getting the technology wrong, because leaders tend to default to whichever model their procurement team already has a contract template for rather than matching the engagement type to the actual work. Direct hire the cloud architect who will own the platform for the next five years. Contract the legacy specialists who will be done once the migration is complete. Bring in a project team if you’re rebuilding from scratch and your internal team can’t absorb the workload.
A financial services client came to us needing to modernize a 20-year-old loan origination system. Their internal team had two Java developers and a DBA. The target was a microservices architecture on AWS with a React frontend. We placed a contract cloud architect for 12 months, two contract backend engineers with both Java and Go experience for the API layer, and a direct-hire SRE who would own the production environment after launch. Total ramp time: 38 days. The project launched on schedule. The two contract engineers rolled off after 14 months. The SRE and cloud architect are still there, which is exactly how a well-planned modernization staffing model is supposed to work: temporary surge capacity for the migration phase and permanent hires for the platform that comes after it.
AI Is Changing How Modernization Gets Done
Generative AI is showing up in the modernization workflow in ways that actually help, not just in vendor marketing decks.
The most immediate impact: legacy code comprehension. Tools like GitHub Copilot, Amazon Q Developer, and specialized migration tools from IBM and Red Hat can analyze legacy codebases, specifically COBOL, RPG, and older Java, and generate documentation, unit tests, and sometimes direct code translations. McKinsey estimates AI-augmented modernization can accelerate timelines by 40 to 50% and cut technical debt costs by 40%.
That sounds transformative. Partly is.
The catch: AI generates the translation. A human still has to validate it. The person reviewing that COBOL-to-Java output has to read both languages fluently enough to catch the edge cases the model missed, which is the same vanishingly rare skill combination that made the project hard to staff in the first place. AI shifts the bottleneck from “writing the code” to “reviewing the code,” but the same rare skill combination is required either way. Faster throughput, same talent constraint.
Where AI genuinely reduces headcount: documentation and test generation. Legacy systems are notoriously underdocumented. AI tools can crawl a codebase and produce dependency maps, data flow diagrams, and test scaffolding that would have taken a team weeks to build manually. That is real value, and for organizations sitting on codebases measured in hundreds of thousands of lines with documentation that was last updated during the Obama administration, the time savings alone can justify the tooling cost within the first month of the project. It doesn’t replace the architect, but it gives the architect something to work from instead of starting with a blank whiteboard.
One Gartner forecast puts the number at 40% of enterprise apps embedding task-specific AI agents by the end of 2026, which is a staggering jump from less than 5% in 2025. That prediction alone is driving modernization urgency. You can’t bolt an AI agent onto a monolithic COBOL application. The application has to be modernized first, or at minimum wrapped in APIs that the AI layer can call. Modernization is becoming a prerequisite for AI adoption, not just a standalone IT initiative.

What Modernization Actually Costs
Nobody likes this section. The honest answer is: it depends on so many variables that any single number is misleading. But ranges exist.
| Strategy | Typical Cost Range | Primary Cost Driver |
|---|---|---|
| Rehost | $50K – $250K per application | Cloud infrastructure setup, testing, cutover |
| Replatform | $150K – $500K per application | Code changes, database migration, integration rework |
| Refactor | $300K – $1.5M per application | Engineering labor (6-18 months of skilled developers) |
| Rearchitect / Rebuild | $500K – $5M+ | Full development team for 12-36 months |
The number that should scare you more than the modernization cost: the cost of not modernizing. Each year of delay adds 20 to 25% to the eventual modernization price tag, according to multiple industry analyses. That’s compounding. A $500K refactor that you defer for three years becomes a $900K refactor, assuming nothing else breaks in the meantime. Something usually breaks in the interim, and when it does the emergency fix costs more than the planned modernization would have because now you’re paying crisis rates for contractors who know they have you cornered.
And the maintenance bill doesn’t pause while you wait. Enterprises spend an average of $2.7 million annually just upgrading legacy technology, according to 2024 data. That is money spent standing still.
The organizations that completed legacy modernization between 2022 and 2025 report measurable results: 25 to 35% reduction in infrastructure costs, 40 to 60% faster release cycles, and a 50% reduction in security breach risk. Real numbers from real projects, not vendor projections.
Common Mistakes That Kill Modernization Projects
I’ve watched enough of these projects go sideways to have a list. You’ve probably heard a few of these before, but the ones that actually sink projects tend to be the ones that look like minor planning oversights until they cost you a quarter.
Boiling the ocean. Trying to modernize everything at once. A portfolio of 30 applications doesn’t need 30 simultaneous modernization streams. It needs triage. Pick the three that hurt the most, modernize those, learn from the process, then move to the next batch.
Skipping the legacy knowledge transfer. The person who understands the old system is the most important member of the modernization team, and they are usually the one closest to retirement. If that person leaves before the migration is documented, you are guessing. We’ve seen projects add six months to their timeline because a single subject matter expert left and nobody had captured what they knew about the edge cases in the billing module.
Choosing the technology before understanding the requirements. “We’re moving to Kubernetes” is not a modernization strategy. It is a technology choice looking for a problem. Kubernetes is the right answer for some workloads and complete overkill for others. The container orchestration decision comes after you’ve mapped your applications, not before. Same goes for serverless, same goes for specific cloud providers.
Underestimating the data migration. The code migration gets all the attention. The data migration does all the damage. Schema differences, encoding mismatches, referential integrity constraints that only exist in application logic, temporal data that depends on timezone assumptions embedded in stored procedures from 2009. A data architect with migration experience is not optional. That is a role, not a task you hand to the backend developer during a slow sprint.
Treating the staffing plan as an afterthought. We watch this one play out from the staffing side, and it never stops being frustrating because the fix is so obvious in hindsight. A beautifully architected modernization plan with a timeline that assumes every role gets filled on day one. The cloud architect takes 90 days to hire. The DevOps engineer takes 60. The legacy SME who knows your specific ERP customization? That search might take longer than any individual development sprint. Build recruiting lead time into the project plan or accept that you’ll be behind schedule before you write your first line of new code.
The Role of ERP in Application Modernization
ERP modernization deserves its own section because it is where the most money, the most risk, and the most staffing pain converge.
Enterprise resource planning systems touch everything. Finance, HR, supply chain, manufacturing, procurement. When you modernize an ERP, you are not changing one application. You are rewiring the nervous system of the business. The average ERP modernization takes 18 to 36 months. The expensive ones take longer.
The staffing problem is uniquely acute for ERP. The roster for a serious ERP modernization reads like a small company unto itself: functional consultants who know the business processes baked into the old configuration, technical architects who can draw the target state without hand-waving, data migration specialists, integration developers to reconnect the 30 systems that plugged into the old ERP, and change management people who can persuade 500 end users to abandon the workflow they’ve had memorized since 2016. Good ERP consultants are expensive and booked months in advance. If you’re planning an ERP modernization for Q3, the recruiting should have started in Q1.
The rise of cloud-native ERP platforms like SAP S/4HANA Cloud, Oracle Fusion, and Microsoft Dynamics 365 has simplified the target architecture. The migration path from the old version to the new version is still brutal. SAP’s own documentation for the S/4HANA migration path runs to hundreds of pages, and every implementation we’ve staffed has required deviations from the reference architecture by month two.
Things People Ask About Application Modernization
What actually triggers a modernization project?
Usually not a grand strategy. Usually a broken thing. A security audit finds vulnerabilities in an unsupported OS. A new product launch can’t happen because the backend won’t support the API calls. A key developer who understood the legacy system retires and nobody can troubleshoot the nightly batch failures. The trigger is almost always operational pain, not a visionary CTO standing at a whiteboard.
Realistically, how long does this take?
A single application rehost: 2 to 6 months. A replatform: 3 to 9 months. A full refactor or rebuild of a complex business application: 12 to 36 months. A portfolio-wide modernization initiative across 20+ applications: 2 to 5 years, phased. Those ranges assume you have the team in place on day one. Most companies don’t. Add the hiring timeline to whatever the vendor told you.
Can you modernize without shutting the old system down?
Yes. In fact, you should. The strangler fig pattern is the standard approach: build new functionality alongside the old system, route traffic incrementally, and decommission legacy components one at a time as the new system absorbs their responsibility. Running both systems in parallel costs more in the short term because you’re paying for infrastructure, monitoring, and sometimes licensing on two environments simultaneously while your team splits attention between keeping the old one alive and validating the new one. Worth it, though, because your business doesn’t stop if the migration hits a snag in week three. The alternative, a big-bang cutover, is cheaper if it works. It rarely works cleanly.
Refactor vs. rebuild: which one?
Refactor if the core business logic is sound and the codebase is maintainable. Rebuild if the code is so tangled that modifying it costs more than starting over. The decision point is usually documentation. If the existing system’s behavior is well-documented or testable, refactoring preserves institutional knowledge. If the only documentation is the code itself and nobody on the team can confidently trace what happens when a user clicks “Submit Order” through the seven layers of spaghetti that handle it, rebuilding may actually be faster and certainly less terrifying. I’m oversimplifying slightly. But only slightly.
Do you actually need a staffing agency for this?
Not always. If your internal team has both legacy expertise and cloud-native skills, and you have the headcount to absorb the modernization work alongside their regular responsibilities, handle it in-house. Most teams don’t have that combination. The ones that call us typically have strong legacy knowledge but no cloud experience, or they’ve hired a cloud architect who can’t make progress because nobody on the team can explain what the legacy system actually does. If that sounds familiar, start a conversation with our team. If it doesn’t, save the fee and do it yourself.
Where do you even find someone who knows legacy mainframes and cloud-native architecture?
Short answer: you mostly don’t. That unicorn exists but charges accordingly and has four offers on the table at any given time. The practical approach is a two-person pairing model. One legacy SME and one cloud-native engineer working together, translating between systems. We staff modernization teams this way more often than not. It’s cheaper than hunting for the unicorn and it builds knowledge transfer into the project structure.
Getting Started Without Overcommitting
Nobody is asking you to modernize everything by Q4. Start with the application that causes the most pain, staff the team that can actually move it, and learn from the process before you touch the next one. You don’t need a 12-person team before writing a project plan.
Pick one application that causes the most pain. Map its dependencies. Classify it using the 7 Rs framework. Estimate the team you’d need. Check whether that team exists in your organization or needs to be built.
If the team needs to be built, that’s the actual first step. Not the architecture diagram. Not the cloud provider selection. The people. We staff cloud engineers, DevOps specialists, data architects, and legacy system SMEs across modernization projects of every size. Some of those searches take two weeks. Some take three months. Starting the talent search early is the single highest-ROI decision in any modernization plan.
The technology will be fine. The architecture decisions are solvable. The constraint is always the people who do the work.
