Tags
Share
“Any fool can write code that a computer can understand. Good programmers write code that humans can understand.”
— Martin Fowler
Martin Fowler frequently advocates caution a considered, gradual approach to legacy modernization. In legacy modernization, it matters even more. The goal is not simply to turn old code into new code. It is to produce a modernized system that engineers can understand, test, review, audit, and continue improving after migration is complete.
That distinction is critical because many legacy systems still run the most important parts of the enterprise. They may be old, heavily customized, difficult to maintain, and expensive to change, but they also contain years of business logic, operational exceptions, and domain knowledge. A modernization program that loses that behavior has not solved the problem. At best, it has only moved the risk into a newer technology stack.
That is why legacy modernization with AI agents needs to be approached carefully.
AI can accelerate modernization work. It can analyze code, generate tests, refactor repeatable patterns, support documentation, and execute structured migration tasks at a speed human teams cannot match manually. But speed alone is not enough. In legacy environments, faster code generation can create more risk if the output is not tested, auditable, and aligned to existing business behavior.
The future of AI-assisted legacy migration is not code conversion at scale. It is governed modernization: requirements-first, test-backed, human-reviewed, and measured through delivery outcomes.
That is the approach behind Exadel Colleague. Colleague is a governed agentic SDLC peer that works inside existing Jira and Git workflows. It helps engineering teams delegate suitable modernization tasks to AI agents while engineers retain ownership of architecture, review, security, and production release decisions.
In a modernization-readiness use case, Exadel Colleague reduced eligible testing effort by ~90% by helping establish a test-backed behavioral baseline before broader modernization began.
This is the important distinction: modernization is only valuable if the new system works, passes tests, preserves critical behavior, and can be trusted in production.
The Legacy Modernization Problem: Why Traditional Approaches Fail
Most enterprise legacy system modernization programs begin with a familiar assumption: if the organization can dedicate enough time, budget, and engineering talent, the legacy system can eventually be replaced, refactored, or migrated.
In practice, that assumption often breaks down. Large modernization programs can run for many months or even several years. During that time, business priorities change, regulatory expectations shift, team members move on, and the legacy system continues to evolve.
Modernization teams often find themselves chasing a moving target.
Three failure modes appear again and again: scope creep, regression risk, and team capacity exhaustion.
Scope creep
Legacy systems rarely contain only technical debt. They contain undocumented business logic.
A seemingly simple function may encode years of exceptions, regulatory handling, customer-specific behavior, market conventions, or operational workarounds. When modernization begins, teams discover dependencies that were never fully documented.
The program expands. The timeline slips. The budget grows.
This is especially common in financial services environments built around platforms such as Calypso, Murex MX.3, Endur, and Findur. These platforms often sit at the center of trading, treasury, risk, commodities, capital markets, or investment operations. Over time, they accumulate integrations, custom scripts, version dependencies, reporting obligations, and specialized workflows.
In this context, “legacy” does not mean obsolete. It means mission-critical, deeply embedded, and difficult to change safely.
Regression risk
The second failure mode is regression risk. Modernization is not successful simply because new code has been written. It is successful only if the new system preserves the behavior the business depends on.
That is harder than it sounds.
Legacy systems often behave correctly for reasons that are not obvious from the code. Edge cases may be handled by old conditional logic. Batch jobs may depend on specific sequencing. Downstream systems may expect data in a certain shape. Traders, analysts, operations teams, and compliance teams may rely on workflows that were never fully captured in formal documentation.
The problem becomes harder when a legacy platform has limited documentation, few remaining subject-matter experts, and high regression risk during routine updates. In that environment, modernization cannot begin with blind code conversion. It has to begin with understanding and preserving current behavior.
When that behavior changes accidentally, modernization creates operational risk.
A cloud migration that breaks reporting is not modernization. A refactor that changes risk calculations is not modernization. A rewritten module that passes happy-path tests but fails on exception cases is not modernization.
It is rework waiting to happen.
Team capacity exhaustion
The third failure mode is capacity.
Modernization programs require senior engineers, architects, QA specialists, business analysts, platform experts, security teams, and domain specialists. Those are often the same people needed to keep the existing system running.
The result is a constant trade-off between transformation and business-as-usual delivery. If the best engineers are assigned to modernization, BAU slows down. If they stay focused on BAU, modernization stalls. If organizations try to do both with the same team, burnout and delivery risk increase.
This is why many enterprise modernization programs move slowly even when budgets are approved. The bottleneck is not always strategy. It is the amount of expert engineering attention available.
In a separate financial services use case, Exadel Colleague created 100+ Human-Equivalent Hours in a two-week sprint model by validating repeatable maintenance delivery against a cloned repository and historical backlog. That matters because modernization teams rarely suffer from lack of ambition. They suffer from lack of available expert capacity.
AI Without Safety Harnesses: The Risk of Naive AI Modernization
AI changes the modernization equation because it can accelerate work that previously required substantial manual effort.
A legacy modernization AI agent can help analyze code, identify dependencies, generate tests, refactor repeatable patterns, assist with documentation, and support migration tasks across large codebases. Used properly, that creates a major opportunity.
Used poorly, it creates a faster way to generate AI-generated technical debt.
The most dangerous version of AI modernization is code-first refactoring at scale.
A team points AI at a legacy codebase. The model generates new code. The output looks cleaner, more modern, and more maintainable. The team may even see working examples quickly.
But in legacy modernization, the key question is not:
- Does the new code look better?
The key question is:
- Does the new system preserve the behavior the business depends on?
Without that discipline, naive AI modernization can create several problems.
Untested refactoring at scale
AI can refactor code quickly. But if tests do not exist before the refactor, the team may not know whether the system still behaves correctly.
This is especially risky in legacy estates with limited automated test coverage.
A team modernizing a large codebase may not have complete unit tests, integration tests, regression tests, or behavior specifications. If an AI agent generates large amounts of new code without independent validation, the team inherits a new problem: more output to review, test, and trust.
That is not acceleration. It is a review bottleneck.
Hidden business logic loss
Legacy systems often contain logic that was never designed cleanly but remains business-critical.
A model may simplify code that looks redundant but actually handles an exception. It may standardize patterns that were deliberately different. It may remove branches that appear unused but are triggered by rare scenarios. It may generate a cleaner abstraction while missing platform-specific constraints.
In modern application development, that may cause a defect.
In regulated environments, capital markets systems, treasury platforms, or energy trading systems, it may create operational, compliance, or financial exposure.
This is one reason legacy code refactoring AI needs more than code generation. It needs tests, difference checks, human review, and domain-aware validation.
Compliance and audit gaps
In financial services, modernization must also satisfy governance expectations.
Teams need to know what changed, why it changed, who approved it, how it was tested, and whether the result can be audited later.
AI-generated modernization work that cannot be traced back to a requirement, ticket, test, reviewer, and approval path is unlikely to satisfy enterprise governance standards.
That is where many individual AI tools fall short. They may help a developer write or refactor code, but they do not automatically provide the delivery system around the work: Jira traceability, test-first validation, pull request review, audit logs, deployment controls, and finance-friendly reporting.
For small experiments, that may be acceptable.
For enterprise legacy system AI modernization, it is not.
Built-In Difference Testing: How Governed AI Modernization Works
Governed AI modernization starts from a different principle.
It does not ask AI to rewrite as much code as possible. It asks AI to work inside a delivery process designed to prove that modernization is safe.
That process depends on three ideas:
- Define the expected behavior before implementation.
- Compare legacy and modernized outputs wherever possible.
- Keep engineers accountable for review, approval, and production ownership.
This is where difference testing becomes central.
What difference testing means
Difference testing compares the behavior of the existing legacy system with the behavior of the modernized system before deployment.
The question is simple:
When the same input is passed through both systems, does the modernized output match the legacy output where it should?
This matters because many legacy systems cannot be judged only by reading the code. Their real specification is often their observed behavior.
Difference testing helps teams build confidence that the modernized version preserves required behavior while improving the underlying architecture, maintainability, or deployment model.
For example, in a capital markets modernization scenario, the team may need to prove that pricing, P&L, risk, reporting, or trade-processing behavior remains consistent after migration. In an energy trading environment, the team may need confidence that new commodity classes, reporting flows, or risk calculations do not disrupt established behavior. In a treasury platform, confirmation, settlement, or exception workflows may need to remain stable while the system is upgraded.
Difference testing gives modernization teams a safety harness.
It does not eliminate the need for human judgment. It gives human reviewers a stronger basis for judgment.
Why testing needs discipline
Edsger W. Dijkstra famously warned that “program testing can be used to show the presence of bugs, but never to show their absence.”
In legacy modernization, that warning is especially relevant.
Tests do not prove that a modernized system is perfect. But without test-first validation, difference testing, and human-reviewed pull requests, teams have too little evidence that critical legacy behavior has been preserved.
Dijkstra’s point is not an argument against testing. It is an argument for discipline. Tests need to sit inside a broader engineering process designed to reduce uncertainty before modernization reaches production.
That is the difference between generating tests after code and using TDD-first AI code generation to guide modernization from the beginning.
Establishing a behavioral baseline
Before a legacy system can be modernized safely, teams need a baseline for how it behaves today.
That is often one of the hardest parts of legacy modernization. Documentation may be incomplete. SMEs may be scarce. The code may contain old patterns, unused-looking branches, and platform-specific logic that cannot be safely removed without evidence.
This is where large-scale test generation becomes more than a QA task. It becomes a modernization-readiness activity.
In a modernization-readiness use case, Exadel Colleague generated nearly 7,000 unit tests to establish a behavioral baseline before broader modernization. That work reduced eligible testing effort by ~90% and created 3,200+ Human-Equivalent Hours.
The value was not simply that tests were produced faster.
The value was that the team gained a stronger foundation for later modernization decisions. With a behavioral baseline in place, engineers have more evidence when reviewing changes, assessing regression risk, and deciding which parts of the legacy system can be safely refactored, migrated, or replaced.
This does not mean every modernization program becomes 90% faster. It shows that one of the most time-consuming and risk-sensitive parts of modernization — establishing test coverage and behavioral confidence — can be accelerated dramatically when the work is suitable for agentic execution.

Your AI Partner
See how governed AI modernization works with Exadel Colleague.
How Exadel Colleague supports governed modernization
Exadel Colleague fits this model because it is not an isolated coding assistant. It is a governed, asynchronous, multi-agent SDLC peer that operates inside existing engineering workflows.
In a modernization context, the workflow can look like this:
- A modernization ticket is assigned from Jira.
- Colleague analyzes the requirement and available context.
- Testing agents generate TDD and BDD tests before implementation.
- Difference tests help validate that legacy behavior is preserved where required.
- Programming agents implement the change against the tests.
- Colleague opens a pull request in the team’s existing Git workflow.
- Engineers review the implementation, tests, diffs, and traceability before merge.
- Delivery impact can be reported through ticket-level outcomes and productivity benchmarks.
This sequence matters.
In naive AI modernization, code comes first, and validation follows later.
In governed AI modernization, the behavior to preserve is defined before implementation begins. Tests are generated before code. Engineers review before merge. Every change remains traceable.
That is how AI modernization becomes safer.
TDD-first modernization
Test-driven development is valuable in legacy modernization because it forces the team to clarify what the new system must prove before changing the implementation.
In a TDD-first AI workflow, tests are not an afterthought. They are part of the architecture of delivery.
For Exadel Colleague, this means testing agents generate tests before programming agents implement the change. The implementation must satisfy the test-backed definition of success rather than simply producing plausible code.
In a modernization program, that helps teams avoid the most common AI failure mode: generating code that looks correct before the requirement has been fully validated.
TDD-first development does not make modernization effortless. It makes it more controlled.
That distinction is important. The point of AI agents is not to remove engineering discipline. It is to make disciplined engineering faster.
Human review remains mandatory
Governed modernization also keeps engineers in control.
AI agents may analyze, test, implement, and prepare pull requests, but engineers remain responsible for architecture, design decisions, security, code review, and production ownership.
That matters in legacy environments because not every decision can be automated. Some trade-offs require domain knowledge. Some require regulatory judgment. Some require architectural context. Some require knowing why the legacy system behaves in a particular way.
Colleague is designed to support those engineers, not replace them.
The agent handles suitable, repeatable modernization work. Engineers focus on high-judgment decisions.
That is the balance enterprise modernization requires.
The 90% Testing-Effort Reduction: What the Data Shows
The strongest argument for AI-assisted modernization is not that it generates code faster. It is that, when governed properly, it can reduce the time required to make suitable modernization work testable, reviewable, and safer to execute.
The modernization-readiness result should be understood carefully. A ~90% reduction in eligible testing effort does not mean every modernization program becomes 90% faster.
The result depends on several factors:
- the quality of existing code and documentation;
- the amount of test coverage already available;
- the complexity of the legacy platform;
- the clarity of modernization tickets;
- the proportion of work suitable for agentic execution;
- the level of human review required;
- the regulatory and production controls involved.
The value of the benchmark is not a universal promise. It is evidence that a critical modernization-readiness activity can be accelerated dramatically when the right type of work is handled through the right workflow.
What “~90% testing-effort reduction” means in practice
In a traditional modernization program, senior engineers and QA teams may spend large amounts of time on repeatable but essential tasks:
- analyzing legacy code behavior;
- creating test scaffolding;
- generating unit tests;
- identifying regression-sensitive areas;
- documenting expected behavior;
- preparing testable modernization tickets;
- validating whether current behavior has been preserved.
Some of this work requires deep judgment. Some of it is repeatable.
AI agents are most useful when they take on the repeatable parts under clear constraints.
That can change the modernization timeline indirectly but meaningfully. Instead of waiting for engineers to manually build all the testing foundations for every eligible area, teams can delegate suitable test-generation and baseline-building work to Colleague while engineers focus on architecture, validation, platform decisions, and risk management.
This is especially valuable when modernization needs to happen alongside BAU delivery.
In platform modernization environments such as Calypso, Murex, Endur, or Findur, teams often need to maintain business continuity while upgrading versions, preparing cloud migration, supporting new regulatory requirements, or creating AI-ready data pipelines.
The modernization program cannot simply stop the business while the new system is rebuilt.
Governed agentic workflows help create additional throughput without removing human accountability.
Calypso modernization AI: why the use case matters
The Blog 6 brief calls out Calypso modernization specifically because it represents the kind of environment where AI acceleration is valuable but risky.
Calypso is used across treasury and capital markets environments where modernization pressures can include version upgrades, cloud migration, risk calculation requirements, data integration, and AI readiness.
In this context, Calypso modernization AI cannot mean “let AI rewrite the system.” It has to mean a governed modernization approach where suitable tasks are selected carefully, outputs are tested, legacy behavior is compared, and engineers approve every production change.
The same principle applies to other enterprise platforms.
For Murex MX.3, modernization may involve version upgrades, operating system migration, regulatory calculations, platform integration, and model governance. For Endur and Findur, modernization may involve deep customization, Java scripting, risk workflows, regulatory reporting, renewable commodity classes, or post-merger platform consolidation.
Across all of these platforms, the modernization challenge is similar:
Accelerate the work without breaking the system the business still depends on.
That is where AI agents need a governed SDLC around them.
What “holds up” means
A modernization path only holds up if the result can survive production reality.
That means:
- the new implementation passes expected tests;
- critical legacy behavior is preserved;
- pull requests are understandable and reviewable;
- changes are traceable back to tickets and requirements;
- audit and compliance needs are met;
- engineers remain accountable for approval;
- the system becomes easier to maintain, not harder.
This is why Exadel does not position Colleague as a shortcut around engineering discipline. It is a way to apply engineering discipline faster.
The goal is not to modernize by bypassing quality gates. The goal is to modernize by making quality gates part of the AI-assisted workflow.
Financial Services: Compliance-First AI Modernization
Legacy modernization is difficult in every industry, but financial services adds another layer of complexity.
Banks, insurers, asset managers, capital markets firms, and trading organizations operate under intense scrutiny. Their systems often support regulated workflows, sensitive data, model risk processes, audit obligations, and business-critical transactions.
That changes what modernization requires.
A financial services modernization program must answer questions such as:
- Can the team prove what changed and why?
- Can every AI-assisted change be traced back to a requirement or ticket?
- Can the new system preserve critical legacy behavior?
- Can the organization explain how outputs were tested and approved?
- Can the platform operate inside approved security and data-sovereignty constraints?
- Can AI tools be used without exposing code or data to unacceptable third-party risk?
These are not secondary concerns. They are the conditions under which modernization becomes possible.
BYOK, private cloud, and on-premises deployment
For regulated environments, deployment flexibility matters.
Many standard AI tools rely on public cloud endpoints or proprietary model environments. That may not work for organizations with strict controls around source code, customer data, trading data, risk models, or internal systems.
Exadel Colleague is designed for enterprise deployment requirements, including private cloud, on-premises, BYOK, and model-agnostic architectures.
This gives organizations more control over where code and data reside, which models are used, and how AI-assisted delivery fits into existing governance frameworks.
The point is not only technical flexibility. It is procurement, security, compliance, and operational confidence.
Auditability by design
Modernization teams need traceability.
In a governed agentic workflow, every AI-assisted change should be connected to the work item that triggered it. The team should be able to see the requirement, the generated tests, the implementation, the review path, and the final approval.
This matters during internal review, external audit, regulatory examination, production incident analysis, and long-term maintenance.
When AI-generated output is treated as a black box, trust breaks down.
When it is test-backed, reviewable, and traceable, it becomes part of the engineering system.
That is why auditability cannot be bolted on after the modernization program is complete. It needs to be built into the delivery workflow from the beginning.
Modernization without BAU disruption
Financial services platforms cannot usually be paused while modernization takes place.
Trading, treasury, settlement, regulatory reporting, risk, and customer-facing operations still need to run. That means modernization must happen alongside business-as-usual delivery.
This is one reason Exadel’s platform modernization approach emphasizes continuity. The objective is not only to move faster. It is to move faster without creating unacceptable operational disruption.
Colleague supports that model by adding throughput on suitable, repeatable backlog work inside existing Jira and Git workflows. Engineering teams do not need to abandon their delivery tools, retrain around a new interface, or remove senior engineers from review and approval.
The agentic workflow runs in parallel. Engineers stay in charge.
That makes AI-assisted modernization more realistic for enterprise environments where risk cannot be ignored.
It all starts now.
See how Exadel helps organizations apply AI, modernization, and product engineering in real-world enterprise environments.
How to Know If Your Legacy Modernization Program Is Ready for AI Agents
AI agents are not the right answer for every modernization task.
That is not a weakness. It is how serious engineering leaders should think about the problem.
The best candidates for AI-assisted modernization tend to share several characteristics:
- the task is clearly described;
- expected behavior can be defined;
- inputs and outputs can be tested;
- acceptance criteria are available or can be created;
- the change is bounded enough for review;
- there are repeatable patterns across the codebase;
- domain experts can validate the result;
- the team has a clear process for pull request review and merge.
By contrast, some tasks remain primarily human-led:
- major architecture decisions;
- unclear business rules;
- unresolved product questions;
- ambiguous regulatory interpretation;
- high-risk production changes;
- cross-platform strategy;
- decisions involving trade-offs between business priorities.
AI can still support those tasks, but it should not be treated as the primary owner.
This is why a readiness or scoping phase matters.
Before applying AI agents broadly across a legacy estate, organizations should assess which parts of the backlog are suitable for governed automation and which require human-led modernization.
A strong scoping process should identify:
- which systems and modules are candidates for AI-assisted modernization;
- where test coverage is missing;
- where difference testing can be applied;
- which tickets are too vague for agentic execution;
- what compliance or data controls are required;
- what human review model will be used;
- which outcomes will be measured.
The result is a modernization roadmap based on evidence rather than assumption.
That is also how teams avoid treating AI as a miracle layer over an unclear problem.
Modernization programs fail when ambiguity is pushed downstream. Governed AI modernization works best when ambiguity is surfaced early and resolved before implementation begins.
From Legacy Risk to Modernization Velocity
Legacy modernization has always required a balance between speed and safety.
Move too slowly, and the organization remains trapped by version debt, fragile integrations, rising maintenance costs, limited AI readiness, and dependence on scarce legacy expertise.
Move too quickly, and the organization risks regression, compliance gaps, operational disruption, and technical debt in a new form.
AI agents change the balance, but they do not remove the need for engineering discipline.
The mature approach is not naive code generation. It is governed modernization:
- start from clear tickets and requirements;
- generate tests before code;
- compare legacy and modernized behavior;
- keep every pull request human-reviewed;
- preserve traceability and auditability;
- use deployment models that match enterprise security requirements;
- measure outcomes in delivery terms, not AI activity.
That is how legacy modernization AI agent workflows become useful in real enterprise environments.
Fowler’s point still applies. Modernized code is not successful simply because a machine can execute it. It succeeds when engineers can understand it, test it, review it, audit it, and safely change it again.
That is the difference between modernization that moves fast and modernization that holds up.
Exadel Colleague was built for that shift. It works inside Jira and Git, applies a test-first agentic SDLC workflow, supports enterprise deployment models, and keeps engineers responsible for architecture, review, and production ownership.
That proof point matters because modernization does not begin with rewriting everything. It begins with understanding what must be preserved.
For teams looking to apply the same governed AI delivery model beyond modernization, Exadel’s AI-enabled product engineering services help bring test-backed, human-reviewed agentic workflows into the wider SDLC.
That is the path that matters: not just faster modernization, but modernization that holds up.
Book a legacy modernization scoping session.
See where AI agents can safely accelerate your modernization roadmap — and where human-led engineering should remain in control.


.png)





