Release Notes 2024-08-14

Version Information

OpenEdge Release

Version Information

11.7.17, 12.2, 12.7, 12.8, 12.8.3

Release 11.7 #81446@2024-08-14

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: https://www.consultingwerk.com/support/forum 

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 https://github.com/consultingwerk/proparse/releases/tag/4.0.1.1177). Please download the .NET Assemblies ZIP file from our ESD and replace the proparse.net.dll in your environment with the latest one. The new assembly reference is:

<assembly name="proparse.net, Version=4.0.1.1177, Culture=neutral, PublicKeyToken=cda1b098b1034b24"/>

As proparse is used by our Business Entity Generator, this new version of the proparse.net 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 proparse.net.dll.

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=2.2.0.49856, 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

defaultHandler=OpenEdge.Web.CompatibilityHandler
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 _utf8.zip 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

http://esd.consultingwerkcloud.com/

https://github.com/consultingwerk/SmartComponentLibrary

Overview of included tickets


Bug

SCL-4553 Invalid message SRF 317 referenced in scheduler business entity

Description:

We have corrected the message group that was used to reference the error message SFR:317 in the SchedulerBusinessEntity.

SCL-4554 Fixed an issue that prevented the deletion of SmartSchedulerQueue records.

Description:

We have fixed the definition of some relations stored in the SmartDB that was preventing the deletion of SmartSchedulerQueue records.

SCL-4556 InvalidSecurityRealmException now displaying realm code

Description:

The InvalidSecurityRealmException raised when an invalid security realm is passed to various API methods, is now displaying the realm code as part of the error message.

SCL-4569 Java Exception in PASOE logs due to error handling in SmartWebHandler

Description:

We have resolved a series of potential Java exceptions found in the PASOE logfiles like this

500 (server error) response out of the blue o.a.c.core.StandardWrapperValve.invoke Servlet.service() for servlet [OEWebServlet] in context with path [] threw exception [com.progress.open4gl.Open4GLException [ ref:_00D307FS._500

The exception were raised SmartWebHandler derived web handler were using the error handling implemented in the SmartWebHandler and returning a http status code greater than 0.

SCL-4573 Typo in property name SearchBusinessEntititiesOnAppServer os the BusinessEntityDesignerSupport class

Description:

We have resolved the typo by adding the property with the correctly spelled name. The property name with the type is left for backwards compatibility acting as a facade to the new property.

Improvement

SCL-4515 SplitContainer now has a property that determines if Panel 1 or 2 are resizing with the form

Description:

We have added a FixedPanel property that controls if Panel1 or Panel2 to the SplitContainer component. This property can be maintained in the SmartFramework Repository.

SCL-4533 Implemented drag and drop to move object instances into a splitter etc.

Description:

The instances grid of the Object Master Designer now supports drag and drop to move instances into a MetaSplitter instance.

SCL-4541 Implemented server-side call-back to modify repository data

Description:

The property CustomizeRepositoryData of the MetaForm now allows to reference a callback method that can be used to modify repository data at runtime. The method is referenced in the form <business task name>:<method name> .

The method receives the handle of the ProDataset with the repository data so that it can modify the data before it’s passed to the rendering services.

SCL-4547 Implemented script to download PEM certificates for a web site/web service

Description:

We have implemented a script that simplifies the download an registration of SSL certificates required for accessing a (web) service from OpenEdge.

More details can be found here: https://consultingwerk.atlassian.net/wiki/spaces/SCL/pages/2334883843/SSL+Certificates+Downloader+Importer

SCL-4551 Auto-Login to Angular Web Application

Description:

When launching the Angular web application from within the SmartFramework GUI application, we now support to automatically set the login credentials based on login credentials saved for the GUI application.

SCL-4555 Added Angular rendering support for Combobox ValueListDisplayText

Description:

We have implemented rendering support for the ValueListDisplayText property of the Angular SmartLookup component.

SCL-4557 Server-side event handler now supports calling into a method on the client

Description:

Server-side event handler now support calling into a method on the client. This is achieved by assigning an instance of the Consultingwerk.CommonUi.MethodCallParameter class to the MethodCall property of the returned UIControl instance.

The method is invoked in a logic class of the viewer, the form or another object that have a client logic class instanace based on the “target” property. Target can be “self” for referencing the smart object that raised the event handler, “form” for the form’s logic class or the name of another instance in the form.

The server-side event handler can return a character value, a serializable object or a JSON object to the method by assigning this to the corresponting property of the MethodCallParameter instance.

SCL-4558 Improved ActiveOnPages setting for Data-Sources with nested tab-folder

Description:

We have improved the handling of the ActiveOnPages setting for Data-Sources. ActiveOnPages is now also supported for tab-pages on nested tab-folders.

SCL-4559 Support for ActiveOnPages for Data-Sources in Control Groups

Description:

We have implemented support for the ActiveOnPages setting of the MetaDataSource type in the repository also for data-sources contained in MetaControlGroups.

SCL-4560 Angular Rendering Support for ActiveOnPages

Description:

We have implemented support for rendering the ActiveOnPages setting to data-source instances in the JSON layout of an angular form.

SCL-4562 Reintroduced OnRenderProcessTerminatedEvent in CefSupport Assembly

Description:

We have reintroduced the OnRenderProcessTerminatedEvent in the CefSupport Assembly. During the migration to CefSharp 126 this event was accidentally removed - as the event signature have been extended in CefSharp.

SCL-4563 Added VerticalStretch attribute to MetaTreeView

Description:

We have added the VerticalStretch attribute to the rendering of MetaTreeView instances for Angular layouts.

SCL-4566 LoginForm no longer displays "Consultingwerk" as login company when no Login Company Provider is present

Description:

When no LoginCompanyProvider service is available, we’re now providing an empty list of login companies to the LoginForm. Previously the value list item from the Progress Developer Studio Visual Designer remained in the Form.

SCL-4567 Added strong typed versions of GetInstance to DynamicControlGroup

Description:

We have added strong typed versions of the GetInstance method to the DynamicControlGroup. Those simplify accessing data adapter, grid, viewer, tabfolder, … instances in the same was as it has been available for the DynamicForm before.

SCL-4571 IntegerType now has IsPositive and IsNegative methods like DecimalType

Description:

We have added IsPositive and IsNegative methods to the IntegerType.

SCL-4572 Improved error messages thrown by SmartBusinessEntityAdapter when DatasetControllerType is not valid

Description:

The error is now a Consultingwerk Exception and includes the class name of the DatasetController causing the Exception.

New Feature

SCL-4568 Introduced new template engine for repository objects

Description:

We have introduced a new template engine for repository based object masters (typically forms). Based on regular repository objects with the template flag set, developers can use the “new from template” wizard to create a new repository object. The wizard will allow to replace instances of objects that are marked as “Placeholder” (using a property) with another object of the same type.

Story

SCL-4561 Added Clipboard Copy button to SmartObjectMasterBrowseForm

Description:

We’ve added a button to copy the name of the selected repository master to the clipboard.

SCL-4564 RestEntitiesWebHandler's InitializeRequestArguments method now cater for serialized field names

Description:

We’re now mapping field names of JSON objects passed as ProDataset parameters based on the SERIALIZE-NAME.