Oracle Forms Migration to Java

the fastest way to reach us:

Resources

Re_Forms21® has the best migration coverage on the market:
  • all module types (FMB, MMB, PLL, OLB, RDF*)
  • almost all Oracle Forms triggers (117 out of 120)
  • almost all UI widgets (UI beans are not supported)
  • all major built-in PL/SQL and Forms procedures and functions
  • SQL-like Java types (SqlVarchar, SqlRecord, SqlTableOf, SqlCursor, …)

Unique SQL-like Java features

assignment by value
(not by reference)

automatic variable
initialization

automatic conversion
from common Java types

IN, OUT and INOUT
parameters handling

three-valued
BOOLEAN

compatibility with Java
operators (unlike BigDecimal)

What extra beneficial do you get from Re_Forms21®?

  • Default code for triggers:
    • ON-POPULATE-DETAILS
    • ON-CLEAR-DETAILS
  • One-attribute look-ups (generated from Oracle Designer look-ups)
  • Built-in calendar
  • Customizable alerts that can be created in runtime
  • Dynamic layouts
  • ReForms21 Studio – similar to Form Builder
  • “no freeze” development (re-migration is fully automatic)

At ReForms21™, we deliver fully automated modernization
of Oracle legacy systems that guarantees 100% preservation
of business logic
and seamless continuity of operations.

Building on years of innovation, we’ve recently introduced AI and Large Language Models (LLMs) to redefine how legacy systems are transformed.

Our latest R&D has resulted
in breakthrough capabilities:

  • Automated Analytical Documentation – High-quality documentation
    and test scenarios are generated automatically using LLM model trained,
    closing a long-standing gap for most legacy owners and minimizing
    support from your technical teams.

  • Interactive Code Migration – An AI-assisted migration engine translates
    PL/SQL and Oracle Forms directly into modern Java architecture,
    ensuring clean, standard-compliant code with minimal manual
    intervention.

  • Smarter Database Migration – Leveraging LLMs, we can now complete
    missing code and streamline migration to PostgreSQL or SQL Server,
    dramatically reducing time and costs compared to traditional
    approaches.

These innovations position ReForms21™ as the AI-driven leader in Oracle Forms and Reports migration, ensuring faster, safer, and more cost-effective migrations. With us, organizations gain a future-ready technology stack—while keeping their mission-critical systems running without disruption.

Re_Forms21® vs Oracle Forms Architecture

See how the Re_Forms21 architecture streamlines and modernizes your Oracle Forms.
Compare the legacy model with a future-ready solution designed for flexibility,
scalability, and performance.

Video tutorials

From Oracle Forms to Java in practice — demos, deep dives, and before/after sessions. Learn how we keep logic intact while unlocking cloud-ready architecture.

Tutorials

4 Videos

Code - Compare before and after

PL/SQL on the left, generated Java on the right. Type-safe mappings, triggers preserved, and readable code aligned with your standards.

PL/SQL







PACKAGE EMP_PKG IS
  PROCEDURE fill_job_name;
END;


PACKAGE BODY EMP_PKG IS
  
  
  
  PROCEDURE fill_job_name IS
    CURSOR lookup_job IS
      SELECT job_title
      FROM jobs
      WHERE job_id = :EMP_BLOCK.JOB_ID;
  BEGIN
    OPEN lookup_job;
    FETCH lookup_job INTO :EMP_BLOCK.JOB_NAME;
    CLOSE lookup_job;
  END;







END;


TRIGGER "WHEN-NEW-FORM-INSTANCE" IS
BEGIN


  Execute_Query;


END "WHEN-NEW-FORM-INSTANCE";


TRIGGER "POST-QUERY" ON EMP_BLOCK IS
BEGIN
  EMP_PKG.fill_job_name;
END "POST-QUERY";




Java

@FormController("EXAMPLE1")
public class Example1Form{

  @Inject EmpPkg emp_pkg;
 

  public static abstract class EmpPkg {
    public abstract void fill_job_name();
  }
 

  @Package
  public class EmpPkgBody extends EmpPkg {
    
    
    public void fill_job_name() {
      SqlCursor <?> lookup_job = cursorFor(
        "SELECT job_title FROM jobs WHERE
        job_id = :EMP_BLOCK.JOB_ID"

      );
      try {
        open(lookup_job);
        fetchInto(lookup_job) ,
        nameIn("EMP_BLOCK.JOB_NAME"));
      } finally {
        if (lookup_job.isOpen()) {
          close(lookup_job);
        }
      }
    }
    
    
  }
  
  
  @WhenNewFormInstance
  public void form_WHEN_NEW_FORM_INSTANCE() {
    
    
    executeQuery();
    
    
  }
  
  
  @PostQuery("EMP_BLOCK")
  public void block_EMP_BLOCK_POST_QUERY() {
    emp_pkg.fill_job_name();
  }
  
  
}

Your Demo​

We modernize a representative form to web-native Java and show it live. Same logic, cleaner UI, ready for CI/CD — so you can decide with evidence, not promises

Demo Oracle Forms

username: rf21
password: rf21

CAUTION: this is a legacy technology.
Demo works only on Internet Explorer with Java

Generic Re_Forms21® Demo

username: rf21
password: rf21

Modern Re_Forms21® Demo

username: rf21
password: rf21

Re_Forms21® Demo in Vaadin​

username: rf21
password: rf21

Cloud Re_Forms21®

After migration of Oracle Forms technology to modern Java technology, the new application can run in any cloud, offering additional benefits:

no expenses related
to the purchase
of hardware
infrastructure

virtually unlimited
expansionand
scalability

cloud backup of app
and database servers

offers virtually unlimited
scalability

automatic backup
and restore in case
of failure

hybrid model option
– app in the cloud,
database on-premises

GET a QUOTE

no expenses related
to the purchase
of hardware
infrastructure

virtually unlimited
expansionand
scalability

cloud backup of app
and database servers

offers virtually unlimited
scalability

automatic backup
and restore in case
of failure
hybrid model option
– app in the cloud,
database on-premises

GET a QUOTE

Fully Automated
Migration (99%)

Oracle Forms
and Reports to Java

Preserves 100%
of Business  Logic & UI

Open Path
to any cloud

ZERO DOWNTIME
of your operations

Get your Proof of Concept.
Don’t wait!

Thank you for filling out the form!

Freely download Re_Forms21 Reports Tool to evaluate reports and estimate prices. So easy! Stop waiting!

To download your analyser, fill out the form: