Last update: Edit


Release date: March 3rd, 2021



  • We applied an important security patch that fixed a vulnerability for authenticated users. We strongly advise upgrading your Mendix applications to this version, where the issue has been fixed (or to 7.23.19, where the issue has also been fixed.)


Release date: May 2nd, 2018


Productivity Improvements

Project Explorer

  • We now support selecting multiple documents in the Project Explorer. The selection can be extended by pressing the Ctrl or Shift key while clicking. With multiple documents selected, the following operations can be performed: open, drag & drop, move, exclude/include, delete, and duplicate.
  • We optimized the Project Explorer context menu items for adding documents. Adding a page or microflow is now accessible immediately, and others are grouped in a sub-menu.

Client Logging

We sprinkled some useful logging throughout the client code, which can be inspected in the Desktop Modeler. Just set the log level of the Client log node to Debug or Trace to get some more detailed information on what the client is doing. This mostly concerns data retrieval at the moment.

Nanoflow Improvements

Nanoflows now support templates for Log message and Show validation message actions!

Editor Improvements

After receiving feedback from our users, we optimized the contrast of the canvas in the microflow editor, nanoflow editor, and rule editor. We removed the custom background colors for microflow entity access, nanoflows, and rules. This maximizes the contrast in all of these editors.

However, we wanted to make sure you still can easily distinguish between these documents. So, we replaced the canvas colors with a nice indicator icon in the toolbar. This makes it instantly clear what type of document you are editing. In addition, microflows show an indicator in the bottom-right of the editor to mark entity access.

Generate Overview Pages

When creating an app, you often want to enter some data to be able to test the app. This meant that you had to create a lot of boring overview, edit, and select pages. We can now generate these pages for you, so that you can focus on creating a beautiful app. Right-click a module or entity and select Generate overview pages to let us do the boring work for you.

We now also generate reference widgets when generating new/edit pages or when automatically filling the contents of a data view. The system uses the first string attribute of the associated entity to configure the reference widgets.

Miscellaneous Improvements

  • You can now confirm the New document dialog (opened by pressing Ctrl+N) by double-clicking a document type.
  • We updated the Microsoft Azure Java Storage Client Library from 4.2.0 to 7.0.0.

Published REST Services

We’ve made published REST services a lot more powerful.

The biggest new feature is that you can now use microflows that return an entity or a list as well as use microflows that take entity or list parameters. You will need to specify mappings for them: an import mapping for the incoming request, and an export mapping for the response.

If you use message definitions to define the mappings, you will see that the OpenAPI documentation page contains the structure of the messages. In your microflow, you can decide which type of content the mapping should produce (JSON or XML), or you can leave it up to the client to specify it in an Accept header.

We made these improvements to the way published REST services behave:

  • Mendix now supports more flexible content types, including being able to specify character sets. The only valid character set is still UTF-8, but you may specify that now.
  • When an incoming request is invalid, the client will now receive a 400 Bad Request response.

We made the published REST services screen look better:

  • The lists of resources and operations now grow with the size of the screen.
  • There is a Show button that takes you directly to the microflow.
  • You can see the return type of the microflow in the REST operation.

New Features

  • We added the option to specify the direction of sorting attributes in an index. When sorting data grids on multiple columns, sorting one column on ascending and one on descending can lead to sub-par performance. By adding indexes with descending order, this can be greatly improved. Database types that are currently supported with directional indexes are PostgreSQL, DB2, Oracle, and SQL Server.
  • We added support for the http://www.w3.org/2001/XMLSchema:schema namespace in XSD and WSDL. (Ticket 62780)
  • You can now select read-only attributes in import mappings when you use them in find by key.
  • For an import mapping in a REST operation you can now decide which commit behavior you would like. You can choose to either commit, commit without events, or not commit the imported objects.


  • We fixed many scaling issues in both the page and the document template editors so that they look much better on high-resolution displays. (Tickets 50155, 50159)
  • We fixed the exceptions that occurred when dragging certain widgets onto a document template.
  • We fixed the missing transaction rollback in the case of an error event. Transactions were not always correctly finished with custom error handling after an error event. (Ticket 62671)
  • We fixed an issue causing the client to return more committed objects than needed. (Ticket 54094)
  • We fixed the bug causing a list retrieved by association from an empty object to become unmodifiable. (Ticket 62819)
  • We improved the error logging in the Runtime for requests sent by the widgets. We now include the name of the widget that issued the request in the error message, if that widget can be identified by the request. (Ticket 60343)
  • We fixed an issue where using multiple validation feedback actions on the same object in a nanoflow resulted in showing only the most recent one.
  • We fixed comparing empty lists to an empty literal in nanoflows. (Ticket 62927)
  • We fixed the handling of (empty) cases when configured on an exclusive split in a nanoflow. (Ticket 62897)
  • We fixed an issue where selecting multiple rows at once from a reference set selector did not update the selector’s grid properly. (Ticket 58626)
  • We fixed exporting association values to Excel/CSV in a data grid with an association data source. (Ticket 40211, 49102, 53423)
  • We fixed an issue where an image widget with an on-click action configured to call a microflow was failing to execute while showing a default image. (Ticket 62961)
  • A search field with an XPath constraint containing '[%CurrentObject%]' did not retrieve any results, as the context object was not correctly passed. The context object is now passed correctly, so that '[%CurrentObject%]' can be resolved. (Tickets 61381, 62711)
  • When the XPath constraint of a reference selector, reference set selector, or input reference set selector contained more than one occurrence of '[%CurrentObject%]', they were not resolved correctly, leading to no objects being found. All occurrences of '[%CurrentObject%]' are now resolved correctly. (Ticket 62713)
  • When a commit failed because a before-commit action returned false, a vague error message was shown and no client actions (for example, “Show message”) were executed. Now, no error message is shown, and client actions are executed. (Ticket 60773)
  • A report with a report parameter generated using a Java action as a dataset source was failing, because the report parameter was not passed correctly. That parameter is now correctly passed. (Ticket 61252)
  • We fixed the handling of dates with years from 0 to 99. (Ticket 61281)
  • We fixed an issue where calling a microflow threw an exception when an enclosing object was empty and was used as a parameter. (Tickets 63533, 63703)
  • We fixed an issue where incorrect parameters were passed for a reference set selector on-change microflow. (Ticket 63662)
  • We fixed the display names for properties containing the word “page” in the Desktop Modeler. They started with a lower case character instead of an upper case character.
  • We fixed the microflow editor and domain model editor scaling issues (with the breakpoint icon and required attribute icon, respectively) that appeared when zoomed at 200%.
  • We re-introduced some icons that had gone missing from the tree in the ‘Select Web Service’ dialog.
  • We fixed the “double scroll bar” issue in the the mobile page layout with the “slide-over content” sidebar, which was bigger than the page content. (Ticket 57798)
  • We fixed an issue with the Edit button for multi-selection made via the Select All button. For details on the known limitations of the Select All button in combination with the Edit button, see the Selection Type section of Select All Button in the Mendix Reference Guide. (Ticket 56252)
  • Validation feedback on a reference set selector was shown in the wrong location. This has been fixed. (Ticket 63069)
  • When you used a Select All button with the selection type Select all and passed the selection to a microflow, only the selection of the then-current page was passed when you had a microflow or association data source. We fixed this for you. (Tickets 51104, 60405, 60789)
  • When you had rows selected in a data grid via the Select All button, the selection was not properly reset when using the search bar or when refreshing the dataview that contained the data grid. This has been fixed. (Tickets 38271, 56361)
  • When you used the Select All button to select rows in a data grid and navigated to a different page, the selection was not properly restored when navigating back to the data grid. We fixed this.
  • It is now possible to use conditional visibility to show a widget if the current object is empty. (Ticket 60727)
  • The Generate document microflow activity now accepts expressions of the decimal type for margins, without requiring a conversion to the deprecated float type. (Ticket 55837)
  • In the View Hybrid Mobile App dialog box, the check box for switching between online and offline apps is now also available when you are running in the cloud.
  • We fixed an issue where synchronization failed when creating a new attribute with a unique constraint for an entity, while also changing one of the system members. (Ticket 59926)
  • We fixed an issue where access rules were not applied strictly enough (though this error was corrected later, a warning was still generated). (Ticket 62877)
  • When retrieving data that was sorted on multiple columns of an associated entity, identical joins were generated. In PostgreSQL, this led to errors generated at runtime. We fixed this.
  • We fixed an issue where high loads caused an exception while consuming a REST service. (Ticket 61802)
  • We fixed an issue where a microflow required user roles to be assigned to it even when it was used in a REST operation that did not require authentication.
  • We fixed an issue in REST Publish where we did not use the value of the reason phrase property of the HTTP response that was set in the microflow.
  • We disabled the remote swagger validation. This validated the generated swagger.json using an online validator whenever anyone went the OpenAPI page.
  • We fixed an issue with session authentication for REST services where the user session was terminated after the first request to the REST service.
  • The Mobile Features widget should be updated to the latest version when migrating from a previous Mendix version. It contains an issue that is exposed in this release.

Known Issues

  • List views are not cleared correctly when creating a building block or page template, because the list view templates are not removed. In version 7.13.1, a strict check was introduced that fails the opening of projects that contain a template document with a list view with templates. (Ticket 63507)
  • In some situations, an object associated to another object cannot be committed during the execution of a before/after commit event, resulting in an error such as “Object of type ‘MyModule.MyEntity’ with guid ‘12345’ cannot be updated, as it does not exist anymore.” For example, consider two new objects A and B, wherein A (parent) is associated with B (child) and A has a before- or after-commit event. In this event, B will be changed and committed. If you then commit A, B will be marked as ‘autocommitting’. Because of this, committing B in the before- or after-commit event of A will fail, as it expects A to already exist in the database, which is not yet the case. (Tickets 59099, 59288)