7.21

Last modified: June 30, 2023

7.21.0

Release date: December 4, 2018

Go to Marketplace

New Features

  • The date search field now supports a custom date format and has a placeholder text property. This aligns the functionality of the date search field with the date picker. In addition, the date picker with a custom date format is now editable. (Ticket 59061)
  • The input streams returned from a storage-service retrieve operation are now tracked until they are closed. Statistics for tracked input streams are exposed by JMX (under the StorageService type). This includes the key that is used during the retrieve and the number of milliseconds the input stream remained open.
  • In Java actions inside published services (REST, web service, and OData), you now have access to the request and response via the IContext API.
  • When you save file documents in S3 or Azure, you can now configure timeouts for connecting to the storage service.
  • In published OData services, you can now choose to publish associations as links. When you choose to do this (in the Settings tab of the OData service), you can publish many-to-many associations.
  • In published web service operations, you can now use HTML markup in the documentation. (Ticket 70250)
  • In published OData services, clients can now use functions when filtering the response. We added support for the following functions: substringof, endswith, startswith, length, year, month, day, hour, minute, and second.
  • In the call REST service action, you can now use a body when using the DELETE method. (Ticket 69441)

Improvements

  • We improved the messages that are logged when there is a problem around version control and the Team Server. To take a look at the logs, click Help > Open Log File Directory.
  • Links from the Marketplace documentation are now opened in an external browser.

Microflow and Association Source Improvements

With this release, we have optimized the data-fetching performance of list views and template grids using a microflow or association source. From now on, if a list view or template grid contains a widget that gets its data over an association (for example, a data view or text box), that associated data will be fetched within the same network request as the main widget’s data.

The performance benefit of this change can be significant, depending on the modeled page. For example, for a page with a list view with one nested data view over an association, the number of sent network requests will go down from list view page size + 1 to just 1. Moreover, this change opens a door for some new modeling possibilities: objects shown in the widgets-over-association can be non-persistable or uncommitted, which previously was allowed only for the objects of a main widget.

With list views and template grids getting such attention, we could not leave data grids behind. So with this release, data grids with a microflow source can finally show a column over an association. There is also performance optimization here, including for data grids using an association source. Enjoy the data grids!

Fixes

  • When a microflow is called from a pop-up window and that microflow deletes an object (or rolls back a never-yet-committed object) of that pop-up, then the Cannot read property 'isDeleted' the JavaScript error occurred. This is no longer the case. (Ticket 70111)
  • Persistable objects that were newly created in an asynchronously called microflow were not sent back to the client, which means they could get lost. These are communicated back now. (Tickets 76599, 76705)
  • We fixed an issue where calling a microflow with a non-persistable entity that had a many-to-many association failed. (Tickets 76577, 76787)
  • We fixed an issue with an exception that occurred when a new enumeration was added or an existing enumeration was selected as the return type of a Java action. (Ticket 76617)
  • We have deprecated MendixHashString.setInitialHash and MendixHashString.setHash in favor of MendixHashString.setValue, which accepts a plain-text password and hashes it.
  • When storing a file, we now always close the passed input stream when the file is stored.
  • The tcploglines log subscriber now reconnects when a closed TCP port becomes available again. Messages sent during the downtime of the TCP port will be buffered (the buffer size configurable via the buffer_size parameter, and the default 10.000). The retry schema uses incremental backoff, and the default uses the Fibonacci sequence (in seconds: 0, 1, 1, 2, 3, 5, 8, …).
  • When retrieving a file, we now automatically close the returned input stream when the last byte is read.
  • Pop-up windows now automatically reposition or resize themselves if dynamically added content causes the pop-up to become too big for the browser window. (Ticket 61524)
  • Scroll containers now always grow to the available space if the other contents of the page have shrunk. (Ticket 67901)
  • When an action button was clicked on Safari, it did not get the focus. We fixed this for you.
  • When a list view was rendering and there was no focused element on the page, the first item of the list view got the focus. This had the side-effect that the first list view item was scrolled into view, which could take you to a completely different section of the page than what you had been looking at. We have fixed this. (Tickets 66441, 68555)
  • We fixed the incorrect handling of dates before 01-07-1937 in the Europe/Amsterdam (GMT+0119) time zone when using Google Chrome. (Ticket 70082)
  • Startup was slowed down due to a password strength check that was done too aggressively to user accounts. This has been resolved. (Ticket 76176)
  • We fixed an issue where a data grid with an association data source and columns showing calculated attributes over an association did not show the correct value of the calculated attributes after the first page. (Ticket 68962)
  • We fixed an issue where templated strings in nanoflows triggered an exception during deployment for certain template values. (Ticket 70036)
  • We fixed an issue in import mapping actions where the parameter field was hidden when no variables of the right type were in scope.
  • We fixed an issue in message definitions where renaming a message definition made mappings using it lose their reference to it. (Ticket 77191)
  • We fixed an issue in the call web service action where a different result type of an operation did not cause a consistency error. (Ticket 69720)
  • We fixed an issue in published REST services where posting to an operation with a find-by-key microflow threw an error.
  • In the Mendix Cloud, you can now specify the web service names and REST host names for which you do not want client certificates using the ClientCertificateUsages custom setting. (Ticket 66497)
  • We removed the Emulate cloud security option from the Desktop Modeler. It gave incorrect errors for older cloud deployments, and it is irrelevant for the current cloud deployment. (Ticket 62223)
  • When you save file documents in S3 or Azure, you can now configure timeouts for connecting to the storage service. (Ticket 68718)

Known Issues

  • Users with non-administrative user roles with the permission to manage users are able to escalate their privileges. For more information on this vulnerability, see SSA-875726 Privilege Escalation Vulnerability in Mendix.
  • In some cases, while doing an error check, the progress bar starts moving and does not stop. This is a user interface problem, as the error check itself finishes properly. (Ticket 69295)
  • There is a problem where it is not possible to commit after merging a branch. (Tickets 78468, 78322, 79166, 78542, 76785, 77955, 77245)
  • In certain situations, the Modeler stops responding to shortcut keys. We are investigating where this behavior is coming from. (Ticket 77902)
  • There is an issue that occurs while exporting and importing individual documents. (Tickets 76928, 77506, 77587)
  • For call web service actions (via the new implementation) and call REST service actions, the (native) memory increases indefinitely, which causes the application to run out of memory eventually. (Ticket 77000)