{"slug": "oracle-designer-lost-support-in-2013-my-ai-agent-develops-in-it-anyway", "title": "Oracle Designer Lost Support in 2013. My AI Agent Develops in It Anyway.", "summary": "An engineer at an insurance company demonstrated that an AI agent with SQL and database access can develop in Oracle Designer 10g, a CASE tool whose support ended in 2013. The agent designed entities, tables, triggers, and forms, and debugged generation errors, all without opening the GUI. The engineer found that the repository's API is self-documenting via all_source, enabling the agent to work through sqlplus.", "body_md": "Oracle Designer 10g is a CASE tool from the early 2000s. Support ended in 2013. At my job it is still the center of development: the repository holds the entire design of a large insurance system (2,741 entities, 3,277 table definitions, 12,841 PL/SQL modules, 5,624 forms), and about 10 developers work in it daily. Everyone, me included, assumed you work with Designer through its GUI. Clicking, dragging, repeating.\n\nThe question I wanted to answer: can an AI agent that knows SQL and has database access do that work instead?\n\nTwo days later the agent had designed an entity, a table, a sequence, two triggers, and a complete form definition, moved a table between applications, and debugged the generated form to a working runtime. It opened the Designer GUI exactly zero times. Everything I personally did in a GUI fits in two buttons: Generate, and starting the form.\n\nDesigner stores everything in an Oracle schema, and next to the data it ships three layers that are all reachable from a plain SQL session:\n\n`ins/upd/del/sel`\n\nand a typed record.`open_activity`\n\n, then your changes, then `validate_activity`\n\n(Designer's own validation rules), then `close_activity`\n\n. On failure, `abort_activity`\n\nrolls the repository back.The basic write pattern looks like this:\n\n```\ndeclare\n   ent cioentity.data;\n   st  varchar2(10);\n   wa  varchar2(2000);\nbegin\n   jr_context.set_workarea('GLOBAL SHARED WORKAREA');  -- skip this: CDR-00100\n   cdapi.initialize('MYAPP');\n   cdapi.open_activity;\n\n   ent.v.name       := 'MY ENTITY';  ent.i.name       := true;\n   ent.v.short_name := 'MYE';        ent.i.short_name := true;\n   cioentity.ins(null, ent);\n\n   cdapi.validate_activity(st, wa);\n   if st = 'Y' then\n      cdapi.close_activity(st);\n      if st = 'Y' then commit; else cdapi.abort_activity; end if;\n   else\n      while cdapi.stacksize > 0 loop\n         dbms_output.put_line('VIOLATION: ' || cdapi.pop_instantiated_message);\n      end loop;\n      cdapi.abort_activity;\n   end if;\nend;\n/\n```\n\nThere is no documentation for any of this anymore. It does not matter, because the API is self-documenting: the package specs are readable from `all_source`\n\n, so the agent's first move for every element type was one query away:\n\n```\nselect text from all_source\nwhere owner = :repo_owner and name = 'CIOENTITY'\nand type = 'PACKAGE' order by line;\n```\n\nAn AI agent does not need the GUI. It needs sqlplus.\n\nThe same four steps repeated for every element type:\n\nWith that loop the agent built the full chain: entity with attributes, table with columns on the house domains plus a primary key, the table-to-entity mapping (normally the job of a Designer wizard called the Database Design Transformer), a sequence with the ID trigger, audit columns with their trigger (PL/SQL bodies written through the `RMOTEXT`\n\nAPI), table ownership moved to another application with a shortcut left in the original, and the complete form definition: module, window, component, table usage, items, preference sets.\n\nThen came the one part SQL cannot do. Generating the actual Forms binary requires a client-side tool, so I pressed Generate in Designer. The generator failed. The agent read the generator output and the `.err`\n\nlog file from disk, diagnosed each failure, fixed them through the API, and I pressed the button again. That cycle repeated until the form ran.\n\nOne fix deserves a mention. The form compiled and started, but the layout was broken: all fields stacked on top of each other. I gave the agent a screenshot of the running form. It recognized the pattern, found the cause (items without `display_width`\n\nfall back to the column's width, and the layout collapses into a stack) and set the widths on all items through the API. The next generation ran clean.\n\nAround 20 distinct errors came up across the two days. Every one was diagnosable from the message plus the state of the database. A sample:\n\n| Error | Cause |\n|---|---|\n`CDR-00100: Workarea context has not been set` |\nmissing `jr_context.set_workarea` before anything else |\n`ORA-00001` on an internal unique key |\nreusing a CIO record between `ins` calls: it keeps the previous element's IDs, so reset the record to an empty one |\n`PLS-00302: component 'INS' must be declared` |\nsome packages are abstract; write through the specific subtype package |\n`CDG-01199: no queryable item` at generation |\nitems were created without `select_flag = 'Y'`\n|\n`identifier must be declared` in the `.err` file |\nthe physical table did not exist yet on the target dev database |\n\nNone of these are in any manual. All of them are now in ours, because the collected errors turned out to be the most valuable output of the whole exercise. They went into two places: a handbook for humans, and a [Claude Code skill](https://github.com/nuncij/oracle-designer-cdapi-skill) for future AI sessions. The next session does not rediscover CDAPI, it starts from a working recipe.\n\nThe skill is open source (MIT), with the transaction templates, the per-element procedures, and the full error table:\n\nOracle Designer (6i/9i/10g) is a CASE tool from the early 2000s, out of support since 2013, yet still the center of development in many legacy Oracle shops. The common assumption is that you can only work with it through its GUI (Repository Object Navigator, Design Editor). That assumption is wrong.\n\nDesigner stores everything in an Oracle schema and ships a complete PL/SQL API next to it. That means an AI coding agent (Claude Code, or any tool that can run sqlplus) can read and write the repository directly: create entities, tables, columns, keys, sequences, triggers, and complete form module definitions — validated by Designer's own engine, without a single click in the GUI. The only steps left for a human are pressing Generate (Forms/DDL generators are client-side) and drawing diagrams.\n\nThis repository packages that capability as an…\n\nThe same access that lets an agent create a table lets it silently damage a colleague's form with one mistyped ID. Before letting it loose we layered defenses: scripts look up elements strictly by name and verify parentage before touching anything, a control report runs after every session and lists everything that user changed that day across 17 element types, and a log table with a nightly job keeps permanent change history, because Designer itself only stores the last change. The nightly database backup stays as the final net. All of it is running, not planned.\n\nThe limits we actually hit: drawing ER diagrams (the layouts are binary blobs) and pressing the two client-side generator buttons. Everything else that \"requires the GUI\" turned out not to.\n\nThe key insight: a legacy tool with no SDK, no docs, and no support is not necessarily closed to AI agents. If it stores its world in a database, it may be the most open tool you have. The dictionary replaces the SDK, existing data replaces the standards document, and error messages replace support. Designer waited 20 years for a user that reads package specs for fun.", "url": "https://wpnews.pro/news/oracle-designer-lost-support-in-2013-my-ai-agent-develops-in-it-anyway", "canonical_source": "https://dev.to/nunc/oracle-designer-lost-support-in-2013-my-ai-agent-develops-in-it-anyway-2c2k", "published_at": "2026-08-21 11:51:51+00:00", "updated_at": "2026-08-21 12:15:39.349144+00:00", "lang": "en", "topics": ["artificial-intelligence", "ai-agents", "developer-tools"], "entities": ["Oracle Designer", "Oracle"], "alternates": {"html": "https://wpnews.pro/news/oracle-designer-lost-support-in-2013-my-ai-agent-develops-in-it-anyway", "markdown": "https://wpnews.pro/news/oracle-designer-lost-support-in-2013-my-ai-agent-develops-in-it-anyway.md", "text": "https://wpnews.pro/news/oracle-designer-lost-support-in-2013-my-ai-agent-develops-in-it-anyway.txt", "jsonld": "https://wpnews.pro/news/oracle-designer-lost-support-in-2013-my-ai-agent-develops-in-it-anyway.jsonld"}}