Mendix Studio pro
11.0.0
Stable
June 26, 2025
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 26, 2025**
### New Features
- We introduced a new starting point in Studio Pro: **Start with Maia**. This feature helps you kick-start the app development process. Based on a required text description and an optional image or a PDF, it generates an app that includes a domain model, data management overview pages, test data, and a tailored homepage. For more information, see [Start with Maia](https://docs.mendix.com/refguide/start-with-maia/).
- We added the **Maia for Workflows** where users can generate workflows by text and image prompts.
- We introduced a new message for Maia generation sessions. It allows to either navigate back to the document related to a session or create a new **Generate** session for the currently active document.
- We updated the filter button in the **Go to...** dialog to show active filters if any.
- In the logic editors, pressing Shift while dragging objects from the **App Explorer**, **Toolbox** or the toolbar will disable snapping the objects to other objects.
* We released workflow interrupting [boundary events](https://docs.mendix.com/refguide/workflow-boundary-events/) for general availability (GA). With this new type of boundary event, the workflow can interrupt modeled flows when the timer has expired and start an alternate flow.
* We now support recurrence on non-interrupting boundary events. You can set an initial execution time, specify how many times the boundary event should recur, and define the interval between executions, which can range from minutes to months.
* The feature to access online data in offline apps is now generally available. For more information, see [Offline-First Data](https://docs.mendix.com/refguide/mobile/building-efficient-mobile-apps/offlinefirst-data/#intro).
- We introduced the OQL Query, a user-friendly interface that represents a view entity and enables users to define and manage OQL queries.
- We enabled native mobile builds for PMP customers.
- We updated the version of Mendix apps that can be opened with Mendix 11.0.0 and above. Now to open (and if necessary to convert) an app in Mendix 11.0.0 and above, the app should be Mendix version 10.21.0 or above.
* You can now use the Back and Forward mouse buttons to navigate through the history of active editors in Studio Pro—if your mouse has them.
* We added support for retrieving the CSRF token using the new client API. You can now use `getCSRFToken` from `mx-api/session` to get the token, which is required when calling secured REST services.
* We added a selector to the **Edit view entity** dialog that allows you to specify a user for who you want to see the live preview. This allows you to preview queries that use the `[%CurrentUser%]` token.
* The React client is now set as the default client when creating a new application in Studio Pro.
* We enabled the **OpenAPI Documentation** pane for Published REST services. Similar to the Published OData service experience, this pane assists you in building the REST service by previewing the resulting OpenAPI document.
* The External Database Connector now supports executing anonymous blocks on databases that allow this feature.
* You can now use the **mx tool** to see which private values Studio Pro has stored on you local app data, and delete these values.
* We added a CLI command to `mx.exe` to export the **Security Overview** to both JSON and XLSX formats. You can use `mx export-security-overview --export-format [json|xlsx] [--exclude-appstore] [--output-file OUTPUT_FILE_PATH] PROJECT`. The `--export-format` option specifies which export format to use, either `json` or `xlsx`. The optional `--exclude-appstore` flag can be used to exclude Marketplace modules from the export. The `--output-file` option specifies to which file the export should be written. This option can be omitted when exporting to JSON, in this case the output will be printed to the console. The `PROJECT` placeholder should contain the path to the *.mpr* file of the project.
* We added a new option **Contact Support** into the **Help** > **Support Tools** menu. This allows users to reach Mendix's support website directly from Studio Pro.
* We enabled history navigation to use arrow keys by default, and moved the navigation settings to the **Work Environment** tab.
* When opening an existing app in Studio Pro, it now automatically converts to the MPRV2 storage format. For more information, see the [Mendix MPR storage](https://docs.mendix.com/refguide/version-control/#mpr-format) section in *Version Control*.
* MPRv1 apps need to be converted to MPRv2 to be able to commit for *.mpr* files larger than 250MB. By default, conversion to MPRv2 happens automatically.
* We changed **port fix** to **cherry pick** to be more aligned with Git, and added recognition of cherry pick and revert operations to the top bar.
* We introduced the OQL Query interface, a user-friendly feature that represents a view entity and allows users to define and manage OQL queries more intuitively. Additionally, this interface comes equipped with a new AI feature, Maia for OQL, making it easier to write, preview, and maintain OQL queries directly within the platform. For more information, see [View Entities](https://docs.mendix.com/refguide/view-entities/) and [Maia for OQL](https://docs.mendix.com/refguide/maia-for-oql/).
* We introduced a new API for showing modal dialogs from web extensions. It is available under `studioPro.ui.dialogs` in the web extensibility API.
* We introduced a new feature that allows users to add the app folder to the Microsoft Defender exclusions list.
* We introduced a new API for accessing user preferences from web extensions, which retrieves the user's selected theme preference (light or dark) and language settings (for example `en-US`). It is available under `studioPro.ui.preferences` in the web extensibility API.
* We introduced a new API for showing notification popups from web extensions. It is available under `studioPro.ui.notifications` in the web extensibility API.
* We now import only one content-type header from the OpenAPI contract in the Consumed REST service. This feature is in Beta.
### Improvements
- We improved the validation of the default value for an AutoNumber attribute in Studio Pro. It now allows values larger than 2,147,483,647. (Ticket 240734).
* The text in the dialog displayed when a page cannot be found is now translatable. (Ticket 242035)
* We improved the performance of workflow versioning conflict analysis for workflows with many nested outcome-based activities. (Ticket 242615)
* We added error logging when a page fails to be loaded in the React client when navigating to it. This can happen when a page includes a widget with a corrupted bundle. (Ticket 245516)
- We moved all Maia-related preferences from the **New Features** tab to the **Maia** tab, under a new section called **Generative AI**.
- We improved the startup performance of task queues. Pending tasks will now be validated when they are executed instead of at startup.
- We added extra keywords to the OQL grammar. These terms cannot be used unquoted as identifiers. The new keywords are `DELETE`, `INSERT`, `REPLACE`, `UPDATE`, `UPSERT`, `INTO`, `SET`, `VALUES`, `IGNORE`, `MATCHED`, `DUPLICATE`, `KEY`, `CONFLICT`, `MERGE`, `USING`, `SOURCE`, `TARGET`, and `WITH`.
- We integrated the modernized access rules editor into the entity **Properties** pane.
- When the **Keep active document selected the App Explorer** preference is enabled, the modernized App Explorer will keep the currently active document selected.
- We updated Studio Pro to download the data of the current sprint only when the **Stories** view gets opened.
- We added support for Brazilian Portuguese to Studio Pro.
- We improved the messages that Studio Pro shows when running an OQL query in view entities. There are now clearer messages when the app has not fully started yet and when the query refers to `[%CurrentUser%]` without specifying the user.
- We relaxed the restriction that entities with an online synchronization mode could not refer to entities with an offline synchronization mode. It now only prevents XPath constraints in pages and nanoflows that mix entities with online and offline synchronization modes allowing more modeling possibilities.
- When [tracing](https://docs.mendix.com/refguide/tracing-in-runtime/) is enabled, traces now include spans for all Microflow activities.
- We bundled OpenTelemetry agent jar with Studio Pro. It can be found under `runtime/agents/opentelemetry-javaagent.jar`.
- We provided the **Enable Tracing** option to enable runtime tracing in Studio Pro. It can be accessed through **App Settings**. For more information, see the [Minimal Configuration](https://docs.mendix.com/refguide/tracing-in-runtime/#min-configuration) section in *Tracing*.
- We no longer close the response writer of custom request handlers, if an asynchronous request is started. With this change it is possible to implement asynchronous request handlers.
- We implemented an OpenTelemetry agent extension that provides default settings. It can be found under `runtime/agents/mendix-opentelemetry-agent-extension.jar`.
- We now add consistency warnings if there are multiple versions of the same Java dependency in your app.
- We changed the reason phrase for the OData HTTP status code 422 to *Unprocessable Content*, as defined in https://www.rfc-editor.org/rfc/rfc9110.html#name-422-unprocessable-content.
- When importing a module, widget, solution package or when starting a new app from a template, we now prevent the package from unpacking content to undesired directories. The user can still choose to extract the rest of the package.
- We now highlight an access rule that is opened from the **Changes** or **Error** pane in the modernized entity access rules editor instead of directly opening it.
- We improved the Java API for implementing CSP in modules. The configuration API has been expanded with `getHeader` and `getCustomHeaders` methods for interacting with custom headers and we added a CSP API to the `Core` class that contains the `getTemplate`, `getNonce`, `hasNonce`, and `addHeader` methods. See our Java API docs for more details.
- We improved error reporting for React client. Now you can see JS actions and widgets related errors directly in Studio Pro without having to open application logs.
- We aligned the preview values of page and snippet variables between structure and design mode.
- We made it easier to use widget action variables when configuring parameter mappings for **Call a Microflow** and **Call a Nanoflow** actions.
- We changed the default **Role Type** in the **Accessibility** section of **Properties** from the **Link Button** to **Link.** This **Role Type** was set to **Link Button** by default while functionally it is a link.
* In the Consumed REST Service, it is now possible to define the body content in different ways. You can select **Create Entity (JSON)** that allows you to convert the JSON file to an entity and use that as input for your **Send REST Request** activity. You can also select **Use as template** to send text content. Parameters in the text are supported by surrounding them with curly braces, for example `{my_param}`.
* We added a progress indicator to the **Create entity** button in the response and the body structure of Consumed REST service document.
* We added a new entity to the System module called **WorkflowEndedUserTask**. Whenever a workflow user task ends (including both **Finished** and **Aborted**) a data about the task is saved in this new entity.
* We extended the `FeedbackHelper.OpenFormFeedback` Java API to allow opening pages with multiple parameters.
* Data views are no longer needed to use page parameters when configuring [input elements](https://docs.mendix.com/refguide/input-widgets/), pluggable widgets [attribute properties](https://docs.mendix.com/apidocs-mxsdk/apidocs/pluggable-widgets-property-types/#attribute), and [snippet calls](https://docs.mendix.com/refguide/snippet-call/#snippet-settings).
* We added transparency to disabled toolbar button icons for better visibility.
* We updated the dotnet runtime version installed with Studio Pro.
* We updated Studio Pro to show a notification in the top-right corner of the main window instead of an error pop-up window when an unhandled exception occurs.
* We made Studio Pro start faster and consume less memory by improving the efficiency of the process that downloads and handles the images of the Starter app templates.
* We added support for the dark mode to the **Create New App** page.
* We improved the layout of the **OpenAPI Documentation** pane. It now features a more compact layout, making it easier to view all the operations your service will publish.
* The OpenAPI document of published OData services now uses OpenAPI version 3.0.4 where it used to use OpenAPI version 3.0.1.
* Maia for pages now works with existing pages. It understands your page’s content, so you can easily ask it to add, change, or remove widgets as needed.
* We introduced `category` to the [design properties](https://docs.mendix.com/apidocs-mxsdk/apidocs/design-properties/#common-fields), which allows users to optionally group their design properties within the styling pane.
* We have upgraded our Micrometer Prometheus registry dependency.
* We added the `com.mendix.core.conf.LicenseInfo#validateCustomerID(String)` method to the public API. This method can be used to check if a customer identity matches the one in the license of the running application. The `LicenseInfo` instance is available through `Core.getLicenseInformation()`.
* We added the option to add [extra arguments](https://docs.mendix.com/refguide/preferences-dialog/#extra-arguments) to the Gradle process in the Studio Pro **Preferences**.
* We also added the `extra-gradle-arguments` option to MxBuild. This option can be used to pass extra arguments to the Gradle process.
* Pushing commits to the server is no longer possible if there is nothing to push.
* We improved the entity and member access rights validation in the modernized Entity Access Rules editor. We now display the reason when a specific right cannot be granted and check member access rights capabilities upfront.
* We improved the warning pop-up window shown when converting between nanoflows: the **Find Usages** button was renamed to **Show Usages** and now shows only irreplaceable usages.
* The modernized Entity Access Rules editor now supports viewing access rules for non-editable entities, such as System entities.
* We upgraded the JDBC driver for Microsoft SQL Server to version 12.10.0. If you connect to SQL Server using integrated security in a module such as [Database Connector](https://marketplace.mendix.com/link/component/2888), you may need to update the JDBC driver in `userlib` as well.
* We improved the check/uncheck behavior of the **Open API request** selection dialog for Consumed REST Service.
* The variables of pages and snippets are now available in XPath constraints.
* In OQL queries you can now use `NULL` in `CAST` expressions when you want to cast an empty value to either `DATETIME`, `DECIMAL`, `INTEGER`, `LONG` or `STRING`. This was already supported in OQL execution in Java actions, but Studio Pro added an error when this was used in view entities or data sets.
* We improved the live preview of view entities in Studio Pro. Columns that represent associations now show the entity name in the header, and when there is no associated object the cell is empty.
* You can now copy from the **Run Query** table in [view entities](https://docs.mendix.com/refguide/view-entities/) in Studio Pro.
* We improved the layout of the OpenAPI **Documentation** pane. It now features a more compact layout, making it easier to view all the operations your service will publish.
* We made various improvements in the logic editors:
* We now highlight the loop border when dragging elements inside of it.
* We made connection points and resize handles only visible on the selected element.
* We moved connected elements out of the way when an element is resized.
* When inserting elements with an attached annotation into a flow, we now only make room based on the length of the inserted elements to prevent unnecessary long flows.
* Making an element smaller automatically repositions its connected elements to preserve the width of the sequence flows between them.
* When inserting elements into a flow, connected elements and unconnected elements in the same container are now moved to make space.
* We made various React-related improvements:
* We updated `react-native-reanimated` to the latest version.
* We updated `@react-navigation` to the latest version.
* The `mx create-module-package` command now synchronizes and includes the managed dependencies of the module in the exported module package. This allows the module to be used in Studio Pro that has disabled Gradle synchronization. The `exclude-managed-dependencies` flag can be used to disable this behavior.
* The authentication token is now rotated, ensuring a new token is generated upon session expiration to improve security.
* In the **Security Overview** and the modernized entity access rules editor, inherited attributes and associations from an entity's generalization are now marked with a distinct inherited icon.
* Navigation menu buttons are now reachable when they are visible.
* The navigation tree menu is no longer tagged with *aria-hidden* when it is still visible.
* We added *aria-expanded*, *aria-haspopup* and *aria-controls* attributes to the navigation tree where relevant.
* We made it easier to use variables for pages and snippets. The variables are now available in the value selectors of conditional visibility, conditional editability, and text templates.
* The **Connector** pane now features page and snippet variables.
* We improved SQL parsing in the External Database Connector to correctly ignore parameters inside comments.
* We improved the context menu in the page and microflow editors to support navigation using arrow keys.
* We improved the tooltip of the capabilities of business events in the **Integration** pane.
### Fixes
* We fixed an issue where Consumed Web Service caused a validation failure at runtime for WSDL files imported locally. (Ticket 146066)
* In the logic editors, we fixed an issue where a warning was shown for microflows being inaccessible even though they were used in the application. (Tickets 184859, 186059, 215091, 216988)
* We reapplied a fix for an issue affecting listening between widgets. (Ticket 206642)
* We fixed an issue in **Message** definitions where custom names were reset on expansion of a node. (Tickets 222597, 227958, 236152, 232930, 240806, 241561, 244349)
* We fixed an issue where an app crashed when **Call a microflow** was selected and the **Select** button was clicked in the **Map entity** dialog. (Ticket 225433)
* We fixed an issue where fields that could not be unchecked while Export mapping an XML schema or Consumed Web Service were not checked and expanded by default when selecting the document schema source for the first time. (Ticket 232274)
* We fixed an issue where hidden pluggable widget properties were not reset correctly. This resulted in translations that caused widget update notifications, missing translations in Data Grid 2, and unused properties creating consistency errors in **File Uploader**. This fix ensures that these properties are reset when hidden with default values, and applied only when they are used. (Tickets 233401, 248682)
* In the modernized **Toolbox**, we fixed an issue where the **Toolbox** did not refresh after synchronizing the app directory to load new widgets. (Ticket 237560)
* We fixed an issue where disabling the **Multiple sessions per user** setting incorrectly killed all existing user sessions and deleted all associated tokens, including the currently valid one. (Ticket 238657)
* We fixed an issue where the `Substract`, `Union` and `Intersect` list operations did not always return a list with unique values when used in a nanoflow. (Ticket 240695)
* In the logic editors, we fixed an issue where multiple identical parameters were generated if a parameter or variable was used more than once by the selection to extract. (Ticket 242517)
* We fixed a Studio Pro crash which happened when logging a list of strings from a Java action. (Ticket 243124)
* We fixed an issue where having a disabled and detached activity in a microflow caused the microflow to not execute the main flow. (Ticket 243133)
* We fixed the F9 **View App** shortcut. It is used to view the currently running app in the browser. (Ticket 243743)
* We fixed an issue where the runtime fails to start with a `NullPointerException` if a microflow contained an invalid disabled activity. (Ticket 243931)
* We fixed an issue in published REST and OData services where calling the service using active session authentication with an expired CSRF token in JavaScript caused the browser to show a **Username**/**Password** pop-up window. (Ticket 243407)
* We fixed an issue with microflow parameter mappings that caused an error pop-up window. (Ticket 244852)
* In the logic editors, we fixed the displayed data type for cross-module one-to-one associations. (Ticket 245052)
* We fixed an issue where, when updating an association from an entity to its own specialization on an instance of the specialization, the association was set in the opposite direction. (Ticket 245140)
* We fixed an issue in the React client where the document title was *Mendix* during startup instead of the title configured in the application. (Ticket 245280)
* We fixed the behavior of the `urlEncode` and `urlDecode` functions in the client to align with runtime. This means that spaces are now correctly encoded as `%20` instead of `+`. `urlDecode` still supports decoding strings containing `+` to ensure backwards compatibility with strings encoded in previous versions. (Ticket 245510)
* We resolved a performance issue during deployment related to widgets using text templates. (Ticket 245543)
* We fixed an issue where Safari extensions broke the Dojo client. (Ticket 246247)
* We fixed the issue where the size of the offline database was not reduced properly after a sign-out operation. (Ticket 247029)
* We fixed an issue where Studio Pro closed after a user logged in. (Ticket 248086)
* We fixed an issue where a wrong text was shown in a dialog after languages had been removed from the app. (Ticket 248967)
* We fixed an issue where an [association source](https://docs.mendix.com/refguide/association-source) in a data grid or template grid stopped displaying data after previously shown data was cleared due to an unavailable context object. (Ticket 250338, 250479)
* We fixed an issue where enumeration values with the name *Core* caused compilation errors. (Ticket 250532)
- We fixed an issue that native apps upgraded from prior versions to Mendix 10.19-10.23 got an error that prevented the native app to start.
- We fixed an issue in the React client that caused local reruns to hang after changes were made to a recursive nanoflow.
- We fixed an issue with using JavaScript actions in a protected module when using the React client.
- We fixed an unnecesary redirect when creating a new app from the Mendix Portal.
- We fixed the issue where any recently made changes to the rules were not included in the export when exporting suppression rules from the **Manage Suppression Rules** dialog.
- We fixed an issue where the **Mendix Home** button in **Open Global Navigation** redirected you to **My Apps** instead of the home page.
- We fixed the text *Renaming* that was also shown when adding a new document, instead we will display *Checking name*.
- We fixed an error that occurred in the Published OData Service document when changing the documents properties.
- We fixed an issue where Studio Pro closed when adding an SVG file to the **Image Collection** document.
- We fixed an issue where the **JSON Structure** document failed to recognize values containing an ISO 8601 date and time with many decimals as DateTime, for example, *2025-05-28T14:22:33.0123456789Z*. Instead, the value was marked as a string. Now we support up to 16 decimals for recognizing a DateTime.
- We fixed an issue in the domain model editor where an unexpected exception closed Studio Pro instead of showing an exception in a dialog.
- We fixed an issue in OQL view entities where Studio Pro showed the type of the **AutoNumber** column as **Number**. It now shows it as **Long**.
- We fixed an issue with the **Specify user** button in the view entity editor in Studio Pro. This button caused the toolbar to slightly resize.
- We fixed an issue in published REST and OData services which would respond with a WWW-Authenticate header for all 401 Not Authorized responses, even when the basic authentication was not enabled for the service.
- We fixed an issue in the logic editors where an error pop-up window was shown when dragging items from the toolbar into the working area of the editor.
- In the logic editors, we fixed an issue where a parameter was connected to an activity causing Studio Pro to crash.
- We fixed an issue in the **Toolbox** where items in the list view were too big.
- We fixed an issue in the logic editors where an annotation became unreadable when resizing it to its smallest size.
- In the logic editors, we fixed a bug where the **Change Variable** action could be added through Maia for a variable that could not be changed. For already existing erroneous actions, we now show a consistency error instead of a pop-up window.
- We fixed an issue (introduced in Mendix 10.21) that caused microflow calls to fail in offline apps when there was a non-persistent entity that both associated either the current user or the current session and an yet unsynchronized offline object.
- We fixed an issue in offline apps that caused a query error if access rules restricted access to certain attributes of a generalized entity in an inheritance hierarchy.
- We fixed the issue that microflows using online data where not possible in native pages.
- We fixed an issue where converting a nanoflow to a microflow did not trigger a warning when the nanoflow was used in a native layout.
- We block starting the app when there are still file documents on the local file system which are created before Mendix 5.12. Make sure all files are migrated before upgrading to this version. Files are migrated automatically in the background when running apps on Mendix versions since 8.14.0.
* We fixed an issue that caused all the widgets to shift to the right in Design mode on React Client enabled.
* We fixed an issue where metadata got corrupted when special characters were present.
* We fixed an issue where the **Revert change** option was missing for deleted files in the **Changes** pane.
* We fixed an issue with offline mode, where data sources did not react to updates of attributes used in XPath constraints.
* We fixed the **Show** button in a **Select** dialog not working when selecting an entity.
* We fixed an issue where an edited value was not saved when the cell lost focus (for example, when you clicked a cell to edit value in a dialog, edited it, and then clicked an arrow button to expand a value).
* We fixed an issue where keyboard shortcuts were not processed correctly in the Expression editor.
* We fixed the vertical scrollbar for the data grid in the Version selector.
* We fixed an error pop-up window that appeared after clicking **Cancel** in a progress dialog.
* We fixed an issue where recent changes to suppression rules were not included when exporting them from the **Manage Suppression Rules** dialog.
* We fixed an issue related to saving user settings in the app folder when the app folder was moved or renamed.
* We fixed the way how multiline text is displayed in the **Enumerations** document.
* We fixed the issue where only local changes were displayed in the **Select App** and **Open App** dialogs instead of displaying names from the Mendix portal.
* We fixed an issue where the **Customize for dark mode** label was cut off in the Java Action editor.
* We fixed an issue in the Consumed REST Service document where an error was displayed after pressing **Send** for specific requests. This issue occurred when receiving empty content for a request that was already connected to an entity before.
* We fixed an issue in view entities in Studio Pro: when running an OQL query Studio Pro showed decimal value `0` as `0E-8` and it showed other decimal values with trailing zeroes.
* We fixed an issue where specifying an OData key in the wrong format resulted in an internal server error (500).
* We fixed an issue in the runtime execution of the **Send External Object** microflow activity, which logged a warning when the remote key mapping had already been stored in the database. It does not log this warning anymore.
* We fixed an issue where Studio Pro showed an exception pop-up while checking the consistency of external attributes, associations, and enumerations.
* In the logic editors, we fixed the following issues:
* We fixed a possible error dialog when starting a remote debugging session.
* We fixed a bug that caused empty working areas to not render correctly.
* We fixed some layouting glitches when adding objects to flows.
* We no longer truncate variable names.
* We fixed an issue where some automatically generated variable names were accidentally translated.
* We fixed an issue that caused incorrect placement of flows and events when adding a **Decision** through the Logic Recommender.
* We fixed an issue where the **Generate validation microflow** in the page editor showed an error.
* We fixed an issue where not all changes were correctly updated in the runtime after a local deployment. For example, when adding or removing columns to your Data Grid 2 widget.
* We fixed the generation of the JS Docs comments in JavaScript actions for enumeration values.
* We fixed an issue where an error was shown when extracting widgets that used an *unknown* entity type into a snippet.
* We fixed an issue where the **Download Latest Version** button in the app selector downloaded the latest Windows version for MacOS users.
* We fixed an unnecessary redirect when creating a new app from the Mendix Portal.
* We fixed an error pop-up window that appeared when clicking the button to toggle its state (for example, from **Enabled** to **Disabled**).
* We fixed an error pop-up window that appeared after clicking **Cancel** in a progress window.
* The command line tools now support arm64 architectures without the need of installing the dotnet runtime x64.
* We fixed an issue where Studio Pro crashed when collecting support information without an app being open.
* We fixed an issue in OQL view entities in Studio Pro, where setting the **Write** access to an association incorrectly resulted in the consistency error CE6593.
* We fixed an issue where Studio Pro evaluated the type of a COALESCE function expression for numeric arguments to be the type that can contain the types of all provided arguments, which is not in line with the behavior in runtime. It now evaluates to be equal to the type of the first argument.
* We fixed an issue in the live preview of view entities where for very large values Studio Pro showed an incorrect value.
* We fixed an issue in the Published Rest Services where a published REST operation that supports both JSON and XML responded with header `Content-Type:application/xml` if either the request had `Accept:*/*` header or had `Accept:application/*`. It will now respond with `Content-Type:application/json` as default.
* We fixed an issue in the **Integration** pane where clicking **Show details** on a business event search result displayed elements from a local version of the service.
* We fixed an issue in published REST and OData services which responded with a WWW-Authenticate header for all 401 (**Not Authorized**) responses, even when basic authentication was not enabled for the service.
* We fixed an issue in the logic editors where some automatically generated variable names were accidentally translated.
* We fixed an issue where cookies were not cleared before starting new anonymous session.
* We fixed an issue where, in offline apps, using a constraint with an association to an entity that had specializations did not return specialization results in XPath.
* We fixed an issue that causes microflow calls to fail in offline apps when there was a non-persistent entity that associates either the current user or the current session and a yet unsynchronized offline object.
* We removed the **Documentation URL** field from the properties of a building block.
* We improved the generation of Java code for enumerations.
* We fixed an issue where captions for enumerations did not return the caption in the default language, if no caption was available for the request language code.
* We fixed the checkbox **Show inactive threads (wait/park)** in the **Runtime Threads** window of Studio Pro.
* We fixed an issue where exporting a module gave a **Unknown dependency synchronization error**. This occurred if the module contained managed dependencies which had both JVM and Android versions, such as Google Guava.
* We fixed the date format preview in Studio Pro to be consistent with the actual date formatting behavior in the runtime and client.
* We fixed associations owned by both the parent and child entity not showing up as an association in the modernized entity access rules editor for the child entity.
* We updated the **Create entity** icon in the Security Overview to match the icon used in the modernized entity access rules editor.
* We fixed an issue where data sources with a default configuration triggered an error pop-up window when hidden by another property.
* We fixed an error that occurred when reconfiguring a data source with an invalid expression referring to it.
* We fixed an issue with editing expressions where the expected type was **Not set** when its target was a page or snippet variable, for example static values for a combo box widget.
### Deprecations
- We deprecated the Document templates and the **Generate Document** actions. For information on migrating to supported methods, see [Document Templates](https://docs.mendix.com/refguide/document-templates/).
- We deprecated the method `com.mendix.core.actionmanagement.EventActionInfo#representsFunction()`. Use the `function()` method to check whether the `EventActionInfo` instance represents a function.
- We deprecated the following methods of the class `com.mendix.core.actionmanagement.internal.InternalCoreAction`: `addDatavalidationFeedback(IMendixIdentifier, Map)`, `addDataValidationFeedback(DataValidationInfo)`, `handleConcurrentExecution()`, `setEventObjects(List)`, `setMetaInfo(JSONObject)`, `setActionName(String)`, `getException()`, `setException(Exception)`, `getState()`, `setState(ActionState)`, `setAllowsConcurrentExecution(Boolean)`, `clone()`. There is no replacement as these method were meant for internal usage only.
* We deprecated the `FeedbackHelper.OpenFormFeedback` methods with the `currentIdentifier` argument. Please use the methods where arguments for the page are passed as a `Map`.
* We have deprecated the `com.mendix.core.actionmanagement.internal.InternalCoreAction#setContext(IContext)` method. There is no replacement, this method was meant for internal usage only.
* We deprecated the Dojo Client. Please switch to the React Client. For more information, see the Mendix React Client’s [Migration Guide](https://docs.mendix.com/refguide/mendix-client/react/#migration-guide).
* We removed the deprecated entity access rules editor. For information on how to use the modernized entity access rules editor, see [Access Rules](https://docs.mendix.com/refguide/access-rules/).
* We deprecated the values `true` and `false` for the `com.mendix.storage.PerformDeleteFromStorage` runtime setting. Please use `NoFiles`, `TemporaryFiles` or `AllFiles` instead.
* We deprecated the constructors of the `com.mendix.core.actionmanagement.EventActionInfo` class with a `returnType` parameter. This parameter is not used internally and does not give any useful information.
* We deprecated the method `com.mendix.core.actionmanagement.EventActionInfo#representsFunction()`. Please use the `function()` method to check whether the `EventActionInfo` instance represents a function.
* We deprecated the method `com.mendix.core.actionmanagement.EventActionInfo#getReturnType()`. There is no replacement as this return type is not used.
* We deprecated the `com.mendix.core.actionmanagement.ActionListener#createClone()` method. This method was meant for internal use only, there is no replacement.
* We deprecated the `com.mendix.core.objectmanagement.member.MendixObjectReferenceSet#setValue(IContext, Set, Boolean)` method. This method was meant for internal use only, please use `com.mendix.systemwideinterfaces.core.IMendixObjectMember#setValue(IContext, Object)` instead.
* We deprecated `ActionListener#addReplaceEvent(String)`. Please use `ActionListener#setReplaceEvent(String)` instead.
* `headerTruncatedBackTitle` was deprecated in `@react-navigation` version 7. If the title is too long, `@react-navigation` will handle it itself.
### Breaking Changes
* We enabled entity access on the **ShowHomePage** microflow in the **System** module that is automatically included in each app. This reduces security concerns by providing a secure default. For more information, see the [Using the ShowHomePage Microflow in the System Module](https://docs.mendix.com/refguide/upgrading-from-10-to-11/#apply-entity-access) section in *Upgrading from Mendix Studio Pro 10 to 11*. (Ticket 92564)
* We added a new method `allowMathOperators` to `XPathQueryBase` Java API and its extensions. It can be used to enable mathematical operators in the XPath query.
* XPaths created with Java API `Core.createXPathQuery` no longer accept mathematical operators by default. In order to use mathematical operators, it is now required to enable them for the query using new `allowMathOperators` method. For example:
```
core.createXPathQuery("//Module.Entity[attr1 + attr2 = 42]")
.allowMathOperators(true)
.execute(context);
```
* We removed the deprecated `ObjectManagement.StrictChangeBehavior` custom runtime setting. Setting an invalid value for an Enumeration attribute will now always result in an `InvalidEnumerationValueException` and setting a value for a Calculated attribute will now always result in a `ReadOnlyAttributeException`.
* We removed the `com.mendix.m2ee-api.jar` artifact from the runtime bundles directory. Its remaining content was already moved to the `com.mendix.public-api.jar` artifact. Apps deployed using **Deploy for Eclipse** in an earlier Mendix version may show a `missing required library` error for the removed artifact when opened in Eclipse. Redeploying the app for Eclipse fixes this.
* We removed support for the project setting **System context tasks**. This setting was deprecated since Mendix 9.6. We now always execute queued tasks in a context equivalent to the one in which they were created.
* The `com.mendix.core.Core.getRuntimeVersion` method now always returns the runtime version in the format of ...
* We removed the deprecated `Microflows.RemoveVariableOnDeleteObjectsActivity` runtime setting. We no longer support this behavior, calling the **Delete object(s)** microflow activity on a list will now always clear the list, and the list will remain usable.
* We removed the deprecated `Objects.SetSystemAttributesOnChange` runtime setting. System attributes are updated on commit, and not on every change.
* We removed the `mx.logger` client API. For logging, please use the `window.console` logging functions instead.
* We removed the deprecated Runtime API `ICore#addSessionCookies`. Please use `ICore#addMendixCookies` instead.
* We removed the (deprecated) **on state change** handlers for workflows. Please use workflow event handlers instead.
* The default value of the custom runtime setting [DataStorage.OptimizeSecurityColumns](https://docs.mendix.com/refguide/custom-settings/#DataStorageOptimizeSecurityColumns) was changed to `true`.
* Following the MariaDB JDBC driver default, if you use MariaDB or MySQL with a `DatabaseJdbcUrl` we no longer accept `jdbc:mysql:` as a protocol. Please use `jdbc:mariadb:` instead.
* For MariaDB and MySQL, we no longer set the `sql_mode` driver parameter. Unless it is overridden in `DatabaseJdbcUrl`, the database default will be used.
* We removed the deprecated Java APIs `Core.retrieveXPath...`. Please use the fluent Java API `Core.createXPathQuery` instead.
* We no longer support the JVM parameters `-Djava.security.manager` and `-Djava.security.policy`.
* We removed support for the project setting **System context task**'. This setting was deprecated since Mendix 9.6. We now always execute queued tasks in a context equivalent to the one in which they were created.
* We removed the legacy migration of thumbnails. This was introduced around Mendix 6. If you are migrating from a Mendix 6 application, then first migrate to Mendix 10 and run the application to finish migration, before migrating further to Mendix 11.
* We removed the type parameter from the `com.mendix.core.actionmanagement.EventActionInfo` class as it only accepts `java.util.function.Consumer` instances with type parameter `IMendixObject`.
* We made the constructors of the `com.mendix.core.actionmanagement.EventActionInfo` class more strict so that it only accepts `java.util.function.Consumer` instances with type parameter `IMendixObject` and a return type of `Class`. Passing other types in the past led to unexpected behavior at runtime.
* We removed the deprecated `com.mendix.webui.CustomJavaAction` class. This class was not used anymore.
* We removed the deprecated `com.mendix.core.actionmanagement.ActionListener#clone()`. There is no replacement, this method was only meant for internal use.
* We removed the deprecated `com.mendix.core.actionmanagement.ActionListener#setTargetClass(Class)` method. Pass the target class in the constructor instead.
* We removed the deprecated `com.mendix.core.actionmanagement.CoreAction` class from the public API. Please use `com.mendix.systemwideinterfaces.core.UserAction` instead.
* We removed the deprecated `com.mendix.core.conf.RuntimeVersion` and `com.mendix.core.conf.Configuration#RUNTIME_VERSION` from the public API. Please use `Core.getRuntimeVersion()` instead.
* We removed the deprecated `com.mendix.core.Core.changeAsync(IContext, IMendixObject, Map)` and `com.mendix.core.internal.ICore#changeAsync(IContext, IMendixObject, Map)` methods. Please use `com.mendix.core.Core.change(IContext, IMendixObject, Map)` and execute it for example using an `ExecutorService`.
* We removed the deprecated `com.mendix.core.Core.commitAsync(IContext, List)` and `com.mendix.core.internal.ICore#commitAsync(IContext, List)` methods. Please use `com.mendix.core.Core.commit(IContext, List)` and execute it for example using an `ExecutorService`.
* We removed the deprecated `com.mendix.core.Core.deleteAsync(IContext, IMendixObject, boolean)` and `com.mendix.core.internal.ICore#deleteAsync(IContext, IMendixObject, boolean)` methods. Please use `com.mendix.core.Core.delete(IContext, IMendixObject, boolean)` and execute it for example using an `ExecutorService`.
* We removed the deprecated `com.mendix.core.Core.instantiateAsync(IContext, String)` and `com.mendix.core.internal.ICore#instantiateAsync(IContext, String)` methods. Please use `com.mendix.core.Core.instantiate(IContext, String)` and execute it for example using an `ExecutorService`.
* We removed the deprecated `com.mendix.core.Core.isSubClassOf(IMetaObject, IMetaObject)`, `com.mendix.core.Core.isSubClassOf(String, short)`, `com.mendix.core.Core.isSubClassOf(String, String)`, `com.mendix.core.internal.ICore#isSubClassOf(IMetaObject, IMetaObject)`, `com.mendix.core.internal.ICore#isSubClassOf(String, short)`, `com.mendix.core.internal.ICore#isSubClassOf(String, String)` methods. Please use `com.mendix.systemwideinterfaces.core.meta.IMetaObject#isSubClassOf(IMetaObject)` or `com.mendix.systemwideinterfaces.core.meta.IMetaObject#isSubClassOf(String)` instead.
* We removed the deprecated `com.mendix.core.Core.rollbackAsync(IContext, IMendixObject)` and `com.mendix.core.internal.ICore#rollbackAsync(IContext, IMendixObject)` methods. Please use `com.mendix.core.Core.rollback(IContext, IMendixObject)` and execute it for example using an `ExecutorService`.
* We removed the deprecated `com.mendix.core.objectmanagement.member.MendixEnum#isValid(IContext, String)` method. Please use `com.mendix.core.objectmanagement.member.MendixEnum#isValid(String)` instead.
* We removed the deprecated `com.mendix.metrics.Metrics#counters()` method and `com.mendix.metrics.Counters` interface. Please use `com.mendix.metrics.Metrics#createCounter(String)` instead.
* We removed the deprecated `com.mendix.metrics.Metrics#gauges()` method and `com.mendix.metrics.Gauges` interface. Please use `com.mendix.metrics.Metrics#createGauge(String)` instead.
* We removed the deprecated `com.mendix.metrics.Metrics#sets()` method and `com.mendix.metrics.Sets` interface. The `sets` metric type is not supported anymore.
* We removed the deprecated `com.mendix.systemwideinterfaces.core.IContext#clone()` method. Please use `com.mendix.systemwideinterfaces.core.IContext#createClone()` instead.
* We removed the deprecated `com.mendix.systemwideinterfaces.core.IMendixObject#clone()` method. Please use `com.mendix.systemwideinterfaces.core.IMendixObject#createClone()` instead.
* We removed the deprecated `com.mendix.systemwideinterfaces.core.IMendixObjectMember#setValue(IContext, T, boolean)` method. Please use `com.mendix.systemwideinterfaces.core.IMendixObjectMember#setValue(IContext, T)` instead.
* We removed the deprecated `com.mendix.systemwideinterfaces.core.IProfiler#logClientData(JSONObject, String)` and `com.mendix.systemwideinterfaces.core.IProfiler#enterRuntime(String, String, String, Set, JSONObject, Long)` methods. Please use the `com.mendix.systemwideinterfaces.core.IProfiler#logClientData(String, String)` and `com.mendix.systemwideinterfaces.core.IProfiler#enterRuntime(String, String, String, Set, String, Long)` methods and parse the JSON object if needed.
* We removed the deprecated `com.mendix.systemwideinterfaces.core.ICoreAction#setContext(IContext)` method. There is no replacement, this method was only meant for internal use.
* We removed the deprecated `com.mendix.systemwideinterfaces.core.ICoreAction#getMetaInfo()` method. Please use `com.mendix.systemwideinterfaces.core.ICoreAction#getMetaInfoJsonString()` and parse the JSON object if needed.
* We removed the deprecated `com.mendix.systemwideinterfaces.core.UserAction#context()` method. Please use `com.mendix.systemwideinterfaces.core.ICoreAction#getContext()` instead.
* We removed the deprecated `com.mendix.systemwideinterfaces.core.UserBlockedException` class. This class was not used anymore.
* We removed the deprecated `com.mendix.webui.reporting.EnumConstant#setImagePath(String)` method. Please pass the image path in the constructor instead.
* We removed the deprecated `com.mendix.systemwideinterfaces.core.meta.IMetaObject#getId()` method. This method was meant for internal use only, there is no replacement.
* We removed the deprecated `com.mendix.systemwideinterfaces.core.IMendixIdentifier#getEntityId()` method. This method was meant for internal use only, there is no replacement.
* We removed the deprecated `com.mendix.systemwideinterfaces.core.IMendixIdentifier#clone()` method. This method was meant for internal use only, there is no replacement.
* We removed the deprecated `com.mendix.systemwideinterfaces.core.IMendixIdentifier#setObject(IMendixObject)` method. This method was meant for internal use only, there is no replacement.
* We removed the deprecated `com.mendix.systemwideinterfaces.core.IContext#setExecutionId(String)` method. This method was meant for internal use only, there is no replacement.
* We removed the deprecated `com.mendix.systemwideinterfaces.core.IContext#setExecutionThread(Thread)` method. This method was meant for internal use only, there is no replacement.
* We removed the deprecated `com.mendix.systemwideinterfaces.core.IContext#setExecutionType(ExecutionType)` method. This method was meant for internal use only, there is no replacement.
* We removed the deprecated `com.mendix.core.conf.Configuration#checkConfig()` method. This method was meant for internal use only, there is no replacement.
* We removed the deprecated `com.mendix.m2ee.api.IMxRuntime` interface. Its methods were intended for internal use only, there is no replacement.
* We removed most of the content of the deprecated `com.mendix.m2ee.api.AdminAction` interface. This interface was intended for internal use only, there is no replacement.
* We removed most of the content of the deprecated `com.mendix.m2ee.api.AdminException` interface. This interface was intended for internal use only, there is no replacement.
* We removed most of the content of the deprecated `com.mendix.m2ee.api.IAppContainer` interface. This interface was intended for internal use only, there is no replacement.
* We removed the result type parameter of the methods `addBeforeEvent(Consumer, boolean)` and `addAfterEvent(Consumer)` in the `com.mendix.core.actionmanagement.ActionListener` class. This type parameter had no benefits.
* We removed the type parameter from the `com.mendix.core.Core.schedule(String, Date)` method.
* We removed the type parameter from the `com.mendix.core.Core.schedule(ICoreAction, long, TimeUnit)` method.
* We removed the type parameter from the `com.mendix.core.Core.reschedule(RunnableScheduledFuture, ICoreAction, long, TimeUnit)` method.
* We removed the type parameter from the `com.mendix.core.Core.scheduleAtFixedRate(String, Date, long, TimeUnit, String, String)` method.
* We removed the type parameter from the `com.mendix.core.Core.scheduleAtFixedRate(ICoreAction, long, long, TimeUnit)` method.
* We removed the type parameter from the `com.mendix.core.Core.scheduleAtFixedRate(ICoreAction, Date, long, TimeUnit)` method.
* We removed the type parameter from the `com.mendix.core.Core.scheduleWithFixedDelay(ICoreAction, long, long, TimeUnit)` method.
* We changed string concatenation in expressions for empty/null values. Such values are not anymore concatenated as 'null'. The old behavior can be achieved by using an if-else expression (e.g. `'Value: ' + (if $value != empty then $value else 'null')` instead of `'Value: ' + $value`).
* We block the start of an app when there are still file documents on the local file system which are created before Mendix 5.12. Make sure all files are migrated before upgrading to this version. Files are migrated automatically in the background when running apps on Mendix versions from 8.14.0.
* We updated the date formatting in the client to be consistent with the runtime in supporting genitive and abbreviated month names. See the table below for the changes between the old and new formatting. The runtime formatting has not changed and is equal to the new client behavior.
| Token | Old | New
|-------|-----------|--------
| MMM | genitive | genitive abbreviated
| MMMM | genitive | genitive
| LLL | genitive | standalone abbreviated
| LLLL | genitive | standalone
* We changed the internal representation in the client of an *empty value* from an empty string to `null`. This fixes an issue where empty string attributes become an empty string value when an object is communicated to the client. Due to this change, both `MxObject#get` and `MxObject#set` have changed to accept/return `null` for empty attributes.
* `ORDER BY` used in `UNION` OQL queries must now only refer to aliased columns.
- The result type of OQL function `COALESCE` is now defined using type precedence if all function arguments are of numeric type. The precedence is: Decimal (highest), Long, Integer.
- We no longer allow aliases in OQL to contain a dot (".") even if the OQL query is not a View Entity definition.
- We removed the option **Automatically encode parameter values in Send REST request microflow activities** from the **App Settings**. This allowed users to enable automatic encoding of URL parameters. Now we never encode the URL parameters automatically in the **Send REST request** microflow activity, making it consistent with how parameters are handled in Consumed REST Service documents.
- We disallowed multi-dimensional array from WSDL to be selected in **Import Mapping** and **Export Mapping** documents. Previously, it was wrongly detected as a regular array, however, the runtime was unable to parse this input.
- We removed the method `com.mendix.core.actionmanagement.internal.InternalCoreAction#getMetaInfo()`. There is no replacement as this method was meant for internal usage only.
- We removed support for `com.mendix.modules.email.EmailModule`. We recommend using the [Email Connector](https://marketplace.mendix.com/link/component/120739) module instead.