Release Notes 2020-11-24

Version Information

OpenEdge Release

Version Information

11.7.7, 11.7.8, 12.2, 12.3

Release 11.7 #63624@2020-11-24

OpenEdge 12.3 support!

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

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!

Announcing the SmartFramework ERD Designer

We are announcing the availability of the SmartFramework ERD Designer

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-3085 Resolved: Copy of menu item in Menu Structure maintenance creates new menu item in wrong position


We have resolved an issue in the menu structure maintenance that was causing copied menu items to be stored in the wrong position in the menu structure.

SCL-3228 Resolved issues with the OEDTdoc style comment formatter in the Business Entity Designer


We've resolved remaining issues with applying the OEDT style for comments in Business Entity Designer generated code. This was for instance impacting the comments generated for methods in the Data Access class.

SCL-3236 Callgraph Tree nodes now show the pointer or hand mouse cursor, not the text-editing mouse pointer


We've fixed the mouse pointer shown when hovering over nodes in the call graph tree.

SCL-3243 Repository integrity report now reports missing design time data-source for grids and viewers


We have resolved an issue in the Repository Integrity report. The report now properly reports missing design time indexes for object master records.

SCL-3244 Resolved: SaveChanges in UserBusinessEntity fails for unmodified eSmartUser records


We have resolved an issue in the SaveChances method of the SmartFrameworks user Business Entity. This issue was preventing processing of unmodified eSmartUser records.


SCL-2780 Undefined named include file parameters


Following the discussion at discussion at we have resolved those parameterized include file reference that were using a mix of positional and named include file parameters.

SCL-3107 Callgraph builder support for OO calls


We have added support for class based code to the call graph builder.

SCL-3184 Added option to hide "uncalled" paths from the Callgraph


We have added the option to hide uncalled paths from the call graph tree view.

SCL-3185 Call-graph: New view for referenced files


We have added a view to the Callgraph tree view that shows and supports opening of the call-graph for referenced files.

SCL-3225 Implemented endpoint to return SmartGroupInheritance mode to caller


To support the implementation of an Angular based frontend, we have implemented an RESTful endpoint
which returns the value of the SmartGroupInheritance preprocessor (products.i) to the caller, see SCL-3069 for more details.

SCL-3226 Added support for .ico files to /web/Image web handler


We have added support for serving files having the .ico extension through the /web/Image web handler.

SCL-3227 Added new property for png based Form Icon for Angular forms


We've added a new property to the MetaForm class to support PNG based form icons.

SCL-3229 Callgraph tree now supports visualization of inherited UI/DB-read/DB-trans dependencies


We have added an option button to the toolbar to display "Inherited dependencies".
When a routine calls another routine with a dependency on UI/DB-read/DB-update the calling (and it's callers) routine is considered to have an inherited dependency. This is based on the option button be visualized in the callgraph-tree through the similar icons as on the actual routine (adding a "link" arror) to the original icon.
As we're drilling down in the callgraph tree and additional files are parsed we do need to refresh the tree when that option is turned on, to reflect the gained additional knowledge based on called external routines.

SCL-3231 Simplify entering of images in menu and function maintenance


When entering image file names in the menu function maintenance we'll copy the image file name from the small images to the large images when the image name ends in _16.bmp, _16,png or _16.jpg and replace _16 with _32. This simplifies the creation of menu functions when images are provided from typical icon libraries.

SCL-3235 Call or Run nodes in the Callgraph now showing an expansion indicator


The Callgraph treeview now indicates to the user which nodes can be expanded.

SCL-3237 Callgraph: Program nodes should receive inherited dependency icon too


When using the "Inherited Dependencies" option in the callgraph utility, the nodes representing a program will also be receiving the now dependency-icons.

SCL-3240 SmartUnit now reporting actual number of tests and failures in unit test result files


SmartUnit now reports the actual number of test runs and failures in the result.xml file.

SCL-3242 Reduced how often the Business Entity Designers Source code Editor uses proparse


We have reduced the number of times the Business Entity Designers Source code Editor uses proparse to parse the edited source code. This will improved the developers experience when using this tool.

SCL-3252 Added LRU list to the Dynamic Launcher


We've added a LRU list to the Dynamic Launcher in the Desktop menu.

New Feature

SCL-2522 JSDO Generic Service now supports returnin DB read stats to caller


Based on an additional URL parameter (&UserTableStats=true) the JSDO Generic service now supports to return the statistics of the DB reads to the caller.

SCL-3186 Implemented support for GUI rendering of week numbers in Smart DatePicker


We have implemented support for repository rendering the week numbers settings of the data picker.

SCL-3187 Implemented support for JSON Web rendering the week numbers setting in Smart DatePicker


We have implemented support for JSON Web rendering of the week numbers setting in Smart DatePicker

SCL-3194 Implemented Wizard and API to create dynamic Business Entity/Data Source


We have implemented a new wizard to generate a dynamic repository based Business Entity to the Repository menu of the SmartFramework.

SCL-3195 Implemented REST API to return a list of tables and fields based on a the name of a MetaDataSource


The RESTful endpoint /web/Entities/SmartFramework/Repository/GetMetaDataSourceFieldNames/CustomerDataSource can be used to query the list of field names returned by a MetaDataSource object master in the repository.

SCL-3219 Implemented a Web handler for storing and retrieving user profile settings


Userprofiles are then stored as LONGCHAR (JSON) values under the following three keys:
- Profile Type (e.g. the component that's storing data)
- Profile Key (e.g like an instance identifier of that component is used multiple times)
- Profile Name a setting name
We have implemented the following endpoints:
GET [ http://localhost/web/Entities/SmartFramework/UserProfile /| http://localhost/web/Entities/SmartFramework/UserProfile /]<ProfileType>/<ProfileKey> (retuning above mentioned JSON surrounded by \{ "default": ..... } \)
PUT http://localhost/web/Entities/SmartFramework/UserProfile with the following payload:

  "ProfileType": "profile type",
  "ProfileKey": "profile key",
  "ProfileName": "profile name",
  "Value": "the user profile value to store"

SCL-3224 Implemented rendering of Repository based Business Entity for generic tables


We have implemented rendering support for repository based Business Entities on generic tables.

SCL-3230 Implemented wizard to generate MetaDataSource


We have implemented a wizard to generate MetaDataSource object masters and added this to the SmartFramework repository menu.

SCL-3241 Implemented more Object Oriented way to set the ERROR-STRING of a ProDataset BUFFER


We have introduced a new class DatasetErrorString which provides an alternative way to manipulate the ERROR-STRING of a ProDataset buffer. This class can be used to add error messages either for the whole buffer or an individual field.

NEW DatasetErrorString(BUFFER eCustomer:HANDLE):AddErrorMessage("This is a test error message") .


NEW DatasetErrorString(BUFFER eCustomer:HANDLE)
                    :AddErrorMessage("This is a test error message") .


SCL-3234 Fixed Angular rendering of Checkboxes with the NO-LABEL option


The NO-LABEL option will now be ignored for Checkboxes in Angular JSON layout

SCL-3246 Resolved: Dynamic Business Entity loses ProDataset after certain operations


After certain read and update operations, the dynamic business entity was losing the reference to the dynamic ProDataset. This has been resolved now.