Generic Light Blue Hero Background
Video

AI-Driven Modernization: Transforming Character Screens into REST APIs with the OpenEdge AI Assistant

Jun 26, 2026

See how the Progress OpenEdge AI Assistant and advanced LLM agents can help modernize legacy character UI applications by extracting embedded business logic and transforming it into a REST API—without writing a single line of code.

In this demo, you’ll learn how to use custom skills files to guide AI-generated code, separate UI logic from business logic, create a reusable OpenEdge ABL program, document code for developer understanding, and generate a customer web handler that returns data in JSON format through a REST endpoint.

Topics covered include OpenEdge AI Assistant, ABL code modernization, character UI modernization, REST API creation, PAS for OpenEdge, web handlers, JSON responses, skills files, and AI-assisted development.

Learn how AI can accelerate OpenEdge application modernization and help developers move from traditional character screens to API-ready services faster.

Transcript:
Today, we’ll demonstrate how to use OpenEdge AI Assistant and AI LLMs to migrate a character UI screen with embedded business logic into an API that can be called from any REST endpoint. And all of this without writing a single line of code.

First, you need to be connected to OpenEdge AI Assistant. For information on how to connect, please review the link provided below. As you can see, we are connected to our OpenEdge AI Assistant.

In addition, we are using what is called “Skills” in the AI world. These are standardized markdown files that provide AI agents with specialized knowledge by giving instructions in plain English. Here is a quick view of our skills file. This custom file helps us create configurations that are specific to our codebase and aligned with our coding standards. This is how we explain our code structure and patterns to the agent—guiding it on what to do so it can generate new code that aligns with our specific standards.

Now, let’s take a look at our character UI program. Those familiar with these types of programs will recognize elements like browser and frame definitions, along with widgets tied to the frame—such as display elements and input fields used to locate the customer number as we walk through the screen in action. It takes me directly to that customer.

Now let’s use LLMs to extract the business logic embedded in this UI into a separate program that has no user interaction. I’ve also instructed the LLM to use OpenEdge AI Assistant coding standards so it applies correct ABL syntax in all generated code. My prompt reads: “Analyze this program and extract the business logic into a separate program.” It identifies the UI-only logic, the business logic, and the variables that can be shared, and understands how to separate them.

Next, we prompt it to extract the business logic into a separate program, name it getcustomer.p, save it in the same folder, and compile it. You can see the new program includes a temp-table and a dataset, accepts an input parameter, retrieves the customer record, and returns it in the temp-table.

However, there is no documentation or commentary. So, can we ask the agent to add that? Yes we can. My instruction is: “Please document this so a new ABL developer can understand every line.” Now the program includes a clear purpose, calling pattern, and result context, along with detailed explanations that make it easy for a new developer to understand. In practice, you may not document everything this thoroughly, but this capability can help developers quickly understand what a program does and why.

Next, we move to creating a web handler that exposes this as an API. For this, I use the prompt: “Create a web handler, customerwebhandler.cls, that uses this program to retrieve a customer record.” The web handler will accept a customer parameter in the URL for a GET request, return the record in JSON format, and compile it.

Now we have a customer web handler. It includes a HandleGet method that retrieves the parameter from the URL, validates it, converts it to a CustNum, calls getCustomer, and returns the result. Now that we have everything in place, let’s test it.

I’ve already created a web handler definition in our PAS instance for customerwebhandler. With everything configured, I simply copy these programs into the PROPATH of the PAS for OpenEdge instance. As you can see, when I pass a customer number, the web handler successfully returns the customer record.

Using OpenEdge AI Assistant and our custom skills file, we can train an LLM agent to analyze and process Progress source code, separate business logic, and create an API—all without writing a single line of code. That’s the power of OpenEdge AI Assistant and today’s advanced LLM agents.

 

Explore Latest Updates from OpenEdge

Discover Why OpenEdge

Enterprises across the globe are running business-critical applications built on Progress OpenEdge. Its reliability, cost-effectiveness and focus on addressing evolving demands, continues to make Progress OpenEdge a wise investment.

Get in touch