Beneath every long-lived Oracle Forms application is something more valuable than the application itself: the business logic encoded in the database over decades. The rules, the calculations, the validations, the workflows — written in PL/SQL and refined through years of real use — are not merely code. They are how the organisation actually operates, including the edge cases and exceptions that no specification ever fully captured. In many cases this logic is irreplaceable and exists nowhere else, neither in documentation nor in anyone’s head in complete form. It is, quietly, one of the organisation’s real assets.
It helps to picture what that logic actually is. It is the pricing rule with seven exceptions that took three years of disputes to get right. It is the validation that quietly stops an order from being booked in a way that would breach a regulation. It is the calculation every downstream report assumes is correct. None of these are glamorous, and most are invisible until they are missing — which is exactly why losing them in a careless rewrite is so damaging and so hard to detect until something goes wrong in production.
That value is also the source of a particular fear: that modernising the system means rewriting all of it. Rewriting decades of rules invites errors, risks losing the edge cases that matter most, and threatens to become a multi-year reimplementation with no guarantee the new version behaves like the old. Faced with that prospect, organisations often make one of two poor choices — they do nothing, and let the risk compound, or they attempt a full rewrite and discover mid-project how much undocumented logic they are trying to reproduce. Both are reactions to the same misconception.
The misconception is that the logic and the interface are inseparable. In Forms they feel fused, because you experience the rules through the screens. Architecturally, though, the PL/SQL logic in the database is independent of the Forms user interface. The interface calls the logic; it does not contain it. That separation is the whole opportunity: you can replace the front end — the part shaped by the technology of the 1990s — without touching the business rules underneath. Modernising what users see does not require rewriting what the system knows.
Two of the three migration paths are built around exactly this separation. The first, moving to APEX, keeps the logic in place by design: APEX and Forms share the PL/SQL foundation, so the rules move across natively rather than being reimplemented. The database stays, the procedures stay, and the modernisation happens in the layer the user interacts with. For an Oracle-centric organisation, this is the most direct way to keep the asset while shedding the old interface.
The second path keeps the logic just as firmly while giving more freedom over the front end. Here you rebuild the user interface in a modern framework — Java, React or whatever fits your estate — and leave the Oracle database, its stored procedures and its rules entirely untouched. The new front end calls the existing logic rather than replacing it. This suits organisations that want a modern or mobile interface, or a specific technology stack, without taking on the risk and cost of migrating the logic at all.
There is one path where the logic genuinely has to move: a full exit from Oracle to PostgreSQL, which means migrating the database and the logic with it. This is the case that most justifies the original fear — and the case where being deliberate matters most. It is done in a controlled, semi-automated way rather than by hand, but it depends entirely on knowing precisely what logic exists before any of it is moved. Even here, the rule holds: understand what you have first, so that nothing valuable is lost and nothing dead is carried across.
It is worth being clear that even this path is not a from-scratch reimplementation. The logic is translated and migrated with substantial automation, then validated against the behaviour the analysis recorded, rather than rewritten by hand from a specification. The work is real, and PostgreSQL has its own ways of doing things that the migration must respect, but the goal throughout is to carry the proven rules across faithfully — not to reinvent them and hope the new version matches. Knowing precisely what exists is what makes that fidelity possible.
Across all three paths, preserving your logic depends on one thing: being able to see it. You can only protect the rules you have identified, and in a legacy Forms estate a meaningful share of those rules are undocumented, buried in procedures no one has opened in years. An evidence-based analysis — built from the database schema, the source files and the live system — surfaces where the logic lives, including the parts memory has lost, and maps the dependencies between them. That inventory is what guarantees the valuable logic is kept and the dead logic is left behind, whichever path you take.
This is also the answer to the fear that started the discussion. The risk of a rewrite is not that logic exists; it is that logic exists and no one knows it does. Once the analysis has surfaced the rules, the obvious ones and the buried ones alike, the conversation shifts from anxiety to choice: keep this, retire that, move the rest with care. The asset is only at risk while it is invisible. Make it visible, and preserving it becomes a matter of method rather than luck.
Next step. An analysis inventories the rules encoded in your database — the documented and the forgotten — so you can modernise the interface with confidence that nothing essential is left behind.