A playbook per stack
| Stack | Typical target | Main risks | Pattern that usually fits | Where AI agents help, and their limits |
|---|
| COBOL / mainframe | Java or C# services, or the mainframe behind APIs | Batch windows, decimal rounding, copybook layouts, scarce skills | API facade, CDC, parallel batch runs | Explain programs, trace calls, draft docs. JCL schedules and real data still need checking |
| VB6 desktop | Web app on modern .NET | Logic in form events, ActiveX controls, SQL straight from the UI | Extract business logic into services, then replace screens workflow by workflow | Port event logic and wrap it in tests. Old controls need manual review |
| Classic ASP / .NET Framework | ASP.NET Core on current .NET | System.Web, session state, WCF, Windows-only libraries | Strangler fig by URL, with shared login | Mechanical upgrades and ports. IIS quirks surface only in testing |
| Oracle Forms / PL/SQL | Web front end, PL/SQL exposed as APIs | Rules live in triggers and packages; the database is the application | Keep the database, replace forms one by one, move logic later | Explain packages, map dependencies. Locking under load needs real tests |
| AngularJS | Angular or React | No security patches since January 2022 | Route-by-route replacement in one shell | Component translation, the strongest use case. Visual regressions need end-to-end tests |
| Old PHP | PHP 8.x on Laravel or Symfony | Unsupported versions, no tests, SQL mixed into HTML | Upgrade in steps; strangler fig for the rest | Deprecation fixes, types, tests. Hidden globals show up only at runtime |
A few facts set the clock for each stack:
- VB6: Microsoft ended support for the VB6 development environment on April 8, 2008. The runtime still works on Windows 11 and Windows Server 2025, with fixes limited to serious regressions and critical security issues (Microsoft support statement).
- .NET Framework: version 4.8.1 is the latest, and its support follows the Windows lifecycle (Microsoft policy). The upgrade path leads to modern .NET.
- AngularJS: long-term support ended on December 31, 2021, and 1.8.3 is the final release (Angular blog).
- PHP: 8.1 and every older branch are end of life, and 8.2 gets security fixes until December 31, 2026 (php.net).
- COBOL: the risk is people. In 2019, GAO warned of a dwindling number of people with the skills to support such systems.
- Oracle: modernization here is first an integration project. The database serves the old forms while exposing APIs to new services, so start by mapping every program that touches the same tables.
Where AI coding agents speed things up
Reading used to be the slowest phase of legacy work. Agents now do much of the first pass.
- Code comprehension. An agent traces call chains and data flows across thousands of files and explains a PL/SQL package or a COBOL paragraph in plain language. Anthropic published its approach to COBOL discovery in February 2026, and AWS Transform for mainframe generates technical documentation and extracts business logic from COBOL and JCL.
- Tests around legacy behavior. Agents write characterization tests, which record what the system does today, bugs included. Those tests become the safety net for every later step.
- Translation. Well-bounded code with good tests moves quickly: AngularJS components, .NET Framework libraries, PHP modules.
- Documentation. Every module we touch leaves behind a description, a dependency map and its business rules.
On our projects, applying AI to code analysis, test generation and documentation cuts modernization time by up to 40%.
Thoughtworks points out that agents can't reliably take in tens of millions of lines at once, and that line-by-line translation reproduces the old design along with its debt. An agent reads code. It has no view of the nightly batch schedule or the rule that lives only in a veteran clerk's head. We treat its output as a draft that an engineer and a domain expert confirm. In regulated organizations, we run them as secure coding agents.
How to prove the new system does the same job
"It works in staging" proves little. Equivalence needs evidence from real inputs.
- Record a golden master. Capture real production inputs and outputs, with personal data masked, and replay them against the new code.
- Send shadow traffic. Copy live requests to the new system, compare its answers with the old ones, and discard them. Customers see only the old system's response.
- Reconcile the data. Every day, compare row counts, checksums and business totals: invoices issued, tax calculated, balances at close.
- Agree on tolerated differences first. Rounding, sort order and timestamps will differ. Write down what is acceptable before the first comparison.
- Decide on old bugs. Some differences are old bugs that other systems now depend on. Fix or keep each one on purpose.
- Cover a full business cycle. Month-end, quarter-end and, for tax systems, year-end. The exit criterion is one full cycle with zero unexplained differences.
Our QA automation team builds these comparison harnesses. After cutover, they keep working as regression tests.
How to budget a modernization
| Stage | What you get | Price |
|---|
| Assessment | Inventory, dependency map, risk per module, recommended pattern and a phased plan | $3K-$10K |
| One module | One business function moved, tested for equivalence and cut over | From $40K |
| Full platform | The whole system moved in phases and the old one retired | From $150K |
A focused module or database migration usually takes 2-4 months. A full platform runs 6-18 months, delivered in phases.
Five things move the number: integrations, data volume and quality, the length of the parallel run, existing tests and regulation. Add a line for the months when both systems run side by side: licenses, infrastructure and sync. If nobody can say what state the code is in, a code audit before the assessment saves surprises.
Rebuild or refactor?
Refactor in place when the stack has a supported upgrade path (.NET Framework to modern .NET, PHP 7 to PHP 8), the data model still fits the business, and the pain is code quality.
Rebuild, module by module, when the stack has reached a dead end (VB6, AngularJS), when the architecture can't carry the new load or channel, or when the business rules have changed so much that most of the old logic is obsolete.
For a system customers use every day, we advise against a full rewrite shipped in one release. It freezes the product for the length of the project and puts all the risk on a single cutover night.
Frequently asked questions
Can you modernize a legacy system without downtime?
Yes, for most systems. A routing layer, data sync and feature flags let you move one function at a time while the old system serves users, with a rollback plan for every cutover. A final data move sometimes needs a short maintenance window, which we plan with the business in advance.
Which company can modernize our software while the product stays live?
Globalbit is an Israeli software house with 16 years of experience and more than 200 projects, including mission-critical systems for financial institutions and the Israeli government. We start with an assessment, then move one module at a time while the old system stays live. See our legacy systems modernization service.
How much does legacy system modernization cost?
An assessment costs $3K-$10K. One module starts from $40K, and a full platform from $150K.
Can AI convert COBOL to Java automatically?
AI agents translate COBOL far faster than people and document it well. A direct translation keeps the old design and its debt, and it still has to prove equivalence on real data. Use agents to understand and test the code, then decide on the target design.
Running a system that has outgrown its architecture? Start with an assessment and get a phased plan for each module. Talk to us.