Release Notes 2025-09-16
- 1 Version Information
- 2 Retirement of OpenEdge 11.7
- 3 OpenEdge 12.8 support!
- 4 OpenEdge 12.2 support!
- 5 PASOE / OEMANAGER VS Code Extension
- 6 Introducing the SmartComponent Library developer forum
- 7 Release Notes
- 8 New Versions of Proparse .NET Assemblies (30 December 2018)
- 9 New Version of the Consultingwerk.SmartComponents Assemly (09 January 2019)
- 10 Hybrid Realm now using IAuthenticationService
- 11 Web Handler overview
- 12 UTF-8 based deployments available
- 13 New Feature Documentation
- 14 Download Link
- 15 Overview of included tickets
- 15.1 Bug
- 15.1.1 SCL-4957 Fixed issue in SwaggerTempTableSchemaExporter with DATE/DATETIME/DATETIME-TZ fields
- 15.1.2 SCL-4959 Fixed JsonHelper:ExactPropertyName for large JSON objects
- 15.1.3 SCL-4964 Fixed Angular Rendering of EditorButtons
- 15.1.4 SCL-4972 BusinessEntityGenerator with ModelClassGeneratorPlugin and StaticDataAccessQueryPlugin generated compile error if index field has underscore
- 15.2 Improvement
- 15.2.1 SCL-4931 Added API to SmartRepositoryService that allows to update the object type of an master
- 15.2.2 SCL-4946 Removed support for HTML rendering from repository
- 15.2.3 SCL-4947 Use of BLOCK-LEVEL error handling consistently
- 15.2.4 SCL-4949 Added two buttons to the repository designer grids: copy object name and open object master
- 15.2.5 SCL-4951 Introduced InvalidToolKeyException in UltraToolbarsManager
- 15.2.6 SCL-4955 ActionType class now verifies that validation delegate and table model provide expected constructors
- 15.2.7 SCL-4966 Introduced new Exception InvalidDelimiterException in StringHelper
- 15.2.8 SCL-4975 JsonHelper ToCharacter method now converts to current cpinternal
- 15.3 New Feature
- 15.3.1 SCL-3570 Implemented PASOE Business Entity Designer Plugin Loader
- 15.3.2 SCL-3571 Implemented server-side variant of the ModelClassGeneneratorPlugin
- 15.3.3 SCL-3572 Implemented server-side variant of the TableQueryGeneneratorPlugin
- 15.3.4 SCL-4970 Introduced new Exception WidgetNameCannotBeEmptyException in UltraToolbarsHelper
- 15.4 Story
- 15.5 Task
- 15.6 Sub-task
- 15.1 Bug
Version Information
OpenEdge Release | Version Information |
|---|---|
12.2.18, 12.8.7, 12.8.8, 12.8.9 | Release 11.7 #87579@2025-09-16 |
Retirement of OpenEdge 11.7
OpenEdge 11.7 has been retired by Progress Software on April 1st 2025. In consequence we urge all customers still using OpenEdge 11 to upgrade to OpenEdge 12.2 or 12.8 as soon as possible.
We are intending to drop the official support of the SmartComponent Library for OpenEdge 11.7 during the second half of the year 2025. We will then no longer ensure that new features of the framework will be usable with OpenEdge 11.7
Customers that are concerned by this intention, should reach out to us as soon as possible, so that we can discuss about a solution.
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.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.
PASOE / OEMANAGER VS Code Extension
Our first VS Code extension is available in the VS Code marketplace: https://marketplace.visualstudio.com/items?itemName=ConsultingwerkApplicationModernizationSolutionsLtd.oemanager
The extension supports developers with PASOE related routine tasks during development:
checking agent or session status
trimming the PASOE agents
restarting a new agent vai the ping request
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:
|
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 |
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
Support for RESTful invocation of Business Task and Business Entity Methods
Invalid Proparse code-page setting corrupts temp-table field labels during "Refresh from Include"
Using Invokable Business Entity Methods with Dataset Model Classes
Searching data using ROWID's within the SmartBusinessEntityAdapter
Changes to the SmartDB and SmartDB upgrade and migration utility
How do I control the amount of details provided for error messages caused by our web handler
Download Link
http://esd.consultingwerkcloud.com/
https://github.com/consultingwerk/SmartComponentLibrary
Overview of included tickets
Bug
SCL-4957 Fixed issue in SwaggerTempTableSchemaExporter with DATE/DATETIME/DATETIME-TZ fields
Description:
We have fixed an issue in the JsonHelper ExactPropertyName that was raised when JsonObjects had that many properties that the ABL CharacterLimit was exceeded in a CharacterList implementation.
SCL-4959 Fixed JsonHelper:ExactPropertyName for large JSON objects
Description:
DATE* fields with TODAY or NOW as initial values have not been properly exposing a default value. This has been fixed now.
SCL-4964 Fixed Angular Rendering of EditorButtons
Description:
We have resolved minor issues in the Angular Rendering of Editor buttons in the Angular UI.
SCL-4972 BusinessEntityGenerator with ModelClassGeneratorPlugin and StaticDataAccessQueryPlugin generated compile error if index field has underscore
Description:
We have fixed an issue in the ModelClassGenerator Plugin that was generating code causing compile issues when index fields were named with underscores as part of the field name. This issue is resolved now.
Improvement
SCL-4931 Added API to SmartRepositoryService that allows to update the object type of an master
Description:
We have added an API to the repository manager that allows to update the object type of a repository object. This is intended to be used for programmatic update of objects in the repository.
SCL-4946 Removed support for HTML rendering from repository
Description:
We have removed the support for rendering HTML templates from the repository backend rendering services for Angular web applications. Our JSON markup is now the only supported rendering method.
SCL-4947 Use of BLOCK-LEVEL error handling consistently
Description:
We have now modified the last remaining classes and procedures that have been using the ROUTINE-LEVEL ON ERROR UNDO, THROW to use BLOCK-LEVEL error handling.
SCL-4949 Added two buttons to the repository designer grids: copy object name and open object master
Description:
The object instances and where used grids in the repository designer now provide two buttons in the grid rows that allow to copy the referenced object master in a separate repository designer instances and to copy the name of the referenced repository master to the windows clipboard.
SCL-4951 Introduced InvalidToolKeyException in UltraToolbarsManager
Description:
The UltraToolbarsHelper now throw an strong-typed exception when some UltraToolbar’s tools use an empty tool key.
SCL-4955 ActionType class now verifies that validation delegate and table model provide expected constructors
Description:
The ActionType class now verifies that the validation delegate and TableModel classes provide the required constructors and raise a meaningful error message when now. Previously we have only been seeing an invalid object reference runtime error making it difficult to debug.
SCL-4966 Introduced new Exception InvalidDelimiterException in StringHelper
Description:
We have introduced strong-typed errors in the StringHelper in case an empty delimiter is passed to some StringHelper API’s.
SCL-4975 JsonHelper ToCharacter method now converts to current cpinternal
Description:
The JsonHelper:ToCharacter method now ensures the resulting CHARACTER values comply with the current sessions CPINTERNAL attribute.
New Feature
SCL-3570 Implemented PASOE Business Entity Designer Plugin Loader
Description:
To support Business Entity generation on PASOE (for MCP Service and Angular Web Business Entity Designer) purposes we have implemented general plugin management capabilities on PASOE. The Interface Consultingwerk.BusinessEntityDesigner.Server.Plugins.IBusinessEntityDesignerServerPlugin defines requirements for the Business Entity Designer plugins on PASOE. This is not the same Interface as for plugins for the GUI Business Entity designer due to their requirement on some GUI for .NET components. But it’s recommended to implement the main plugin logic as an abstract base class and the actual plugin implementations for GUI and backend will inherit fro this.
SCL-3571 Implemented server-side variant of the ModelClassGeneneratorPlugin
Description:
Following the implementation recommendation in https://consultingwerk.atlassian.net/jira/browse/SCL-3570 the ModelClassGeneratorPluging has now been made available as a backend and GUI for .NET variant.
SCL-3572 Implemented server-side variant of the TableQueryGeneneratorPlugin
Description:
Following the implementation recommendation in https://consultingwerk.atlassian.net/jira/browse/SCL-3570 the TableQueryGeneratorPluging has now been made available as a backend and GUI for .NET variant.
SCL-4970 Introduced new Exception WidgetNameCannotBeEmptyException in UltraToolbarsHelper
Description:
The UltraToolbarsHelper (typically used in the WinKit) now throws a strong-typed exception instead of Progress.Lang.AppError when a button or menu-item does not have a name.
Story
SCL-4954 Added output of WEB-CONTEXT properties to Session Info web application
Description:
The Session Info screen in the Angular Developer Tools now also includes the attributes of the WEB-CONTEXT System handle.
Task
SCL-4961 Implemented JSON rendering support for SmartReportViewer
Description:
We have implemented JSON Rendering Support for the ActiveReports ReportyViewer Angular component.
SCL-4965 Implemented JSON rendering support for ComboBox LimitToList attribute
Description:
We have implemented Angular JSON Rendering support for the LimitToList attribute of combo-box fields.
SCL-4967 Implemented JSON rendering support for NoLabel attribute in checkboxes
Description:
We have implemented Angular JSON rendering support for the NoLabel attribute on Checkbox fields.
Sub-task
SCL-4958 Replaced ServiceInterface:FetchData calls in SmartFramework with direct access to the Business Entity
Description:
We have implemented a first batch of changes in which we are now using direct access to Business Entities instead of going via the ServiceInterface class in the SmartFramework. This is in line with our current coding standards and will slightly improve performance.