Mendix Studio pro

June 27, 2023
Mendix Studio Pro is our low-code IDE for professional developers. It's a powerful visual model-driven development environment to build apps on the Mendix Platform. With Studio Pro you can easily create, change, integrate, test and deploy your applications, all in one place. Moreover, you can manage branch lines and security as well as extend your app with custom code using the built-in editors. Click 'Download Studio Pro' to get the installer for free (Windows OS required*). Learn more about the installation and the Studio Pro capabilities in our documentation. Not a professional developer? Learn How Mendix supports different developer profiles .Before installing, please read the Release Notes to learn about improvements, bug fixes, backwards compatibility, breaking changes and known issues. *If you are using a Mac, check out these instructions first.
Release Notes - General Availability **Release date: June 27th, 2023** ### New Features * Mendix Solutions Kit is now released for General Availability (GA). This release provides capabilities for protected add-on and solution [modules]( that allow you to have more control over what can be changed in the modules you distribute. In addition, this release includes solution lifecycle management, which enables creating and distributing [adaptable solutions]( to customers so that the consumed solutions can easily be upgraded when you release the next version. * The [Machine Learning Kit]( is now released for GA. * A [Mendix Event Broker license]( is now available for all customers. * We renamed MxAssist Performance Bot to **Best Practice Bot**. Previously, MxAssist Performance Bot functioned as a virtual co-developer bot, assisting developers in enhancing their app's performance by evaluating the app model against Mendix's performance best practices in Mendix Studio Pro. Throughout releases of Mendix 10, MxAssist Best Practice Bot will be expanded to give additional types of Mendix best practices, such as security or naming conventions. This bot will identify development anti-patterns during the app development cycle, locate these anti-patterns, and provide suggestions on how to refactor the app model based on the Mendix best practice. * [Page URLs]( got a major overhaul to support new functionality. Studio Pro now supports multiple page parameters, using attributes other than `Id` in the URL, and placing the variable segment(s) at any location in the URL. * We added new options to the [Aggregate list]( activity. **All** and **Any** are new aggregation functions you can use to check if an expression is true for all or any of the items in a list, respectively. In addition, we addded the **Reduce** aggregation to enable turning a list of values into a single value using an expression. In this expression, both `$currentObject` and `$currentResult` are available to create a new `$currentResult`. Finally, all aggregations that could be used with a specified attribute can now also be used with an expression instead. In this expression, `$currentObject` is available to access the item of the list currently being processed. * We introduced a new nanoflow activity called [Clear from device]( that can be used to clear the objects of an entity from the device database. Objects cleared using this activity are not synchronized with the server database, and references to such objects are not cleared. * We added a new workflow activity and a related microflow activity. You can use the [Wait for notification]( workflow activity to suspend a workflow's execution, and you can use the [Notify workflow]( microflow activity to send a notification to resume the workflow that has been suspended. * We added support for workflow [multi-user tasks]( It is now possible to configure a user task where the same task is executed by a number of users in parallel. A multi-user task is completed by consolidating and evaluating the outcomes of each individual task. Decision methods can be **Consensus**, **Veto**, **Majority**, or **Threshold**. We also added support for the **Auto-assign** and **Who Can Open** options for multi-user tasks. ### Improvements #### Performance Improvements * We improved the performance of editing published web service operations. Operations that expose large data structures no longer cause Studio Pro to become unresponsive upon opening the editing dialog box. (Tickets 179950, 183039) #### Other Improvements * You can now set input parameters as return variables via the context menu. This is based on an idea from Marius van der Knaap. Thank you, Marius! * We reduced the number of cases in the client where a data source is reloaded, even if its container is hidden by conditional visibility at the same time. (Ticket 126149) * We improved the export size of the model. It should now be about half the size in a lot of cases. (Ticket 174121) * We improved data encryption in mobile apps. (Ticket 181442) * We added support for signing in using a macOS external browser. This requires configuration. For details, see the [Configuring Your Windows Virtual Machine for Mendix Studio Pro]( section of *Configuring Parallels*. * We added a column to the [Open App]( dialog box that displays the Mendix Studio Pro application **Version** (including for local apps that are stored on disk). * We added a **Preferences** link to the **Open App** dialog box. * We added tooltips to the **Branch Line**, **Message**, and **On Disk** columns in the **Branch Lines** dialog box that is accessible via **Open App**. * We updated the [Revert All Changes]( menu item to show the **Open App** dialog box if the app is closed after the operation (for example, when the changes include a version change). * We extended the **Work Environment** tab in [Preferences]( with **Studio Pro Theme**. When it is set to **Auto (System theme)**, we automatically detect the color preferences set in an operating system and use the appropriate theme for Studio Pro. You can now also find the **Rendering** settings in the **Work Environment** tab in **Preferences**. * **New merge algorithm with fine-grained conflict resolution** is now the default and only option for conflict resolution in Studio Pro. Therefore, it was removed from the **New Features** tab of the **Preferences** dialog box. * We made **Design mode** the [default editor]( for pages for new users. This does not affect existing installations. The setting can be changed in **Preferences** > **Work Environment** > **Default Page Editor**. * The new **Properties** pane that was introduced in [9.23]( is now the default and only option in Studio Pro. It gives you a good overview of what is going on while making it significantly easier to make changes. * We renamed the **Data Hub** pane to the [Integration]( pane. You can still use this pane to view available data sources and use them in your app. * We added F1 help support to the [Machine Learning Kit]( document and fixed an issue with its **Properties** pane. * We changed the default location for a published OData service to use lower-case. * We removed the **None** button that appeared when selecting an insert, update, or delete microflow for a published OData resource, because clicking it resulted in a validation error. * We now set the variable name of an [Aggregate list]( activity to **Count** by default. * We changed the caption of an empty enumeration value from `(empty)` to `Empty` in the decision outcomes grid for workflows. * We enhanced the [Lock workflow]( and [Unlock workflow]( microflow activities by enabling the selection of the workflow definition (which is a Mendix Runtime workflow object), thus making the activity more reusable. * When creating a new workflow, it is now possible to select a context entity through the creation dialog box instead of adding it afterwards. * We added a button to the toolbar of the workflow editor that enables the export of a workflow to an image. * We added a new way to convert between microflows and nanoflows by right-clicking the microflow or nanoflow in the **App Explorer**. For more information, see the alternative options specified in the [Converting a Microflow to a Nanoflow]( section of *Microflows* and the [Converting a Nanoflow to a Microflow]( section of *Nanoflows*. * We improved the discoverability of exposing microflows as microflow or workflow actions by adding the **Expose as action** option to the context menu of the microflow editor. * We added support for enumerations as an attribute type for [business events]( * For pluggable widgets with a system property Label, **Show label** is now set to **Yes** by default. * Pluggable widgets with a database, XPath, or association data source can now select an entity path from any surrounding data widget. This also enables using them in snippets with multiple parameters. * Configuring pluggable widgets with association properties is now easier. When selecting an association, the selectable object data source is configured with a default database source. Switching from a database to an XPath data source keeps constraints and the selected entity path. * We extended the MxAssist Best Practice Bot recommendation [MXP003]( for a non-indexed attribute used in sorting to the same attribute types as for a non-indexed attribute used in XPath. * We added a new recommendation [MXP016]( to MxAssist Best Practice bot to find the key of an OData source that is missing an index. * We updated the MxAssist Best Practice Bot recommendation [MXP011]( to group recommendations together. There is one group for each stack of deeply nested views. * We added a **Category** column to the MxAssit Best Practice Bot pane. * We added a button to filter MxAssist Best Practice Bot recommendations for documents that are not yet committed to version control. * We updated MxAssist Logic Bot for when a Boolean decision is chosen (at the top level or in a loop) and both the true and false flows are created. * Cloning another branch of a Git app in which you already have a branch on disk now first makes a local copy and then downloads the latest version from the server (instead of completely downloading the branch from the server). As Git always downloads the entire history (whereas SVN only downloads the latest revision), making this local copy significantly speeds up working with branches for Git apps. * We made adding attributes even easier. When adding a new attribute, Studio Pro previously suggested types based on the most common patterns seen in applications. We are now going one step further and also take into consideration the attributes and types already in your app. Studio Pro now also automatically tries to set the enumeration document if the enumeration type is suggested. * We added a new log node called **IDResolution**, which provides more details about certain actions being executed on the Mendix Runtime. * We removed the limitation that stopped you from automatically creating import and export mappings from message definitions with more than 100 attributes. * Data sources for the list view, data grid, and template grid can now select an entity path from any surrounding data widget. This also enables using them in snippets with multiple parameters. * We improved the message that is shown if no suitable argument is available for a parameter mapping (for example, in the **Page settings** of a **Show a page** action). This now includes the expected type of the parameter. * Previously, a single XPath query could result in multiple SQL queries to the database, and if an XPath query was run outside of a transaction (for example, not in a microflow but in a data grid), these SQL queries were run concurrently. This is no longer the case. This simplifies debugging, logging, and tracing. * We added an option to the `mx check` command in the [mx command-line tool]( to output results to a JSON file. * We improved the naming generation in the JSON structure. * In OQL, `Attribute = $Parameter` where the parameter is a collection containing only a `null` now checks that the attribute is `empty`. This now also works with the parameter on the left side. * We added a private market option to the list of available target markets for Studio Pro. * We updated the sign-in response pages to include the new Mendix logo. * We updated the login image shown on startup. * We included dark-mode support for the login dialog box shown on startup. * We updated the style for the **Open App** dialog box, the tab control, the alert control (which displays alerts about merge conflicts), and the selection in text fields. * We modernized the **New Document** dialog box and the message definitions editor to support dark mode. * We updated the style for context menus, controls residing in a toolbar, and button controls. * We updated the style for the following UI components: breadcrumb, button, check box, check box list, date and time selector, drop-down menu, group box, link, loading bar, radio button, scrollbar, splitter, stepper, label, text editor, text field, and tooltip. * We updated the colors used in the microflow editor, dialog boxes, and tree and grid controls. * We made the drop-shadow style of various UI components more consistent. * We updated the icons of message dialog boxes. * Tree and grid control rows are now highlighted when you hover over them. * We added the ability to select the text in read-only drop-down controls. * We reduced the number of default panes in the default layout of Studio Pro. * We aligned the horizontal indentation of the text in the column headers and cells in the data grid and tree controls. * We made it possible to use the scrollbars in disabled grids. * We added the `IMxRuntimeRequest.getRootUrl` method to the [Mendix Runtime API]( This method can be used to retrieve the root URL of the application. * We added `getSslContext` to the `IHttpConfiguration` interface in the Mendix Runtime API. This gives the Java code access to the `SslContext` that should be used to call a service based on the Mendix Runtime settings. * We added default values for the `ProcessedTasksCleanupAge` and `ScheduledEventsCleanupAge` Mendix Runtime settings. The default value is now 365 days for existing apps with data and 7 days for new apps or apps with an empty database. Previously, the default values were empty and required an explicit Mendix Runtime setting configuration in order to perform cleanup. * We introduced the new Mendix Runtime setting `StrictChangeBehaviour`. This setting is enabled by default. When this setting is enabled, trying to set an invalid value for an enum or a value for a calculated attribute will throw an `InvalidEnumerationValueException` or `ReadOnlyAttributeException` response, respectively. ### Deprecations * We are deprecating the **Import Web Service or XML Schema** wizard that is accessible in the domain model editor when you click **Import web service/XML file**. This functionality will be removed in Mendix 10.6. * All SVN support has been removed. For more information, see [How to Migrate to Git]( * For published OData services, publishing OData version 3 is deprecated and will be removed in a future release. Use OData version 4 instead. * We deprecated deploying directly to Cloud Foundry from Studio Pro. The functionality will be removed in Mendix 11. * We removed deprecated methods from the Mendix Runtime API and the M2EE API. * We deprecated the `Counters`, `Gauges`, `Sets`, and `Timers` interfaces from the Mendix Runtime API. These will be removed in Mendix 11. * We removed the deprecated `com.mendix.core.UseMimeDecoderForBase64` Mendix Runtime setting. Base64 decoding is now always strict, as specified by RFC 4648. * We removed the deprecated `rollbackTransAction()` method from the public `IContext` interface. Use `rollbackTransaction` instead. * We increased the default BCrypt cost factor from 10 to 12. A BCrypt cost factor below 12 is deprecated and will be forbidden in a future release. Use a BCrypt cost factor of at least 12. ### Breaking Changes #### Various Breaking Changes * The `parseDateTime\[UTC\]` microflow functions now use [strict parsing]( by default. To revert to lenient parsing, set the `com.mendix.core.LenientDateTimeParsing` custom Mendix Runtime setting to `true`. (Ticket 169612) * When committing multiple objects, the order that **Before Commit** and **After Commit** events are executed may have changed. This order was already documented in [Event Handlers]( to be unspecified, and it should not be relied on. * We have made changes to the DOM structure of the web client to ensure compatibility with future versions of React. A `div[data-widget-wrapper]` element will be placed around a React widget if its container is rendered as a Dojo widget, while the extra `script` element for such widgets has been removed. This added `div` element should not affect the page layout directly (as it uses `display: contents`), but it may affect CSS styling that relies on direct child (`>`), sibling (`+`), or `nth-child` selectors. * We updated the icons in Atlas and widgets to use the new set of Atlas icons that we released with Atlas Core 3.11.0. This means that new class names are used in the DOM. Therefore, if custom styling relies on the glyph icon class names, this may need to be updated. * We removed the deprecated reporting category widgets. Any reporting category widget in an existing app now triggers a consistency error. * We removed the deprecated direct function calls from the Pluggable Widget API for [linked property values]( * To make it possible for a multi-user task to have multiple assignees, we renamed the **WorkflowUserTask_Assignee** association to **WorkflowUserTask_Assignees**, and this is a reference set from now on. * For published OData Services, Studio Pro now gives a consistency error when the exposed name of an attribute or association is the same as the exposed name of its entity, because that is not valid according to the OData standard. * The validation of exposed names in published OData services now follows the OData standard more closely, with 128 characters being the maximum length for OData version 4 services. * We no longer support using DB2 as the database for applications. * We upgraded the SQL Server JDBC driver to version 12.2.0. Since version 10, the driver uses TLS encryption by default. You can turn off encryption by setting `DatabaseUseSsl` to `false` or by setting `encrypt=false` in `DatabaseJdbcUrl`. * An XPath constraint of the form `[$objectVariable/BooleanAttribute]` (where the microflow variable is not set) used to be ignored. Now, it is treated as `[false()]`. * In OQL, using a path with an association in the `ON` clause of an `OUTER JOIN` is no longer allowed. * In OQL, comparing an attribute to a collection parameter can only be done with the `IN` or `=` operators (as in, `Attribute IN $param`). * In OQL, clauses like `Attribute = $RangeParameter`, `Attribute > RANGEBEGIN($RangeParameter)`, and `Attribute < RANGEEND($RangeParameter)` with an infinite range (from `null` to `null`) used to be ignored. Now, they are treated as `true`. This makes a difference when the clause has `OR` with another clause. Similarly, `Attribute < RANGEBEGIN($RangeParameter)` with a range starting with `null` or `Attribute > RANGEEND($RangeParameter)` with a range ending with `null` are no longer ignored, but treated as `false`. * Duplicate column names in an OQL query are no longer allowed. * Mendix no longer supports responding with custom reason phrases. This has the following effects: * We removed `com.mendix.m2ee.api.IMxRuntimeResponse.setStatus(int, String)` from the Runtime API. * Published REST services no longer allow for returning a custom reason phrase. When an operation microflow sets the `ReasonPhrase` attribute of the `System.HttpResponse` parameter, that value is now ignored. * Legacy scheduled events (meaning, those that are non-repeating or have a start time) are no longer supported. Mendix Runtime will fail to start if legacy scheduled events exist. * In Mendix [9.0](, we removed support for Mendix Runtime uniqueness validation in preference of database uniqueness validation. There was still a custom setting to use the old behavior. This setting has now been removed. * We are more strict in the URL formats we accept at the Mendix Runtime server. We no longer allow empty path segments (meaning, `//`, as in ``), ambiguous path segments (``), or UTF-16 encoding (``). * We upgraded `` from `2.3.6` to `4.0.1`. As a result, the `SOAPFaultException` that may be thrown by consumed web services is now in the `` namespace. * We removed the deprecated metric types `statsd` and `logger`. Mendix now only supports Micrometer metrics. Correspondingly, the only valid value for the `com.mendix.metrics.Type` Mendix Runtime setting is `micrometer`. We also removed the following legacy StatsD Runtime settings: `com.mendix.metrics.Host`, `com.mendix.metrics.Port`, `com.mendix.metrics.Items`, and `com.mendix.metrics.FlushTime`. You can use the `Metrics.Registries` Mendix Runtime setting to configure a StatsD registry instead. * We removed the request metric `mx.runtime.stats.handler.requests.[name]`, where `name` is the request handler name. This metric was replaced with the metric `mx.runtime.stats.handler_requests`, with the request handler name added as a tag. * It is no longer possible to call `clear()` on the list returned by the `IDataTable.getRows()` API function. The list returned by `subList()` is no longer modifiable. * Instances of `IDataTable`, `IDataTableSchema`, and `IDataColumnSchame` no longer provide equality. As of now, `equals()` and `hashCode()` are based on object identity. * We changed the MIME type returned for *.js* files from the legacy `application/javascript` to `text/javascript`. * We removed the deprecated error constants from `AdminException` and `IMxRuntime`. * We removed the deprecated `IActionRegistrator#bundleComponentLoaded` method. #### Generated Code Changes * The public constructors of generated constant and microflow proxy classes are now private, and the classes are marked final to prevent instantiation and derivation. * Entity and list of entity parameters in Java actions are now initialized in the constructor, and the accompanying `__[FieldName]` field is generated as deprecated. To get access to the `IMendixObject` variant, call the `getMendixObject()` method on the field (or items in the list in case of a list). * The `initialize(IContext, IMendixIdentifier)` and `getGUID()`methods on generated entity proxies are no longer generated. * We introduced the Mendix Runtime setting `ObjectManagement.StrictChangeBehavior` (formerly known as `StrictChangeBehaviour`), which is enabled by default. When enabled, trying to set an invalid value for an enumeration or a value for a calculated attribute throws an `InvalidEnumerationValueException` or `ReadOnlyAttributeException` response, respectively. We plan to remove this setting in Mendix version 11, after which, an exception will be raised when setting an invalid value. * We changed the exception type from `CoreRuntimeException` to `ReadOnlyAttributeException` that occurs when trying to change a virtual method through `setValue`. * The public constructors of the generated `Constant` and `Microflow` proxy classes are now private, and the classes are marked final to prevent instantiation and derivation. * The fields in Java actions are now generated as final fields. * The `Entity` and `List of Entity` parameters in Java actions are now initialized in the constructor, and the accompanying `__[FieldName]` field will be generated as deprecated. To get access to the `IMendixObject` variant, call the `getMendixObject()` method on the field (or items in the list, in case of a list). * We changed the exception type from `CoreRuntimeException` to `ReadOnlyAttributeException` that occurs when trying to change a virtual method through `setValue`. ### Known Issues * The algorithm for detecting conflicts during the migration of workflows with active multi-user tasks is currently too rigid and will not allow a conflicted user task to be continued in certain cases. In a future release, we will provide better migration scenarios where workflows with conflicted multi-user tasks can be continued. These are the situations in which a multi-user task is marked as **Incompatible** without continue: * The type of decision method (as in, **Consensus**, **Majority**, **Threshold**, or **Veto**) is changed. * A **Majority** decision method is changed from **More than half** to **Most chosen**. * A **Threshold** decision method is changed from **Percentage** to **Absolute number** or vice versa. * The **Percentage** or **Amount** value for the **Threshold** decision method is lowered. ## 10.0.0 Betas The Beta program for Studio Pro 10 has ended, which means that the Studio Pro 10 Beta versions are no longer available to download. In addition, apps created in the Studio Pro 10 Beta versions that are converted to version 10.0.0 General Availability can no longer be opened in the Beta versions. * We mitigated [CVE-2022-34716]( by updating third-party dependencies. This CVE does not pose any apparent risk for Mendix customers. * We mitigated [CVE-2023-29017](, [CVE-2023-30547](, and [CVE-2023-32314]( by upgrading the vm2 library. These CVEs do not pose any apparent risk for Mendix customers. * We fixed an issue where a pluggable widget with a [widgets]( property linked to a data source and an [image]( property configured as a dynamic image was rendering incorrect data. (Ticket 117735) * The `weekday-from-dateTime` XPath function and the `DATEPART(WEEKDAY, ...)` OQL function now return the documented values of `(1 = Sunday, 7 = Saturday)` for all supported databases. (Ticket 130641) * We fixed an issue where the debugger caused an error and disconnected after 30 seconds of inactivity. (Tickets 151937, 169696, 175161, 175542, 178553, 180332) * We fixed an issue where it was possible to add a path after a non-object variable, which led to issues in a running app. (Tickets 171893, 172495) * We fixed a memory leak that occurred when opening pages. This caused issues after opening thousands of pages. (Ticket 172126) * When a database transaction for a microflow does not perform any database operation for 10 minutes, it is automatically aborted. When the same microflow then does another database operation, this previously silently started a new database transaction, losing the earlier updates. Now, the microflow results in an error. (Ticket 174408) * We fixed an issue where non-localized date/time attributes in XPath constraints were not handled correctly, producing incorrect queries. (Ticket 176850) * We adjusted consumed OData services to use query options in the request body when the given service is configured to do so and pagination with `@nextLink` takes place. (Ticket 176976) * We fixed an issue in the domain model editor where an element outside the boundaries of the current view was not scrolled to when there was navigation via [Go to options]( (Ticket 178829) * We fixed an issue where an object validation was removed incorrectly. (Ticket 180011) * We fixed an issue where the language-sensitive parts of pages were not fully updated when you changed the language via the [Language Selector]( widget. (Tickets 180130, 180670, 180824, 181274, 181713, 181974) * We fixed an issue that occurred when opening multiple modal pop-up windows at the same time and it was not possible to focus widgets in the pop-up widget that was on top. (Ticket 180137) * We fixed an issue where a domain-level validation message could not be translated. You can now use the `mendix.lib.Validations.field_issue` system text to translate and change this message. (Tickets 180448, 181175) * We fixed an issue where objects were garbage-collected for pages with multiple page parameters. (Ticket 180470) * The results of [Find Usages]( now include enumeration values used for conditional visibility. (Ticket 180727) * We fixed an issue where the `originURI` cookie could not be read when using the default `index.html`. (Ticket 181106). * We fixed an issue where an inherited association could not be published in a published OData service that used links as object IDs. (Ticket 181474) * We fixed an issue in XPath constraint suggestions that gave incorrect suggestions when there were whitespace characters after comparison operators (`=`,`<`,`>`,`<=`,`=>`,`!=`). (Tickets 181673, 181908) * We fixed a crash that occurred during login that blocked some users from logging in. (Tickets 181864, 183014) * We fixed an issue where an application with excluded *.jar* files failed to deploy. (Ticket 181931) * We fixed an issue that caused the attribute of conditional visibility settings or the text template parameters of a button inside a reference set selector to not be selectable, which resulted in a consistency error. (Ticket 182203) * We fixed an issue where published REST and OData services created a session for a web service user when the custom authentication microflow returned such a user. This is unsupported (web service users should only be used for published web [SOAP] services), so it led to these sessions not being cleaned up properly. This scenario now results in a "500 Internal Server Error." (Tickets 182579, 187479) * We fixed an issue in the OpenAPI contract of published REST services where operations that used an import mapping had a schema defined for the other parameters but not the type. (Ticket 182615) * We fixed an issue in the OpenAPI contract of published OData services where `GET` operations no longer specified the `$expand` parameter when there were no associations to expand. (Ticket 182627) * We fixed an issue where importing a file from a version below [9.24]( caused many errors to appear. (Ticket 182860) * We fixed an issue where attribute widgets (for example, a text box) did not trigger a consistency error if the selected attribute had an invalid source, causing an error when deploying the app. (Ticket 183379) * We fixed an issue with getting the device name as the phone's factory name in mobile apps. (Ticket 183392) * We fixed an issue where deployment failed on the Linux operating system when module names contained upper-case letters. (Tickets 183841, 183872) * We fixed the colors of the term `empty` and the symbol `-` in the XPath constraint editor. (Ticket 183998). * We fixed an issue where no error message was shown when an update of a Mendix Marketplace module failed. (Ticket 183507) * We fixed an issue that occurred when a nanoflow retrieved a non-persistable entity over an association and the entity had an event handler. (Ticket 183879) * We fixed an issue with dojo widgets that caused custom icon collections not to work. (Ticket 183996) * We fixed an issue in published REST services where publishing two REST services on the same location caused a consistency error. (This was not a problem where services did not publish resources and operations that resulted in the same operation URL.) (Tickets 185087, 185423) * We fixed an issue in published REST services and published OData services that use a combination of custom authentication and another authentication type. When the custom authentication does not authenticate the user but a subsequent authentication type does, the operation was previously unable to read the body of the request. (Ticket 185790) * We fixed the issue where the **Documentation** pane did not show the documentation corresponding to the selected element in certain conditions. (Ticket 185876) * We fixed an issue where the compilation of Java actions failed when annotation processors were used. (Ticket 186516) * We fixed an issue where clicking **Load more** on a list view triggered the on-click event on a surrounding widget. (Ticket 365439) * We fixed the documentation links in Studio Pro so that they point to the correct version 10 sections. * We fixed the [Create object]( activity so that it now produces a consistency error when committing an external object. * We fixed the possible race conditions between microflow actions on the same workflow instance. * We fixed an issue where a nanoflow could not be debugged if it was created while the app was already running. * We fixed an issue where the nanoflow debugger did not stay paused after 30 seconds. * We fixed an issue where the workflow user task on-state-change microflow did not run again when the state changed to failed due to a prior execution error in the same event-handling microflow. * We fixed an issue where the outcome selector dialog box for a completed workflow user task activity showed duplicate outcomes. * We fixed an issue that occurred when the Machine Learning Kit mapping document was moved and the underlying ONNX file was not copied to the new location. * We fixed an issue where the ONNX file for an app using the Machine Learning Kit disappeared after deployment. * We fixed an issue where MxAssist Best Practice Bot did not skip disabled microflow actions. This did not cause any false positives, but it caused some best practices to output no results for some apps. * We fixed an issue where exporting recommendations from MxAssist Best Practice Bot included suppressed recommendations. * We fixed an issue in the OpenAPI contract of published OData services where the server URL contained a double slash. * We fixed an error that occurred in OData services when the user had no access to an entity's association and there was an attempt to change its value. Mendix Runtime used to produce a response with the status 500, and now this is an error response with the status 422. * We fixed the missing line breaks in the **Metadata** property of the consumed OData services properties pane. * We fixed an issue that occurred when adding external entities to an app where the generation of enumerations caused an error. * We fixed an issue in published web services where editing an operation that had a parameter and/or a return type that had been removed caused an error. * We fixed an issue that triggered a consistency error on a text template of a pluggable widget inside a snippet with multiple parameters if the template had parameters based on an attribute. * We fixed an issue where expressions in pluggable widgets were not updated correctly when renaming an element (like a module or an entity), which caused consistency errors. * We fixed the functionality of the **Collapse All** button in the tree control. It now collapses all the nodes in the tree, even when there is only a single root node in the tree. * We fixed an issue that caused the warning pop-up window for the [inline snippet]( action to mention the same affected widget multiple times. * We fixed an issue that caused the inline snippet action to crash if the surrounding data widget was not configured. * We fixed a styling issue in disabled check box controls. * We fixed an issue with text controls where the text was sometimes undesirably reverted. * We fixed an issue where the text editor control did not have a border in dark mode. * We fixed the icon styling in the auto-complete pop-up window of the text editor control in the dark mode. * We fixed an issue in the grid control where selecting multiple cells using Shift was inconsistent when clicking on the interactable control itself in the cell (meaning, the check box). * We fixed an issue with the border color of selected cells in the grid control. * We updated the building block image requirements to a PNG image that has the dimensions of 432 x 192 pixels. When the image is too large to fit into the **Toolbox**, it is downscaled. * We aligned the behavior of aggregates in grids with attribute columns. * We fixed the tooltips that were not displayed for disabled toolbar buttons. * We fixed an issue where the navigation editor's width changed upon performing UI updates (for example, toggling a check box). * We fixed an issue with the search field where multiselection did not work correctly with numeric attributes. * We fixed an issue with the rendering of custom app icons in the **Open App** dialog box. * We fixed an issue where the **Commit Message** field was not focused upon opening the **Commit** dialog box. * We fixed an issue where a page parameter triggered a warning that it was unused if the only reference to that parameter was inside an XPath constraint. * We fixed an issue where a page parameter did not trigger a warning that it was unused if the parameter mapping of an action or data source pointed to an object of the same entity as the parameter. * We fixed an issue where creating a non-persistable entity led to errors when attributes were read-only. * We fixed a Mendix Runtime error that occurred when a microflow was no longer being used in an app after doing a hot reload in Studio Pro. * We fixed an issue where the status of `ScheduledEventInformation` was `Completed` when the associated scheduled event failed. * We fixed an exception in the XPath constraint editor that was thrown when the list of autocomplete suggestions was open and an erroneous character was being typed. * We fixed an issue in XPath constraint suggestions that gave incorrect suggestions when there were multiple predicates (meaning, expressions between the square brackets [`[`, `]`]). * We fixed an issue that occurred with PostgreSQL and Oracle databases where the `DATEDIFF` function in OQL calculated the difference in calendar weeks, which was inconsistent with other databases that calculate the difference in full weeks. * We fixed the issue where the `DATEDIFF` OQL function in Oracle threw an exception when calculating a difference in seconds. * The return type of the `round()` function with the second parameter now always returns a Decimal, even if the precision is 0. * The `ceil()`, `floor()`, and `round()` functions with a single argument now throw an exception if the result cannot be represented as an Integer/Long (for example, due to overflow).