Release Notes 2026-02-15

Release Notes 2026-02-15

Version Information

OpenEdge Release

Version Information

OpenEdge Release

Version Information

11.7.21, 12.2.18, 12.8.7, 12.8.8, 12.8.9

Release 11.7 #88770@2026-02-15

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:

<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

SCL-5113 Fixed the behaviour difference between IsPluginActive and GetPluginReference

The behavioural difference between IsPluginActive and GetPluginReference has now been resolved so that they both use the abstract type 'Progress.Lang.Class:IsA' to determine if the object is valid.

SCL-4956 Added support for concatenating attribute values during object type inheritance.

SmartAttributes now contain a "Concatenated" property, which when set to true, now concatenates the child attributes to the parent's attributes in a comma delimited list. The process also removes any duplications.

SCL-5138 Added RESTful endpoint GetObjectMasterByGuidOrName for ObjectMaster

The entity ObjectMaster now contains an RESTful endpoint for retreiving an ObjectMaster record by GUID or Name

SCL-5140 Added RESTful endpoints for Products and Modules

The entities Products and Modules now contain @RestAddress RESTful endpoints, exposing 'record' and 'collection' operations.

SCL-5111 Fixed typo in classname MetaDataSourcerDatasetController.cls

Fixed the typo value in the MetaDataSourceBusinessEntity and MetaDataSourcerDatasetController

SCL-4358 Added support for static Data Access queries for multiple indexes with same field data type combination

In addition to the "Static DataAccess Queries for unique keys in DB Tables", the Business Entity Generation has been further enhanced to facilitate Static DataAccess Queries for mulitple indices with the same field data type. The Business Entity generator now creates two new additional Index Fields "AdditionalQueryGeneration", "Virtual" both set with an initial false of false. Validation is in place ensuring that both "DefaultSearchCodeGeneration" and "AdditionalQueryGenerationboth" fields cannot be set to true, in addition the generation of temp-tables will only include indexes that have a value of eIndex.Virtual = FALSE, thus keeping the number of temp-table indexes low but still addressing the multiple ways to query data from the DB.

If IsStaticDataAccessQueryActive is set to FALSE then no code for static queries shall be generated. If AdditionalQueryGeneration is set to TRUE, then static data access query parameter classes are generated, based on a New<field><field>Filter method with a parameter per field.

SCL-5032 Added MCP Server Tools for Import/Export Repository Data.

The MCP Server Tools now supports the Import/Export of Repository Data. The Import process imports a SmartRepo file into the respository. The Export process, exports a Repository Object to a SmartRepo file \(object name, base path - the alternative base path is configured in .restapplicationsettings\).

SCL-4991 Added maintenance of Business Entity names to database table maintenance

The SmartTable database table and TableBusinessEntity has been updated with two new fields, "MaintenanceBusinessEntity" and "QueryBusinessEntity".
In addition to the TableBusinessEntity containing the aforementioned fields, it also contains validation for both fields when populated \(uses the ClassHelper:ClassNameToClass to ensure that the Class is valid\).

SCL-4993 Added the Business Entity Name for all SmartDB tables

The new fields "MaintenanceBusinessEntity" and "QueryBusinessEntity" on the TableBusinessEntity have been set for all SmartDB, icfbf and sports2000 DB tables.

SCL-4994 Added the new Business Entity Names for MCP DB table service

The MCP DB table service has been updated to support the new fields "MaintenanceBusinessEntity" and "QueryBusinessEntity" added to the TableBusinessEntity.

SCL-4996 Added MCP server resources for DB schema

The MCP server resources for DB schema's has been updated to provide a more simplified DB Schema \(based on https://claude.ai/share/06e984ed-05da-44a6-881a-56a920991648)..){: data-inline-card='' } \).

SCL-4998 Added MCP server resources for Business Entity schema's

The MCP server resources for Business Entity schema's has been updated to provide a more simplified Business Entity Schema \(based on https://claude.ai/share/06e984ed-05da-44a6-881a-56a920991648 .) \).

SCL-5100 Fixed Swagger to support multiple Swagger pages in a single ABL app

The Services Interface for Swagger has now been enhanced to support multiple Swagger pages per ABL application, e.g.:

  • /web/SwaggerEntities/SmartFramework/html

  • /web/SwaggerEntities/Sports2000/html

  • /web/SwaggerEntities/Demo/html

SCL-5106 Fixed annotations generation to only create annotations in VSCode when a file is saved

When using VSCode, annotations are now only generated when the file is saved.

SCL-5115 Added RESTful annotations to MenuBusinessEntity

The MenuBusinessEntity now supports "@RestAddress" RESTful annotations to expose collection and record operations for SmartMenu and SmartFunction.

SCL-5116 Fixed ServiceContainer method to determine whether a service has been registered and active.

The ServiceContainer has been modified to indicate whether a service has been registered and if there’s a current active \(ie VALID-OBJECT\) instance.

SCL-5123 Added support for the rendering of buttonIcon attribute on the MetaButton type.

The SmartViewer rendering of MetaButton type has been enhanced to support buttonIcon attribute value. If both the buttonImage and buttonIcon attribute values are provided, then the buttonImage attribute shall be ignored.

SCL-5124 Fixed the GUI version of the DataSource Maintenance Viewer

The GUI version of the DataSource Maintenance Form has been fixed when using the Entity Name and DatasetController type lookup buttons when retrieving repository data.

SCL-5125 Fixed Consultingwerk.Framework.Exceptions classes ServiceAlreadyRegisteredException and ServiceNotRegisteredException to be serializable

The Consultingwerk.Framework.Exceptions classes ServiceAlreadyRegisteredException and ServiceNotRegisteredException have been modified to be serializable, and in both instances, the Property ServiceClass has been changed to ServiceClassName.

SCL-5126 Added date and time values to the Scheduler Job Status Grid

The Scheduler Job Status Grid has been enhanced to now show date and time values.

SCL-5127 Extended ObjectTypeBusiness queries with joins to same DB table to use buffer names

The ObjectTypeBusiness has been modified to allow for Static Data Access queries where joins to same DB table now use different Buffer Names.

SCL-5128 Enhanced SecurityObjectBusinessEntity Data Access static queries with joins to same DB table to use buffer names

The SecurityObjectBusinessEntity has been modified to allow for Static Data Access queries where joins to same DB table now use different Buffer Names.

SCL-5131 Added RESTful endpoints for ObjectTypes, Objectmasters and Language

The following entities have now been updated to provide @RestAddress RESTful endpoints, exposing 'record' and 'collection' operations.

  • LanguageBusinessEntity

  • ObjectTypeBusinessEntity filtered on "ObjectTypeGuid".

  • ObjectMasterBusinessEntity filtered on

    • "ObjectMasterGuid, ObjectMasterGuid/Links,

    • ContainerObjectMasterGuid/Pages,

    • ContainerObjectMasterGuid/Instances,

    • ContainerObjectMasterGuid/Links and

    • ContainerObjectMasterGuid/Links/LinkGuid