Reverse-engineer Oracle Forms with AI
Extract business logic, blocks, triggers and dependencies from legacy FMB modules with an AI agent — the first step of any safe migration.
Before you migrate Oracle Forms, you must understand what each module actually does. AI makes this fast: convert the form to a readable format, then have an agent extract a structured inventory of blocks, items, LOVs, triggers and their PL/SQL.
Convert FMB to XML
Oracle Forms ships the Forms to XML conversion tool (frmf2xml.sh on Linux/Unix, frmf2xml.bat on Windows). It accepts .fmb, .mmb and .olb files and writes <name>_fmb.xml (or _mmb.xml / _olb.xml) next to the input file. In a configured Forms 12c+ domain the script is in $DOMAIN_HOME/config/fmwconfig/components/FORMS/instances/forms1/bin.
frmf2xml.sh OVERWRITE=YES ORDERS.fmb # writes ORDERS_fmb.xml # every property, including inherited ones (analysis only) frmf2xml.sh OVERWRITE=YES DUMP=ALL ORDERS.fmb
OVERWRITE=YESreplaces an existing XML file; the default (NO) stops if the file exists.- By default only overridden properties are written.
DUMP=ALLwrites every property, which gives the AI a fuller picture, but that XML cannot be converted back into a form. - Trigger and program-unit PL/SQL is stored in XML attributes (
TriggerText,ProgramUnitText) with line breaks escaped as&#10;in the raw file — tell the agent so it decodes them.
💡 "Error initialising the Forms Jdapi"
DISPLAY at an X server (for example Xvfb) and run it again.Attached PL/SQL libraries (.pll)
Libraries are not handled by frmf2xml. Convert each .pll to a .pld text file with Forms Builder (File > Convert) or the Forms Compiler in script mode:
frmcmp_batch.sh module=ORDERS_LIB.pll module_type=library logon=no script=yes output_file=ORDERS_LIB.pld
Ask the agent for a structured inventory
Feed the XML (and any .pld files) to the agent with a precise prompt so the output is a reviewable table, not prose. Large forms produce large XML files, so work one module at a time.
› Act as an Oracle Forms->APEX migration analyst. From this module XML, extract a table of blocks, items, LOVs, triggers (with their PL/SQL), program units, and the business rules they encode.
⚠ Verify every extracted rule
Check your understanding
Check your understanding
0% · 0/2What converts a binary FMB to something AI can read?
How should you treat the extracted inventory?
Need this delivered?
Request a quote