Release Notes 2023-10-09

Version Information

OpenEdge Release

Version Information

11.7.9, 11.7.10, 11.7.11, 11.7.12, 12.2, 12.6, 12.7 CQC

Release 11.7 #77703@2023-10-09

Security Bulletin - log4j CVE-2021-44228

Further details: log4j CVE-2021-44228

OpenEdge 12.7 support!

We are pleased to announce that we are not aware of any issues using the SmartComponent Library on OpenEdge 12.7. We hereby declare OpenEdge 12.7 fully supported for the SmartComponent Library as of the release of  May 10th 2023.

OpenEdge 12.6 support!

We are pleased to announce that we are not aware of any issues using the SmartComponent Library on OpenEdge 12.6. We hereby declare OpenEdge 12.6 fully supported for the SmartComponent Library as of the release of  October 4th 2022.

OpenEdge 12.2 support!

We are pleased to announce that we are not aware of any issues using the SmartComponent Library on OpenEdge 12.2. We hereby declare OpenEdge 12.2 fully supported for the SmartComponent Library as of the release of April 09th 2020.

.NET Framework Version 4.7

.NET 4.7 is not supported with OpenEdge 11.x, see: Is .NET 4.7 certified and supported for OpenEdge? 

Progress has reported severy issues with OpenEdge GUI for .NET and .NET 4.7: GUI .Net Application crashes after .Net upgrade to 4.7

When using the .NET Framework 4.7, please make sure, you upgrade to OpenEdge 11.6.4 or OpenEdge 11.7.2 or later. Also, it may be required to recompile the application on a PC running .NET Framework 4.7 when applications are also executed on a PC with .NET Framework 4.7.

Introducing the SmartComponent Library developer forum

Got questions about using the SmartComponent Library? Wish to discuss feature requests with other users of the SmartComponent Library? To facilitate networking in the growing number of SmartComponent Library users and developers, we've added a developer forum on our new home-page. The developer forum can be found at: 

A login is required to participate in the forum. Don't be shy - create your account today!

Release Notes

Following the release of the OpenEdge 11.7 Release we have completed our testing of the SmartComponent Library on this release of Progress and are proud to announce formal support for the SmartComponent Library on OpenEdge 11.7 with the 2017-04-24 release of the SmartComponent Library. Generally we recommend customers on OpenEdge 11 to upgrade to OpenEdge 11.7 quickly. Starting the 2017-07-14 release we are supporting OpenEdge 11.7 Service Pack 1 (11.7.1).

Starting the 2015-10-09 release the Business Entity Designer will feature a start page with links to most recent release note articles on this site.

With SCL-751 we have adopted native Enums for OpenEdge 11.6. To activate this feature customers must add a definition to products.i. SCL-751 provides details for this.

With SCL-1113 we have modified the templates for SmartWindowForms and SmartTabFolderPages generated from the Business Entity Designer. We have removed the initialization of the viewer controls SmartTableIOState property (value was set to "NoDataSource" within the InitializeComponent method). Customers using their own set of templates should adopt the same fix to their templates.

OpenEdge 11.7.3 compatibility

During our tests on OpenEdge 11.7.3 we have experienced the following issues: 

  • [SCL-2216] - 11.7.3 Visual Designer disabling properties of ABL user controls

The issue has been resolved by Progress Software with hotfix 007 for OpenEdge 11.7.3.

OpenEdge 11.7.2 compatibility

During our tests on OpenEdge 11.7.2 we have experienced two issues: 

  • [SCL-2007] - Correct support for WebHandler in CcsServiceManager
  • [SCL-2008] - Closing SmartWindowForm causes crash on OpenEdge 11.7.2

We consider it mandatory for customers using OpenEdge 11.7.2 to use at least the release #44166@2017-11-27 of the SmartComponent Library. 

Due to an fix for

  • [SCL-1924] - SmartViewerControl: copy mechanism cannot cope with clob datatype

from Progress Software for in OpenEdge we further recommend all customers to apply this hotfix as well. 

New Versions of Proparse .NET Assemblies (30 December 2018)

We have updated proparse with further enhancements in this release (see Please download the .NET Assemblies ZIP file from our ESD and replace the in your environment with the latest one. The new assembly reference is:

<assembly name=", Version=, Culture=neutral, PublicKeyToken=cda1b098b1034b24"/>

As proparse is used by our Business Entity Generator, this new version of the Assembly is also relevant for customers not doing GUI for .NET development and require support for parsing new ABL language constructs.

This version of proparse provides additional debug information when errors are thrown from

New Version of the Consultingwerk.SmartComponents Assemly (09 January 2019)

To support the new SmartFilterControl and the "Filter" link between the SmartFilterControl/SmartDynamciFilterControl and a SmartBusinessEntityAdapter or SmartDatasetChildAdapter we have updated the Consultingwerk.SmartComponents.dll. The new Assembly reference is:

<assembly name="Consultingwerk.SmartComponents, Version=, Culture=neutral, PublicKeyToken=10603cb31df311b3"/>

Customers need to update this Assembly in order to compile the latest releases of the SmartComponent Library.

Hybrid Realm now using IAuthenticationService

We've updated the SmartHybridRealm class used for http authentication to leverage the IAuthenticationService. It is therefor required that for AppServers requiring http Authentication (e.g. REST or Web) the correct IAuthenticationService implementation is registered (using service.xml files).

Customers relying on the previous behavior should ensure that the Consultingwerk.SmartFramework.Authentication.AuthenticationService is regsitered as the IAuthenticationService. This implementation will auhtenticate users against the password stored in the SmartUser database table. 

When users with no Login Company set should be able to login using the SmartHybridRealm, it's required to set the Login Company Tennant Domain (similar to the field in the Login Company Maintenance) in the .restapplicationsettings / .applicationsettings, e.g.:

 "DefaultAuthenticationDomain": "consultingwerk" 

This is required as the Hydrid Realm Interface from Progress does not provide the domain name to the authentication method. 

Web Handler overview

This is an overview of the web handlers supported by this release

handler1=Consultingwerk.OERA.JsdoGenericService.WebHandler.CatalogWebHandler: /Catalog/{EntityName}
handler2=Consultingwerk.OERA.JsdoGenericService.WebHandler.CatalogsWebHandler: /Catalogs/{PackageName}
handler3=Consultingwerk.OERA.JsdoGenericService.WebHandler.CountWebHandler: /Resource/{EntityName}/count
handler4=Consultingwerk.OERA.JsdoGenericService.WebHandler.ResourceSubmitWebHandler: /Resource/{EntityName}/SubmitData
handler5=Consultingwerk.OERA.JsdoGenericService.WebHandler.InvokeMethodWebHandler: /Resource/{EntityName}/{MethodName}
handler6=Consultingwerk.OERA.JsdoGenericService.WebHandler.ResourceWebHandler: /Resource/{EntityName}
handler7=Consultingwerk.OERA.JsdoGenericService.WebHandler.BusinessServicesWebHandler: /BusinessServices/{OutputFormat}/{PackageName}
handler8=Consultingwerk.Web2.WebHandler.SmartMenuWebHandler: /SmartMenu/{MenuStructureId}
handler9=Consultingwerk.Web2.WebHandler.SmartMenuStructureWebHandler: /SmartMenuStructure
handler10=Consultingwerk.Web2.WebHandler.SmartRoutesWebHandler: /SmartRoutes
handler11=Consultingwerk.Web2.Services.SmartViewsHandler.SmartGridWebHandler: /SmartViews/Grid/{EntityName}/{ViewName}/{DetailTemplate}
handler12=Consultingwerk.Web2.Services.SmartViewsHandler.SmartGridWebHandler: /SmartViews/Grid/{EntityName}/{ViewName}
handler13=Consultingwerk.Web2.Services.SmartViewsHandler.SmartGridWebHandler: /SmartViews/Grid/{CustomViewName}
handler14=Consultingwerk.Web2.Services.SmartViewsHandler.SmartViewerWebHandler: /SmartViewer/Viewer/{EntityName}/{ViewName}
handler15=Consultingwerk.Web2.Services.SmartViewsHandler.SmartViewerWebHandler: /SmartViewer/Viewer/{ObjectName}
handler16=Consultingwerk.Web2.Services.SmartViewsHandler.SmartFormWebHandler: /SmartForm/{FormTemplate}/{EntityName}/{ViewName}
handler17=Consultingwerk.Web2.Services.SmartViewsHandler.SmartFormWebHandler: /SmartForm/{FormTemplate}/{ObjectName}
handler18=Consultingwerk.Web2.WebHandler.SmartMessageWebHandler: /SmartMessage/{MessageGroup}/{MessageNumber}
handler19=Consultingwerk.Web2.WebHandler.GetImageWebHandler: /Image/{FileName}
handler20=Consultingwerk.Web2.WebHandler.SmartValueListWebHandler: /ValueList/{ValueList}
handler21=Consultingwerk.Web2.WebHandler.SmartAttachmentsWebHandler: /Attachments/{Table}/{KeyValues}
handler22=Consultingwerk.Web2.WebHandler.SmartAttachmentWebHandler: /Attachment/{Guid}
handler23=Consultingwerk.Web2.WebHandler.SessionContextWebHandler: /SessionContext
handler24=Consultingwerk.Web2.WebHandler.ContextPropertiesWebHandler: /ContextProperties/{PropertyName}
handler25=Consultingwerk.Web2.WebHandler.ContextPropertiesWebHandler: /ContextProperties
handler26=Consultingwerk.Web2.WebHandler.SessionInfoWebHandler: /SessionInfo
handler27=Consultingwerk.Web2.WebHandler.FileSearchWebHandler: /FileSearch/{FileName}
handler28=Consultingwerk.Web2.WebHandler.ExecuteAblWebHandler: /ExecuteAbl
handler29=Consultingwerk.Web2.WebHandler.SmartLanguagesWebHandler: /Languages
handler30=Consultingwerk.OERA.RestResource.RestEntitiesWebHandler: /Entities
handler31=Consultingwerk.OERA.Swagger.SwaggerWebHandler: /Swagger/{EntityName}
handler32=Consultingwerk.OERA.Swagger.SwaggerRestEntitiesWebHandler: /SwaggerEntities/{OutputType}
handler33=Consultingwerk.Web2.WebHandler.SmartTokenSecurityCheckWebHandler: /TokenSecurityCheck/{ObjectName}
handler34=Consultingwerk.Web2.WebHandler.SmartTokenSecurityCheckWebHandler: /TokenSecurityCheck
handler35=Consultingwerk.Web2.WebHandler.SmartEntityTableMappingHandler: /EntityTableMapping/{EntityName}/{TableName}/{UiTypeCodes}
handler36=Consultingwerk.Web2.WebHandler.SmartTreeRootNodeWebHandler: /SmartViews/TreeRootNode/{rootnodeid}
handler37=Consultingwerk.Web2.WebHandler.SmartTreeChildNodesWebHandler: /SmartViews/TreeChildNodes/{parentnodeid}
handler38=Consultingwerk.Web2.WebHandler.SmartSecurityCheckWebHandler: /IsRestricted/{SecurityRealmCode}/{SecurityItemGuid}
handler39=Consultingwerk.Web2.WebHandler.SmartFieldSecurityCheckWebHandler: /RestrictedFields/{TableName}
handler40=Consultingwerk.Web2.WebHandler.GetImageNamesHandler: /ImageNames
handler41=Consultingwerk.Web2.WebHandler.ExecuteQueryWebHandler: /ExecuteQuery
handler42=Consultingwerk.Web2.WebHandler.TranslationProviderWebHandler: /GetTranslation

UTF-8 based deployments available

Starting August 14th 2016 we ship our source code also as UTF-8 encoded. The ZIP files ending with contain the source code encoded with that code page. The source code in the remaining archives is still encoded in ISO8859-1. Also on Github there is a new branch containing the OpenEdge 11 based source code in UTF-8.

Related article (Progress K-Base): How to get Progress Developer Studio to save in UTF-8 encoding

New Feature Documentation

Download Link

Overview of included tickets


SCL-4222 Fixed Lookup Query Sort in security assignment verification form


The security assignment verification form was using an invalid lookup query sort phrase breaking the ability to select users or groups in the lookups.

SCL-4223 Fixed issue with clearing value in user or group lookup in security assignment


We have resolved an issue that was breaking the ability to clear the user or group lookup’s in the security assignment forms.

SCL-4224 Deep menu structure was causing issue in menu security maintenance


The menu structure security maintenance form was having issues with loading menu structures that have been deeper than 9 levels. We have extended number of supports menu levels to 20 and ensured that the user will not be seeing a runtime error message in case of deeper menu structures..


SCL-4201 Validation Properties now sync selection combo-box to current validation type in Business Entity Designer


Previously the combo-box with the validation type in the Field Properties view of the Business Entity Designer did not reflect the type of the validation of the current field - which was confusing. Now, when selecting a field with validation properties, the combo-box shows the type of the validation of the selected field.

SCL-4206 Added navigable option to Angular GridLayout rendering


The “navigable” attribute of the Angular Grid component can now be set and rendered from grids in the repository.

SCL-4207 Exposing primaryDataSource in JSON Layout


We are now exposing the primaryDataSource reference (name) in the Angular JSON layout of a Form. The primaryDataSource is the first data source in a form that does not have a data-source.

SCL-4208 Implemented supportings Interface for UltraToolbarToolbar customization during rendering


The repository rendering now supportes the

Consultingwerk.Windows.Framework.Repository.Rendering.IRenderedToolbarCustomizer interface

which allows the customization of rendered toolbars/ribbons in a similar way as the

* Consultingwerk.Windows.Framework.Repository.Rendering.IRenderedViewerCustomizer
* Consultingwerk.Windows.Framework.Repository.Rendering.IRenderedGridCustomizer

services support.

SCL-4212 Remembering ObjectMaster Filter in Instance viewer of the Object Master Maintenance


The Object Master lookup of the instance viewer in the Object Master Maintenance now uses the specialized Open Object Master dialog - instead of the generic lookup dialog. In addition the filter values are remembered and restored between opening the dialog multiple times.

SCL-4213 Moved SDO ImporterPlugin method into new SourceCodeHelper class


We have moved methods of the SDO Importer Plugin of the Business Entity Designer out of the plugin and into a new helper class Consulitngwerk.Util.SourceCodeHelper. The methods support searching for preprocessor values in an AppBuilder style program and my be useful for custom source code migration routines as well.

SCL-4214 Implemented IRenderedControlGroupCustomizer service


We have implemented a service interface Consultingwerk.Windows.Framework.Repository.Rendering.IRenderedControlGroupCustomizer. Similar to the customizer services for Forms, Viewer and Grids this service type allows to modify the properties of a renfered DynamicControlGroup at runtime.

SCL-4215 Repository and Generic Data import/export routines now adjust path arguments to target OS


Based on new API’s in the Consultingwerk.Util.FileHelper the Repository Object Exporter/Importer and the Generic Data Exporter/Importer now sanitize path references (e.g. of the product module definition) to the target operating system - using slash in Unix/Linux and the backslash on Windows.

SCL-4216 Simplified usage of CustomContext with DatasetModel objects


We simplify the usage of the customer context and custom parameter with DatasetModel requests. The DatasetModel and TableModelFilter classes now provide two fluent style methods to set set CustomContext and the CustomParameter. In addition there are now additional variants of the Run() method of the TableModelFilter that allow setting the custom context when executing a query through a DatasetModel.

SCL-4217 Implemented support for rendering hidden controls on Lazy Loaded Viewers


Lazy Loading MetaViewer instances in GUI for .NET rendering now support hidden controls.

SCL-4218 Introduced scaling factor for grid column rendering in GUI for .NET


We have now implemented a new scaling factor in the Consultingwerk.SmartFramework.Repository.WindowsRenderingScalingFactors class. This static property allows to scale up the column with in rendered grids.

SCL-4219 Simplified Validate/ValidationHelper CanFind() usage with primary unique key


We have introduced new methods in the Validate/ValidationHelper methods to simplify CanFind() style validation with primary unique key values:

ValidationHelper:CanFindByPrimaryKey(BUFFER eArtikelpackungEinkaufspreis:HANDLE,
                                     "AP-ID nicht bekannt!":U).

or for single table business entities

ValidationHelper:CanFindByPrimaryKey(BUFFER eArtikelpackungEinkaufspreis:HANDLE,
                                     "AP-ID nicht bekannt!":U).

These methods determine the query string in the target table based on the primary-unique key fields of that table. So developers no longer need to provide a query string matching the primary unique key fields.

SCL-4225 SmartFieldAuthorizationProvider now checks first for exact match in fieldname and then for *.<fieldname>


The SmartFieldAuthorizationProvider now checks first for exact match by then fieldname and then for a match using the wildcard *.<fieldname>.

SCL-4231 Implemented base classes for http 400 and 500 errors


We have implemented two new base classes Consultingwerk.Framework. Http .[ Http ClientException| Http ClientException] and Consultingwerk.Framework. Http .[ Http ServerException| Http ServerException] that exception types in the Consultingwerk.Framework. Http package inherit from. This allows code using the OpenEdge Http client with the Smart Http Client decorator to catch any client or server (400 or 500) caused error.

SCL-4235 JSON layout of Angular forms now includes width and height


The JSON layout of Angular forms now includes the width and height setting.

SCL-4236 Added buttons to repository object master designer to copy instance and master name to clipboard


We have added buttons to the Object Master and Object Instance viewers of the repository object master maintenance that allow to copy the object master or instance name to the windows clipboard. The buttons are also enabled when the viewer is not in update mode.

SCL-4237 RestServerSessionActivator now supports setting the client-principal in the authenticationDb


The RestServerSessionActivator can now be configured to set the CLIENT-PRINCIPAL on the authenticationDb (setting in .restapplicationsettings). The new functionality can now be enabeld by setting the LOGICAL STATIC property


to TRUE.

SCL-4238 Legacy GUI frame migration now supports mix of left-, right- and colon-aligned fields


When migrating FRAME’s into the repository, we now honor the -aligned attributes of the original FRAME widgets and support converting even frames with a mix of left-aligned, colon-aligned and right-aligned widgets.

SCL-4239 Providing height and width properties for the detailForm


When rendering Angular Layouts with grids and detail forms, we are now providing the height and width of the detail form with the parent form.

SCL-4243 Open Object master dialog now allows selection by design time data-source


The Open Object Master Dialog now allows filtering object masters to be opened by the design time data-source. This simplifies locating viewers and grids or multiple variants of those build against the same data-source definition.

SCL-4245 Resolved Attribute GUID conflict with Build.One attributes in latest release


We have resolved a conflict with Build.One in the GUID of a SmartAttribute record. The conflict was caused when we introduced the new MaxLength attribute that Build.One was already using in their repository schema.

As AttributeGuid values are not used for referential integrity the change is limited to the SmartAttribute master record.

SCL-4246 Made the SmartDataObjectImporter Plugin of Business Entity Designer usable in automation/scripting


The core functionality of the SmartDataObjectImporterPlugin of the Business Entity Designer has now been moved into the


service which can be used outside of the Business Entity Designer in scripted migration routines.

New Feature

SCL-4241 Implemented get-businessservice.i similar to get-service.i


We have implemented a new include file to obtain a Business Service from the service manager. This include file requests the business service from the service manager and casts the result to the target type simplifying the usage of ServiceManager:GetBuisnessService:

* Consultingwerk/get-businessservice.i
* Consultingwerk/Wrappers/get-businessservice.i

As usual the Consultingwerk/Wrappers folder can be added to the PROPATH by customers to support short references to the include file.