Skip to main content

 

OutSystems 11 side effects and breaking changes

 

OutSystems

OutSystems 11 side effects and breaking changes

This article applies to:All versions of OutSystems Platform

This document lists the side effects and breaking changes introduced in the different versions of OutSystems 11.

OutSystems is committed to minimizing your effort when upgrading to a new release of OutSystems.

As such, before introducing a breaking change for a new release, OutSystems carefully analyzes its impact, namely, the expected number of occurrences in its customers' installations. A breaking change is introduced only if it affects a small number of customers.

Breaking Changes

Introduced in Platform Server Sep.2018

LifeTime and Service Center

1.

Issue: LifeTime is now only supported when installed in a dedicated environment.

Runtime: Mobile, Web

Rationale: LifeTime now has its own release cycle to allow for better and faster improvements in LifeTime. To achieve this, LifeTime must be run, installed and maintained in a separate environment from the development pipeline environments in customer infrastructures. Check LifeTime release notes and breaking changes.

Workaround: None.


2.

Issue: The following actions are no longer available after uploading an Module in Service Center: "Publish in debug mode", "Publish step by step" and "Publish step by step in debug mode".

Runtime: Mobile, Web

Rationale: These features were removed since they were infrequently used.

Workaround: None.

SMS

3.

Issue: Removed support for the SMS feature. Publishing modules with SMS Flows will fail.

Runtime: Web

Rationale: The built-in SMS feature was removed due to low adoption and since it is no longer aligned with the product vision.

Workaround: Remove any SMS flows from your modules and any related dependencies before publishing them.

Database

4.

Issue: The Configuration Tool shows an error when it detects a previous configuration using MySQL.

Runtime: Mobile, Web

Rationale: MySQL is not supported as the platform database in OutSystems 11 and Configuration Tool will issue an error when it detects a previous configuration using MySQL. MySQL is now only supported as an external database.

Workaround: None.


5.

Issue: Publishing an Module with a text entity attribute whose length is longer than 2000 characters but for which the metamodel says its length is exactly 2000 characters causes an error in Oracle, stating that the column's underlying data type cannot be changed.

Runtime: Mobile, Web

Rationale: There was issue when developers changed the size of a Text attribute from 2000 characters to a larger value. In this case, the platform changed the metamodel for the attribute but not the database column itself, which might have led to data corruption at runtime.

Workaround: Open the Module, find the column, change its size back to 2000 characters and publish the Module.

To check which Moduels are affected, run the following query against your Oracle database:

select distinct esp.name espace, ent.physical_table_name, ent.name entity, eattr.name attribute_name, length 
from ossys_entity_attr eattr
    left join ossys_entity ent on(eattr.entity_id = ent.id)
    left join ossys_espace esp on(ent.espace_id = esp.id)
    left join dba_tab_cols cols on (upper(eattr.name) = cols.column_name and upper(ent.physical_table_name) = cols.table_name)
where eattr.type = 'rtText' and eattr.is_active=1 and eattr.length > 2000 and ent.is_active=1 and ent.is_system=0 and ent.is_external=0 and esp.is_active=1 and esp.name not in ('ECT_Provider') and cols.data_type <> 'CLOB';

Logs

6.

Issue: Joins between log tables and other tables are no longer allowed.

Runtime: Mobile, Web

Rationale: Log tables may now be on a different physical database and in such scenarios it is not possible to do a database join.

Workaround: Use the new additional columns available in each log table or create application logic to replace the previously existing database join. Log entities are now available through the PlatformLogs extension.


7.

Issue: Log entities without "Show Tenant Identifier" will no longer be filtered automatically.

Runtime: Mobile, Web

Rationale: Since logs can now be stored on a separate physical database, it is not possible to define a table as Multi-Tenant, and the platform will not be able to create the filter automatically.

Workaround: Explicitly add a filter by the current tenant identifier using the "Tenant_Id" column.


8.

Issue: Log entities are now only accessible as read-only.

Runtime: Mobile, Web

Rationale: The runtime logging database user has no additional permissions, to prevent log tampering.

Workaround: None.

REST APIs

9.

Issue: Name clashes are now detected in REST structures when attributes have the same "Name in JSON" property value. The TrueChange pane will now show an error in this situation.

Runtime: Mobile, Web

Rationale: Although it is possible that regular structures and structures created from Consumed REST APIs have attributes with the same "Name in JSON", using these structures in Consume REST, Expose REST, JSON Serialize or JSON Deserialize elements causes serialization errors.

Workaround: Change the 'Name in JSON' of the attributes causing the error so that there are no duplicate values.

SOAP Web Services

10.

Issue: Methods in EnhancedWebReferences API to customize consumed SOAP Web Services (all GetWebReference* and SetWebReference* methods) are now deprecated for imported SOAP Web Services created in OutSystems 11 and calls to those methods will be ignored. They can still be used for existing web services, i.e. for SOAP Web Services created in a version older than OutSystems 11 and then upgraded to this version.

Runtime: Mobile, Web

Rationale: In OutSystems 11 there's a new implementation for consumed SOAP Web Services that are created in OutSystems 11, supporting SOAP 1.2 and some additional features. One of the biggest improvements is in terms of extensibility, by providing a powerful API similar to the one available for REST integrations, able to solve more use cases and provide more customization possibilities. Due to this fact, the EnhancedWebReferences API is not compatible with this new implementation and is now deprecated for consumed SOAP Web Services. However, the EnhancedWebReferences API is still the official (non-deprecated) API for customizing exposed SOAP Web Services in OutSystems.

Workaround: Use the SOAP Extensibility API to customize requests of consumed SOAP Web Services created in OutSystems 11.


11.

Issue: Certificates configured in Service Center (Administration > Certificates) can't be used with consumed SOAP Web Services that were created in OutSystems 11. They can still be used for existing web services, i.e. for SOAP Web Services created in a version older than OutSystems 11 and upgraded to this version.

Runtime: Mobile, Web

Rationale: There's a new implementation for consumed SOAP Web Services in OutSystems 11 supporting SOAP 1.2 and some additional features. Along with this implementation, OutSystems provided a new SOAP Extensibility API that can be used to use client-side certificates, among other use cases.

Workaround: Use the SOAP Extensibility API to authenticate requests using client-side certificates in consumed SOAP web services that were created in OutSystems 11. Check the client certificate authentication example provided in the API documentation.

Web Server Configuration (IIS)

12.

Issue: IIS application pools that only have OutSystems applications will have their pipeline mode changed from Classic to Integrated.

Runtime: Mobile, Web

Rationale: Integrated pipeline mode is the recommended pipeline mode for IIS. It should enable OutSystems applications to serve more users concurrently. This helps to avoid the thread pool limits of Classic mode.

Workaround: None. You should check if all the applications in those application pools work in Integrated mode. Issues will only arise if you have included settings that are only applicable to Classic mode in web.config files.

Built-in Functions

13.

Issue: Built-in time and data comparison functions DiffHours, DiffMinutes, and DiffSeconds now ignore the milliseconds.

Runtime: Mobile, Web

Rationale: OutSystems enables you to manipulate time values on a second-level granularity. Some integrations introduce values at the millisecond-level granularity and these milliseconds could not be properly handled by the built-in functions, causing them to return an incorrect value in some cases. Ignoring the milliseconds part in the data values will prevent time manipulation functions from returning possibly incorrect values.

Workaround: None.

JavaScript and HTML Rendering

14.

Issue: Having a JavaScript flow element with asynchronous code in a Client Action that is marked as a function returns an error, and it is not possible to publish the module.

Runtime: Mobile

Rationale: The usage of asynchronous JavaScript code in Client Actions that are marked as functions can have an unpredictable behavior at runtime.

Workaround: Move the JavaScript flow element containing asynchronous JavaScript code to the "On Initialize" event of the screen and store the result you need in a variable of the same screen. In the Client Action, use that variable instead of the JavaScript element.


15.

Issue: Removed 'alt' attribute from the HTML rendering of links in Web Applications.

Runtime: Web

Rationale: This attribute was used for compatibility in old browsers that are no longer supported. The 'alt' attribute only makes sense in image tags.

Workaround: If the 'alt' attribute in any element is still required, it can be inserted using Extended Properties.


16.

Issue: Removed 'scheme' attribute from the rendering of meta elements in Web Applications.

Runtime: Web

Rationale: According to W3C the 'scheme' attribute on the meta element is obsolete.

Workaround: If you are using the AddPostProcessingFilter action of the HTTPRequestHandler extension to add filters that somehow rely on the presence of the 'scheme' attribute of meta elements, you should adapt your source regular expression of the action to improve its handling of optional attributes of meta tags.

Custom Handlers

17.

Issue: Custom Handlers is a folder where you can define custom pages for common runtime errors.
From OutSystems 11 onwards, if a default language is not defined in the Custom Handler folder's web.config file, it will be automatically set to "VB" (Visual Basic).

Runtime: Web

Rationale: To enable application deployment to containers, the Custom Handlers folder is now deployed along with every application (to a sub-folder of the application folder), while previously the Custom Handlers folder was referenced by applications as needed from its location inside the Platform Server installation folder.

OutSystems provides default Custom Handlers pages and some of those default pages include Visual Basic code, e.g. internalerror.aspx. Additionally, if no default language is defined in the web.config file in the Custom Handlers folder, the default language defined in the application's web.config, which is C#, will be used during the Custom Handlers pages' compilation and cause errors.

Workaround: Modify the Custom Handlers web.config file to explicitly state the language used in your Custom Handlers pages.

OutSystems APIs

18.

Issue: Removed deprecated ApplicationManagementService and EnvironmentManagementService APIs from LifeTime Services.

Runtime: Mobile, Web

Rationale: These Web Services were marked as deprecated in OutSystems 10 because the same version introduced new and more complete REST APIs.

Workaround: Change the integrations on your applications to consume the new LifeTime REST APIs.


19.

Issue: Removed the ElementVersionInfo structure from LifeTime SDK module.

Runtime: Mobile, Web

Rationale: It was necessary to perform some changes in the current implementation of exposed APIs due to changes related with the new Reference Model. This included removing the ElementVersionInfo structure, which will not be available in the LifeTime metamodel anymore.

Workaround: None.


20.

Issue: The getFrontendKey() method of the outsystems.api.requestInfo API might return a different key value in OutSystems 11.

Runtime: Web

Rationale: The Frontend Name was made more consistent throughout monitoring and log sources. Since the Frontend Key value is based on the Frontend Name, the value returned by the getFrontendKey() method might also change.

Workaround: None.

Extensions

21.

Issue: Removed obsolete database access APIs from the RuntimePlatform .NET library.

Runtime: Mobile, Web

Rationale: These APIs are deprecated since 9.0 and OutSystems provides alternative ways of achieving the same funcionality.

Workaround: Use the new database access APIs available in the RuntimePublic.Db API.


22.

Issue: The Settings class in the RuntimePlatform .NET library is now deprecated and all methods that allowed you to modify settings inside applications were removed.

Runtime: Mobile, Web

Rationale: Configurations affecting the runtime of applications are now an integral part of an application and can no longer be manipulated in runtime. Additionally, the previously existing classes were internal and not meant for public usage.

Workaround: Any existing extensions taking advantage of this internal class must be modified to stop using it.

Security

23.

Issue: Screen navigation done in HTTPS will not downgrade the protocol to HTTP even when the destination screen is not explicitly marked as requiring HTTPS.

Runtime: Web

Rationale: In previous versions it was difficult to ensure that an application always used HTTPS when some of its screens did not require HTTPS.

Workaround: For those rare situations where you need to redirect the user to an HTTP address, change the application to use an External Site element with an explicit HTTP URL.


24.

Issue: HTTPS is now enforced for all screens and integrations (REST and SOAP) in mobile modules. There is no opt-out from this behavior.

Runtime: Mobile

Rationale: The previous behavior did not make applications secure by default. Exposed SOAP web services were unable to enforce HTTPS.

Workaround: None.


25.

Issue: Image URLs generated in the previous platform versions will no longer be valid.

Runtime: Web

Rationale: The previously existing image endpoint used a shared key across all clients to encrypt the image details. The new endpoint uses the unique private key of each client to encrypt the image details, thus preventing other clients from tampering with the URL content.

Workaround: To keep the old behavior, set the OutSystems.Images.UsePrivateKeyEncryptionForURL parameter to false in the OSSYS_PARAMETER database table.
Note: The support for this setting will be dropped on the next major platform version and the new behavior will be used by default.


26.

Issue: Full SQL commands are no longer displayed to the end-user when an error occurs in a SQL element.
This behavior only occurred in versions earlier than 10.0.723.0; upgrades from a later OutSystems 10 version to OutSystems 11 are not affected by this change of behavior.

Runtime: Mobile, Web

Rationale: Previously, when an error occurred in a SQL element, the error message could be shown to the end-user if the exception was not properly handled. This message would include the query where the error occurred and it would expose some details about the application entities. Now, the error and the query are still logged and displayed in the environment management console, but the end-user will only see a generic error message.

Workaround: None.

System Entities

27.

Issue: Removed the Zone and Zone_Server system entities, as well as the "Zone_Id" attribute from the Espace system entity.
Upgrading a module in Service Studio will remove any dependencies on these entities and attribute. You will get validation errors if these deleted objects were being used.

Runtime: Mobile, Web

Rationale: In OutSystems 11 the concept of Zones has been replaced by Deployment Zones and these system entities and attribute are no longer used.

Workaround: None.


28.

Issue: Removed entities Entity_Usage and Entity_Usage_Sample from the "(System)" reference.

Runtime: Mobile, Web

Rationale: These were internal entities that were not being used.

Workaround: None.

Emails

29.

Issue: Queued emails from disabled applications are no longer processed by the Scheduler Service.

Runtime: Mobile, Web

Rationale: Make the behavior of pending emails consistent with the behavior of newly created emails.

Workaround: None.


30.

Issue: Emails now require that there is at least one server in the Deployment Zone of the module configured to "Send Emails".

Runtime: Web

Rationale: Previously, emails could be sent by any server in the environment, regardless of the module that created them. This broke the isolation between servers, causing misbehaved modules to have impact in the email processing of modules in other servers. This change is also necessary to allow containers to be able to handle their own emails. The new behavior is now consistent with the execution of Processes and Timers.

Workaround: Ensure that there is at least one server in each Deployment Zone that is able to "Send Emails", if it contains modules with Email screens. You can set this configuration in Service Center (Administration > Servers).

Resources

31.

Issue: Changing binary resources now triggers a references update and a recompilation of consumers.

Runtime: Mobile, Web

Rationale: It was possible to change a binary resource in a producer without consumers recompiling the resource after the change. In some cases, this made the resource to be apparently working in the consumer without any issues. However, if developers changed the resource name or its target directory this would cause consumers to break.

Workaround: None. We changed the reference semantics in binary resources: they are now copied to the consumers and will trigger a recompilation when a binary resource is changed.

OSP Tool

32.

Issue: The "Upload" button in OSP Tool no longer publishes the solution.

Runtime: Mobile, Web

Rationale: The "Upload" button was also publishing the solution and not just uploading it, as it should. This behavior was fixed.

Workaround: Click the "1-Click Publish" button to publish the solution.

Mobile Apps

33.

Issue: If you upgrade to OutSystems 11 and you have old mobile apps published before September 2018 your applications will break with an error screen after the upgrade of Platform. Only apps that use App Feedback and that were built before September 2018 are affected by this breaking change.

Runtime: Mobile

Rationale: In OutSystems 11 we introduce new improvements to our App Feedback feature that are not compatible with the older versions of mobile apps.

Workaround: If you haven't generated and distributed mobile apps since September 2018, and the apps have App Feedback enabled, generate those mobile apps again and then distribute them to the users before upgrading.

34.

Issue: If you upgrade to OutSystems 11, and you previously distributed mobile apps that were generated between July 31, 2019 and October 9, 2019, those apps will break with an error screen after the upgrade.

Runtime: Mobile

Rationale: In July 2019 we fixed a Query Parameters issue related to opening apps with deep links. However, this fix broke the upgrade process.

Workaround: If you generated and distributed mobile apps between July 31, 2019 and October 9, 2019, generate those mobile apps again and then distribute them to the users before upgrading.

Mobile Runtime

35.

Issue: Iterating a list recursively throws a runtime error.

Runtime: Mobile

Rationale: Keep the client-side and server-side models consistent between each other, since the server-side code always had this limitation. We introduced this change in OutSystems 11 to prevent breaking changes during the OutSystems 10's release cycle.

Workaround: Change the application logic to ensure that there are no recursive iterations of a list.

Introduced in Platform Server Oct.2019

Issue: Integrations with external databases that use Oracle Database 10g Release 2 will stop working.

Runtime: Mobile, Web

Rationale: We upgraded Oracle Data Provider for .NET, Managed driver to version 19.3.1 (4.122.19.1:20190703) and, according to the official documentation, this driver allows applications to connect to Oracle Database 11g Release 2 or later. This driver supports native encryption, meaning that you can set up your database to require encryption and this means all connections will be encrypted between the server and the database (applicable to both platform and external databases).

Workaround: Upgrade your Oracle engine to version 11g Release 2 or later.

Introduced in Platform Server 11.7.0

Issue: Upgraded SharpZipLib library to version 1.1.0. The new version of the library can cause compatibility problems with custom components used in extensions. For example, when using the OfficeUtils Forge component you must upgrade to a recent version of the component, since it previously used a library version (NPOI 2.2, an Excel reader library) that depended on the previous SharpZipLib library version.

Runtime: Mobile, Web

Rationale: The new version of the library contains several performance improvements and security fixes. It's also a necessary change to be able to use recent versions of third-party libraries, like recent versions of NPOI that have a dependency on this library.

Workaround: This change has an impact on extensions that are using SharpZipLib to read ZIP files, or in extensions using libraries that have SharpZipLib as a dependency (like NPOI). It's recommended that you test any Zip and Excel-related functionalities of your applications after upgrading. If you find any issues, you must change any OutSystems extensions using third-party libraries that depend on SharpZipLib version 0.86.0. In the extensions, update the version of these third-party libraries to a version that uses SharpZipLib version 1.1.0.

Side Effects

Introduced in Platform Server Sep.2018

OutSystems APIs

1.

Issue: BeginReadUncommittedTransaction and BeginTransaction methods from RuntimePublic.Db API are now deprecated.

Runtime: Mobile, Web

Rationale: These methods would crash because connections are already inside the context of a transaction.

Workaround: None.

User Provider

2.

Issue: A Performance Suggestion warning will be added to all modules that do not have 'Is User Provider' set and have the 'User Provider' as 'Current Module'.

Runtime: Mobile, Web

Rationale: It's recommended that all modules specify a User Provider to reduce the amount of work necessary in application's first load times and to avoid communications between applications and the Deployment Controller Service.

Workaround: Determine what should be the User Provider of your factory (by default it should be 'Users') and set the 'User Provider' property accordingly. If a module is supposed to be a User Provider, change the 'Is User Provider' property value to 'Yes'.
Note: It's not recommended to change the User Provider of modules with Processes or Multi-tenant Entities/Timers/Site Properties.

Custom Handlers

3.

Issue: The Custom Handlers directory is now deployed along with every application. Previously, the Custom Handlers directory existed in the Platform Server installation directory and every application referenced it when needed.

Runtime: Web

Rationale: This change makes applications more self-contained in order to enable deployment to containers.

Workaround: None.

Debug Mode

4.

Issue: After turning off the environment Debug Mode configuration, some modules will show a warning saying that they need to be republished, when in fact they do not.

Runtime: Mobile, Web

Rationale: When disabling the Debug Mode for the environment, all modules will have a warning stating that they need to be republished. In fact, the modules that already had Debug Mode disabled do not need to be republished since their configuration matches the configuration of the environment.

Workaround: None.

Solution Publish

5.

Issue: The refresh of references when publishing a solution (when publishing the current running version of its components) in Service Center was reviewed. Publishing the current version of a solution will now only refresh module references when the publish operation is performed in an environment whose purpose is set to Development.

Runtime: Mobile, Web

Rationale: In environments whose purpose is not Development it is important that the actual published versions are kept; refreshing references would create different "fake" versions.

Workaround: Refresh references manually. Alternatively, set the EnableRefreshRefsInSolutionPublish parameter in the OSSYS_PARAMETER table to true to override the behavior for all future solution publish operations.

  • Was this article helpful?