Skip to main content
API 5 min read

The Strangler Fig Approach to Legacy System Modernization

By CalRen Solutions

The Problem: Legacy Systems with No API Layer

You have a system that has been running for fifteen years. It does its job. The data is good. Business processes depend on it. But it has no API, no webhook support, and the only way to get data in or out is a CSV export, a database view, or someone typing it into another system.

This is not a niche problem. Walk into any mid-market enterprise and you will find at least one system — usually a financial, ERP, or facilities management platform — that fits this description. The data trapped inside these systems is valuable. The processes they support are critical. But they were built before “integration” was a design requirement.

The temptation is to rip and replace. Buy the modern platform. Migrate the data. Train the users. Go live. Ship it.

The reality is that rip-and-replace projects fail at an alarming rate. They take longer than planned, cost more than budgeted, and disrupt operations during the transition. Worse, they often inherit the same integration problems because the new system gets deployed the same way the old one was — as a standalone product.

Why Rip-and-Replace Fails

Three forces work against the big-bang modernization approach:

  • Data gravity. Fifteen years of data does not migrate cleanly. Edge cases, custom fields, and implicit business rules embedded in the data model take months to untangle.
  • Process coupling. People have built workflows, reports, and workarounds around the existing system. The new system might be better in theory, but the transition breaks established processes.
  • Integration debt. The old system has accumulated point-to-point integrations — file drops, database links, screen-scraped reports. Each one needs to be rebuilt for the new platform, and you usually discover them one at a time after go-live.

The strongest argument for incremental modernization is risk management. Every increment is a small, reversible change. A rip-and-replace is a single, irreversible change that either works or does not.

The Approach: Strangler Fig Pattern

The strangler fig pattern — named after the tropical vine that gradually envelops and replaces a host tree — offers a different path. Instead of replacing the legacy system all at once, you build an API layer around it and migrate functionality incrementally.

Step 1: Build an API Facade

Place a modern RESTful API in front of the legacy system. This facade does not replace anything yet. It simply provides a clean, documented interface to the existing data and operations.

┌─────────────────┐
│   API Facade    │ ← New REST/GraphQL interface
│   (Gateway)     │ ← Authentication, rate limiting
└────────┬────────┘

┌────────▼────────┐
│  Legacy System  │ ← Existing database, file exports
│  (Unchanged)    │ ← No modifications required
└─────────────────┘

The facade can pull data from database views, file exports, or even screen scraping as a last resort. The consumers do not know or care how the data is sourced. They see a modern API.

Step 2: Route Traffic Through the Facade

Once the facade is in place, start routing all new integrations through it. This is critical: no new point-to-point connections to the legacy system. Every consumer talks to the API, not the database.

Existing integrations get migrated to the facade on a schedule — one at a time, starting with the ones that break most often.

Step 3: Replace Functionality Behind the Facade

Now the interesting part. Because every consumer talks to the API — not the legacy system directly — you can swap out the implementation behind the facade without any consumer knowing.

  • Replace the CSV export with a real-time query? The API contract stays the same.
  • Move a table from the legacy database to a modern data store? The API contract stays the same.
  • Replace an entire module with a SaaS product? The API contract stays the same.

Step 4: Decommission the Legacy System

Eventually, enough functionality has been migrated that the legacy system serves no direct purpose. At this point, decommissioning is a non-event — just turning off a system that nothing connects to anymore.

When This Works Best

The strangler fig pattern is not the right answer for every situation. It works best when:

  • The legacy system has stable, queryable data (database views, export APIs, or file drops)
  • Multiple consumers depend on the legacy system’s data
  • The organization cannot tolerate downtime or a “big bang” cutover
  • There is no clear single replacement product (you might use multiple modern tools to replace one legacy system)

It works less well when the legacy system is genuinely end-of-life (vendor out of business, running on unsupported hardware) or when the data model is so broken that no facade can make it coherent.

What This Looks Like in Practice

A typical engagement follows a pattern: two weeks to build the initial facade with the three or four most critical data endpoints, then a steady cadence of migrating existing integrations and adding new capabilities. Most organizations see the first real value — a downstream system getting reliable, real-time data instead of a weekly CSV — within the first month.

If your organization is sitting on legacy systems that work but do not integrate, our API development practice focuses on exactly this kind of incremental modernization. We would welcome the chance to talk through your specific situation.

Share:
Related Service: API Development →

Want to Discuss This Topic?

We are always happy to talk through the ideas in this post and how they might apply to your organization.

Get in Touch