From 58b8dd3adf4db07e5a29853efe19add691621017 Mon Sep 17 00:00:00 2001 From: Karuna Vengurlekar Date: Wed, 4 Nov 2026 17:00:37 +0530 Subject: [PATCH 1/5] Change the expandable shortcode to {{< expandable-table >}} --- .../modules/oidc.md | 20 ++++----- .../runtime/custom-settings/_index.md | 44 ++++++++++++++----- 2 files changed, 44 insertions(+), 20 deletions(-) diff --git a/content/en/docs/marketplace/platform-supported-content/modules/oidc.md b/content/en/docs/marketplace/platform-supported-content/modules/oidc.md index b7e32c58a29..a53af6e92a1 100644 --- a/content/en/docs/marketplace/platform-supported-content/modules/oidc.md +++ b/content/en/docs/marketplace/platform-supported-content/modules/oidc.md @@ -201,7 +201,7 @@ If your app is already developed using Mendix 9 or above, but uses the community This section provides an overview of updates for the OIDC SSO module across different versions. It includes new dependencies, snippet replacements, and microflow renaming to ensure a smooth transition while migrating to higher module versions. -{{% expandable-table %}} +{{< expandable-table >}} | Mendix Version | OIDC SSO Module Version | Important Migration Changes | Additional Information | | --- | --- | --- | --- | @@ -227,7 +227,7 @@ This section provides an overview of updates for the OIDC SSO module across diff | 9.24.2 and above | 3.0.0 (migrating to 3.0.0 and above) | Include [UserCommons](https://marketplace.mendix.com/link/component/223053) module as a dependency. | New UserCommons module | | | | Set `OIDC.Startup` microflow as part of the after-startup microflow. | Assign UserProvisioning for existing IdP configurations. | -{{% /expandable-table %}} +{{< /expandable-table >}} ## Design-time App Configuration{#app-configuration} @@ -241,14 +241,14 @@ If you are using OIDC module version 3.1.0 and above, you need to configure your Ensure that you have allocated the following user roles to the OIDC module and UserCommons (in version 3.0.0 and above) roles: -{{% expandable-table %}} +{{< expandable-table >}} | User Role | OIDC Module Role | | --- | --- | | Administrator | OIDC.Administrator, UserCommons.Administrator | | User | OIDC.User | -{{% /expandable-table %}} +{{< /expandable-table >}} {{< figure src="/attachments/appstore/platform-supported-content/modules/oidc/user-roles.png" alt="User roles tab showing Administrator and User roles with their assigned module roles" >}} @@ -635,7 +635,7 @@ You can set up custom user provisioning by setting constants when you deploy you You can set up custom user provisioning by setting the following constants. You can set default values when you build your app, but you can override these in the app's environment. -{{% expandable-table %}} +{{< expandable-table >}} | Constant | Use | Notes | Example | | --- | --- | --- | --- | @@ -649,7 +649,7 @@ You can set up custom user provisioning by setting the following constants. You | `CustomUserProvisioning` | a custom microflow to use for user provisioning | *optional* – in the form `modulename.microflowname` – the microflow name must begin with the string `UC_CustomProvisioning` | `Mymodule.UC_CustomProvisioning` | | `DisableMxAdmin` | deactivates Mx admin | *optional* | `True` | -{{% /expandable-table %}} +{{< /expandable-table >}} {{% alert color="info" %}} You may have a requirement that users log in to your application only via SSO. However, when you deploy your app on the Mendix Cloud, the platform may still create an MxAdmin user with a local password. From version 2.1.0 of the UserCommons module, if the flag for the `DisableMxAdmin` constant is set to `True`, the MxAdmin user will be deactivated via the startup microflow `ASU_UserCommons_StartUp`. @@ -706,7 +706,7 @@ If the standard configuration meets your needs and your application does not hav In the default configuration, the custom user entity is set as `Administration.Account`, the principal attribute is set as `Name`, and the default attribute mapping is provided. -{{% expandable-table title=" Default Attribute Mapping"%}} +{{< expandable-table title="Default Attribute Mapping" >}} | IdP Attribute | Configured Entity Attribute | | -------------------- | --------------------------- | @@ -714,7 +714,7 @@ In the default configuration, the custom user entity is set as `Administration.A | name | FullName | | sub | Name | -{{% /expandable-table %}} +{{< /expandable-table >}} ##### Modifying Default Attribute Mapping{#modify-default} @@ -779,7 +779,7 @@ The section below shows the methods to configure user provisioning when using OI By default, the `CUSTOM_UserProvisioning` microflow in the **USE_ME** > **1. Configuration** folder of the OIDC module uses the `OIDC_CustomUserParsing_Standard` microflow. This applies to the following mapping: -{{% expandable-table %}} +{{< expandable-table >}} | ID-token Provided by your IdP | Attribute of `Administration.Account` Object | | ----------------------------- | ----------------------------- | @@ -787,7 +787,7 @@ By default, the `CUSTOM_UserProvisioning` microflow in the **USE_ME** > **1. Con | name | Fullname | | email | Email | -{{% /expandable-table %}} +{{< /expandable-table >}} {{% alert color="warning" %}} Do not change the `UserProvisioning_StandardOIDC` microflow. This may cause problems if you upgrade to a newer version of the OIDC SSO module. Apply customizations to the `CUSTOM_UserProvisioning` microflow only. diff --git a/content/en/docs/refguide/runtime/custom-settings/_index.md b/content/en/docs/refguide/runtime/custom-settings/_index.md index 0ede808041e..d5929f5155a 100644 --- a/content/en/docs/refguide/runtime/custom-settings/_index.md +++ b/content/en/docs/refguide/runtime/custom-settings/_index.md @@ -44,38 +44,40 @@ Durations and intervals can be specified in the following formats: The following custom settings can be configured: +{{< expandable-table >}} + | Name | Description | Default Value | | --- | --- | --- | | ApplicationRootUrl | see [ApplicationRootUrl](#applicationrooturl-section), below | In Mendix Cloud, https://\[domain\].mendixcloud.com | | CACertificates | A comma-separated list of paths to CA certificates. Example: `D:\App\CA1.pem, D:\App\CA2.pem, D:\App\CA3.pem, D:\App\CA4.pem` | | | ClientCertificatePasswords | Comma-separated list of passwords for Client Certificates (should match the **ClientCertificates** order). Example: `pwd1, pwd2, pwd3, pwd4` | | | ClientCertificates | Comma-separated list of paths to Client Certificates. Example: `D:\App\Mx1.pfx, D:\App\Mx2.pfx, D:\App\Mx3.pfx, D:\App\Mx4.pfx` | | -| ClientCertificateUsages | Only use this when you have multiple client certificates and you want to configure specific certificates for specific servers.
This setting defines which service must use which client certificate. See **NoClientCertificateUsages** if you want to make sure that no client certificate is used for a certain host or web service. The value of **ClientCertificateUsages** must be a comma-separated list of key/value items. A key/value item must be specified as `"identifier": "path to certificate"`.
For web services, use the imported web service name as the identifier.
For REST services, use the host name of the remote server as the identifier.
Please note that any backslash in the path must be doubled. The whole value must be enclosed by braces (`{ }`). For example: {{< figure src="/attachments/refguide/runtime/custom-settings/code_snippet.png" class="no-border" >}} | | +| ClientCertificateUsages | Only use this when you have multiple client certificates and you want to configure specific certificates for specific servers.
This setting defines which service must use which client certificate. See **NoClientCertificateUsages** if you want to make sure that no client certificate is used for a certain host or web service. The value of **ClientCertificateUsages** must be a comma-separated list of key/value items. A key/value item must be specified as `"identifier": "path to certificate"`.
For web services, use the imported web service name as the identifier.
For REST services, use the host name of the remote server as the identifier.
Please note that any backslash in the path must be doubled. The whole value must be enclosed by braces (`{ }`). For example: `{"Module.WebService1": "D:\\App\\Mx1.pfx", "www.my-rest-server.com": "D:\\App\\Mx2.pfx"}` | | | NoClientCertificateUsages | Comma-separated list of host names or imported web service names that should never be contacted using a client certificate. | | | ClusterManagerActionInterval | The interval (in milliseconds) used for performing all cluster manager actions. These are actions such as unblocking users and removing invalid sessions. See [Session Timing Constraints and Defaults](/refguide/tricky-custom-runtime-settings/#session-timing) in *Advanced Custom Settings* for important details about valid values and their relationship to other session settings. | 300000 (5 minutes) | -| com.mendix.core.isClusterSlave | Set to `true` on every node except the [Cluster Leader](/refguide/clustered-mendix-runtime/#cluster-leader-follower) in a high-availability scenario. This setting only applies when the Runtime is started through the administrative API (the leader-based startup model); it has no effect when the Runtime is started directly from a configuration file (the leaderless startup model), which is always the case for [Mendix Portable Runtime](/developerportal/deploy/portable-app-distribution-deploy/). See [Cluster Leader and Cluster Followers](/refguide/clustered-mendix-runtime/#cluster-leader-follower) for details on both models.
{{% alert color="info" %}}Managed platforms, such as the Cloud Foundry buildpack, usually set this for you. For a manual, on-premises installation managed through the administrative API (for example, using the Mendix Service Console), you need to set this yourself on all nodes except one.{{% /alert %}} | `false` | +| com.mendix.core.isClusterSlave | Set to `true` on every node except the [Cluster Leader](/refguide/clustered-mendix-runtime/#cluster-leader-follower) in a high-availability scenario. This setting only applies when the Runtime is started through the administrative API (the leader-based startup model); it has no effect when the Runtime is started directly from a configuration file (the leaderless startup model), which is always the case for [Mendix Portable Runtime](/developerportal/deploy/portable-app-distribution-deploy/). See [Cluster Leader and Cluster Followers](/refguide/clustered-mendix-runtime/#cluster-leader-follower) for details on both models.
Managed platforms, such as the Cloud Foundry buildpack, usually set this for you. For a manual, on-premises installation managed through the administrative API (for example, using the Mendix Service Console), you need to set this yourself on all nodes except one.
| `false` | | com.mendix.core.LenientDateTimeParsing | When set to `true`, the `parseDateTime` function will use more lenient parsing, as it did in Mendix 9. For example `parseDateTime("yyyyMMdd", "2021-11-10")` will return `2020-11-01` as a date if this is set to true, which is probably not the intended result.. If set to `false`, which is the default, this example will throw an error as it is expecting `20211110`. It is recommended to not enable this setting to avoid unexpected results. | `false` | | com.mendix.core.SameSiteCookies | The [SameSite](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite) property can be included in all cookies that are returned by the embedded HTTP server. The possible values are `Strict`, `Lax`, and `None`. The default is `Strict`. Setting it to `None` is typically needed only when an application is embedded in an iframe of another application with a different domain. Newer browsers may require the connection to be secure (HTTPS) when set to `None`. If the connection is plain HTTP, then this setting must be changed to `Strict` (recommended) or `Lax`. | | | com.mendix.core.ScheduledEventsCleanupAge | This setting specifies (in milliseconds) how old objects in the System.ScheduledEventInformation table have to be before they are removed from the database. See [Scheduled Events - Legacy](/refguide9/scheduled-events-legacy/#cleanup) for more details. | 365 days for projects migrated from Mendix 9 and 7 days for new projects or projects with an empty database. | | com.mendix.core.ScheduledEventsCleanupBatchSize | This setting specifies how many System.ScheduledEventInformation objects will be removed from the database each time the ScheduledEventInformation cleanup task runs. See [Scheduled Events - Legacy](/refguide9/scheduled-events-legacy/#cleanup) for more details. | 10000 | | com.mendix.core.SessionIdCookieName | Defines the name of the cookie value which represents the session ID. Can be useful to change when running in a container which assumes a certain name for the session cookie. | XASSESSIONID | | com.mendix.core.StorageService | Defines which storage service module will be used. The storage service module takes care of storing the actual files associated with `System.FileDocument` objects, such as uploaded files. Possible values are `com.mendix.storage. localfilesystem`, `com.mendix.storage.s3`, and `com.mendix.storage.azure`. | com.mendix.storage.localfilesystem | -| com.mendix.core.UseMimeDecoderForBase64 | The setting defines whether to use the Basic decoder ([RFC 4648](https://datatracker.ietf.org/doc/html/rfc4648)) or MIME decoder ([RFC 2045](https://datatracker.ietf.org/doc/html/rfc2045)) when decoding base64 binary data. The Basic decoder is recommended due to its strictness in not accepting any character outside the Base64 specification, see [Security Considerations](https://datatracker.ietf.org/doc/html/rfc4648#section-12). This setting exists for reasons of backward compatibility.
{{% alert color="warning" %}}Using the MIME decoder is deprecated and the option will be removed in future versions.{{% /alert %}} | false | +| com.mendix.core.UseMimeDecoderForBase64 | The setting defines whether to use the Basic decoder ([RFC 4648](https://datatracker.ietf.org/doc/html/rfc4648)) or MIME decoder ([RFC 2045](https://datatracker.ietf.org/doc/html/rfc2045)) when decoding base64 binary data. The Basic decoder is recommended due to its strictness in not accepting any character outside the Base64 specification, see [Security Considerations](https://datatracker.ietf.org/doc/html/rfc4648#section-12). This setting exists for reasons of backward compatibility.
Using the MIME decoder is deprecated and the option will be removed in future versions.
| false | | com.mendix.storage.PerformDeleteFromStorage | Defines whether a delete of a Mendix file document should result in an actual delete in the storage service. A reason to not perform an actual delete in the storage service can be when it is also used as a backup service. The options are: Additionally, we have legacy options `true` (same as `AllFiles`) and `false` (same as `TemporaryFiles`) which will be deprecated in the future. | true | | com.mendix.core.ProcessedTasksCleanupAge | This setting specifies (in milliseconds) how old objects in the System.ProcessedQueueTask have to be before they are removed from the database. See [Task Queue](/refguide/task-queue/#cleanup) for more details. | 365 days for projects migrated from Mendix 9 and 7 days for new projects or projects with an empty database. | | com.mendix.core.ProcessedTasksCleanupBatchSize | This setting specifies how many System.ProcessedQueueTask objects will be removed from the database each time the ProcessedTask cleanup action runs. See [Task Queue](/refguide/task-queue/#cleanup) for more details. | 10000 | | com.mendix.services.publish.AllowWebServiceUserBasicAuthenticationInODataAndREST | Set to `true` to allow web service users to access published [OData](/refguide/published-odata-services/) and [REST](/refguide/published-rest-services/) services when using basic authentication. | false | | EnableApacheCommonsLogging | Some libraries used by the Mendix runtime use [Apache Commons](https://commons.apache.org/) for logging. By default these log messages are suppressed. Set this value to `true` to receive the log messages from these libraries in the Mendix logs. | false | | HashAlgorithm | Specifies the hash algorithm used to generate hash values for attributes of the HashString type, such as the password of a user. This setting overrides the setting in Studio Pro, see [Hash Algorithm](/refguide/runtime-tab/#hash-algorithm). Possible values are `BCRYPT`, `SSHA256`, `SHA256` (not recommended) and `MD5` (not recommended). To override the default BCrypt cost, you can specify `BCRYPT:cost`, where 'cost' is a number between 10 and 30. An example value is `BCRYPT:12`. | BCRYPT | -| http.client.CleanupAfterSeconds | For the call REST service and call web service activities, the first request to a new host will create an HTTP client that will handle subsequent requests. When there are no new requests to the host for the specified time, the HTTP client will be cleaned up. A value of `0` means no cleanup.
{{% alert color="warning" %}}If the infrastructure provider closes this connection before this cleanup time, you can receive a `java.net. SocketException: Connection reset` error. You can reduce this value to prevent this, or handle the error in your [REST call](/refguide/call-rest-action/#troubleshooting).{{% /alert %}} | 355 (355 seconds) | -| http.client.MaxConnectionsPerRoute | The [maximum number of connections for a route](https://hc.apache.org/httpcomponents-client-4.5.x/current/httpclient/apidocs/org/apache/http/impl/client/HttpClientBuilder.html#setMaxConnPerRoute(int)) for call REST service and call web service activities.
{{% alert color="warning" %}}If your app uses these calls, it is strongly recommended that this value is increased. The default could prevent multiple end-users accessing the API simultaneously. A good value is around the number of concurrent users you expect, with a maximum of 250. The value of `http.client. MaxConnectionsTotal` may also need to increase.{{% /alert %}} | 2 | -| http.client.MaxConnectionsTotal | The [maximum number of connections allowed across all routes](https://hc.apache.org/httpcomponents-client-4.5.x/current/httpclient/apidocs/org/apache/http/impl/client/HttpClientBuilder.html#setMaxConnTotal(int)) for the call REST service and call web service activities.
{{% alert color="warning" %}}If you change the value of `http.client. MaxConnectionsPerRoute`, you will need to increase this value in line with that, up to a maximum of 250.{{% /alert %}} | 20 | +| http.client.CleanupAfterSeconds | For the call REST service and call web service activities, the first request to a new host will create an HTTP client that will handle subsequent requests. When there are no new requests to the host for the specified time, the HTTP client will be cleaned up. A value of `0` means no cleanup.
If the infrastructure provider closes this connection before this cleanup time, you can receive a `java.net. SocketException: Connection reset` error. You can reduce this value to prevent this, or handle the error in your [REST call](/refguide/call-rest-action/#troubleshooting).
| 355 (355 seconds) | +| http.client.MaxConnectionsPerRoute | The [maximum number of connections for a route](https://hc.apache.org/httpcomponents-client-4.5.x/current/httpclient/apidocs/org/apache/http/impl/client/HttpClientBuilder.html#setMaxConnPerRoute(int)) for call REST service and call web service activities.
If your app uses these calls, it is strongly recommended that this value is increased. The default could prevent multiple end-users accessing the API simultaneously. A good value is around the number of concurrent users you expect, with a maximum of 250. The value of `http.client. MaxConnectionsTotal` may also need to increase.
| 2 | +| http.client.MaxConnectionsTotal | The [maximum number of connections allowed across all routes](https://hc.apache.org/httpcomponents-client-4.5.x/current/httpclient/apidocs/org/apache/http/impl/client/HttpClientBuilder.html#setMaxConnTotal(int)) for the call REST service and call web service activities.
If you change the value of `http.client. MaxConnectionsPerRoute`, you will need to increase this value in line with that, up to a maximum of 250.
| 20 | | HttpClient.ValidateAfterInactivityMs | When set, pooled HTTP connections are validated after the specified number of milliseconds of inactivity before being reused. This helps detect stale connections in environments where intermediaries (for example, firewalls and load balancers) silently drop connections. Applies to the **Call REST service** and **Call web service** activities. | Disabled. *Introduced in Mendix 11.6.12, 11.12.5, and 11.15.0* | | JavaKeyStorePassword | Password for the default Java keystore. | changeit | -| MyScheduledEvents | A comma-separated string with the names of the events. Please don't forget the name of the module (a name can be, for example, `CRM.UpdateCustomerStatistics`). {{% alert color="warning" %}}When running in multiple nodes, each node should have the same value for all runtime settings. Setting different values for different nodes to force specific scheduled events to be executed by specific nodes is not supported. It will not work and can lead to unexpected runtime errors.{{% /alert %}} | | -| ScheduledEventExecution | Specify which scheduled events should be executed. Choices are `ALL`, `NONE`, or `SPECIFIED`. In the case of `SPECIFIED`, enumerate the scheduled events using the `MyScheduledEvents` configuration option described below. {{% alert color="warning" %}}This setting cannot be configured when running locally. To enable and disable scheduled events when running locally, please use the 'Enabled' setting on the [Scheduled Events execution properties](/refguide/scheduled-events/) in Studio Pro.{{% /alert %}} {{% alert color="warning" %}}When running in multiple nodes, each node should have the same value for all runtime settings. Setting different values for different nodes to force specific scheduled events to be executed by specific nodes is not supported. It will not work and can lead to unexpected runtime errors.{{% /alert %}} | NONE | +| MyScheduledEvents | A comma-separated string with the names of the events. Please don't forget the name of the module (a name can be, for example, `CRM.UpdateCustomerStatistics`).
When running in multiple nodes, each node should have the same value for all runtime settings. Setting different values for different nodes to force specific scheduled events to be executed by specific nodes is not supported. It will not work and can lead to unexpected runtime errors.
| | +| ScheduledEventExecution | Specify which scheduled events should be executed. Choices are `ALL`, `NONE`, or `SPECIFIED`. In the case of `SPECIFIED`, enumerate the scheduled events using the `MyScheduledEvents` configuration option described below.
This setting cannot be configured when running locally. To enable and disable scheduled events when running locally, please use the 'Enabled' setting on the [Scheduled Events execution properties](/refguide/scheduled-events/) in Studio Pro.
When running in multiple nodes, each node should have the same value for all runtime settings. Setting different values for different nodes to force specific scheduled events to be executed by specific nodes is not supported. It will not work and can lead to unexpected runtime errors.
| NONE | | SessionKeepAliveUpdatesInterval | Defines how often a runtime writes session LastActive dates in its memory back to the database. See [Session Timing Constraints and Defaults](/refguide/tricky-custom-runtime-settings/#session-timing) in *Advanced Custom Settings* for important details about valid values and their relationship to other session settings. | 100000 (100 seconds) | -| SessionTimeout | Defines after how much time a session becomes invalid (in milliseconds). After that timeout, a session becomes eligible for removal. The session will not be destroyed until the next time a scheduled task runs to clean up the active sessions.
{{% alert color="warning" %}} Sessions can be removed immediately by a query to the runtime after the session becomes eligible for removal. Navigating between pages is not enough to trigger a query to the runtime. To force a query to the runtime, use a microflow. For example, create a microflow that shows the Home page, then configure your app's navigation to call this microflow rather than relying on the navigation to directly show the page itself. This will ensure the runtime is queried and the user session is removed. {{% /alert %}} | 600000 (10 minutes) | +| SessionTimeout | Defines after how much time a session becomes invalid (in milliseconds). After that timeout, a session becomes eligible for removal. The session will not be destroyed until the next time a scheduled task runs to clean up the active sessions.
Sessions can be removed immediately by a query to the runtime after the session becomes eligible for removal. Navigating between pages is not enough to trigger a query to the runtime. To force a query to the runtime, use a microflow. For example, create a microflow that shows the Home page, then configure your app's navigation to call this microflow rather than relying on the navigation to directly show the page itself. This will ensure the runtime is queried and the user session is removed.
| 600000 (10 minutes) | | AbsoluteSessionTimeout | Defines after how much time a session becomes invalid (in milliseconds). After that timeout, a session becomes eligible for removal. As opposed to the `SessionTimeout`, the `AbsoluteSessionTimeout` timeout is not affected by user interactions. This does not override [`SessionTimeout`](#SessionTimeout), sessions also become invalid if `SessionTimeout` is reached. The session will be destroyed in the same way as for [`SessionTimeout`](#SessionTimeout), above. If the setting is not set then this behavior is disabled, which is the default. | Disabled. *Introduced in Mendix 11.4.0.* | | SessionValidationTimeout | Defines the maximum caching time (in milliseconds) for sessions. This means that after signing out of a session, the session might still be accessible for the configured time on other nodes of the cluster, but only if that node has handled a previous request on that session just before the logout happened. Lowering it makes the cluster more secure, because the chance that the session is still accessible within the configured time window is smaller. However, this also requires more frequent roundtrips to the database (which impacts performance). Increasing the timeout has the opposite effect | 30000 (30 seconds) | | Headers | A JSON object containing custom headers as key/value pairs, and can be used to define a `Content-Security-Policy`. For example, `{ "Content-Security-Policy": "script-src 'nonce-{{ NONCE }}'" }`. | `{}` | @@ -89,6 +91,8 @@ The following custom settings can be configured: | SessionKeepAliveUpdateBatchSize | This setting specifies how many sessions should be updated per batch when updating the `LastActive` attribute in the periodic system task. | 1000 *Introduced in Mendix 11.6.1 and 11.7.0.* | | UseOldExceptionBehavior | Allows you to set the exception message and wrapping behavior in the Mendix Runtime Server to the behavior below Mendix version 11.6.0. From Mendix 11.6.0 we changed the way messages are constructed to prevent the actual cause of the error being hidden in the details and exception wrapping is reduced significantly.

This change means that error messages will be different and have a significantly less deep exception nesting. Consequently, code which depends on finding some specific exception hardcoded at X levels deep (using `exception.getCause().getCause()` for example), will probably fail.

To restore the previous behavior, set `UseOldExceptionBehavior` to `true`. | false *Introduced in Mendix 11.6.0.* | +{{< /expandable-table >}} + ### ApplicationRootUrl {#applicationrooturl-section} The ApplicationRootUrl setting is used to specify the protocol, domain, and path to your application. This can be used within Java actions to get the public location of the application, for example when including a URL to the application when sending emails from a scheduled event. @@ -121,16 +125,22 @@ Mendix systems like OData that generate content based on a http request to the s The settings below influence the behavior of the log files. These settings can only be used on premises. In the cloud, these settings do not change any behavior. +{{< expandable-table title="Title of the table" >}} + | Name | Description | Default Value | | --- | --- | --- | | LogFileName | The name of the log file. The log files (actual log file plus back-up files) will be placed in the folder specified by the setting log path. | Application.log | | MaxLogFileSize | The maximum size per log file. When the log file reaches this maximum size, the log file will be backed up and a new empty log file will be used. | 2097152 (2 MB) | | MaxLogFileCount | The maximum count of log files preserved (actual file plus back-up files). When the maximum count is reached, the oldest backup file will be removed. | 10 | +{{< /expandable-table >}} + ## Database Settings {#database-settings} ### Common Settings +{{< expandable-table >}} + | Name | Description | Default Value | | --- | --- | --- | | ClientQueryTimeout | Defines the timeout in seconds for most of the database queries which are executed to load data into client widgets, like data grids. After the duration as specified here, a query will be canceled and an exception will be thrown. | | @@ -149,12 +159,16 @@ The settings below influence the behavior of the log files. These settings can o | JdbcLoginTimeout | This setting defines the database connection establishment time in milliseconds. | 5000 (5 seconds) | | DataStorage.OptimizeSecurityColumns | When true, query columns generated to evaluate XPath constraints in access rules are optimized to `true` if the runtime can determine that the value will always be true for the objects that the query returns. This is almost always an improvement, but we have seen cases where the PostgreSQL query planner has worse performance for the simpler query. | true | +{{< /expandable-table >}} + ### Connection Pooling {#connection-pooling} The settings below are used to define the database connection pooling behavior. Mendix Runtime uses a pool of reusable database connections. You can, for example, define how many connections can be used. Connection pooling is implemented using the [Apache Commons Object-pooling API](https://commons.apache.org/proper/pool/). These settings are configured *per runtime instance*. If you have [scaled your application](/developerportal/deploy/scale-environment/), the number of connections on the database side will be multiplied by the number of runtime instances. For example, if you set `ConnectionPoolingMaxIdle` to `50` and scale your app to 2 runtime instances, each runtime instance will create at most 50 connections, but on the database side this will lead to a maximum of 100 connections. +{{< expandable-table >}} + | Name | Value | Default Value | | --- | --- | --- | | ConnectionPoolingMaxWait | When the maximum number of "active" objects has been reached, the pool is said to be "exhausted." The "when exhausted" action used by the connection bus is `WHEN_EXHAUSTED_BLOCK`. Sets the maximum amount of time (in milliseconds) the `borrowObject()` method should block before throwing an exception when the pool is exhausted. When less than or equal to `0`, the `borrowObject()` method may block indefinitely. (!) | 10000 (10 seconds) | @@ -169,12 +183,16 @@ These settings are configured *per runtime instance*. If you have [scaled your a | ConnectionPoolingTestOnReturn | If `true`, a database connection will be validated by the connection pool when it is returned to the pool by the application. | false | | ConnectionPoolingTestWhileIdle | If `true`, all idle database connections will be validated when the idle object evictor runs. | false | +{{< /expandable-table >}} + ### Migration Settings The settings below are used to define the source database from which all data should be copied to the main database. You have to specify the settings below only once. The main database should exist and should be empty. During the app start-up, the data will be copied if the settings below are specified. Remove the settings afterward, because they are not needed anymore. Before the data copying process starts, the main database structure will be generated based on the source database structure. This is necessary to make sure all the data is copied without any problems, especially in cases where the source database has a larger element value than the current domain model specifies. +{{< expandable-table title="Title of the table" >}} + | Name | Value | Default Value | | --- | --- | --- | | SourceBuiltInDatabasePath | Defines the file location of the built-in source database. This setting is only necessary if a non-default location of the built-in database has to be used to copy the data from. | [deployment folder]/data/database | @@ -188,6 +206,8 @@ Before the data copying process starts, the main database structure will be gene | SourceDatabaseUserName | The user name for the connection to the source database. | | | SourceOracleServiceName | Defines the `SERVICE_NAME` when you have a connection with an Oracle DBMS as source. | | +{{< /expandable-table >}} + ## S3 Storage Service Settings {#amazon-s3-storage-service-settings} The settings described below influence the behavior of the Amazon S3 Storage Service module. This module can be used for both Amazon S3 Storage and IBM Cloud Object Storage. @@ -196,6 +216,8 @@ The settings described below influence the behavior of the Amazon S3 Storage Ser For deployments to Mendix Cloud, SAP BTP, and Mendix on Kubernetes, these settings are managed for you and cannot be overwritten. {{% /alert %}} +{{< expandable-table title="Title of the table" >}} + | Name | Description | Default Value | | --- | --- | --- | | com.mendix.storage.s3.AccessKeyId | Acts as the username to authenticate with the S3 service. | | @@ -203,7 +225,7 @@ For deployments to Mendix Cloud, SAP BTP, and Mendix on Kubernetes, these settin | com.mendix.storage.s3.BucketName | Name of the bucket where the files are stored on S3. | | | com.mendix.storage.s3.ResourceNamePrefix | Prefix for the keys under which objects are stored. Separators are not added automatically to keys. For keys like `prefix/key1`, `com.mendix.storage.s3.ResourceNamePrefix` should have value `prefix/`. | | | com.mendix.storage.s3.ResourceNameSuffix | Suffix for the keys under which objects are stored. This can be used when S3 buckets are divided into different segments for different users with different credentials (for example, store objects as `[key].customer1` for customer1 and as `[key].customer2` for customer2). Separators are not added automatically to keys. For keys like `key1.customer1`, `com.mendix.storage.s3.ResourceNameSuffix` should have value `.customer1`. | | -| com.mendix.storage.s3.Region | Sets the region in which the S3 bucket is located. This will be used to determine the service endpoint, unless overridden in **com.mendix.storage.s3.EndPoint**. This setting will also be used as the signing region for requests.

In Mendix version 11.6.0 and above, this setting is mandatory. The runtime will not start if this setting is not configured. {{% alert color="warning" %}}Using an incorrect region can lead to the following errors:

`Unable to load region from any of the providers in the chain.`

`The bucket you are attempting to access must be addressed using the specified endpoint.`

`The authorization header is malformed; the region 'us-east-1' is wrong.`{{% /alert %}} | | +| com.mendix.storage.s3.Region | Sets the region in which the S3 bucket is located. This will be used to determine the service endpoint, unless overridden in **com.mendix.storage.s3.EndPoint**. This setting will also be used as the signing region for requests.

In Mendix version 11.6.0 and above, this setting is mandatory. The runtime will not start if this setting is not configured.
Using an incorrect region can lead to the following errors:

`Unable to load region from any of the providers in the chain.`

`The bucket you are attempting to access must be addressed using the specified endpoint.`

`The authorization header is malformed; the region 'us-east-1' is wrong.`
| | | com.mendix.storage.s3.EndPoint | Overrides the default endpoint. This setting is required when the storage is on a non-AWS location (for example, IBM Cloud Object Storage). Both the endpoint (for example, `s3.example.com`) or the full URL (including the protocol) are supported (for example, `https://s3.example.com`). Note that when setting a custom endpoint, path style access will be enabled. For more information, see [Class S3ClientOptions](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/S3ClientOptions.html#withPathStyleAccess(boolean)). | | | com.mendix.storage.s3.UseV2Auth | Lets the authentication policy use `Signature Version 2` instead of the default `Signature Version 4`. Set this setting to `true` when the endpoint does not support `Signature Version 4`.

This setting is not supported in Mendix version 11.6.0 and above. | false | | com.mendix.storage.s3.EncryptionKeys | List of keys which can be used to encrypt and decrypt data at rest in S3. The right key to decrypt the data with is automatically selected depending on with which key it was encrypted. Each encryption key consists of a key id, the encryption algorithm and the actual key (Base64 encoded).

In Mendix version 11.6.0 and above, only AES encryption algorithm is supported. See [S3 Encryption Key Update](/refguide/s3-encryption-key-update/) for migration information and how to configure the setting. | | @@ -216,6 +238,8 @@ For deployments to Mendix Cloud, SAP BTP, and Mendix on Kubernetes, these settin | com.mendix.storage.s3.UseCACertificates | Set this value to `true` to use the configured [CACertificates](#CACertificates) for the connection to the S3 service. | false | | FileStorage.S3.DisableChunkedEncoding | Set this value to `true` to disable chunked transfer encoding when uploading files to S3 storage. This setting can be useful when working with S3-compatible storage services that do not fully support chunked encoding.`
*This setting was introduced in Mendix version 11.10.0 and 11.6.6 MTS* | false | +{{< /expandable-table >}} + ## Microsoft Azure SQL {#azure-sql} These settings can be changed to use a Microsoft Azure SQL database for your Mendix application. From b3add0a3e276aa9e28a68f85b42491711547b586 Mon Sep 17 00:00:00 2001 From: Karuna Vengurlekar Date: Wed, 4 Nov 2026 18:11:36 +0530 Subject: [PATCH 2/5] Revert "Change the expandable shortcode to {{< expandable-table >}}" This reverts commit 58b8dd3adf4db07e5a29853efe19add691621017. --- .../modules/oidc.md | 20 ++++----- .../runtime/custom-settings/_index.md | 44 +++++-------------- 2 files changed, 20 insertions(+), 44 deletions(-) diff --git a/content/en/docs/marketplace/platform-supported-content/modules/oidc.md b/content/en/docs/marketplace/platform-supported-content/modules/oidc.md index a53af6e92a1..b7e32c58a29 100644 --- a/content/en/docs/marketplace/platform-supported-content/modules/oidc.md +++ b/content/en/docs/marketplace/platform-supported-content/modules/oidc.md @@ -201,7 +201,7 @@ If your app is already developed using Mendix 9 or above, but uses the community This section provides an overview of updates for the OIDC SSO module across different versions. It includes new dependencies, snippet replacements, and microflow renaming to ensure a smooth transition while migrating to higher module versions. -{{< expandable-table >}} +{{% expandable-table %}} | Mendix Version | OIDC SSO Module Version | Important Migration Changes | Additional Information | | --- | --- | --- | --- | @@ -227,7 +227,7 @@ This section provides an overview of updates for the OIDC SSO module across diff | 9.24.2 and above | 3.0.0 (migrating to 3.0.0 and above) | Include [UserCommons](https://marketplace.mendix.com/link/component/223053) module as a dependency. | New UserCommons module | | | | Set `OIDC.Startup` microflow as part of the after-startup microflow. | Assign UserProvisioning for existing IdP configurations. | -{{< /expandable-table >}} +{{% /expandable-table %}} ## Design-time App Configuration{#app-configuration} @@ -241,14 +241,14 @@ If you are using OIDC module version 3.1.0 and above, you need to configure your Ensure that you have allocated the following user roles to the OIDC module and UserCommons (in version 3.0.0 and above) roles: -{{< expandable-table >}} +{{% expandable-table %}} | User Role | OIDC Module Role | | --- | --- | | Administrator | OIDC.Administrator, UserCommons.Administrator | | User | OIDC.User | -{{< /expandable-table >}} +{{% /expandable-table %}} {{< figure src="/attachments/appstore/platform-supported-content/modules/oidc/user-roles.png" alt="User roles tab showing Administrator and User roles with their assigned module roles" >}} @@ -635,7 +635,7 @@ You can set up custom user provisioning by setting constants when you deploy you You can set up custom user provisioning by setting the following constants. You can set default values when you build your app, but you can override these in the app's environment. -{{< expandable-table >}} +{{% expandable-table %}} | Constant | Use | Notes | Example | | --- | --- | --- | --- | @@ -649,7 +649,7 @@ You can set up custom user provisioning by setting the following constants. You | `CustomUserProvisioning` | a custom microflow to use for user provisioning | *optional* – in the form `modulename.microflowname` – the microflow name must begin with the string `UC_CustomProvisioning` | `Mymodule.UC_CustomProvisioning` | | `DisableMxAdmin` | deactivates Mx admin | *optional* | `True` | -{{< /expandable-table >}} +{{% /expandable-table %}} {{% alert color="info" %}} You may have a requirement that users log in to your application only via SSO. However, when you deploy your app on the Mendix Cloud, the platform may still create an MxAdmin user with a local password. From version 2.1.0 of the UserCommons module, if the flag for the `DisableMxAdmin` constant is set to `True`, the MxAdmin user will be deactivated via the startup microflow `ASU_UserCommons_StartUp`. @@ -706,7 +706,7 @@ If the standard configuration meets your needs and your application does not hav In the default configuration, the custom user entity is set as `Administration.Account`, the principal attribute is set as `Name`, and the default attribute mapping is provided. -{{< expandable-table title="Default Attribute Mapping" >}} +{{% expandable-table title=" Default Attribute Mapping"%}} | IdP Attribute | Configured Entity Attribute | | -------------------- | --------------------------- | @@ -714,7 +714,7 @@ In the default configuration, the custom user entity is set as `Administration.A | name | FullName | | sub | Name | -{{< /expandable-table >}} +{{% /expandable-table %}} ##### Modifying Default Attribute Mapping{#modify-default} @@ -779,7 +779,7 @@ The section below shows the methods to configure user provisioning when using OI By default, the `CUSTOM_UserProvisioning` microflow in the **USE_ME** > **1. Configuration** folder of the OIDC module uses the `OIDC_CustomUserParsing_Standard` microflow. This applies to the following mapping: -{{< expandable-table >}} +{{% expandable-table %}} | ID-token Provided by your IdP | Attribute of `Administration.Account` Object | | ----------------------------- | ----------------------------- | @@ -787,7 +787,7 @@ By default, the `CUSTOM_UserProvisioning` microflow in the **USE_ME** > **1. Con | name | Fullname | | email | Email | -{{< /expandable-table >}} +{{% /expandable-table %}} {{% alert color="warning" %}} Do not change the `UserProvisioning_StandardOIDC` microflow. This may cause problems if you upgrade to a newer version of the OIDC SSO module. Apply customizations to the `CUSTOM_UserProvisioning` microflow only. diff --git a/content/en/docs/refguide/runtime/custom-settings/_index.md b/content/en/docs/refguide/runtime/custom-settings/_index.md index d5929f5155a..0ede808041e 100644 --- a/content/en/docs/refguide/runtime/custom-settings/_index.md +++ b/content/en/docs/refguide/runtime/custom-settings/_index.md @@ -44,40 +44,38 @@ Durations and intervals can be specified in the following formats: The following custom settings can be configured: -{{< expandable-table >}} - | Name | Description | Default Value | | --- | --- | --- | | ApplicationRootUrl | see [ApplicationRootUrl](#applicationrooturl-section), below | In Mendix Cloud, https://\[domain\].mendixcloud.com | | CACertificates | A comma-separated list of paths to CA certificates. Example: `D:\App\CA1.pem, D:\App\CA2.pem, D:\App\CA3.pem, D:\App\CA4.pem` | | | ClientCertificatePasswords | Comma-separated list of passwords for Client Certificates (should match the **ClientCertificates** order). Example: `pwd1, pwd2, pwd3, pwd4` | | | ClientCertificates | Comma-separated list of paths to Client Certificates. Example: `D:\App\Mx1.pfx, D:\App\Mx2.pfx, D:\App\Mx3.pfx, D:\App\Mx4.pfx` | | -| ClientCertificateUsages | Only use this when you have multiple client certificates and you want to configure specific certificates for specific servers.
This setting defines which service must use which client certificate. See **NoClientCertificateUsages** if you want to make sure that no client certificate is used for a certain host or web service. The value of **ClientCertificateUsages** must be a comma-separated list of key/value items. A key/value item must be specified as `"identifier": "path to certificate"`.
For web services, use the imported web service name as the identifier.
For REST services, use the host name of the remote server as the identifier.
Please note that any backslash in the path must be doubled. The whole value must be enclosed by braces (`{ }`). For example: `{"Module.WebService1": "D:\\App\\Mx1.pfx", "www.my-rest-server.com": "D:\\App\\Mx2.pfx"}` | | +| ClientCertificateUsages | Only use this when you have multiple client certificates and you want to configure specific certificates for specific servers.
This setting defines which service must use which client certificate. See **NoClientCertificateUsages** if you want to make sure that no client certificate is used for a certain host or web service. The value of **ClientCertificateUsages** must be a comma-separated list of key/value items. A key/value item must be specified as `"identifier": "path to certificate"`.
For web services, use the imported web service name as the identifier.
For REST services, use the host name of the remote server as the identifier.
Please note that any backslash in the path must be doubled. The whole value must be enclosed by braces (`{ }`). For example: {{< figure src="/attachments/refguide/runtime/custom-settings/code_snippet.png" class="no-border" >}} | | | NoClientCertificateUsages | Comma-separated list of host names or imported web service names that should never be contacted using a client certificate. | | | ClusterManagerActionInterval | The interval (in milliseconds) used for performing all cluster manager actions. These are actions such as unblocking users and removing invalid sessions. See [Session Timing Constraints and Defaults](/refguide/tricky-custom-runtime-settings/#session-timing) in *Advanced Custom Settings* for important details about valid values and their relationship to other session settings. | 300000 (5 minutes) | -| com.mendix.core.isClusterSlave | Set to `true` on every node except the [Cluster Leader](/refguide/clustered-mendix-runtime/#cluster-leader-follower) in a high-availability scenario. This setting only applies when the Runtime is started through the administrative API (the leader-based startup model); it has no effect when the Runtime is started directly from a configuration file (the leaderless startup model), which is always the case for [Mendix Portable Runtime](/developerportal/deploy/portable-app-distribution-deploy/). See [Cluster Leader and Cluster Followers](/refguide/clustered-mendix-runtime/#cluster-leader-follower) for details on both models.
Managed platforms, such as the Cloud Foundry buildpack, usually set this for you. For a manual, on-premises installation managed through the administrative API (for example, using the Mendix Service Console), you need to set this yourself on all nodes except one.
| `false` | +| com.mendix.core.isClusterSlave | Set to `true` on every node except the [Cluster Leader](/refguide/clustered-mendix-runtime/#cluster-leader-follower) in a high-availability scenario. This setting only applies when the Runtime is started through the administrative API (the leader-based startup model); it has no effect when the Runtime is started directly from a configuration file (the leaderless startup model), which is always the case for [Mendix Portable Runtime](/developerportal/deploy/portable-app-distribution-deploy/). See [Cluster Leader and Cluster Followers](/refguide/clustered-mendix-runtime/#cluster-leader-follower) for details on both models.
{{% alert color="info" %}}Managed platforms, such as the Cloud Foundry buildpack, usually set this for you. For a manual, on-premises installation managed through the administrative API (for example, using the Mendix Service Console), you need to set this yourself on all nodes except one.{{% /alert %}} | `false` | | com.mendix.core.LenientDateTimeParsing | When set to `true`, the `parseDateTime` function will use more lenient parsing, as it did in Mendix 9. For example `parseDateTime("yyyyMMdd", "2021-11-10")` will return `2020-11-01` as a date if this is set to true, which is probably not the intended result.. If set to `false`, which is the default, this example will throw an error as it is expecting `20211110`. It is recommended to not enable this setting to avoid unexpected results. | `false` | | com.mendix.core.SameSiteCookies | The [SameSite](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite) property can be included in all cookies that are returned by the embedded HTTP server. The possible values are `Strict`, `Lax`, and `None`. The default is `Strict`. Setting it to `None` is typically needed only when an application is embedded in an iframe of another application with a different domain. Newer browsers may require the connection to be secure (HTTPS) when set to `None`. If the connection is plain HTTP, then this setting must be changed to `Strict` (recommended) or `Lax`. | | | com.mendix.core.ScheduledEventsCleanupAge | This setting specifies (in milliseconds) how old objects in the System.ScheduledEventInformation table have to be before they are removed from the database. See [Scheduled Events - Legacy](/refguide9/scheduled-events-legacy/#cleanup) for more details. | 365 days for projects migrated from Mendix 9 and 7 days for new projects or projects with an empty database. | | com.mendix.core.ScheduledEventsCleanupBatchSize | This setting specifies how many System.ScheduledEventInformation objects will be removed from the database each time the ScheduledEventInformation cleanup task runs. See [Scheduled Events - Legacy](/refguide9/scheduled-events-legacy/#cleanup) for more details. | 10000 | | com.mendix.core.SessionIdCookieName | Defines the name of the cookie value which represents the session ID. Can be useful to change when running in a container which assumes a certain name for the session cookie. | XASSESSIONID | | com.mendix.core.StorageService | Defines which storage service module will be used. The storage service module takes care of storing the actual files associated with `System.FileDocument` objects, such as uploaded files. Possible values are `com.mendix.storage. localfilesystem`, `com.mendix.storage.s3`, and `com.mendix.storage.azure`. | com.mendix.storage.localfilesystem | -| com.mendix.core.UseMimeDecoderForBase64 | The setting defines whether to use the Basic decoder ([RFC 4648](https://datatracker.ietf.org/doc/html/rfc4648)) or MIME decoder ([RFC 2045](https://datatracker.ietf.org/doc/html/rfc2045)) when decoding base64 binary data. The Basic decoder is recommended due to its strictness in not accepting any character outside the Base64 specification, see [Security Considerations](https://datatracker.ietf.org/doc/html/rfc4648#section-12). This setting exists for reasons of backward compatibility.
Using the MIME decoder is deprecated and the option will be removed in future versions.
| false | +| com.mendix.core.UseMimeDecoderForBase64 | The setting defines whether to use the Basic decoder ([RFC 4648](https://datatracker.ietf.org/doc/html/rfc4648)) or MIME decoder ([RFC 2045](https://datatracker.ietf.org/doc/html/rfc2045)) when decoding base64 binary data. The Basic decoder is recommended due to its strictness in not accepting any character outside the Base64 specification, see [Security Considerations](https://datatracker.ietf.org/doc/html/rfc4648#section-12). This setting exists for reasons of backward compatibility.
{{% alert color="warning" %}}Using the MIME decoder is deprecated and the option will be removed in future versions.{{% /alert %}} | false | | com.mendix.storage.PerformDeleteFromStorage | Defines whether a delete of a Mendix file document should result in an actual delete in the storage service. A reason to not perform an actual delete in the storage service can be when it is also used as a backup service. The options are: Additionally, we have legacy options `true` (same as `AllFiles`) and `false` (same as `TemporaryFiles`) which will be deprecated in the future. | true | | com.mendix.core.ProcessedTasksCleanupAge | This setting specifies (in milliseconds) how old objects in the System.ProcessedQueueTask have to be before they are removed from the database. See [Task Queue](/refguide/task-queue/#cleanup) for more details. | 365 days for projects migrated from Mendix 9 and 7 days for new projects or projects with an empty database. | | com.mendix.core.ProcessedTasksCleanupBatchSize | This setting specifies how many System.ProcessedQueueTask objects will be removed from the database each time the ProcessedTask cleanup action runs. See [Task Queue](/refguide/task-queue/#cleanup) for more details. | 10000 | | com.mendix.services.publish.AllowWebServiceUserBasicAuthenticationInODataAndREST | Set to `true` to allow web service users to access published [OData](/refguide/published-odata-services/) and [REST](/refguide/published-rest-services/) services when using basic authentication. | false | | EnableApacheCommonsLogging | Some libraries used by the Mendix runtime use [Apache Commons](https://commons.apache.org/) for logging. By default these log messages are suppressed. Set this value to `true` to receive the log messages from these libraries in the Mendix logs. | false | | HashAlgorithm | Specifies the hash algorithm used to generate hash values for attributes of the HashString type, such as the password of a user. This setting overrides the setting in Studio Pro, see [Hash Algorithm](/refguide/runtime-tab/#hash-algorithm). Possible values are `BCRYPT`, `SSHA256`, `SHA256` (not recommended) and `MD5` (not recommended). To override the default BCrypt cost, you can specify `BCRYPT:cost`, where 'cost' is a number between 10 and 30. An example value is `BCRYPT:12`. | BCRYPT | -| http.client.CleanupAfterSeconds | For the call REST service and call web service activities, the first request to a new host will create an HTTP client that will handle subsequent requests. When there are no new requests to the host for the specified time, the HTTP client will be cleaned up. A value of `0` means no cleanup.
If the infrastructure provider closes this connection before this cleanup time, you can receive a `java.net. SocketException: Connection reset` error. You can reduce this value to prevent this, or handle the error in your [REST call](/refguide/call-rest-action/#troubleshooting).
| 355 (355 seconds) | -| http.client.MaxConnectionsPerRoute | The [maximum number of connections for a route](https://hc.apache.org/httpcomponents-client-4.5.x/current/httpclient/apidocs/org/apache/http/impl/client/HttpClientBuilder.html#setMaxConnPerRoute(int)) for call REST service and call web service activities.
If your app uses these calls, it is strongly recommended that this value is increased. The default could prevent multiple end-users accessing the API simultaneously. A good value is around the number of concurrent users you expect, with a maximum of 250. The value of `http.client. MaxConnectionsTotal` may also need to increase.
| 2 | -| http.client.MaxConnectionsTotal | The [maximum number of connections allowed across all routes](https://hc.apache.org/httpcomponents-client-4.5.x/current/httpclient/apidocs/org/apache/http/impl/client/HttpClientBuilder.html#setMaxConnTotal(int)) for the call REST service and call web service activities.
If you change the value of `http.client. MaxConnectionsPerRoute`, you will need to increase this value in line with that, up to a maximum of 250.
| 20 | +| http.client.CleanupAfterSeconds | For the call REST service and call web service activities, the first request to a new host will create an HTTP client that will handle subsequent requests. When there are no new requests to the host for the specified time, the HTTP client will be cleaned up. A value of `0` means no cleanup.
{{% alert color="warning" %}}If the infrastructure provider closes this connection before this cleanup time, you can receive a `java.net. SocketException: Connection reset` error. You can reduce this value to prevent this, or handle the error in your [REST call](/refguide/call-rest-action/#troubleshooting).{{% /alert %}} | 355 (355 seconds) | +| http.client.MaxConnectionsPerRoute | The [maximum number of connections for a route](https://hc.apache.org/httpcomponents-client-4.5.x/current/httpclient/apidocs/org/apache/http/impl/client/HttpClientBuilder.html#setMaxConnPerRoute(int)) for call REST service and call web service activities.
{{% alert color="warning" %}}If your app uses these calls, it is strongly recommended that this value is increased. The default could prevent multiple end-users accessing the API simultaneously. A good value is around the number of concurrent users you expect, with a maximum of 250. The value of `http.client. MaxConnectionsTotal` may also need to increase.{{% /alert %}} | 2 | +| http.client.MaxConnectionsTotal | The [maximum number of connections allowed across all routes](https://hc.apache.org/httpcomponents-client-4.5.x/current/httpclient/apidocs/org/apache/http/impl/client/HttpClientBuilder.html#setMaxConnTotal(int)) for the call REST service and call web service activities.
{{% alert color="warning" %}}If you change the value of `http.client. MaxConnectionsPerRoute`, you will need to increase this value in line with that, up to a maximum of 250.{{% /alert %}} | 20 | | HttpClient.ValidateAfterInactivityMs | When set, pooled HTTP connections are validated after the specified number of milliseconds of inactivity before being reused. This helps detect stale connections in environments where intermediaries (for example, firewalls and load balancers) silently drop connections. Applies to the **Call REST service** and **Call web service** activities. | Disabled. *Introduced in Mendix 11.6.12, 11.12.5, and 11.15.0* | | JavaKeyStorePassword | Password for the default Java keystore. | changeit | -| MyScheduledEvents | A comma-separated string with the names of the events. Please don't forget the name of the module (a name can be, for example, `CRM.UpdateCustomerStatistics`).
When running in multiple nodes, each node should have the same value for all runtime settings. Setting different values for different nodes to force specific scheduled events to be executed by specific nodes is not supported. It will not work and can lead to unexpected runtime errors.
| | -| ScheduledEventExecution | Specify which scheduled events should be executed. Choices are `ALL`, `NONE`, or `SPECIFIED`. In the case of `SPECIFIED`, enumerate the scheduled events using the `MyScheduledEvents` configuration option described below.
This setting cannot be configured when running locally. To enable and disable scheduled events when running locally, please use the 'Enabled' setting on the [Scheduled Events execution properties](/refguide/scheduled-events/) in Studio Pro.
When running in multiple nodes, each node should have the same value for all runtime settings. Setting different values for different nodes to force specific scheduled events to be executed by specific nodes is not supported. It will not work and can lead to unexpected runtime errors.
| NONE | +| MyScheduledEvents | A comma-separated string with the names of the events. Please don't forget the name of the module (a name can be, for example, `CRM.UpdateCustomerStatistics`). {{% alert color="warning" %}}When running in multiple nodes, each node should have the same value for all runtime settings. Setting different values for different nodes to force specific scheduled events to be executed by specific nodes is not supported. It will not work and can lead to unexpected runtime errors.{{% /alert %}} | | +| ScheduledEventExecution | Specify which scheduled events should be executed. Choices are `ALL`, `NONE`, or `SPECIFIED`. In the case of `SPECIFIED`, enumerate the scheduled events using the `MyScheduledEvents` configuration option described below. {{% alert color="warning" %}}This setting cannot be configured when running locally. To enable and disable scheduled events when running locally, please use the 'Enabled' setting on the [Scheduled Events execution properties](/refguide/scheduled-events/) in Studio Pro.{{% /alert %}} {{% alert color="warning" %}}When running in multiple nodes, each node should have the same value for all runtime settings. Setting different values for different nodes to force specific scheduled events to be executed by specific nodes is not supported. It will not work and can lead to unexpected runtime errors.{{% /alert %}} | NONE | | SessionKeepAliveUpdatesInterval | Defines how often a runtime writes session LastActive dates in its memory back to the database. See [Session Timing Constraints and Defaults](/refguide/tricky-custom-runtime-settings/#session-timing) in *Advanced Custom Settings* for important details about valid values and their relationship to other session settings. | 100000 (100 seconds) | -| SessionTimeout | Defines after how much time a session becomes invalid (in milliseconds). After that timeout, a session becomes eligible for removal. The session will not be destroyed until the next time a scheduled task runs to clean up the active sessions.
Sessions can be removed immediately by a query to the runtime after the session becomes eligible for removal. Navigating between pages is not enough to trigger a query to the runtime. To force a query to the runtime, use a microflow. For example, create a microflow that shows the Home page, then configure your app's navigation to call this microflow rather than relying on the navigation to directly show the page itself. This will ensure the runtime is queried and the user session is removed.
| 600000 (10 minutes) | +| SessionTimeout | Defines after how much time a session becomes invalid (in milliseconds). After that timeout, a session becomes eligible for removal. The session will not be destroyed until the next time a scheduled task runs to clean up the active sessions.
{{% alert color="warning" %}} Sessions can be removed immediately by a query to the runtime after the session becomes eligible for removal. Navigating between pages is not enough to trigger a query to the runtime. To force a query to the runtime, use a microflow. For example, create a microflow that shows the Home page, then configure your app's navigation to call this microflow rather than relying on the navigation to directly show the page itself. This will ensure the runtime is queried and the user session is removed. {{% /alert %}} | 600000 (10 minutes) | | AbsoluteSessionTimeout | Defines after how much time a session becomes invalid (in milliseconds). After that timeout, a session becomes eligible for removal. As opposed to the `SessionTimeout`, the `AbsoluteSessionTimeout` timeout is not affected by user interactions. This does not override [`SessionTimeout`](#SessionTimeout), sessions also become invalid if `SessionTimeout` is reached. The session will be destroyed in the same way as for [`SessionTimeout`](#SessionTimeout), above. If the setting is not set then this behavior is disabled, which is the default. | Disabled. *Introduced in Mendix 11.4.0.* | | SessionValidationTimeout | Defines the maximum caching time (in milliseconds) for sessions. This means that after signing out of a session, the session might still be accessible for the configured time on other nodes of the cluster, but only if that node has handled a previous request on that session just before the logout happened. Lowering it makes the cluster more secure, because the chance that the session is still accessible within the configured time window is smaller. However, this also requires more frequent roundtrips to the database (which impacts performance). Increasing the timeout has the opposite effect | 30000 (30 seconds) | | Headers | A JSON object containing custom headers as key/value pairs, and can be used to define a `Content-Security-Policy`. For example, `{ "Content-Security-Policy": "script-src 'nonce-{{ NONCE }}'" }`. | `{}` | @@ -91,8 +89,6 @@ The following custom settings can be configured: | SessionKeepAliveUpdateBatchSize | This setting specifies how many sessions should be updated per batch when updating the `LastActive` attribute in the periodic system task. | 1000 *Introduced in Mendix 11.6.1 and 11.7.0.* | | UseOldExceptionBehavior | Allows you to set the exception message and wrapping behavior in the Mendix Runtime Server to the behavior below Mendix version 11.6.0. From Mendix 11.6.0 we changed the way messages are constructed to prevent the actual cause of the error being hidden in the details and exception wrapping is reduced significantly.

This change means that error messages will be different and have a significantly less deep exception nesting. Consequently, code which depends on finding some specific exception hardcoded at X levels deep (using `exception.getCause().getCause()` for example), will probably fail.

To restore the previous behavior, set `UseOldExceptionBehavior` to `true`. | false *Introduced in Mendix 11.6.0.* | -{{< /expandable-table >}} - ### ApplicationRootUrl {#applicationrooturl-section} The ApplicationRootUrl setting is used to specify the protocol, domain, and path to your application. This can be used within Java actions to get the public location of the application, for example when including a URL to the application when sending emails from a scheduled event. @@ -125,22 +121,16 @@ Mendix systems like OData that generate content based on a http request to the s The settings below influence the behavior of the log files. These settings can only be used on premises. In the cloud, these settings do not change any behavior. -{{< expandable-table title="Title of the table" >}} - | Name | Description | Default Value | | --- | --- | --- | | LogFileName | The name of the log file. The log files (actual log file plus back-up files) will be placed in the folder specified by the setting log path. | Application.log | | MaxLogFileSize | The maximum size per log file. When the log file reaches this maximum size, the log file will be backed up and a new empty log file will be used. | 2097152 (2 MB) | | MaxLogFileCount | The maximum count of log files preserved (actual file plus back-up files). When the maximum count is reached, the oldest backup file will be removed. | 10 | -{{< /expandable-table >}} - ## Database Settings {#database-settings} ### Common Settings -{{< expandable-table >}} - | Name | Description | Default Value | | --- | --- | --- | | ClientQueryTimeout | Defines the timeout in seconds for most of the database queries which are executed to load data into client widgets, like data grids. After the duration as specified here, a query will be canceled and an exception will be thrown. | | @@ -159,16 +149,12 @@ The settings below influence the behavior of the log files. These settings can o | JdbcLoginTimeout | This setting defines the database connection establishment time in milliseconds. | 5000 (5 seconds) | | DataStorage.OptimizeSecurityColumns | When true, query columns generated to evaluate XPath constraints in access rules are optimized to `true` if the runtime can determine that the value will always be true for the objects that the query returns. This is almost always an improvement, but we have seen cases where the PostgreSQL query planner has worse performance for the simpler query. | true | -{{< /expandable-table >}} - ### Connection Pooling {#connection-pooling} The settings below are used to define the database connection pooling behavior. Mendix Runtime uses a pool of reusable database connections. You can, for example, define how many connections can be used. Connection pooling is implemented using the [Apache Commons Object-pooling API](https://commons.apache.org/proper/pool/). These settings are configured *per runtime instance*. If you have [scaled your application](/developerportal/deploy/scale-environment/), the number of connections on the database side will be multiplied by the number of runtime instances. For example, if you set `ConnectionPoolingMaxIdle` to `50` and scale your app to 2 runtime instances, each runtime instance will create at most 50 connections, but on the database side this will lead to a maximum of 100 connections. -{{< expandable-table >}} - | Name | Value | Default Value | | --- | --- | --- | | ConnectionPoolingMaxWait | When the maximum number of "active" objects has been reached, the pool is said to be "exhausted." The "when exhausted" action used by the connection bus is `WHEN_EXHAUSTED_BLOCK`. Sets the maximum amount of time (in milliseconds) the `borrowObject()` method should block before throwing an exception when the pool is exhausted. When less than or equal to `0`, the `borrowObject()` method may block indefinitely. (!) | 10000 (10 seconds) | @@ -183,16 +169,12 @@ These settings are configured *per runtime instance*. If you have [scaled your a | ConnectionPoolingTestOnReturn | If `true`, a database connection will be validated by the connection pool when it is returned to the pool by the application. | false | | ConnectionPoolingTestWhileIdle | If `true`, all idle database connections will be validated when the idle object evictor runs. | false | -{{< /expandable-table >}} - ### Migration Settings The settings below are used to define the source database from which all data should be copied to the main database. You have to specify the settings below only once. The main database should exist and should be empty. During the app start-up, the data will be copied if the settings below are specified. Remove the settings afterward, because they are not needed anymore. Before the data copying process starts, the main database structure will be generated based on the source database structure. This is necessary to make sure all the data is copied without any problems, especially in cases where the source database has a larger element value than the current domain model specifies. -{{< expandable-table title="Title of the table" >}} - | Name | Value | Default Value | | --- | --- | --- | | SourceBuiltInDatabasePath | Defines the file location of the built-in source database. This setting is only necessary if a non-default location of the built-in database has to be used to copy the data from. | [deployment folder]/data/database | @@ -206,8 +188,6 @@ Before the data copying process starts, the main database structure will be gene | SourceDatabaseUserName | The user name for the connection to the source database. | | | SourceOracleServiceName | Defines the `SERVICE_NAME` when you have a connection with an Oracle DBMS as source. | | -{{< /expandable-table >}} - ## S3 Storage Service Settings {#amazon-s3-storage-service-settings} The settings described below influence the behavior of the Amazon S3 Storage Service module. This module can be used for both Amazon S3 Storage and IBM Cloud Object Storage. @@ -216,8 +196,6 @@ The settings described below influence the behavior of the Amazon S3 Storage Ser For deployments to Mendix Cloud, SAP BTP, and Mendix on Kubernetes, these settings are managed for you and cannot be overwritten. {{% /alert %}} -{{< expandable-table title="Title of the table" >}} - | Name | Description | Default Value | | --- | --- | --- | | com.mendix.storage.s3.AccessKeyId | Acts as the username to authenticate with the S3 service. | | @@ -225,7 +203,7 @@ For deployments to Mendix Cloud, SAP BTP, and Mendix on Kubernetes, these settin | com.mendix.storage.s3.BucketName | Name of the bucket where the files are stored on S3. | | | com.mendix.storage.s3.ResourceNamePrefix | Prefix for the keys under which objects are stored. Separators are not added automatically to keys. For keys like `prefix/key1`, `com.mendix.storage.s3.ResourceNamePrefix` should have value `prefix/`. | | | com.mendix.storage.s3.ResourceNameSuffix | Suffix for the keys under which objects are stored. This can be used when S3 buckets are divided into different segments for different users with different credentials (for example, store objects as `[key].customer1` for customer1 and as `[key].customer2` for customer2). Separators are not added automatically to keys. For keys like `key1.customer1`, `com.mendix.storage.s3.ResourceNameSuffix` should have value `.customer1`. | | -| com.mendix.storage.s3.Region | Sets the region in which the S3 bucket is located. This will be used to determine the service endpoint, unless overridden in **com.mendix.storage.s3.EndPoint**. This setting will also be used as the signing region for requests.

In Mendix version 11.6.0 and above, this setting is mandatory. The runtime will not start if this setting is not configured.
Using an incorrect region can lead to the following errors:

`Unable to load region from any of the providers in the chain.`

`The bucket you are attempting to access must be addressed using the specified endpoint.`

`The authorization header is malformed; the region 'us-east-1' is wrong.`
| | +| com.mendix.storage.s3.Region | Sets the region in which the S3 bucket is located. This will be used to determine the service endpoint, unless overridden in **com.mendix.storage.s3.EndPoint**. This setting will also be used as the signing region for requests.

In Mendix version 11.6.0 and above, this setting is mandatory. The runtime will not start if this setting is not configured. {{% alert color="warning" %}}Using an incorrect region can lead to the following errors:

`Unable to load region from any of the providers in the chain.`

`The bucket you are attempting to access must be addressed using the specified endpoint.`

`The authorization header is malformed; the region 'us-east-1' is wrong.`{{% /alert %}} | | | com.mendix.storage.s3.EndPoint | Overrides the default endpoint. This setting is required when the storage is on a non-AWS location (for example, IBM Cloud Object Storage). Both the endpoint (for example, `s3.example.com`) or the full URL (including the protocol) are supported (for example, `https://s3.example.com`). Note that when setting a custom endpoint, path style access will be enabled. For more information, see [Class S3ClientOptions](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/S3ClientOptions.html#withPathStyleAccess(boolean)). | | | com.mendix.storage.s3.UseV2Auth | Lets the authentication policy use `Signature Version 2` instead of the default `Signature Version 4`. Set this setting to `true` when the endpoint does not support `Signature Version 4`.

This setting is not supported in Mendix version 11.6.0 and above. | false | | com.mendix.storage.s3.EncryptionKeys | List of keys which can be used to encrypt and decrypt data at rest in S3. The right key to decrypt the data with is automatically selected depending on with which key it was encrypted. Each encryption key consists of a key id, the encryption algorithm and the actual key (Base64 encoded).

In Mendix version 11.6.0 and above, only AES encryption algorithm is supported. See [S3 Encryption Key Update](/refguide/s3-encryption-key-update/) for migration information and how to configure the setting. | | @@ -238,8 +216,6 @@ For deployments to Mendix Cloud, SAP BTP, and Mendix on Kubernetes, these settin | com.mendix.storage.s3.UseCACertificates | Set this value to `true` to use the configured [CACertificates](#CACertificates) for the connection to the S3 service. | false | | FileStorage.S3.DisableChunkedEncoding | Set this value to `true` to disable chunked transfer encoding when uploading files to S3 storage. This setting can be useful when working with S3-compatible storage services that do not fully support chunked encoding.`
*This setting was introduced in Mendix version 11.10.0 and 11.6.6 MTS* | false | -{{< /expandable-table >}} - ## Microsoft Azure SQL {#azure-sql} These settings can be changed to use a Microsoft Azure SQL database for your Mendix application. From 4c929fa699b1663bd3ad3016ad9f30d9e54277ec Mon Sep 17 00:00:00 2001 From: Karuna Vengurlekar Date: Wed, 4 Nov 2026 18:18:18 +0530 Subject: [PATCH 3/5] join any line that doesn't start with `|` --- .../en/docs/refguide/runtime/custom-settings/_index.md | 8 ++++++++ layouts/shortcodes/expandable-table.html | 3 ++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/content/en/docs/refguide/runtime/custom-settings/_index.md b/content/en/docs/refguide/runtime/custom-settings/_index.md index 0ede808041e..56093ed1b13 100644 --- a/content/en/docs/refguide/runtime/custom-settings/_index.md +++ b/content/en/docs/refguide/runtime/custom-settings/_index.md @@ -44,6 +44,8 @@ Durations and intervals can be specified in the following formats: The following custom settings can be configured: +{{< expandable-table >}} + | Name | Description | Default Value | | --- | --- | --- | | ApplicationRootUrl | see [ApplicationRootUrl](#applicationrooturl-section), below | In Mendix Cloud, https://\[domain\].mendixcloud.com | @@ -89,6 +91,8 @@ The following custom settings can be configured: | SessionKeepAliveUpdateBatchSize | This setting specifies how many sessions should be updated per batch when updating the `LastActive` attribute in the periodic system task. | 1000 *Introduced in Mendix 11.6.1 and 11.7.0.* | | UseOldExceptionBehavior | Allows you to set the exception message and wrapping behavior in the Mendix Runtime Server to the behavior below Mendix version 11.6.0. From Mendix 11.6.0 we changed the way messages are constructed to prevent the actual cause of the error being hidden in the details and exception wrapping is reduced significantly.

This change means that error messages will be different and have a significantly less deep exception nesting. Consequently, code which depends on finding some specific exception hardcoded at X levels deep (using `exception.getCause().getCause()` for example), will probably fail.

To restore the previous behavior, set `UseOldExceptionBehavior` to `true`. | false *Introduced in Mendix 11.6.0.* | +{{< /expandable-table >}} + ### ApplicationRootUrl {#applicationrooturl-section} The ApplicationRootUrl setting is used to specify the protocol, domain, and path to your application. This can be used within Java actions to get the public location of the application, for example when including a URL to the application when sending emails from a scheduled event. @@ -121,12 +125,16 @@ Mendix systems like OData that generate content based on a http request to the s The settings below influence the behavior of the log files. These settings can only be used on premises. In the cloud, these settings do not change any behavior. +{{< expandable-table >}} + | Name | Description | Default Value | | --- | --- | --- | | LogFileName | The name of the log file. The log files (actual log file plus back-up files) will be placed in the folder specified by the setting log path. | Application.log | | MaxLogFileSize | The maximum size per log file. When the log file reaches this maximum size, the log file will be backed up and a new empty log file will be used. | 2097152 (2 MB) | | MaxLogFileCount | The maximum count of log files preserved (actual file plus back-up files). When the maximum count is reached, the oldest backup file will be removed. | 10 | +{{< /expandable-table >}} + ## Database Settings {#database-settings} ### Common Settings diff --git a/layouts/shortcodes/expandable-table.html b/layouts/shortcodes/expandable-table.html index 6b7ac914434..da426057ccf 100644 --- a/layouts/shortcodes/expandable-table.html +++ b/layouts/shortcodes/expandable-table.html @@ -8,7 +8,8 @@
{{/* Strip leading indentation so tables indented inside a list are not rendered as code blocks */}} - {{ .Inner | replaceRE `(?m)^[ \t]+` "" | markdownify | safeHTML }} + {{/* Join lines that do not start with a pipe to the previous line, so multi-line output of shortcodes (for example, alert and figure) inside a table cell does not end the table row */}} + {{ .Inner | replaceRE `(?m)^[ \t]+` "" | replaceRE `\s*\n\s*([^|\s])` " $1" | markdownify | safeHTML }}
From 0a9a7617a1945f697efc3ae08a97f021dc816852 Mon Sep 17 00:00:00 2001 From: Karuna Vengurlekar Date: Wed, 4 Nov 2026 18:30:06 +0530 Subject: [PATCH 4/5] Apply changes to the examples --- .../SAML/saml-installation-configuration.md | 8 ++++---- .../modules/oidc.md | 20 +++++++++---------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/content/en/docs/marketplace/platform-supported-content/modules/SAML/saml-installation-configuration.md b/content/en/docs/marketplace/platform-supported-content/modules/SAML/saml-installation-configuration.md index 84db7111986..5363aaf2f21 100644 --- a/content/en/docs/marketplace/platform-supported-content/modules/SAML/saml-installation-configuration.md +++ b/content/en/docs/marketplace/platform-supported-content/modules/SAML/saml-installation-configuration.md @@ -62,7 +62,7 @@ If you use this method, do not forget to set the **SSOLandingPage** constant to The table below introduces you to several key updates when you upgrade the SAML module from V3.x to V4.x. -{{% expandable-table title="Changes in SAML Module Version 4.X" %}} +{{< expandable-table title="Changes in SAML Module Version 4.X" >}} | Feature | Changes in Version 4.X | | --- | --- | @@ -72,7 +72,7 @@ The table below introduces you to several key updates when you upgrade the SAML | InCommon Federation Support | Pre-configured support for InCommon Federation has been removed. You now need to create custom user provisioning microflows in version 4.0.0 | | MxModeleReflection | In the **MxObjects_Overview** page, the MxModeleReflection module refresh is no longer required. It is handled automatically in the **SAML20.Startup**. | -{{% /expandable-table %}} +{{< /expandable-table >}} ## Choosing a SAML Configuration Approach{#config-approach} @@ -220,7 +220,7 @@ The following entities are used to create IdP configurations: The table below shows you the different attributes and their values for quick reference. You can see the details of these attributes of the above entities in the [Reference Guide for SAML IdP Configuration](/appstore/modules/saml/idp-attributes/) document. -{{% expandable-table title="IdP Configuration Attributes" %}} +{{< expandable-table title="IdP Configuration Attributes" >}} | IDPConfiguration(Non-Persistable entity) | Description | Default Value | | --- | --- | --- | @@ -260,7 +260,7 @@ The table below shows you the different attributes and their values for quick re | **EncryptionKeyLength** | This constant represents the Encryption length | 2048 bits | | Active | After completion of IdP config it will make the Toggle Active | true | -{{% /expandable-table %}} +{{< /expandable-table >}} Deploy the application and log in with the SSO. For more information, see the [Deploy the Application and Login with SSO](#deploy-application) section above. diff --git a/content/en/docs/marketplace/platform-supported-content/modules/oidc.md b/content/en/docs/marketplace/platform-supported-content/modules/oidc.md index b7e32c58a29..5c81820af05 100644 --- a/content/en/docs/marketplace/platform-supported-content/modules/oidc.md +++ b/content/en/docs/marketplace/platform-supported-content/modules/oidc.md @@ -201,7 +201,7 @@ If your app is already developed using Mendix 9 or above, but uses the community This section provides an overview of updates for the OIDC SSO module across different versions. It includes new dependencies, snippet replacements, and microflow renaming to ensure a smooth transition while migrating to higher module versions. -{{% expandable-table %}} +{{< expandable-table >}} | Mendix Version | OIDC SSO Module Version | Important Migration Changes | Additional Information | | --- | --- | --- | --- | @@ -227,7 +227,7 @@ This section provides an overview of updates for the OIDC SSO module across diff | 9.24.2 and above | 3.0.0 (migrating to 3.0.0 and above) | Include [UserCommons](https://marketplace.mendix.com/link/component/223053) module as a dependency. | New UserCommons module | | | | Set `OIDC.Startup` microflow as part of the after-startup microflow. | Assign UserProvisioning for existing IdP configurations. | -{{% /expandable-table %}} +{{< /expandable-table >}} ## Design-time App Configuration{#app-configuration} @@ -241,14 +241,14 @@ If you are using OIDC module version 3.1.0 and above, you need to configure your Ensure that you have allocated the following user roles to the OIDC module and UserCommons (in version 3.0.0 and above) roles: -{{% expandable-table %}} +{{< expandable-table >}} | User Role | OIDC Module Role | | --- | --- | | Administrator | OIDC.Administrator, UserCommons.Administrator | | User | OIDC.User | -{{% /expandable-table %}} +{{< /expandable-table >}} {{< figure src="/attachments/appstore/platform-supported-content/modules/oidc/user-roles.png" alt="User roles tab showing Administrator and User roles with their assigned module roles" >}} @@ -635,7 +635,7 @@ You can set up custom user provisioning by setting constants when you deploy you You can set up custom user provisioning by setting the following constants. You can set default values when you build your app, but you can override these in the app's environment. -{{% expandable-table %}} +{{< expandable-table >}} | Constant | Use | Notes | Example | | --- | --- | --- | --- | @@ -649,7 +649,7 @@ You can set up custom user provisioning by setting the following constants. You | `CustomUserProvisioning` | a custom microflow to use for user provisioning | *optional* – in the form `modulename.microflowname` – the microflow name must begin with the string `UC_CustomProvisioning` | `Mymodule.UC_CustomProvisioning` | | `DisableMxAdmin` | deactivates Mx admin | *optional* | `True` | -{{% /expandable-table %}} +{{< /expandable-table >}} {{% alert color="info" %}} You may have a requirement that users log in to your application only via SSO. However, when you deploy your app on the Mendix Cloud, the platform may still create an MxAdmin user with a local password. From version 2.1.0 of the UserCommons module, if the flag for the `DisableMxAdmin` constant is set to `True`, the MxAdmin user will be deactivated via the startup microflow `ASU_UserCommons_StartUp`. @@ -706,7 +706,7 @@ If the standard configuration meets your needs and your application does not hav In the default configuration, the custom user entity is set as `Administration.Account`, the principal attribute is set as `Name`, and the default attribute mapping is provided. -{{% expandable-table title=" Default Attribute Mapping"%}} +{{< expandable-table title="Attribute Mapping" >}} | IdP Attribute | Configured Entity Attribute | | -------------------- | --------------------------- | @@ -714,7 +714,7 @@ In the default configuration, the custom user entity is set as `Administration.A | name | FullName | | sub | Name | -{{% /expandable-table %}} +{{< /expandable-table >}} ##### Modifying Default Attribute Mapping{#modify-default} @@ -779,7 +779,7 @@ The section below shows the methods to configure user provisioning when using OI By default, the `CUSTOM_UserProvisioning` microflow in the **USE_ME** > **1. Configuration** folder of the OIDC module uses the `OIDC_CustomUserParsing_Standard` microflow. This applies to the following mapping: -{{% expandable-table %}} +{{< expandable-table >}} | ID-token Provided by your IdP | Attribute of `Administration.Account` Object | | ----------------------------- | ----------------------------- | @@ -787,7 +787,7 @@ By default, the `CUSTOM_UserProvisioning` microflow in the **USE_ME** > **1. Con | name | Fullname | | email | Email | -{{% /expandable-table %}} +{{< /expandable-table >}} {{% alert color="warning" %}} Do not change the `UserProvisioning_StandardOIDC` microflow. This may cause problems if you upgrade to a newer version of the OIDC SSO module. Apply customizations to the `CUSTOM_UserProvisioning` microflow only. From 1915dde57a7fc3a3271e8039cb9c82ddaadc3194 Mon Sep 17 00:00:00 2001 From: Karuna Vengurlekar Date: Thu, 5 Nov 2026 16:57:22 +0530 Subject: [PATCH 5/5] Update instructions --- .../markdown-shortcodes.md | 31 +++++++++++++++---- 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/content/en/docs/community-tools/contribute-to-mendix-docs/markdown-shortcodes.md b/content/en/docs/community-tools/contribute-to-mendix-docs/markdown-shortcodes.md index 46c3116ffb0..cbd91d0a68e 100644 --- a/content/en/docs/community-tools/contribute-to-mendix-docs/markdown-shortcodes.md +++ b/content/en/docs/community-tools/contribute-to-mendix-docs/markdown-shortcodes.md @@ -110,33 +110,52 @@ public class Hello1 ### Expandable Tables -Use the `expandable-table` shortcode to add an **Expand Table** button above a wide table. When readers click the button, the table opens in a window on the same page, which makes it easier to read. Place the table between the opening and closing tags, with a blank line after the opening tag and before the closing tag: +Use the `expandable-table` shortcode to add an **Expand Table** button above a wide table. When readers click the button, the table opens in a window on the same page, which makes it easier to read. Place the table between the opening and closing tags, with a blank line after the opening tag and before the closing tag. Use the `<` delimiter, as in the following example: -{{% expandable-table %}} +{{< expandable-table >}} | Column1 | Column2 | | --- | --- | | Item1 | Item2 | | Item3 | Item4 | -{{% /expandable-table %}} +{{< /expandable-table >}} The optional `title` parameter sets the title shown at the top of the window. If you omit it or leave it blank, the window has no title. Here is an example: -{{% expandable-table title="Title of the table" %}} +{{< expandable-table title="Title of the table" >}} | Column1 | Column2 | | --- | --- | | Item1 | Item2 | | Item3 | Item4 | -{{% /expandable-table %}} +{{< /expandable-table >}} + +#### Shortcodes in Expandable Tables + +You can use other shortcodes, such as `alert` and `figure`, inside a table cell. Write the shortcode in the cell as you would elsewhere on the page. The expandable table joins the lines of the shortcode output, so the table row is not broken: + +{{< expandable-table title="Table with an alert" >}} + +| Column1 | Column2 | +| --- | --- | +| Item1 | Item2 {{% alert color="info" %}}This is an alert in a table cell.{{% /alert %}} | +| Item3 | Item4 | + +{{< /expandable-table >}} + +Keep the following in mind: + +* Write each table row on a single line. +* Place only table rows between the opening and closing tags. The shortcode joins any line that does not start with `|` to the previous line. +* Fenced code blocks cannot be used in a table cell. Use inline code instead. #### Expandable Tables in Lists -To use the shortcode in a list item, indent the shortcode tags and the table by four spaces, like any other content in the list item, and use the `<` delimiter instead of `%`. The shortcode removes the indentation from the table, so the table does not render as a code block: +To use the shortcode in a list item, indent the shortcode tags and the table by four spaces, like any other content in the list item. The shortcode removes the indentation from the table, so the table does not render as a code block: 1. Step 1.