How it works

Parse. Transform. Modern app.

Modernization at Vivify is model-driven and 90%+ automated. Instead of rewriting your system by hand, we read it, build a model of what it does, and generate the modern version from that model, then prove the result behaves like the original.

Legacy source Parse Model Transform Modern app
What model-driven means

We read the code. The model does the rest.

Parsing means our analyzer reads every line of your source code and works out what the system actually does: every screen, every piece of data, every business rule. All of it goes into a model. The new application is then generated from that model.

The second half is what makes the difference. We are not translating your old code line for line. A line-for-line conversion drags thirty years of workarounds and dead ends into the new system, and you end up maintaining the same old application, just written in something newer. Generating from the model gives you an application built the way someone would build it today.

It is also why the output stays compact. Ask an AI to write the code and it tends to produce far more of it than the job needs, which your team then has to read and maintain for years. The model holds what your system actually does, and that is what gets built.

How model-driven modernization works Your legacy code is read line by line, turned into a model of what the system does, and the modern application is generated from that model rather than translated line for line. Your legacy code every screen, rule and table Parse we read every line The model what your system does Transform generated, not translated Modern app clean, standard code you own
  1. Your legacy codeevery screen, rule and table
  2. Parsewe read every line
  3. The modelwhat your system does
  4. Transformgenerated, not translated
  5. Modern appclean, standard code you own
Why it comes out correct

Three mechanisms, not one promise.

Roughly 74% of legacy modernization projects fail, and they fail on the same question: how does anyone know the new system still does what the old one did. We answer it three ways, and they are independent of each other.

By design

Model-driven development

We read every line of your code and build a model of what your system does: its screens, its data, its business rules. The new system is generated from that model, so your rules move across as they are. Nobody re-types them, and no AI is asked to work out what they were meant to do, so they cannot quietly come out meaning something different.

By comparison

Side-by-side automated testing

The new system and the old one are run on the same inputs and what comes out is compared automatically. The test libraries are built from your own test plans, so the comparison covers the behavior your business actually depends on rather than a generic suite.

By the rules themselves

Business rules held in the model

Because the model holds your business rules, it gives a second, separate way to check the result. That works here for a specific reason: the rules were taken straight out of your source code, not written down by an AI that read it. So checking against them is a real check, not a guess being compared with itself.

Build it so it cannot be wrong, then prove it is not wrong, twice over.

Parse your application into a model

Parsing means Code Analyzer reads every line of your source code: screens, navigation, data access, and the business rules buried inside them. From that we build a model of how your application actually behaves. It is the tool that reads everything, not a team of people working through it by hand.

  • Full inventory of screens, components, and data flows
  • Business rules captured as a model, not as notes
  • Nothing is silently dropped: gaps are surfaced, not guessed

Transform the model to a modern architecture

Code Transformer maps the model onto a modern architecture and generates the new application from it. The new code is generated from the model, not translated line for line from the old code, which is why you get a clean application rather than thirty years of workarounds rewritten in a new language. 90%+ of the work is automated. For the rest, the custom pieces no automated conversion can handle, our engineers work with AI assistance to move faster. Where the old code is incomplete or unclear, AI helps fill the gaps, and we check the result against your original system.

  • Business behavior carried across by design, not reconstructed
  • AI helps where the old code is unclear; results checked against the original
  • Output is conventional, standard code with no proprietary runtime
  • Consistent patterns across the whole application

Deliver a modern app you own

You receive a responsive, maintainable application your own team can read, run, and extend on current frameworks. Because the output is standard code with no lock-in, you are free to take it anywhere, including hosting and maintaining it entirely yourselves.

  • Responsive across web, tablet, and mobile
  • Clean code your engineers can own from day one
  • Automated test coverage built alongside the transformation
  • Portable, with no dependency on us to keep it running

Where AI fits, and where it does not.

Your new system is not written by an AI. It is model-driven, which means we first read every line of your existing code and build a model of what it does: every screen, every piece of data, every business rule. The new system is then built from that model by a fixed set of rules. Run the same code through twice and you get the same result twice. Nothing is guessed along the way, so a rule cannot quietly come out meaning something different.

The alternative, which you will hear a lot of in the next year, is to point an AI at old code and ask it what the code does. It will always give you an answer, and it sounds just as sure when it is wrong as when it is right. A rule that came across wrong does not announce itself. It shows up months later, in a report that does not balance or a customer who gets the wrong number, long after the old system has been switched off.

We do use AI where it saves real time: the custom work no automated conversion can handle, building tests, and filling gaps where the old code is incomplete or unclear. Everything it produces is checked against your existing system before it ships.

Included in the engagement

Test automation is part of the modernization.

A modernized system has to prove it behaves like the original. Share your test plans, or even outlines of them, and we build automation libraries for the tests that exist today and prepare for the ones that will exist tomorrow. AI helps us build that coverage quickly and keep it thorough.

  • Automation libraries built from your existing test plans
  • Regression coverage that verifies old and new behave the same
  • A test foundation your team keeps extending after handover
Why this approach

Built to remove the risk from modernization.

Lower risk than a rewrite

A hand rewrite re-implements years of business rules from scratch and hopes nothing is lost. Model-driven means those rules are read out of your real code and carried through automatically, so the behavior is preserved rather than rebuilt from memory.

Faster, more predictable

Automating the bulk of the conversion compresses timelines from years to a fraction of that, with far less variance, because you are not waiting on someone to hand-code every screen.

No vendor lock-in

The deliverable is standard TypeScript / React, or Vue and similar frameworks where your standards call for it. There is no Vivify runtime sitting under your application and no license you must keep paying to run your own software.

Proven at enterprise scale

This is not a lab technique. The same approach has modernized systems for major enterprises for more than 15 years. See the organizations we have worked with.

The best way to understand it is to see it on your code.

Send us a representative module from your legacy application. We will run it through the process and show you the modern, standard code you would own.