Release Notes 2019-12-09

Version Information

OpenEdge Release

Version Information

11.3.3, 11.3.4, 11.4, 11.6.2, 11.6.3, 11.7, 11.7.1, 11.7.2,, 11.7.4, 12.0, 12.1

Release 11.3 #55806@2019-12-09

OpenEdge 12.1 support!

We are please to announce that we are not aware of any issues using the SmartComponent Library on OpenEdge 12.1. We hereby declare OpenEdge 12.1 fully supported for the SmartComponent Library as of the release of September 21st 2019.

OpenEdge 12.0 support!

We are please to announce that we are not aware of any issues using the SmartComponent Library on OpenEdge 12.0. We hereby declare OpenEdge 12.0 fully supported for the SmartComponent Library as of the release of May 1st 2019.

OpenEdge 11.7.4 support!

We are please to announce that we are not aware of any issues using the SmartComponent Library on OpenEdge 11.7.4. We hereby declare OpenEdge 11.7.4 fully supported for the SmartComponent Library as of the release of November 5th 2018.

OpenEdge 11.7.3 support!

The previously reported issues with the Progress Developer Studio Visual Designer (Visual Designer related OpenEdge 11.7.3 product alert!!!) has been resolved by Progress Software with Hotfix 007 of OpenEdge 11.7.3. We hereby announce full compatibility of the SmartComponent Library with OpenEdge 

Besides the issue with the Visual Designer however, we have not been aware of any incompatibilities with OpenEdge 11.7.3. 

.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

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-2771 Resolved dependency on the SESSION:DATE format for handling the initial value in the Business Entity Designer


We have resolved issues resulting from dependency on the current SESSION:DATE-FORMAT when loading and storing the Business Entity Design (.bedgm) file.
We're now always saving the .bedgm file with dates in american date format (DMY) and are converting the dates to the current SESSION:DATE-FORMAT when opening it in the designer.

SCL-2866 Resolved issues with SmartDB upgrade failing as "minimal" compile option is lacking in PROPATH


We have now added the procedure library to the propath used by the SmartDB Upgrade and Migration utility used for the "minimal" compile.


SCL-2757 Improve scl-pasoe-agents with details about agent sessions


The scl-pasoe-agents script ( ) does not also provide information of the Agent sessions of every agent launched for an ABL web application.

SCL-2844 Updated all references to old Confluence site in source code with references to Atlassian hosted site


Following the migration from our self hosted Confluence installation to the Atlassian cloud, we have updated as links to the documentation website in your source to to link directly to the site.
This will speed up access to documentation articles and remove dependency on our URL redirects.

SCL-2865 User Settings of grids (visible columns, column order and width) are now saved in user profile for dynamic forms


SmartDataBrowser instances used in SmartFramework repository based screens do now also store the column order, width and visibility in the user profile like static viewers do.

SCL-2869 Added Clone() method override to GenericFetchDataByKeyTableParameter


To simplify situations where multiple instances of the GenericFetchDataByKeyTableParameter class are needed with the same schema and data we have implemented a Clone() method in the class.
The Clone() method will copy both the schema and the data of the dynamically defined Key Value Table. There's an alternative variant of the Clone() method which accepts an Enum Value controlling if only the Schema or Schema and Data should be cloned.

SCL-2870 ServiceLoader now supports mapping SmartDB as RequiredDB to SmartDB alias from products.i


When the SmartDB switch in products.i is mapping all references to the SmartDB to a different database name than "SmartDB", the ServiceLoader now maps a required database entry in a processed services.xml file from "SmartDB" to that value. when checking the CONNECTED()

SCL-2871 Improved presentation of unknown SmartException


When an SmartException was thrown with an undefined message, the presentation of the message group and number was formatted like this: <MCS/19435>. However for known error messages the display is like (MCS:19435).
We have resolved this inconsistency now.

SCL-2873 DataAccess: lInRetrieveDataByKeyTable variable is now replaced by a static property


To allow access from within code in the actual Data Access class we've turned the private variable into a PROTECTED property. This allows to detect the FetchDataByKeyTable method from places like the AttachDataSources etc. in your actual Data Access class implementation.

SCL-2875 Dynamically populating a value list of message groups in Smart Message Maintenance


We are now dynamically populating a list of existing Message Group values in the Message maintenance form. This list is used for both filtering the Message Grid and updating messages.

SCL-2876 Dynamically populating value list of translation scopes in Smart Translation Maintenance


We are now dynamically populating a list of existing Translation Scope values in the Translation maintenance form. This list is used for both filtering the Translation Grid and updating translation records.

SCL-2877 Added method to Service Manager to detect if a certain IBusinessService is currently in the call stack


The new method ServiceManager:IsInCallStack () returns true when the provided Business Service name (Business Entity or Task) is in the current call stack.
This allows developers to decide if a call into a Business Entity should be made via the standard instances or a specific instance via Context Id.

SCL-2878 Implemented unmanaged mode for Business Services


We have implemented a new operating mode for business services. Previously the life cycle of a Business Service has always been determined by the Service Manager implementation of the SmartComponent Library.
The new unmanaged mode allows the caller to have full control over the life cycle of a Business Service. The Service Manager does not keep a reference to the Business Service (typically Business Task or Business Entity) at all.
This provides an alternative to launching additional instances of the Business Services using a CHR(1) delimited instance identifier. The consumer of the Business Service should typically be able to rely on the AVM's garbage collector to control the disposal of the Business Service instance from memory.
Unmanaged Business Services can also safely be killed using the DELETE OBJECT statement.

     * Purpose: Returns a reference to a Business Service Instance
     * Notes:   Starts the Business Service if required (using LaunchBusinessService)
     *          It is possible to use multiple instances of the same Business Service
     *          class at once. In this case the business service name should be
     *          concatenated from the class name followed by CHR(1) and the instance
     *          identified
     *          Supports both managed and unmanaged operating mode for business services
     *          See notes in BusinessServiceOperatingModeEnum
     * @param pcServiceName The Name of the Business Service, evtl. containing a #, see Notes at LaunchBusinessService
     * @param poOperatingMode The BusinessServiceOperatingModeEnum controlling the operating mode of the business service
     * @return The reference to the IBusinessService
    METHOD PUBLIC IBusinessService GetBusinessService (pcServiceName AS CHARACTER,
                                                       poOperatingMode AS BusinessServiceOperatingModeEnum) .

The previous implementation of the GetBusinessService method returns a managed instance to remain compatible with the previous mode.
This new method can be used together with SCL-2877 to avoid circular calls into the same Business Entity instance with more ease.

SCL-2880 Implemented DecimalType class similar to CharacterType


We've added a new class DecimalType now similar to the existing CharacterType or IntegerType classes with supporting methods for the DECIMAL data type.

SCL-2881 Implemented rendering support for Stretch Mode on Angular Viewers and custom components


To support the Repository based rendering of the Stretch mode also for Viewers and Custom Components we have added support for those attributes when rending MetaViewer and Custom Control instances.

SCL-2884 Question class now serializes Null Values


We've set the option in the Question class to serialize null values. This allows to distinguish empty strings from ? in properties like the ContextID after serialization.

New Feature

SCL-512 Read-Only SmartDataBrowser based on the Telerik RadGrid Control


We are releasing now our alternative implementation of the SmartDataBrowser based on the Telerik RadGrid Control to the public. The Consultingwerk.SmartComponents.Implementation.SmartRadDataBrowser provides the same functionality as the SmartDataBrowser but is not based on the Infragistics UltraGrid Control.