Release Notes 2024-03-12

Version Information

OpenEdge Release

Version Information

11.7.17, 12.2, 12.7, 12.8

Release 11.7 #79489@2024-03-12

Security Bulletin - log4j CVE-2021-44228

Further details: log4j CVE-2021-44228

OpenEdge 12.8 support!

We are pleased to announce that we are not aware of any issues using the SmartComponent Library on OpenEdge 12.8. We hereby declare OpenEdge 12.8 fully supported for the SmartComponent Library as of the release of  January 15th 2024.

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.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.

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.

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-4367 Resolve incorrectly-show additionalProp1 value in sample JSON in Swagger documentation


Updated the Swagger UI to the latest version to remove incorrect additionalProp1 propery in sample JSON.

SCL-4412 ServiceNameMappingService now checks for connected SmartDB


A recent change to the ServiceNameMappingService caused issues when used in a thin-client as it was attempting to call into SmartFramework business entities directly without using the Service Adapter even when the SmartDB was not connected.

This issue is resolved now.

SCL-4413 SmartBusinessEntityLookupDialog did not resolve foreign fields when positioning on the current record


We have fixed an issue in the SmartBusinessEntityLookupDialog when used with ForeignFields of the SmartBusinessEntityLookup. The lookup dialog now also properly resolves the values of the Foreign Fields when retrieving data to be shown in the dialog.


SCL-4338 The ProTop logo and download URL have been updated in the SmartComponent Library desktop


The ProTop logo and download URL have been updated in the SmartComponent Library desktop to reflect the current White Star Software branding.

SCL-4378 Implement support for overriding the HTTP POST method using the X-HTTP-Method-Override header


Implement support for overriding the HTTP POST method with PUT, PATCH or DELETE using the X- HTTP -Method-Override header for RESTful requests. If a request is made with the POST method and the request has an _X- HTTP -Method-Override_ header, the RestEntitiesWebHandler will run the relevant ABL method for values of PUT, PATCH and DELETE. If any other value is provided, an _Consultingwerk.OERA.RestResource.BadRequestException_ exception is raised, and a 400/Bad Request status is returned.

The header is ignored for requests made with any other HTTP method.

SCL-4388 Implemented logging for exceptions in the FileUploadService


Any exceptions raised in the Consultingwerk.Web2.Services.FileUpload.FileUploadService service during the processing of a file upload are now logged using the FileUploadService custom log entry type.

For more information on how to set custom log entry types, see the documentation at .

SCL-4406 Security Realm Drop down in security maintenance screens now be longer


We’ve extended the size of the security realm drop down in the various security maintenance screens. This should avoid the scrollbar shown in the drop down and simplify selection of a security realm.

SCL-4414 Implemented support for server-side manipulation of UI Controls


We have implemented basic support for manipulation of UI Controls in a Viewer from backend methods (Business Tasks or Business Entities). This provides the foundation for handling UI events more completely on the AppServer and support moving complex screen-logic as Business Logic to the AppServer.

Business services can now return an instance of the Consultingwerk.CommonUi.UiControl class. The SmartViewerControl now provides new methods to support moving screen-logic to the AppServer. Those methods are also available through facades on the SmartViewerLogic class:

ASSIGN hScreenValues = THIS-OBJECT:GetScreenValuesDataset() .

Returns a dynamic ProDataset with the structure of the viewer’s DataSource’s ProDataset and a single record representing the screen-values of the viewer.

Developers are responsible for deleting this ProDataset instance.

In a client-side event handler, a call into a business task (aka presentation service) may be made passing the screen-value and receiving an instance of the UiControl object in return:

oUiControl = CAST (FrameworkSettings:ServiceAdapter:InvokeTask2 ("",
                                                                INPUT-OUTPUT DATASET-HANDLE hScreenValues,

The HandleUiControl method then allows to process UI Control instructions from the UiControl instances, such as:

* enabling/disabling fields
* viewing/hiding fields
* setting the Infragistics StyleSetName of fields
* controlling the field that has focus

THIS-OBJECT:HandleUiControl(oUiControl, hScreenValues) .

When Save or Cancel of the viewer is completed, the viewer should reset the state of the fields:

THIS-OBJECT:ResetViewerState () .

Within the Business Task method, the UiControl is maintained like this:

METHOD PUBLIC UiControl HandleCustNumChanged (INPUT-OUTPUT DATASET dsOrder,
                                              piCustNum AS IntegerHolder):

    DEFINE VARIABLE oUiControl AS UiControl    NO-UNDO .
    DEFINE VARIABLE oControl   AS FieldControl NO-UNDO .
    FIND FIRST eOrder .

    ASSIGN eOrder.Instructions = "Handle with care" .

    oUiControl = NEW UiControl() .

    oControl = oUiControl:FieldControls:Add("Instructions") .
    oControl:Style = "error" .
    oControl:Enabled = FALSE .

    oControl = oUiControl:FieldControls:Add("Carrier") .
    oControl:Visible = FALSE .

    oUiControl:FocusFieldName = "Terms".

    RETURN oUiControl .


SCL-4416 Resolved issues in Toolbar Security Item Maintenance when multiple toolbars are contained in a Form


We have resolved issues in the Toolbar Security Item Maintenance caused by multiple SmartPanelController instances contained in a single form.


SCL-4329 Swagger documentation supports methods that return an array of objects


The generated Swagger documentation for invokable methods that return an array of object now shows the correct schema for such methods, including whether the array is indeterminate or of a fixed size.