What's New in OpenEdge 12.7
- Last Updated: February 9, 2026
- 14 minute read
- OpenEdge
- Version 12.8
- Documentation
|
OpenEdge Release 12.7 delivers updates and enhancements in the following product areas: |
Object-Oriented ABL
OpenEdge enables Developers to use HashMaps to optimize current applications and new application features. The HashMap data structure provides better execution performance and resource utilization. It supports Generics and therefore is type-safe. It is also serializable and therefore can be persisted in a binary or JSON format.
This section details the Hash Map functionality added to object-oriented ABL in this release.
Support for Built-in Hash Map Collections
OpenEdge now supports built-in HashMap collections in
object-oriented ABL. A HashMap is a collection of key-value pairs
(referred to as a map) and is backed by a hash table. A map contains unique keys,
where each key is associated with a value, but the values are not required to be
unique (that is, multiple keys can be associated with the same value). The ordering
of elements in a hash map collection is not important.
The new Progress.Collections classes and
interfaces provide an efficient, built-in HashMap construct that
can be used by any ABL application. In addition, the built-in construct supports a
type-safe, generic programming model that allows Developers to restrict the types of
objects added to the collection.
HashMap collections, the following new built-in
classes and interfaces (along with their associated properties and methods) have
been added to ABL:- Progress.Collections.HashMap<K,V> class
- Progress.Collections.HashMapIterator<K,V> class
- Progress.Collections.IEqualityComparer<T> interface
- Progress.Collections.IHashable interface
- Progress.Collections.IMap<K,V> interface
- Progress.Collections.KeySet<K> class
- Progress.Collections.KeySetIterator<K> class
- Progress.Collections.KeyValuePair<K,V> class
For more information, see Hash map collections in object-oriented ABL.
New HASH-CODE Function
HASH-CODE function for use with hash map
collections. The HASH-CODE function returns a hash code for one or
more arguments, and has the following syntax:
|
For more information, see HASH-CODE function.
For more information on hash map collections, see Hash map collections in object-oriented ABL.
.NET and Java Open Client ParamArray Changes
Starting with this release, when an exception is thrown in .NET Open Client or Java Open
Client while performing a request against the application server, the parameter
configuration values stored in the ParamArray object are no longer
reset if the values remain unmodified from their original assignment before
executing the application server request.
You can return to the previous behavior by assigning the
InputErrorResetPolicy or
OutputErrorResetPolicy or both properties of the
ParamArray to RESET_ALWAYS.
For more information, see Set the input and output error reset policy for the parameter array.
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.
OpenEdge now supports OAuth2 and SAML for authentication and authorization. These industry-standard protocols ensure a secure and convenient mechanism to authenticate users without sharing sensitive information like user credentials.
This section details the Security features in this release.
Centralize OpenEdge Domain Access Using the OpenEdge Authentication Gateway with OAuth2
System Administrators can centralize OpenEdge domain access for all PAS for OpenEdge instances by configuring an OpenEdge Authentication Gateway server to authenticate users with their existing OAuth2 identity provider. The OpenEdge Authentication Gateway automatically converts validated tokens to client-principal objects.
A quick-start guide provides step-by-step instructions on centralizing OpenEdge domain access using the OpenEdge Authentication Gateway with OAuth2.
For more information, see OpenEdge Authentication Gateway OAuth2 Quick Start.
Centralize OpenEdge Domain Access Using the OpenEdge Authentication Gateway with SAML
System Administrators can centralize OpenEdge domain access for all PAS for OpenEdge instances by configuring an OpenEdge Authentication Gateway server to authenticate users with their existing SAML identity provider. The OpenEdge Authentication Gateway automatically converts validated tokens to client-principal objects.
A quick-start guide provides step-by-step instructions on centralizing OpenEdge domain access using the OpenEdge Authentication Gateway with SAML.
For more information, see OpenEdge Authentication Gateway SAML Quick Start.
Protect Compiled OpenEdge Code
OpenEdge has introduced a new type of ABL application code packaging (or library), which can
be signed and verified, to ensure that compiled OpenEdge application code (r-code)
has not been corrupted or tampered with. This new type of library is known as an
archive file and has a .apl file extension. The archive file is
based on the Java JAR standard and has a manifest file for describing the properties
of the archive. It is similar to a procedure library (.pl), but
provides better security through code signing and validation. A System Administrator
can create and sign an archive file using the new PROPACK and
PROSIGN utilities and third-party auditors can easily inspect
and verify a signed archive file to ensure applications pass security audits.
For more information, see Manage archive libraries.
To support archive files, OpenEdge has introduced the
Progress.Archive.ArchiveInfo class that provides information
from a manifest file for a given archive.
Progress.Archive.SignaturePolicyIDs and
Progress.Archive.ValidationPolicyIDs are two new enumerations
describing the signature and validation policies specified in a manifest file.
For more information, see Progress.Archive.ArchiveInfo class, Progress.Archive.SignaturePolicyIDs enumeration, and Progress.Archive.ValidationPolicyIDs enumeration.
A new log entry type, SEC.Rcode, has also been introduced to enable logging
related to the validation of signed archive files and the file entries contained in
them.
For more information, see Signed archive file logging.
Signed Archive Libraries Shipped with OpenEdge
With the introduction of new type of ABL application code packaging or library, which can be signed and verified at runtime, some of the libraries shipped with OpenEdge are now provided as signed archives (.apl) in addition to the existing procedure libraries (.pl).
The AVM automatically includes the libraries under the gui subdirectory (for the GUI client) or the tty subdirectory (for the character mode client) in the session’s PROPATH. When both the .pl and the .apl libraries are found, the AVM includes the .apl in the PROPATH, by default.
Some libraries, such as netlib/OpenEdge.Net for HTTP Client support and messaging/OpenEdge.Messaging for messaging support, such as Kafka, are not included automatically in the session’s PROPATH. To access the functionality these libraries provide, you must add them to the PROPATH explicitly. You now have the option to include the .apl version of such libraries instead, to take advantage of the additional security provided.
- Existing PAS for OpenEdge instances include netlib/OpenEdge.Net.pl in the PROPATH, in the openedge.properties file. You may update your configuration to use the signed archive file instead, for additional security.
- Existing OpenEdge Authentication Gateway instances include netlib/OpenEdge.Net.pl and seclib/OpenEdge.Security.pl in the PROPATH, in the openedge.properties file. You may update your configuration to use the signed archive files instead, for additional security.
Support for TLS 1.3
PAS for OpenEdge now uses TLSv1.2 or TLSv1.3 as default, and TLSv1.3 takes precedence over TLSv1.2 in all the communication between the OpenEdge client and OpenEdge server. TLSv1.3 offers several improvements such as a faster TLS handshake and simpler and more secure cipher suites.
During a handshake between the OpenEdge client and the OpenEdge server, if there is a mismatch in the preferred list of supported groups between the TLS vendor of the client and the TLS vendor of the server, then the handshake process involves an additional cycle of key-exchange negotiations. This release achieves a performance improvement for TLSv1.3 handshake process by eliminating the additional cycle of key-exchange negotiations between the client and the server. This performance improvement for TLSv1.3 is only supported for ABL Client Socket (ABL HTTP Client).
For more information on performance improvement for TLSv1.3 using supported groups, see Change the default protocol and ciphers for Progress OpenEdge clients, CONNECT () method (Socket object), and Configure TLS security settings.
The OpenEdge Management and OpenEdge Explorer now support the TLSv1.3 secure protocol.
- Browser support
- Configure user authentication for web server logins
- Set up a remote AdminServer
- Set up secure communication-related security for a remote AdminServer
- Change OpenEdge Management e-mail alerts settings
- Use advanced HTTP and HTTPS options with the web server
- Connection configuration properties
- HTTPS properties
Database Maintenance
OpenEdge now allows Database Administrators to perform database storage optimizations without downtime. The time required to get the database online from a stored backup is reduced, making the restore process faster even for compressed DB backups. The existing option of online reorganization of data is made much smarter and consequently much faster and resource-efficient. Faster record and key validation in index check enable you to detect and repair integrity issues more quickly.
This section details the database maintenance features in this release.
Remove Data Storage Areas While the Database is Running
The structure of a database must be managed so that it continues to operate efficiently and meet user needs. Over time, the structure may require changes to improve storage or performance. In the event of degrading storage performance, a Database Administrator can now move data to a different storage area on another device and remove the old storage area. The database can remain online while the old storage device is unmounted and removed from the machine for repairs or replacement.
The driving benefit of this feature is higher availability. The database can remain online serving data while storage areas or their extents are removed from the database. All users and processes connected to the database may remain connected while the extents are removed.
Prior to this release, a Database Administrator could only use PROSTRCT REMOVE when the database is offline, requiring a maintenance outage.
The new PROSTRCT REMOVEONLINE qualifier lets Database Administrators return space to the operating system without a production outage. For operations in the cloud, the customers benefit from reducing their space needs without waiting for a scheduled maintenance window. End users experience higher availability for large database deployments because PROSTRCT REMOVEONLINE can connect to a database running in multi-user mode.
For syntax and recommendations for running the new options, see PROSTRCT REMOVEONLINE qualifier.
Faster Restore Process
Backup and restore are key steps in a database repair scenario. Progress strongly recommends that you back up an original database before you do 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 it before putting it into production. If you use OpenEdge Replication, use a restore of the backup to make the replication target databases.
Reducing time for the restore operation helps reduce outage duration, because every minute matters when you restore to recover from a database outage. When creating a replication target database, a faster restore minimizes the potential for data loss.
This release offers new options to the PROREST utility that speed up restore operations.
For more information and recommendations for running the new options, see PROREST utility.
Optimized Large Table Reorganization
- Takes a long time.
- Generates a large amount of recovery data because it scans and reorganizes the entire table.
- May increase disk space costs.
- May make OpenEdge Replication or hot standby less efficient.
- The
restrictoption reorganizes sections of a table instead of the entire table. You can specify the starting position and possibly an ending position within the table to manage the portion to scan. To reorganize the entire table, you can omit therestrictoption. - The smarter scanning feature optimizes the TABLEREORG utility by using an index to recognize and
skip the sections of data that are already in physical sort order and do not
need reorganization. The benefit is improved scalability for very large
tables. This feature is enabled by default but can be disabled using the new
nosmartscanoption or running PROUTIL TABLEREORG with aresumeoption.
These optimizations speed up the table reorganization operation, greatly reduce disk space costs, and improve operational efficiency of the deployment for the Database Administrator.
For more information, see PROUTIL TABLEREORG qualifier.
View Database Character Set Information
When analyzing database corruption, a Database Administrator may find it useful to know the character set, word rule, CRC value, and code pages used in each database. The Data Dictionary provides character set information but in this release, you can easily locate and display it using the following database tools:
- Information messages 20665 through 20668, logged by the broker to the database log file (
.lg) - The Database status VST fields
_DbStatus-Codepage,_DbStatus-Collation,_DbStatus-Wordrule-Number, and_DbStatus-Wordrule-CRC - Collation and Character Set Information in output from the
PROUTIL -C DESCRIBEutility
To view current collation and code page settings, see OpenEdge database log file, Database status (_DbStatus) and PROUTIL DESCRIBE qualifier.
Run Multi-threaded Index Checks
Database Administrators can now run index checks using multiple threads to validate the record for each key and the key order. Using threads enables serial operations to run in parallel, improving performance.
Currently, threading is only supported for online Index Check options 3 and 4 but both options
use multiple threads automatically if your system supports it. Index Check option 4,
Validate key order, is selected by default when you run PROUTIL
IDXCHECK. It is a best practice to also choose Index Check option 3,
Validate record for each key, whenever you run PROUTIL
IDXCHECK.
For a better user experience, the interval between index check messages is now increased from every 10,000 keys to every 500,000 keys. Note that like other threaded utilities, threaded index checks do not support word indexes.
For more information, see PROUTIL IDXCHECK qualifier.
Deprecated Support for OpenEdge RDBMS 1024 and 2048 Block Sizes
Support for the smaller database block sizes, 1024 and 2048 bytes, is deprecated in this release. This deprecation applies to the creation of new database and starting up existing databases.
To determine if this deprecation affects you, identify your database block size using PROUTIL DESCRIBE and locate the Block Size in the output. The larger sizes, 4096 and 8192, were introduced in Progress V8.2. The default size was changed to 4096 for Windows and Linux, early in OpenEdge 10.x.
To change the database block size, you must perform a dump of the data and load it into a database with a new structure. The dump and load can be done with PROUTIL DUMP and PROUTIL LOAD in your current version of OpenEdge.
When existing databases with the smaller block sizes are recreated with a larger block size they experience less system paging. They can also take advantage of features available only with the larger block sizes, such as large index key entries.
Enable AI Archiver Online
After-imaging (AI) files capture transaction information useful for roll-forward recovery. AI files allow you to restore a database without losing transactions completed after the last backup. The AI Archiver automates AI file management, but prior to this release, you needed to perform a backup to run AI Archiver online.
In this release, Database Administrators can turn on the AI Archiver while the database is online, without the overhead of an unnecessary online backup, improving the ease of use for customers with databases larger than 2TB.
For more information, see RFUTIL AIARCHIVER ENABLE qualifier.
Support for .NET 6 on Windows in OpenEdge
.NET 6 support is crucial for customers who developed their OpenEdge applications using .NET Framework. With this release of OpenEdge, customers can now migrate their existing Windows .NET applications to .NET 6, making the OpenEdge applications current in terms of support, security, look and feel, and long-term sustainability. By supporting .NET 6, OpenEdge provides a clear path for customers looking to maintain and modernize their .NET application without disruptive architectural redesign.
Now that .NET 6 is supported, Developers and software architects can take advantage of newer .NET libraries and platform features, such as user interface improvements for .NET-based controls. .NET 6 also provides a significant performance improvement over .NET Framework, for many types of .NET programs.
To enable this feature, use the .NET Common Language Runtime (-clrnetcore) startup parameter. If this parameter is not specified, then the AVM uses .NET Framework 4.8. For more information, see Support for .NET in OpenEdge on Windows.
Developer Productivity
In this release, the enhancements to Progress Developer Studio for OpenEdge empower Developers to increase productivity and efficiency when developing ABL applications.
This section details the Developer productivity features in this release.
ABL Type Hierarchy View in Progress Developer Studio for OpenEdge
The ABL Type Hierarchy view shows the parent-child relationship between ABL classes and interfaces to help an ABL Developer view the hierarchy and inheritance structure of a class.
- View the following details of an element:
- SuperTypes—Parents and ancestors that are higher in the hierarchy.
- SubTypes—Parent-child relationships that are lower in the hierarchy.
- Navigate to any class or interface listed in the ABL Type Hierarchy view.
For more information, download "OpenEdge 12.7 Documentation" from OpenEdge Documentation Archive and see "Use ABL type hierarchy view" in Progress Developer Studio for OpenEdge Online Help.
Optimize the Initialize OpenEdge Tooling Process
A project PROPATH specifies the paths for all the dependencies used by an ABL project to
build, validate, compile, and run the project. As part of creating the
Initialize OpenEdge Tooling model for a project, the Developer
Studio analyses all the source files, procedure libraries (.pl),
and binary files in all the file paths that are specified in the PROPATH.
Prior to this release, any change to the PROPATH caused by an addition, deletion, or
modification of a PROPATH entry, after completion of the Initialize OpenEdge
Tooling process, led to the re-building of the OpenEdge tooling model,
from scratch.
In this release, the Developer Studio optimizes the process of re-building the OpenEdge tooling model by updating the existing OpenEdge tooling model based on the PROPATH changes and then appending it to the existing OpenEdge tooling model. This optimization avoids the time consuming process of re-building the OpenEdge tooling model from scratch.
For more information, download "OpenEdge 12.7 Documentation" from OpenEdge Documentation Archive and see "Exclude PROPATH entry from initialize OpenEdge Tooling" in Progress Developer Studio for OpenEdge Online Help.
Enhanced Error Messages for Better User Experience
In this release, the OpenEdge installer error messages are improved. They are self-explanatory, making it easier for users to troubleshoot and resolve installation issues quickly, thus enhancing the user experience.
Continuous Operations
With a strong focus on supporting modern applications for the cloud and hybrid world, this release of OpenEdge delivers even more capabilities that address the demand for continuous operations.
This section details the continuous operation features in this release.
Improved Agent Session Life-Cycle Management in PAS for OpenEdge
Prior to this release, a PAS for OpenEdge System Administrator had to configure a multi-session PAS for OpenEdge agent to automatically scale up and add more sessions to handle more concurrent requests. However, there was no provision to automatically scale down or trim the excess ABL sessions when they were no longer necessary or had reached an age limit or memory limit. System Administrators sometimes addressed this issue by creating a monitoring process to identify and trim the ABL sessions when they were no longer required.
In this release, OpenEdge adds new properties to the openedge.properties
file, which allow the System Administrator to configure a PAS for OpenEdge instance
to scale down the excess ABL sessions by trimming them when they are no longer
necessary or have reached an age limit or memory limit.
For more information, refer to
ablSessionActiveMemoryLimitFinish,
ablSessionActiveMemoryLimitStop,
ablSessionMemoryLimit, ablSessionMemoryDump,
ablSessionFailureLimit, and
ablSessionRequestLimit properties in Configure OpenEdge properties.
Third-Party Support
The following updates were made to the supported third-party products.
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 22.2.20222.27.
Installer Upgrade to Support InstallShield 2021 R2
In this release, the OpenEdge installer is upgraded to support InstallShield 2021 R2. This upgrade improves supportability for customers, enables support for the latest Windows operating systems, and enhances the capabilities to support MSI installers.