Mendix 11 gives you a mature toolkit for querying your own data, connecting to external systems, and streaming changes out to the wider enterprise landscape. Query authoring, REST and OData integration, and connectors have all been sharpened, and new capabilities let you transform JSON, protect concurrent edits, and push live data into data lakes.
Querying data with OQL
OQL is now a full, production-supported query language in Mendix 11. View entities let you define and manage OQL queries through a friendly interface, with a live preview to run a query and inspect results, a user selector to test [%CurrentUser%] token behaviour, and a connection pane that lists all project entities and attributes with search. The editor offers context-aware autocomplete for entities, attributes, and keywords – including mid-sentence – and intelligently renames existing attributes and associations when a query’s expression is unchanged but the alias differs, preserving references rather than recreating them.
OQL statements let you read and modify data directly in the database, bypassing the runtime for performance. Available through the Java runtime API and generally available, OQL statements support bulk DELETE (not available for associations with non-default delete behaviour, such as ‘Delete as well’ or ‘Delete only if not associated’), bulk UPDATE of attributes and associations, and INSERT INTO SELECT to create many objects in a single statement – ideal for large batch operations that would otherwise churn through the runtime one object at a time. You can also build and execute OQL statements programmatically via the Core.createOqlStatement runtime call.
- A broad set of built-in functions covers date and string work: DATEADD, DATETRUNC, and DATEPARSE for date arithmetic, truncation, and parsing; LOCATE and SUBSTRING for searching and extracting strings; TRIM, LTRIM, and RTRIM for whitespace; and STRING_AGG for concatenating values across rows into a single result.
- Error handling is clearer – an UPDATE whose SET expression returns multiple values (via a subquery or a long association path) raises a database-level exception when the statement runs.
- OQL behaves consistently under optimistic locking, with SELECT * returning the same columns regardless of the setting and INSERT statements handled correctly.
Protecting concurrent data with optimistic locking
Optimistic locking prevents silent data loss when multiple users edit the same object. Instead of processing changes sequentially, it checks for conflicts at commit time: every entity gains an MxObjectVersion system attribute, and if another user modified the object since it was read, the commit fails with a ConcurrentModificationRuntimeException. It is generally available and enabled with a single toggle on the Runtime tab of application settings.
Consumed and published REST services
The consumed REST service editor makes building integrations largely a matter of importing a contract and pointing at what you need. It auto-detects and adds URL parameters, generates entities directly from JSON responses, and offers a “Use as Template” body option supporting JSON, XML, and form data with curly-brace parameter syntax. You can add query parameters at any request through a dedicated grid or the URL editor, mark them optional or mandatory, and include or exclude them independently without hand-editing the URL string.
OpenAPI and Swagger import is resilient and thorough. You can import contracts even when they contain semantic or structural errors – these produce non-blocking warnings rather than stopping the import – and Check all / Uncheck all controls speed up choosing which operations to bring in. Path-level parameters are added to the parameters table automatically, and parameter names may now include special characters, enabling deepObject-style queries and advanced OData REST calls.
- Published REST services provide an OpenAPI Documentation pane that previews the generated document (with copy support), and keep internal documentation separate from the public OpenAPI contract so private notes are never exposed.
- The Send REST Request activity indicates whether each parameter is required and excludes invalid refresh parameters; note that it no longer auto-encodes URL parameters, so encoding must be handled manually.
- Published REST error responses correctly include CORS headers for browser clients.
OData services and the Integration pane
Consumed OData integration handles flexible and complex service shapes. External actions accept and return lists of primitives within OData objects, and open-type parameters let you pass additional attributes beyond the domain model – either individually or as a collection of primitive values – based on the service’s OData metadata. Optional-parameter annotations are respected so annotated inputs can be left empty, and configuration and header microflows are stored in separate fields with guidance when you switch between them.
- The Integration pane segregates Catalog services from those already imported, each with its own search, for a cleaner overview and faster workflows.
- Published OData services produce cleaner OpenAPI output – omitting the parameter style property when it is the default and indicating response optionality – and log request XPaths at Debug and Trace levels for easier troubleshooting.
The External Database Connector
The External Database Connector lets you query external databases directly, and build those queries quickly. You can drag tables, views, stored procedures, and functions straight into the SQL editor, with schema retrieval dramatically faster even for databases with thousands of objects. Connection details and the SQL itself can be modified at runtime through microflow parameters – so the same query can run against different databases, adjust a GROUP BY clause, or refresh temporary security tokens without model changes.
- Support for anonymous SQL blocks and Ref Cursors in stored procedures on compatible databases, plus improved entity name updates.
- Broad database coverage including PostgreSQL 18 and Microsoft SQL Server 2025, with an up-to-date bundled Microsoft SQL Server JDBC driver.
Transforming and mapping data
The Data Transformer lets you reshape complex JSON without leaving Studio Pro. Generally available, it uses the JSLT language to rename and filter fields, map nested structures, and simplify API responses. You can use it to preprocess responses before import mapping, perform message-to-message transformations, or send transformed JSON directly to other systems, and a Test Transformation feature validates the result at design time. Maia can create and modify transformers and generate JSLT expressions, lowering the barrier to using the language.
- Import and export mappings correctly create objects for valid input via find-by-key or call-a-microflow, and enforce required child elements in XML and JSON structures.
- A Refresh schema button on the mapping editor toolbar re-syncs a mapping when it drifts out of line with its underlying schema.
Streaming data out: events and change capture
Change Data Capture (public beta) streams your domain model changes to data lakes in real time. CDC pushes create, update, and delete operations on selected entities to Amazon S3 or Azure Data Lake, where they land as Iceberg tables – powering real-time BI dashboards, audit trails, and AI pipelines. You choose the entities in Studio Pro and wire up an Event Broker and Iceberg bridge for Mendix Cloud deployments.
- The Event Broker Bridge streams selected business events to AWS S3 or Azure Blob Storage as JSON for downstream analytics and auditing.
- Event Broker bridges can gain new event types without being recreated, so you can integrate new data – such as a new sensor feed – with no downtime.
Connectors
Mendix 11 ships a growing set of platform-supported connectors for enterprise systems and cloud services. An Azure Blob Storage connector provides get, put, delete, and list operations with Bearer and SAS token authentication, a revamped Email Connector simplifies adding email capabilities, and the Google Gemini Connector enables text generation through an OpenAI Chat Completions-compatible layer for a consistent AI development experience.
Deep Siemens integration spans the Teamcenter and Capital connectors. The Siemens Teamcenter Connector – certified for Mendix 11 – offers direct Teamcenter X connections with single sign-on, auto-generated microflows for property retrieval, improved user provisioning, and request handlers for Active Workspace widget authentication, with the former Teamcenter Extension folded into a single unified connector document that supports multiple integration documents and environment connections. A Teamcenter BOM Component widget displays Bill of Materials data with revision and variant rules, column configuration, and property editing – enriched with third-party ERP and MES data – and a full Mendix app can run embedded directly inside Teamcenter Active Workspace (public beta) with context and authentication handled by the platform.
- The Siemens Capital / Xcelerator connector integrates the electrical and electronics design suite via REST and now covers 100% of Capital’s public REST APIs, including batch design operations, CRUD on Product Plans, and filtered retrieval of project data and library items.
Marketplace and module packaging
Component publishing can be fully automated. The Marketplace Publish API creates releases, uploads files, tracks review and publication, and unpublishes public or private components, integrating with GitHub, GitLab, and Azure DevOps pipelines for consistent, auditable releases. You can manage multiple component drafts concurrently – useful for teams supporting Mendix 9, 10, and 11 side by side – and the Content API exposes company-approved status, vulnerability and security-fix information with CVE and CWE identifiers, and direct version downloads for internal catalogs and approval workflows.
- Every module now carries a stable package identifier and a checksum in its settings, giving each module a reliable identity across versions.
Client and widget data APIs
The client-side data API continues to give pluggable widgets and custom front-end code direct access to data.
- The Pluggable Widget API supports single-object data sources, letting you build custom data view style widgets alongside list-based ones.
- The mx-api/data client API includes a getFileUrl method to obtain the URL of a stored file, and its Filter interface uses limit to specify the maximum number of records.
