Developer Productivity

The enhancements to ABL, Progress Developer Studio for OpenEdge and other development tools, and OpenEdge installer empower Developers to boost productivity and efficiency.

This section details the Developer productivity features in this release.

Dynamic Export and Import of Data

Today, many ABL applications leverage dynamic programming to dynamically fetch records using methods of the Buffer object handle. Earlier, ABL Developers had to implement complex techniques to export and import data in a flexible and standard format.

In this release, four methods are introduced to support the export and import of data. The primary benefit of these methods over the existing IMPORT and EXPORT statements is that you do not need to know the table names ahead of time. The BUFFER-EXPORT() and BUFFER-IMPORT() methods export and import all the fields in a table, respectively, unless you specify a parameter with a list of fields to exclude. The BUFFER-EXPORT-FIELDS() and BUFFER-IMPORT-FIELDS() methods are similar but require that you supply a list of fields to include. With these four methods, the ABL Developer has full control over exporting and importing fields in a table. Using these built-in methods can save development time, simplify code, and potentially improve an application’s performance.

Support for Empty String Values as NULL in OpenEdge Oracle DataServer

The Oracle database considers both zero-length (empty) strings and NULL values to be identical. However, the OpenEdge Oracle DataServer inserts a zero-length string as a single-space character when migrating data from an OpenEdge database to an Oracle database. Therefore, the Oracle database stores zero-length string values ("") as single-space characters (" ") and unknown values (?) as NULL. This default behavior of the DataServer causes issues when data is migrated from an OpenEdge database to an Oracle database—the Oracle database-accessing applications are required to regard zero-length string and NULL identically.

With this new feature, you can utilize the PRGRS_MAP_EMPTY_NULL option of the DataServer (-Dsrv) startup parameter to instruct the DataServer to map a zero-length character string in an OpenEdge database to a NULL value in an Oracle database.
Note: To preserve backward compatibility, the default configuration does not include the PRGRS_MAP_EMPTY_NULL option because it may cause problems with the existing Oracle DataServer applications. To utilize this functionality, you do not need to recompile your applications with OpenEdge release 12.8 or later ABL virtual machine (AVM). You only need to provide the PRGRS_MAP_EMPTY_NULL option. The absence of this option activates the default behavior.

For more information about using the PRGRS_MAP_EMPTY_NULL option of the DataServer, see Unknown Value and Zero-length character strings.

Improve Performance by Concatenating Strings at Compile Time

In this release, you can mark all " "Character-string literals in your code as untranslatable, using the DEFAULT-UNTRANSLATABLE compiler option in ABL or the -defuntrans startup parameter. This feature can benefit single-language applications, allowing the compiler to concatenate untranslatable literal character strings with no-string attributes at compile time instead of at runtime, slightly improving the performance. Using the DEFAULT-UNTRANSLATABLE option on the COMPILE statement or the -defuntrans startup parameter for the session is equivalent to using the :U syntax on all literal character strings (if no other attributes are specified). Not having to specify the :U syntax makes your code less verbose.

For more information, see the DEFAULT-UNTRANSLATABLE option description of the COMPILE statement and Default Untranslatable (-defuntrans).

Restore OpenEdge Studio Tools

Since OpenEdge release 12.0, Progress stopped shipping the 32-bit OpenEdge Studio, which included the Data Dictionary, Data Administration, Results, and Audit Policy Maintenance tools. In this release, the Data Dictionary, Data Administration, and Audit Policy Maintenance tools have been added to the 32-bit 4GL Development System (these tools are already present in the 64-bit 4GL Development System). Additionally, the Results toolhas been added to both, the 32-bit and 64-bit 4GL Development System.

.NET Development Tools in Developer Studio

To effectively develop an OpenEdge application that uses .NET, application developers expect development tools integrated into their Integrated Development Environment (IDE). In this release, Progress Developer Studio for OpenEdge introduced a .NET project type with the following tools to assist .NET development:
  • Class Browser to view the contents of .NET libraries
  • Content Assist to suggest the relevant members of .NET classes, such as methods and properties, when writing code
  • Outline View to list the members of the .NET classes when inheriting or implementing them in any class or interface
Without these tools, developers must consult external API documentation to identify the correct APIs to use in their code, which increases development time.

For more information, see .NET project type, Create a .NET project, and Migrate a .NET Framework project to .NET project.

Microsoft Windows Installer for OpenEdge WebClient

Prior to this release, the OpenEdge WebClient was delivered as a .exe package. Now, it is delivered as a lightweight .msi package with a reduced footprint and excludes any unnecessary files. The Microsoft Windows Installer (MSI) package for OpenEdge WebClient is available in 32-bit and 64-bit versions in the Progress Software Download Center.

You can install the MSI package for OpenEdge WebClient in interactive or silent mode, to easily:
  • Install the WebClient on a system within the network.
  • Upgrade or uninstall the WebClient, resulting in reduced maintenance efforts.
System Administrators can install the MSI package for OpenEdge WebClient to install the WebClient on multiple systems within a network.

For more information, see Run the Microsoft Windows Installer for OpenEdge WebClient.

Changes in ABLUnit

The ABLUnit framework previously used the -debugAlert startup parameter as a debugging option to keep generated XREF files on the file system, allowing a developer to examine the files if necessary. As of 12.8.2, the ABLUnit framework no longer depends on that startup parameter to signal the use of debugging actions, and instead makes use of a new debug option when supplying a JSON configuration file. For more information, see Run test cases from the command prompt in Progress Developer Studio for OpenEdge Online Help.

AI Coding Assistant plugin with Developer Studio

Generative AI has become popular and evolved with the availability of various versions of language-specific Large Language Models (LLM). Based on machine learning, the generative AI creates code, text, and images. Most IDEs have integrated an AI coding assistant designed to help the developer write, review, debug, and optimize their code.

The AI Coding Assistant plugin with Developer Studio is available as a downloadable plugin. You can download the AssistAI-ChatGPT-PDSOE-Plugin-<oe-version>.zip file from the Progress Electronic Software Download (ESD) center and install it in the Developer Studio to assist ABL developers generate ABL code snippets. This integration eliminates the need for the ABL developer to switch context between their browser and IDE, and significantly improves the productivity of the ABL developer with their coding activity.

For more information, see Use AI Coding Assistant with Developer Studio, Install AI Coding Assistant with Developer Studio, Enable AI Coding Assistant with Developer Studio, Use ChatGPT view, Discuss code using AI Coding Assistant with Developer Studio, and Uninstall AI Coding Assistant with Developer Studio.

Memory Profiling

In this release, OpenEdge introduces the ability to identify and diagnose memory consumption issues in your ABL code using memory profiling. When memory profiling is enabled, the AVM generates recordings (.oemp report files) to help you analyze the captured memory usage data. Recording snapshots can be generated automatically at a certain cadence or programmatically in your code.

To enable memory profiling, use the Profile Memory (-profileMemory) startup parameter. This parameter takes a configuration file as input.

The configuration file contains properties which you can use to customize memory profiling: cadence, Description, report-dir, and SnapshotEndOfRequest.
Note: Description and SnapshotEndOfRequest are only available in OpenEdge 12.8.7 and later releases. In earlier 12.8.x releases, the properties are ignored.
Note: In OpenEdge 12.8.7 and later releases, the default cadence is 10 seconds. In earlier 12.8.x releases, the default cadence is 2 seconds.

To support memory profiling, ABL introduces a new class, property, and methods:

Note: The GetOutputFileName() method is only available in OpenEdge 12.8.7 and later releases. This method raises an error condition if r-code that references it is executed in earlier 12.8.x releases.

For more information on memory profiling, see Profile memory in Troubleshoot ABL Applications.

The OpenEdge Memory Profiler Visualization Tool

The OpenEdge Memory Profiler is a powerful, standalone memory analysis tool designed to help ABL developers proactively analyze memory usage and optimize application performance. Delivered as a self-contained PAS for OpenEdge instance beginning with OpenEdge Release 12.8.9, the tool simplifies installation through a script-based setup and provides a browser-based dashboard for visualizing memory trends, analyzing object-level memory consumption, and identifying excessive memory usage.

This tool addresses a long-standing challenge faced by ABL developers, which is diagnosing and resolving memory-related issues such as excessive consumption, which often lead to degraded performance, system instability, and prolonged debugging cycles. By offering a user-friendly interface, the profiler empowers developers to self-diagnose problems, reducing reliance on technical support and significantly lowering the mean time to resolution (MTTR).

Some of the key features of the OpenEdge Memory Profiler tool include:
  • Browser-based user interface (UI) with visual insights—A modern, intuitive UI enables you to visualize memory usage trends, drill into object-level statistics, and navigate through recordings, snapshots, and tags with ease. Within a snapshot you can analyze a wide range of ABL object types including OOABL classes, procedures, temp-tables, and widget pools, giving you insight into how your application consumes memory over time.
  • Snapshot comparison for memory analysis—Compare memory snapshots captured at different points in time to:
    • Pinpoint inefficiencies in object lifecycle management and memory allocation patterns
    • Track memory growth
    • Validate cleanup operations
  • Self-contained Progress Application Server (PAS) for OpenEdge deployment—The OpenEdge Memory Profiler is packaged as a standalone PAS for OpenEdge instance, bundling its own embedded database and runtime components. This simplifies installation and ensures consistent behavior across environments.
  • Customize auto-import from multiple watched directories—Generated .oemp files for an ABL Session must be placed in a watched directory. You can specify multiple local folders for importing newly generated memory profiling recordings. You can enable or disable auto-import using flexible configuration options, allowing you to tailor the import process to suit your workflows and infrastructure.

For more information, see Use the OpenEdge Memory Profiler Tool.

Performance and Scalability

This release of OpenEdge provides performance-tracing support for OpenEdge applications in OpenTelemetry (OTel) standard. Now, developers can choose their Application Performance Monitoring (APM) tools such as Dynatrace, Instana, Elastic, NewRelic, and so on that support OTel standards. They can effectively monitor and tune the performance of their business applications and avoid outages, without making any changes to the ABL code.

This section details the performance and scalability features in this release.

Monitor ABL Client Using OTel

System Administrators need to monitor the ABL applications to check if they are functioning as expected. This feature provides the ability to:
  • Monitor the ABL Clients (such as ABL Client, ABL Socket Client, and ABL HTTP Client) and the Java Clients using OTel tracing.
  • Analyze their performance using the APM tool of choice that support OTel standards.

To monitor the ABL client, the System Administrators must enable OTel tracing within the ABL client and also configure the OTel Collector and the chosen APM tool. After OTel tracing is enabled, the ABL client sends trace data to the OTel Collector, which subsequently sends trace data to the APM tool for analysis. Traces can help identify problems, including performance degradation, and analysis of traces can help resolve these problems.

For more information, see Monitor ABL applications using OpenTelemetry.

Monitor PAS for OpenEdge Agent Using OTel

In an environment where the ABL applications interact with other applications, System Administrators seek insights into the performance of the ABL applications to avoid any outages and performance bottlenecks in their applications. They can now monitor the PAS for OpenEdge agents using OTel tracing and analyze their performance using an APM tool of choice. Based on this analysis, they can gain insights into potential issues within their applications.

To monitor the PAS for OpenEdge agent, the System Administrators must enable OTel tracing within the PAS for OpenEdge agent and also configure the OTel Collector and an APM tool. When OTel tracing is enabled, the PAS for OpenEdge agent sends trace data to the OTel Collector, which subsequently sends trace data to the APM tool for analysis. Traces can help identify problems, including performance degradation and analysis of traces can help resolve these problems.

For more information, see Monitor ABL applications using OpenTelemetry.

Monitor ABL Client and PAS for OpenEdge Agent Simultaneously Using OTel

With this feature, System Administrators can monitor ABL clients and PAS for OpenEdge agents simultaneously, using OTel tracing. They can view trace data that the ABL clients and the PAS for OpenEdge agents generate using any OTel-compliant APM tool and gain insights into potential issues within their applications.

To monitor the ABL client and the PAS for OpenEdge agent, System Administrators must enable OTel tracing within them both and also configure the OTel Collector and the APM tool. When OTel tracing is enabled in both, the following actions are performed by:
  1. The ABL client:
    1. Generates trace data and sends it to the OTel Collector.
    2. Shares trace context with the PAS for OpenEdge agent.
  2. The PAS for OpenEdge agent:
    1. Uses the shared trace context to link its own generated trace data with that of the ABL client.
    2. Sends trace data to the OTel Collector using the OTLP protocol.
  3. The OTel Collector forwards trace data to the APM tool for analysis. This analysis provides insights into the potential issues within the application and can help to optimize its performance.

For more information, see Monitor ABL applications using OpenTelemetry.

New OEMANAGER Utility for PAS for OpenEdge Instances

This release introduces the new OEMANAGER utility that allows System Administrators to obtain metrics about their PAS for OpenEdge instance via the operating system command line in one simple call. The output of this utility is:
  • An easy-to-read textual representation of the metrics.
  • Similar to the ASBMAN and WTBMAN utilities that were previously available within the Classic AppServer product.
In addition, System Administrators can use the OEMANAGER utility to manage runtime behavior.

For more information, see OEMANAGER utility.

List Agents with Session Metrics Using OpenEdge Manager and OpenEdge JMX

In this release, System Administrators can now get combined metrics for all Progress Application Server (PAS) agents and their sessions in one call for an ABL application. The metrics are available through OpenEdge JMX (OEJMX) and the OpenEdge Manager web application (oemanager.war). Previously, you had to issue multiple requests to the server to get the breadth of information needed on agents and their sessions. With this feature, you get more information with fewer requests to the PAS instance, and processing time on the client side is reduced.

For more information, see:

Database Operations

In this release, OpenEdge elevates database management by providing more capabilities to Database Administrators such as, helping in monitoring and improving supportability.

This section details the database operations or availability features in this release.

Validate Record Keys with Faster Index Check

Database Administrators can now run index checks using multiple threads to validate keys for each record in a Type II table, provided that the database is running. Using threads enables serial operations to run in parallel, improving performance.

When you run PROUTIL IDXCHECK, the index check option 2, Validate keys for each record, is selected by default. All threaded index check options use multiple threads automatically if your system supports it. The frequency of status messages has been reduced for threaded index check. Note that like other threaded utilities, threaded index checks do not support word indexes.

For more information, see PROUTIL IDXCHECK qualifier.

Probe the Database Online State

Database Administrators can use the PROUTIL PROBE qualifier to check the current operational state of the database and determine its availability if any issue prevents its startup. The utility reports on three states:
  • Startup—Has the database finished startup?
  • Liveness—Is the broker of the database alive and responsive?
  • Readiness—Can the database accept and perform activity?
The probe returns either a response code that indicates success or error codes indicating certain failures. An optional verbose argument returns messages about failures.

For more information, see PROUTIL PROBE qualifier.

Monitor the Status of After-Image Management Daemon

You can now programmatically monitor the status of After-Image Management Daemon (AIMD) by using the following new Virtual System Tables (VST) fields that have been added in this release:
  • The new _Logging-AISwitchSchedule field in the _Logging VST tracks the timestamp of the next scheduled AI file switch in datetime-tz format.
  • The new _Logging-AIArchDir field in the _Logging VST tracks the currently-set AI archive directory from the list of AI archive directories specified at startup.

    For more information, see Logging (_Logging).

Additionally, the following fields of the _UserStatus VST have been modified to store information related to the status of AIMD:
  • The _UserStatus-Counter field reports the error return code when AIMD encounters an error.
  • The _UserStatus-ObjectType field returns the value 9 to indicate the object type as an area.
  • The _UserStatus-Operation field reports the status of the AIMD startup, archiving, switching, emptying, and waiting utility operations.
  • The _UserStatus-State field reports the following states of AIMD:
    _UserStatus-State value Utility Description
    207 PROSHUT AIMGT AIMD has run successfully.
    208 PROSHUT AIMGT AIMD encountered an error.

    For more information, see User status (_UserStatus).

Configure Databases Persistently

To configure a database, Database Administrators can now generate a parameter file (.pf) at runtime. They can use this file directly, without additional editing, to restart the database with the same configuration settings as the previously-running system. For example, a Database Administrator regularly uses a .pf file with the -B parameter set to value 100 and later, while the database is running, they use the INCREASETO command to set -B to 1000. If they restart the database, which uses the same .pf file, the -B value is again 100.

The benefit of this feature is that Database Administrators do not have to record or remember the changes made to the database configuration. As newer OpenEdge releases allow Database Administrators to do more operations without stopping the database, preserving configuration changes becomes increasingly important.

For more information, see Generate parameter files.

Reorganize Table Using Sorting by Non-unique Indexes

The PROUTIL TABLEREORG qualifier lets you reorganize fragmented or scattered record data while the associated table remains accessible to Online Transaction Processing (OLTP) operations. TABLEREORG reorganizes the table according to the sort order of the index. Therefore Progress recommends that you use an index frequently used by the application so that the logical scatter is reduced when the application requests data from the database.

Prior to this release, this utility required that you specify an active unique index. However, for the best performance, it is preferable to reorganize by the most-used index, which may not be unique. As of this release, non-unique indexes are allowed for the USEINDEX parameter.

For more information, see PROUTIL TABLEREORG qualifier.

Obtain OS Read Counts at User Level

Before this release, the Database Administrator had no way to determine which user was responsible for the spike in the O/S reads. The following new OSRead fields let a Database Administrator determine if a specific user is causing many O/S reads:
  • The new _UserIndexStat-OSRead field in the _UserIndexStat VST tracks the number of index reads from disk that each user performs since database startup.
  • The new _UserLobStat-OSRead field in the _UserLobStat VST tracks the number of large object reads from disk that each user performs since database startup.
  • The new _UserTableStat-OSRead field in the _UserTableStat VST tracks the number of table reads from disk that each user performs since database startup.

For more information, see User index activity (_UserIndexStat), User LOB activity (_UserLOBStat), and User table activity (_UserTableStat).

The PROMON menu options display the following information on the PROMON Database status page:
  • The O/S Reads by User by Table field displays the reads from disk by user per table. To access this field, select R&D > 3 (Other Displays) > 5 (I/O Operations by User by Table).

    For more information, see I/O Operations by User by Table.

  • The O/S Reads by User by Index field displays the reads from disk by user per index. To access this field, select R&D > 3 (Other Displays) > 6 (I/O Operations by User by Index).

    For more information, see I/O Operations by User by Index.

  • The O/S Reads by User by Lob field displays the reads from disk by user per LOB. To access this page, select R&D > 3 (Other Displays) > 8 (I/O Operations by User by LOB).

    For more information, see LOB I/O operations in PROMON.

Provide Private Buffer VST Information

Database Administrators frequently monitor database buffer reads and if the buffer hit ratio is low, they may increase the size of the buffer pool (-B). They may also designate a private buffer pool (-Bp) for a time-consuming job, such as populating a data warehouse or executing a slow-performing request. When using private buffers, the Virtual System Tables (VST) for buffer impacts does not differentiate between -Bp and -B OS-reads. In this scenario, a Database Administrator who observes a low buffer hit rate can continue to increase -B without seeing any improvement.

This new feature adds -Bp fields to the new Private Buffer Activity VST called _ActPrivBuffer. This VST separates logical and OS-reads generated from a private buffer pool from those generated when reading from the primary or alternate buffer pools. The updated PROMON Buffer Cache Activity display now tracks the logical and OS-reads generated from a private buffer pool in separate counters and shows them with the private buffer pool hit ratio percentage. Database Administrators can now have a better understanding of the buffer hit rate and avoid making unproductive adjustments.

New VST Fields for OpenEdge Version and RDBMS Edition

VSTs are a subset of the metaschema that enable Database Administrators to track the database and user activities. VSTs are runtime mechanisms and their data is not stored in a database. In this release, the following new VST fields have been added:
  • The new _DbStatus-OEVersion field in the _DbStatus VST contains the OpenEdge version string in the same format as Proversion(1). For example, consider 12.8.0.0.1013, where 12.8 is the release number, 0 is the update number, 0 is a constant value that is no longer used in the current release model, and 1013 is the build number.

    For more information, see Database status (_DbStatus).

    The OpenEdge version name field displays the OpenEdge version string on the R&D > 1 (Status Displays) > 1 (Database) > PROMON Database status page also.

    For more information, see PROMON Database status display.

  • The new _Lic-Edition field in the _License VST tracks the license edition information of the database.

    For more information, see License management (_License).

    The License Edition field displays the license edition information of the database on the 7 (Database Status) > PROMON Database Status option page also.

    For more information, see PROMON Database Status option.

Back up the Running Databases Faster

Reducing the time needed for the backup operation helps shorten outages. This release offers new options for the PROBKUP utility that speed up backup operations while the database is running.

Progress strongly recommends that you back up an original database before performing any repair work on it, to have a fallback if the repair renders the database unusable. When the database is repaired and deemed viable, you should back up that version of the database before putting it into production.

For more information and recommendations for running the new options, see PROBKUP utility and Run a multi-threaded backup.

Resolve the Record Lock Conflicts Faster

If a record lock conflict occurs during table reorganization processing, the lock wait timeout -lkwtmo startup parameter is applied. For PROUTIL TABLEREORG, the default value of-lkwtmo has been reduced from 30 minutes to 10 seconds.

For more information, see PROUTIL TABLEREORG qualifier.

Application Security

OpenEdge continually monitors for potential security vulnerabilities. The effort to scan, identify, assess, and mitigate potential security threats is ongoing. Information on how Progress manages reporting, management, discussion, and disclosure of vulnerabilities discovered in OpenEdge can be found in Progress OpenEdge Security Guidelines.

In this release, to safeguard applications:
  • Dynamic Data Masking (DDM) masks sensitive data when displayed at run time. Administrators can comply with data regulations and mask sensitive data in the fields from unauthorized users.
  • Built-in security protects the OpenEdge platform executables and ease of configuration.

This section details the Application Security features in this release.

Database to Support DDM

Customers are often required to meet government regulations regarding data security and permissions. Currently, the challenge with meeting these regulations is not being able to place controls on who can access or view the sensitive information. DDM in OpenEdge database provides database utilities to:
  • Enable or disable DDM online and offline.
  • Activate DDM on a database and put DDM policies into effect.
  • Deactivate DDM on a database where DDM policies are ignored.
  • Support a multi-site replication deployment.
DDM in OpenEdge database also prevents the OpenEdge databases from releases earlier than OpenEdge 12.8 from accessing the DDM-enabled databases, and refuses connections to remote clients that employ earlier network protocols.

ABL API to Support DDM

DDM enables administrators to control which application end users can view sensitive data and masks the data for unauthorized users. Database Administrators, DDM administrators, and security administrators can now utilize the IDataAdminService interface methods to perform DDM-related CRUD operations for the following tasks:
  • Create, update, or delete the DDM-configured user-defined roles, users, role grants (user-to-role mapping), and authorization tags.
  • Map authorization tags to DDM-configured user-defined roles and further map these user-defined roles to database users.
  • Set or unset masks and authorization tags for any field of a table.

For more information about the IDataAdminService interface methods and examples, see IDataAdminService interface.

SQL to Support DDM

With DDM, only authorized users can view sensitive information while it is masked for others. DDM configuration uses Role-Based Access Control (RBAC) to control the privileges granted to users for data unmasking. This technique facilitates the creation of new database roles and their assignment to database users, known as user-to-role mapping. This mapping allows determination of user credentials for accessing certain resources.

A DDM administrator can:
  • Configure a mask for the fields of a table that hides the sensitive data in the result set of a query.
  • Control the access privileges of users to view the unmasked values of specific fields.
  • Create mask configurations and authorization tags using the methods available through the IDataAdminService interface.
The OpenEdge SQL engine consumes these mask configurations and applies it over the field to be masked, when exporting field data to an external application. Note that the field data is masked only when it is sent outside of the SQL engine, otherwise the unmasked data is used for internal processing. Therefore, DDM impacts the behavior of various SQL commands, clauses, and other database objects such as triggers, user-defined functions, stored procedures, and so on.

For more information, see Dynamic data masking in OpenEdge SQL server and Impact of Dynamic Data Masking on SQL constructs.

Dump and Load DDM Schema Definition

DDM enables security and DDM administrators to control which end users view sensitive information and mask it when viewed by unauthorized users. A mask is a format string representation that is setup against table fields to control how data is shown to an unauthorized user. Authentication tags help decide whether the user has unmasking privileges for a particular field.

This new feature allows the DDM administrators to run batch scripts to dump and load the DDM schema definitions from the command-line utility. Note that you can dump and load DDM schema definitions only if you are both, a DDM administrator and a security administrator. However, if the DDM and security administrators are separate individuals, only the DDM administrator can dump and load DDM schema definitions. ABL API is also made available to support this functionality.

For more information, see Batch dump ABL data definitions and Batch Load updated ABL data definitions.

Changes in OESECTOOL

OESECTOOL simulates a subset of OAuth2 and SAML services required for testing security configurations of PAS for OpenEdge and OpenEdge Authentication Gateway. This release includes the following changes in behavior of OESECTOOL:
  • It requires a manual install.
  • It performs a run-time license check to ensure that its use is limited to development licenses.
  • It contains simplified startup commands.
  • It creates keystore.p12 and sslkeystore.p12 upon initial startup.
  • It can import and export certificates.

For more information, see OESECTOOL and Install OESECTOOL.

Support for OpenSSL 3.1

OpenEdge uses the OpenSSL library for cryptographic services and SSL/TLS communication for various OpenEdge clients and OpenEdge servers.

In this release, the OpenSSL support has been upgraded from version 1.1.1 to a major version 3.1.1. As a result, OpenEdge now supports only TLSv1.3 and TLSv1.2 for all client-server communication and transport layer security implementations. The older versions of SSL/TLS (SSL v3.0, TLSv1.0, TLSv1.1) are no longer supported and are deprecated since the OpenSSL 3.x release.

For more information, see Supported protocols, ciphers, and certificates for OpenEdge clients and servers.

OpenSSL 3.1.1 uses the concept of providers and supports various providers. OpenEdge currently uses only the default and legacy providers. The legacy provider contains legacy algorithms, which will be deprecated in the future OpenSSL releases. Threfore, Progress discourages you to use these legacy algorithms.

For more information, see Changes with OpenSSL 3.1.x in OpenEdge.

Catch TLS Errors

In this release, you can use ABL structured error handling to catch an error that occcurs during communication between an ABL client and a remote server using HTTPS due to a failure at the TLS layer (SSL). To resolve this, the newly introduced error class TlsClientAuthenticationError isolates and translates common internal errors thrown by the TLS layer (SSL) failure.

As of 12.8.4, the following modifications were adopted by the introduction of the TlsClientAuthenticationError object:
  1. The format of the fourth error message will now always be a translated condition related to the inner error number from the SSL failure. In case the inner error cannot be mapped to a safe and known message, the generic Unknown TLS Error will be supplied as the message.
  2. New instance properties have been added to the object class to provide direct access to the internal values parsed and normally returned using the following message statements:
    1. Host—The hostname of the destination URI.
    2. Port—The port number of the destination URI.
    3. TlsErrorNum—The inner error number extracted from the SSL failure (9318) error.
    4. TlsError—The original SSL failure (9318) message with the full inner error number or message.
  3. A static property ReturnOriginalMessages has been added, which forces the TlsClientAuthenticationError class to always return the original SysError messages, in order and exactly as formatted from the original error object.
    • To enable this behavior, set the static property TlsClientAuthenticationError:ReturnOriginalMessages to true.
    • To return to the new message statement behavior, return the property to its default of false.
    • The property may be changed before and then after HttpClient request to force specific behavior for only that request, or set to true once at the start of an AVM session, such as by use of a sessionStartupProc in PAS for OpenEdge, to globally enforce the behavior for an application.

For more information, see Catch TLS errors.

Changes to the ENCRYPT-AUDIT-MAC-KEY() Method

Starting with OpenEdge Release 12.8.10, the ENCRYPT-AUDIT-MAC-KEY() method has been enhanced to accept an Encoding prefix as its second parameter.

ENCRYPT-AUDIT-MAC-KEY ( key, prefix )

If the prefix is omitted, invalid, or unsupported, the AVM raises a runtime error.

For more information, see ENCRYPT-AUDIT-MAC-KEY( ) method in the ABL Reference.

Integration and Interoperability

By supporting .NET on Linux, OpenEdge provides a clear path for customers, who developed their OpenEdge applications using .NET Framework, as they can maintain and modernize their .NET application without disruptive architectural redesign. In this release, OpenEdge also provides updates to the default PROMSGS languages.

This section details the features that help in application integration use cases and improved interoperability in this release.

.NET 8 Certification on Windows

.NET 8 is now certified to work with OpenEdge 12.8 on Windows for both ABL applications and .NET Open Client applications. .NET 8 is a long-term support release with end of support in November 2026. This certification ensures that ABL and .NET Open Client applications that upgrade to .NET 8 can take advantage of .NET 8 features and remain on a supported version of .NET.

For information on how to upgrade an ABL application to a different .NET version, see Adjust the OpenEdge installation to use a different .NET version.

For installation and configuration information for .NET Open Clients, see the .NET Open Client Support FAQ.

.NET support on Linux

OpenEdge 12.8 introduced the ability to access .NET classes from ABL on Linux, allowing the same OpenEdge application to run on both Windows and Linux. Customers with cloud-hosted OpenEdge .NET applications can migrate to Linux, where hosting costs are typically lower.

On Linux, OpenEdge supports access to .NET classes from the character client, the ABL batch client, and the PAS for OpenEdge agent. GUI functionality such as WinForms is not supported on Linux. OpenEdge .NET applications without GUI functionality generally work on both platforms with little or no modification. To enable this feature, install .NET and use the .NET Common Language Runtime (-clrnetcore) startup parameter when running your application.

Note: .NET 6, the initial version supported on Linux in OpenEdge 12.8, reached end of support in November 2024. Progress recommends using a currently supported, certified .NET version.

For more information, see Support for .NET in OpenEdge on Linux.

Language Updates to PROMSGS Files

In this release, the PROMSGS files have been updated for 13 supported languages: Chinese (Simplified), Czech, Dutch, English (International), French, German, Italian, Polish, Portuguese (Europe), Portuguese (Brazil), Spanish (Europe), Spanish (Latin America) and Swedish.

The PROMSGS files allow OpenEdge error and informational messages to be presented in languages other than English (US). Since the last translation of the messages in OpenEdge release 12.0, over 1000 new error and information messages have been added in English only. For international applications, the translated messages will improve the user experience, enabling end users to understand what action they need to take.

For more information on PROMSGS, see OpenEdge messages and The PROMSGS file.

OpenAPI Documentation for REST-Based Services that Use the REST Transport

In this release, OpenEdge provides an automated and industry-standard way to document REST APIs that use the REST transport. The documentation that is produced is in JSON format and follows the OpenAPI Specification. This format allows anyone to understand the details of how to call the services. Prior to this, the only option was to view the documentation using an OpenEdge-specific JSON format. The OpenAPI JSON can be used by tools (such as Swagger UI) to view and interact with the services graphically. For more information, see Deploy REST services and OpenAPI documentation for REST-based services in Manage Progress Application Server (PAS) for OpenEdge.

AI Enablement

As AI‑driven automation becomes integral to enterprise architectures, OpenEdge 12.8 introduces new capabilities that enable secure, standards‑based interoperability between OpenEdge services and LLM‑powered systems.

Enable AI-driven workflows with the OpenEdge MCP Server

The Progress® OpenEdge® MCP Server is a production-grade implementation of the Model Context Protocol (MCP) open standard, enabling OpenEdge business logic and data to participate securely and predictably in AI driven workflows. By automatically transforming OpenAPI specifications and optional prompt assets into AI accessible tools at startup, the OpenEdge MCP Server removes manual integration overhead for developers and provides a turnkey foundation for LLM-powered solutions.

As organizations increasingly adopt AI assistants and agents to automate business processes, the need for secure and reliable connections to existing enterprise applications becomes essential. The OpenEdge MCP Server fulfills this requirement through a controlled, standards‑based integration layer that gives developers a predictable interface for AI integration, while enforcing administrative controls required for secure operations in enterprise environments.

For complete conceptual guidance, setup instructions, and advanced configuration details, see Use the OpenEdge MCP Server.

Third-Party Support

The following updates were made to the supported third-party products, and the operating system and other platform certifications.

Version Updates for Tomcat and Spring

In this release, PAS for OpenEdge updates to Apache Tomcat 10.1.15. The Spring updates include Spring Framework 6.0.14 and Spring Security 6.1.4. These updates include new features, support for the latest specifications, and long-term support. These updates apply to the OpenEdge Authentication Gateway. For any service pack updates, see OpenEdge® 12 Platform Compatibility Guide.

For more information, see Tomcat, Spring Framework, and Spring Security FAQ.

Version Update for Infragistics Controls

In this release, the version of the OpenEdge Ultra Controls .NET license, which installs Infragistics Ultimate UI for Windows Forms, is updated to 23.1.20231.6.