Release Notes 2018-06-17

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

Release 11.3 #47054@2018-06-17

OpenEdge 11.7.3 Product alert!

We've encountered a severe regression with the Progress Developer Studio Visual Designer in OpenEdge Release 11.7.3 (Service Pack 3 of OpenEdge 11.7). We won't announce formal compatibility of the SmartComponent Library with OpenEdge 11.7.3 for this reason. We'll inform once Progress Software has resolved this issue. 

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

This article provides further details: Visual Designer related OpenEdge 11.7.3 product alert!!!

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!

OpenEdge 11.7 Service Pack 2

We are announcing full compatibility with the Service Pack 2 for OpenEdge 11.7 (OpenEdge 11.7.2).

See further remarks below.

Deletion of SmartDataAdapters and BindingSources

In SCL-2019 we have changed the clean-up behavior of the SmartDataBrowser control when a Form is closed. After this change, the SmartDataBrowser will delete it's linked SmartDataSource (e.g. SmartBusinessEntityAdpater) instance and DataSource (binding source). In rare cases, where those instances may still be required after the form containing the browser have been closed, developers can set the following new property of the SmartDataBrowser to FALSE:

 * Purpose: Controls if the SmartDataBrowser deletes it's SmartDataSource and DataSource
 *          when the Form is closed
 * Notes:

Your action may be required!

Changes to the SmartDB and SmartDB upgrade and migration utility

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.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 (08 April 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 methods for refactoring purposes. The most recent code in the Consultingwerk.Studio package relies on those methods. It's therefore mandatory to update proparse to this version.

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}

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-1859 Regenerating Business Entity changed line ending style


We've resolved an issue in the Business Entity Generator which caused that when Business Entities and Data Access classes have been generated initially their line-break style was Windows (CR/LF) and after regenerating the line-break style was changed to Unix Style (LF). This was causing additional differences in the generated source code in SCM tools. With this fix, the line break style is Unix after initially generating a Business Entity. We've chosen this style, as LF is generally better supported on Windows than CR/LF on Unix and it's the Progress default anyway.

SCL-2225 Exporting/Importing data for ValueListBusinessEntity using GenericDataImported causing new GUID's


We have resolved an issue in the SmartDB Upgrade and Migration Routine. The issue was causing new GUID's getting generated as the primary unique key value for some of our SmartDB tables (e.g. the SmartValueList).

SCL-2230 All references to Progress.Reflect.Flags must be fully qualified


To resolve an compile time issue where the compiler was mistaking an abbreviated reference to values form the Progress.Reflect.Flags enum we have fully qualified all references to this type (not relying on the USING statement).

SCL-2237 Fixed an issue with generating Business Entities


We've resolved an issue with the Win32 GetUserName method. This method determines a users full name. The issue was occurring when the Business Entity Designer was executed using the UTF-8 code page and the developer's full name contained German Umlaute. !image-2018-06-15-13-46-44-996.png!


SCL-2196 Added new Business Entity Designer setting that allows to suppress the prompt for updating Business Entity and Data Access class


We've added a new logical toggle on the "Generator" tab of the Business Entity Designer Settings that allows to control if the Business Entity Designer will prompt the user before updating the Business Entity or Data Access source during the Regenerate of existing source code. The new option is labelled "Prompt before updating existing Business Entity or Data Access class during re-generate"

SCL-2203 Implemented additional shortcuts for editing properties in the Business Entity Designer


We've implemented the following shortcuts for editing properties in the Business Entity Designer: - Double click on a Table, Field, Index or Data Relation will activate the property viewer for that element in edit mode (when no other property viewer is currently in edit mode)

  • Double click on empty space on the design canvas will activate the business entity property viewer in edit mode
  • F2 on a Table, Field, Index or Data Relation will activate the property viewer for that element in edit mode (when no other property viewer is currently in edit mode)
  • F2 when no other element is selected will activate the business entity property viewer in edit mode

And there are still the shortcut keys implemetned as part of SCL-1907:

  • CTRL-E: Entity Properties
  • CTRL-F: Field Properties
  • CTRL-I: Index Properties
  • CTRL-T: Temp-Table Properties
  • CTRL-R: Relation Properties
  • CTRL-S: Save in property viewer
  • ESC: Cancel in property viewer

SCL-2207 Added Ne (not equals) to Ccs.BusinessLogic.QueryOperatorEnum


The Common Component Specification CCSBE document and related interfaces are missing the Ne (not equals) operator in the QueryOperatorEnum enumeration. We have added this value now to the enum and added support for _not equals_ in the Table Query interfaces and related classes and templates. As we've modified the following templates for this enhancement, developers are recommented to verify their customized templates:

  • Consultingwerk/BusinessEntityDesigner/Generator/Templates/TableQueryBuilder/characterquerypredicate.template
  • Consultingwerk/BusinessEntityDesigner/Generator/Templates/TableQueryBuilder/datequerypredicate.template
  • Consultingwerk/BusinessEntityDesigner/Generator/Templates/TableQueryBuilder/datetimequerypredicate.template
  • Consultingwerk/BusinessEntityDesigner/Generator/Templates/TableQueryBuilder/datetimetzquerypredicate.template
  • Consultingwerk/BusinessEntityDesigner/Generator/Templates/TableQueryBuilder/decimalquerypredicate.template
  • Consultingwerk/BusinessEntityDesigner/Generator/Templates/TableQueryBuilder/int64querypredicate.template
  • Consultingwerk/BusinessEntityDesigner/Generator/Templates/TableQueryBuilder/integerquerypredicate.template
  • Consultingwerk/BusinessEntityDesigner/Generator/Templates/TableQueryBuilder/logicalquerypredicate.template
  • Consultingwerk/BusinessEntityDesigner/Generator/Templates/TableQueryBuilder/tablequery.template

We are working with Progress Software to ensure that their deployment of the CCS Interfaces with OpenEdge 11.7 will also include the Ne operator in the future.

SCL-2219 Repository Object Exporter now raising an error when target directory cannot be created


Before this improvement the Repository Object Exporter was ignoring errors when the target folder for the object export (base folder plus module folder) could not be generated for any reason. The following WRITE-XML invocation of the ProDataset was then raising an issue of "invalid arguments passed to the method" - which is typically confusing. A more meaningful error is now generated also indicating why the folder could not be generated.

SCL-2223 Added taskname attribute to the PCTRun targets in setup.xml


To simplify debugging of issues with the SmartDB Upgrade and Migration Routine we have added the taskname attribute to the various steps of the ANT script. The taskname attribute allows replacing the [PCTRun] in the scripts console output with a custom value describing the actual procedure that is executed.

SCL-2224 Business Entity Designer now indicating the cardinality of a relation on the Design Canvas


The Business Entity Designer does not indicate on each end of a relation either an "1" or "N" based on a comparison of the fields of the table's unique indexes and the relation fields. If an relation is matching the unique index fields on either end of the relation the "1" does also show the name of the index that's causing the relation to be unique at that end (parent or child of the relation).

SCL-2227 Added additional methods to the NamedQueryParameter class to make it easier to return Integer/Decimal/... parameter values


Added the following new methods to the Consultingwerk.OERA.NamedQueryParameter class to simplify retrieving of values from Named Query Parameters.


SCL-2232 Implemented additional Interfaces for http error classes


To support developers writing custom error or exception classes we've created marker interfaces representing every http 4xx and 5xx status code in the Consultingwerk.OERA.JsdoGenericService.WebHandler package. Developers can use these interfaces for their custom error classes thrown from code executed by any of our web handlers (e.g. from within Business Entities executed by the RESTful interface or JSDO generic service). When an error implementing those Interfaces is thrown and catches by our web handlers, the corresponting http status is returned to the caller (browser, REST client).

SCL-2236 Business Entity Designer does now set an initial directory for the "Save As" Dialog


The Business Entity Designer does now the an initial directory for the "Save As" dialog. This directory is now either set based on the Business Entity Package (when that folder does already exist at the time of saving) or the "Initial Directory" setting of the Business Entity Designer settings.

New Feature

SCL-684 Cascade of delete operations (Parent / Child) throughout the Dataset


To provide more control about cascading deletes in the ProDataset we've added an additional variant of the DeleteCascade method in the DatasetHelper

     * Purpose: Deletes the record from the given ProDataset buffer and recursively
     *          deletes all child records
     * Notes:   Supports * as value for pcDeleteChildBuffers
     * @param phBuffer The handle of the ProDataset buffer with the record to delete
     * @param plDeleteRecord Delete the actual record
     * @param pcDeleteChildBuffers The comma delimited list of child buffer names to process
                                             plDeleteRecord AS LOGICAL,
                                             pcDeleteChildBuffers AS CHARACTER):