This release added a new Validation Framework for validation records, Read this for more information on the new methods, table events and javascript objects that are added for this.

Some api additions like i18n.getCurrencyFormat() and databaseManager.flushCalculations(datasource,boolean, calculationName)

Profiler did get some improvements for better display of long queries and be able to copy the query to the clipboard.

The new FormEditor now shows the translated i18n values instead of just the keys.

Performance improvements for big solutions with many FormComponents at runtime and in developer.

The developer now uses  by default (clean install) a different port as 8080 (defined in [install]/application_server/conf/server.xml) because of many collisions with other products:

change the http port from 8080- > 8183
change the shutdown port from 8005 -> 8006
disabled the ajp poort (8009)

Also it will warn now the user that we do find something else (or another developer) on the port that we expect to be on at startup.

ViewFoundSet/ViewRecord is now more inline with the normal foundset api when it comes to editing/failed records (including the new validation framework)

The builder is improved to detect better methods links to elements that are not really correct (pointing from 1 form to the other), so it can be that you suddenly have errors like:

Property "onActionMethodID" from element "btnBuildNow" in form "jobConfiguration" is linked to an entity that does not exist.

Tomcat is updated from 8.5.50 to 8.5.57 (internal in developer and the one in application_sever)


Possible breaking changes


media urls generated in servoy for dynamic data (FilePlugin.open/writeFile and the serverside scription servoyapi.getMediaUrl) are now only accessible by the same session.
So those urls can't be shared and send to other users to download stuff.

The new Validation Framework has also some side effects for column validation, see Side Effects on that wike page.

When making new tables with uuid pk columns the default will now be DB Native (UUID) when that is supported (Postgresql and SQLServer), this can be changed in the preferences.

a small fix in the RestWS if a "application/x-www-form-urlencoded" was send to the server then the content was not a JavaScript array
It is now, but anybody that worked around this (contentparam.get(0) instead of contentparam[0]) needs to undo this workaround.

If you still use the application server directly instead of WAR then the web.xml file from application_server/server/ROOT/WEB-INF/ must be adjusted to not get an exception on startup:

 <filter>
      <filter-name>SeparateSessionFilter</filter-name>
      <filter-class>org.sablo.filter.SeparateSessionFilter</filter-class>
      <init-param>
      <!-- Separate sablo request from non-sablo (web client), only invalidate session when both are invalidated -->
         <param-name>paths</param-name>
         <param-value>/rfb/:/websocket/:/solutions/:/spec/:/resources/</param-value>
      </init-param>
   </filter>

    <filter-mapping>
        <filter-name>SeparateSessionFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

Remove those lines (are on different locations in the web.xml file). This is also true for the 2020.2.1 LTS and 20206.1 releases.