Modernise the application. Keep the production database live.
The legacy application stays in production throughout. Airtool runs on the same live database — reading and writing the same rows, with no data migration, no ETL and no synchronisation. Modernised modules go live alongside the old system, each step independent and reversible, until the legacy tier is gone.
Schema-first
The legacy schema is the input, not the output. We import it. We do not re-model it. The reference data model continues to be the reference data model.
Database business logic
Stored procedures, triggers and functions are defined in a portable XML schema. The platform generates engine-correct code — whether you are modernising on the current database or migrating to a different one.
Metadata-generated UI
Roughly ninety per cent of the application surface — screens, endpoints, roles, reports — is generated from rows in a Metadata Repository. The UI is not coded; it is materialised.
DBA + business analyst, not full-stack team
The customer-side team that delivers a modernisation on Airtool is a database engineer and a business analyst. The full-stack developer scarcity that kills most modernisations is not on our critical path.
The estate cannot stop, and it cannot stay
A legacy enterprise application is trapped between two facts. It cannot stay : the language pool is drying up, the vendor is winding the stack down, and every year of accreted logic is harder to change. And it cannot stop : it runs the business, and a modernisation that requires a pause, a data migration or a big-bang cut-over asks the business to bet itself on a switch being thrown correctly.
The way out is to remove the bet. Airtool connects to the existing production database and runs beside the legacy application, on the same live data — so the modernisation never becomes a single event the business has to survive.
Correlated risk becomes independent risk
Because both systems share one live database, a modernisation stops being a single bet that only pays off at cut-over. Each module is delivered, proven and put into production on its own — alongside the legacy application — and rolled back on its own if it is not right.
That is the central mechanical achievement of the method : it turns one large, correlated risk, where everything succeeds at cut-over or nothing does, into a sequence of small, independent, reversible ones. Value ships from the first module ; the business runs throughout.
Prove each module against the legacy one, on live data
Parallel operation on one database has a second benefit beyond low risk : it makes the modernisation verifiable. Because the modernised module and the legacy application read and write the same rows, every result the new module produces can be checked against the system it replaces — on real transactions, in production, before it takes over.
Modernisation stops being something you deploy and hope. Each module is proven against the behaviour it inherits, so the question at every step is not whether the code was translated correctly, but whether the new module matches what the business already does — answered on the data itself.
Five layers, in the order they happen
A modernisation methodology is only as honest as the order in which it does the work. Ours runs from data outward — and, as the journey below shows, the independent subsystems modernise in parallel, with the hardest change last.
1 · Schema
Already exists in the legacy system. Imported as-is into the metadata repository's table-object catalogue. Cross-database type mappings are applied automatically. Foreign keys, constraints, indexes, full-text indexes and seed data are reified as rows the platform can recompile against any of the seven supported OLTP engines.
2 · Database business logic
Database logic — stored procedures, triggers and functions — is defined once in a portable XML schema. Airtool generates the correct syntax for any supported target engine, resolves cross-object dependencies automatically, and tracks every object's change history. Modernise on the current engine or move to a different one: the logic does not change.
3 · Metadata
Tables, screens, REST endpoints, roles, reports, OLAP cubes and validation rules are stored as rows in a Metadata Repository. The runtime materialises the application from these rows on demand. Cluster-wide cache invalidation propagates changes in milliseconds via Redis pub/sub.
4 · Batch and middle tier
Server-side JavaScript on a GraalVM Polyglot context, with the platform's standard library — more than forty namespaces covering database access, HTTP, cryptography, cloud APIs, AI / LLM, document generation, image processing, OCR, mail and more. Used only where metadata cannot express the rule. Batch, scheduled, integration, file-handling and AI workloads land here.
5 · UI
Generated from metadata. Vue 3.5, Vuetify 4, TypeScript 5.8, Vite 6 on the browser. Same authoring effort regardless of the application — ERP screen, OLAP dashboard or partner portal — same long-term maintenance cost. Zero hand-written form code, zero hand-written grid code, zero per-screen development.
Why this order matters
Most modernisations get this exactly backwards. They start with the UI because the UI is what the customer can see. They build the screens first, then realise the business rules behind the screens have to come from somewhere. They translate the rules into application code, and translation is where institutional knowledge is lost.
Our order is the order in which value compounds. The schema is the least negotiable layer — we import it. The database logic is the most expensive to lose — we preserve it. Metadata is the highest-leverage layer — we author it once and the platform reuses it. The middle tier is the smallest deliberate surface area we can get away with. The UI is generated, so it costs nothing per screen.
Why the platform makes it possible
The methodology is not separable from the platform. Every layer depends on a specific Airtool capability that does not exist in generic application servers or visual-builder frameworks.
The schema importer depends on the metadata repository's multi-engine portability and its declarative table-object model. Database business-logic preservation depends on the schema compiler's SPL/trigger sequencing and per-object timestamp tracking. Metadata depends on the runtime's Redis-coordinated cluster cache and the supervised execution model. The middle tier depends on GraalVM Polyglot's controlled execution policies and the platform's standard library. The generated UI depends on the metadata model itself.
We do not sell modernisation as a service that happens to use a platform. We sell modernisation as the natural consequence of the platform's architecture — applied by the engineers who wrote that architecture.
What your modernised application will look like.
Airtool Apps — our own enterprise application suite — runs on the same platform the modernised version of your legacy stack will run on. Same metadata-generated UI, same supervised runtime, same OLTP and OLAP portability, same AI and MCP perimeter, same observability surface. Apps is the picture of what a finished modernisation looks like in production.
The implication for budgeting and planning is concrete : every platform-core capability — multi-tenancy, audit trail, row and column security, AI inside the perimeter, real-time observability — is inherited automatically by every form, every report, every module. Modernisation isn't translating your legacy stack into custom application code with these features rebuilt; it is lifting your schema and database business logic onto a runtime that already provides them.
Source stacks we modernise
Each stack has its own dedicated landing page — follow the links for the technical port-mapping detail. Talk to us about anything not on this list — most enterprise database systems map onto our methodology.
Informix 4GL & Genero
From the Informix mainframes that still process billions of transactions a year. Schema imports natively. SPL ports as SPL. CDC and data-blade capabilities preserved on Informix; or migrated cleanly to PostgreSQL or SAP HANA where the workload demands.
Oracle Forms / Forms 6i
Replace the Forms client tier without rewriting the application. PL/SQL stays. Triggers stay. The screens become metadata. Roles, security models and integration contracts migrate cleanly. Optionally, the Oracle database stays — the application just stops being a Forms application.
Delphi
Two-tier client/server estates with thick-client business logic. We extract the rules, normalise them, move them to the database tier where they belong, and rebuild the UI on metadata. The tier model changes; the data model doesn't.
PowerBuilder
DataWindows, PowerScript, decades of accreted application surface. Ports the data model first, the rules second, the screens last — every step independently demonstrable, every step gated by the customer.
IBM i (AS/400) and DB2 for i
DB2 for i schemas import through native DB2 connectivity — read-and-import, not ETL. RPG, COBOL and CL extract to the database tier ; DDS display files reify as metadata ; the 5250 green screens become a browser. The Power LPAR stays — or lifts to PostgreSQL.
Custom legacy J2EE
Bespoke Spring / EJB / Struts applications that have outlived their architects. We replace the framework with the platform; you keep the SQL, the integration contracts and the audit history.
Custom ERPs and bespoke 'internal SAP' rewrites
The most expensive modernisations and the most rewarding. Decades of business knowledge encoded in proprietary systems — preserved in the database tier, exposed by metadata-generated UI, governed by the platform's audit and AI surfaces.
Database flexibility — OLTP and OLAP
Seven OLTP engines for the modernised application; three OLAP engines for analytical workloads. Pick what fits — we do not lock the choice at the start of the programme.
OLTP · PostgreSQL
The default modern target. Open, deeply tested with the platform, full Tier-1 DBA depth from our team. Logical replication and CDC streaming to the analytical tier (Vertica, ClickHouse). First-line recommendation for greenfield modernisations and most lift-with-replatform programmes.
OLTP · Informix
Where the legacy estate is already on Informix and the operations depth justifies staying. We are the deepest Informix shop in our market — full Tier-1 DBA, CDC streaming, data blades, Java extensions. The migration becomes a modernisation of the application tier with the database tier preserved.
OLTP · Oracle · DB2 · SQL Server · MySQL · SAP HANA
Supported as application targets where the customer's existing estate or licensing landscape requires. Tier-2 development depth on these (full application engineering; DBA-grade operations referred to vendor or partner) — see the Database engineering service line for the honest competence map.
OLAP · Vertica · ClickHouse · BigQuery
Native SQL generation against the customer's chosen analytical engine — not generic SQL the engine then has to translate. Analytical workloads route automatically through the platform's data-access layer; the application sees one query surface.
What changes for the engineering team
| A typical modernisation programme | An Airtool modernisation | |
|---|---|---|
| Team profile | Full-stack developers, scarce, expensive | ✓ Database engineer + business analyst (customer side); platform team (us) |
| Schema strategy | Re-modelled, not imported | ✓ Imported as-is into the metadata repository |
| Database business logic | Translated into Java imperative code | ✓ Preserved in the database tier, modernised in place |
| UI strategy | Hand-coded per screen | ✓ Generated from metadata, zero per-screen cost |
| Cut-over | Big-bang at the end of a 24–36 month project | ✓ Incremental, parallel-run, business runs through migration |
| Database choice | Locked at the start | ✓ Switchable on the same platform; seven OLTP engines plus three OLAP |
| AI integration after go-live | Separate project, separate vendor | ✓ In scope by default — MCP server, RAG, governed SQL agents |
Lower TCO by reallocation, not a cheaper line item
Adoption stops being irreversible
The last question an enterprise asks about any platform is the fair one : what happens if we want to leave, or if the vendor does? The method answers it before it is asked. Because the application is metadata and the business logic lives in the database in open, standard languages, the assets that matter — the data, the schema, the logic, the documentation — are already yours, in forms you can read without us.
Continuity beyond that is a matter of contract, not hope : source escrow released on defined trigger events, and a source licence with a stable fork for internal use. Lock-in, addressed this way, stops being a fear and becomes a contract term — and the decision to adopt stops being irreversible, which is precisely what makes a prudent buyer willing to make it.
Modernisation, in the questions buyers actually raise.
How long does an Airtool modernisation typically take?
A discovery call lands within 48 hours, an architecture review within four weeks, and a working pilot within one quarter. Programme duration depends on the size of the source estate and the cut-over cadence the business can absorb — most engagements run iteratively over 9 to 18 months, with measurable surface area in production from the first quarter onwards. The methodology rules out the 24-to-36-month big-bang programme by construction : every layer is independently demonstrable.
Do we have to migrate off our current database engine?
No. The platform supports seven OLTP engines as first-class targets — PostgreSQL, Informix, Oracle, DB2, SQL Server, MySQL and SAP HANA — and the database choice is not locked at the start of the programme. If the existing operational depth on the current engine justifies staying, the modernisation re-platforms the application tier while the database tier is preserved. If a future re-platform is desirable, the same metadata recompiles against the new engine.
What happens to our existing stored procedures, triggers and SPL?
They stay where they are and are modernised in place. The platform's schema-code processor sequences them — CUDR → XUDF → XUDP → PROC → TRIG — with cross-include resolution and per-object timestamp tracking. The institutional knowledge encoded in the database tier survives the modernisation intact. Translating database business logic into imperative Java is where institutional knowledge dies ; we do not translate.
When new middle-tier business logic has to be authored — integration, batch, orchestration, AI — what language and runtime is used?
Server-side JavaScript on the platform's GraalVM Polyglot runtime, with three concrete advantages over the typical Java rewrite. First, the database connection is wired in by default — every handler receives a live connection from the runtime, reads and writes the same pool the rest of the application uses, and inherits the platform's row and column security automatically ; the boilerplate that surrounds database access in a Spring or EJB codebase disappears. Second, JavaScript carries the largest engineer talent pool in enterprise software, with modern syntax — classes, modules, async / await — and a multi-paradigm style that supports the procedural and object-oriented patterns enterprise teams already write. Third, GraalVM compiles JavaScript to native code at runtime, so the performance gap against Java is small enough that language choice is decided by team economics rather than raw speed. The platform's standard library — more than forty namespaces covering database access, HTTP, cryptography, cloud APIs, AI / LLM, document generation, image processing, OCR, mail and more — replaces most of the third-party Java dependencies the original middle tier carried.
Can the business keep running through the migration?
Yes. Cut-over is incremental and parallel-run by design : modernised modules go live alongside the legacy stack, the customer gates each step, and the business operates through the migration. There is no end-of-project big-bang window. Every layer is independently demonstrable — schema first, database logic second, metadata third, middle tier fourth, UI last — so every step compounds visible progress.
Do we need to hire full-stack developers to run the project?
No. The customer-side team that delivers a modernisation on Airtool is a database engineer and a business analyst. Roughly ninety per cent of the application surface — screens, endpoints, roles, reports — is generated from metadata, not hand-coded per screen. The full-stack developer scarcity that kills most modernisations is not on the critical path.
How is this different from AI tools that translate legacy code?
Code translation and platform modernisation are not the same category. An AI translator rewrites 4GL, PL/SQL or PowerScript into another language and hands back a new codebase to own, test and maintain — with the same per-screen UI, the same integration plumbing and the same absence of governance the original had. Airtool moves the schema and the database business logic onto a runtime that already provides multi-tenancy, row- and column-level security, audit, observability and AI inside the perimeter, and generates the UI from metadata. The tool translates code ; the platform runs the business. We use AI heavily inside the method — to document the legacy estate and to assist the port — but the destination is a governed platform, not a pile of translated source.
How does this approach handle AI and modern integration after go-live?
In scope by default, not as a separate post-project programme. The same engagement that modernises the legacy stack ships MCP server integration, governed SQL agents, RAG over the customer's chosen vector store, and an AI perimeter that respects the platform's existing role and column-level security. Modernising onto the platform and modernising into AI are the same engagement, on the same runtime.