diff --git a/.gitignore b/.gitignore index fc466bd6cd2..08262bce2a6 100644 --- a/.gitignore +++ b/.gitignore @@ -25,5 +25,3 @@ data/history.yml mx-1-get-hugo-and-node.ps1 mx-2-install-dependencies.bat mx-3-run-server.bat - -content/en/docs/howto7/mobile/push-notifications/setting-up-google-firebase-cloud-messaging-server.md diff --git a/assets/scss/_styles_project.scss b/assets/scss/_styles_project.scss index be3498c9f38..d1c1f903ff0 100644 --- a/assets/scss/_styles_project.scss +++ b/assets/scss/_styles_project.scss @@ -145,7 +145,7 @@ a:not(.btn):not(.td-sidebar-link):not(.card-text a):visited { } // Add icon after external links in main content (but exclude some content) -main a[href*="https://"]:not(.btn):not(.td-breadcrumbs a):not(.get-started):not(.lp a)::after { +main a[href*="https://"]:not(.btn):not(.td-breadcrumbs a):not(.get-started):not(.lp-panel-list a)::after { display: inline-block; width: 1rem; height: 1rem; @@ -155,9 +155,20 @@ main a[href*="https://"]:not(.btn):not(.td-breadcrumbs a):not(.get-started):not( filter: invert(14%) sepia(99%) saturate(4690%) hue-rotate(225deg) brightness(93%) contrast(95%); // Matches to $link-color (blue-8 from PDS). Keep updated with _variables_project.scss. } +// Add icon after external links in lp-panel-list - need to be a different colour +.lp-panel-list a[href*="https://"]:not(.btn):not(.td-breadcrumbs a):not(.get-started)::after { + display: inline-block; + width: 1rem; + height: 1rem; + margin-left: .2rem; + vertical-align: sub; + content: url("/mx-icons/external.svg"); + filter: invert(81%) sepia(55%) saturate(2783%) hue-rotate(181deg) brightness(103%) contrast(101%); // Matches to #8AC4FF specified in lp-panel-list in _front-page.scss. Keep updated with _variables_project.scss. Calculated using https://isotropic.co/tool/hex-color-to-css-filter/ +} + // Change external link icon color upon hover main a[href*="https://"]:hover::after { - filter: invert(15%) sepia(65%) saturate(5388%) hue-rotate(231deg) brightness(79%) contrast(121%); // Matches to $link-hover-color (blue-9 from PDS). Keep updated with _variables_project.scss. + filter: invert(15%) sepia(65%) saturate(5388%) hue-rotate(231deg) brightness(79%) contrast(121%); // Matches to $link-hover-color (blue-9 from PDS). Keep updated with _variables_project.scss. } .btn { diff --git a/assets/scss/_variables_project.scss b/assets/scss/_variables_project.scss index dcc02ceb945..253c34c5567 100644 --- a/assets/scss/_variables_project.scss +++ b/assets/scss/_variables_project.scss @@ -7,6 +7,7 @@ $enable-shadows: true; //TODO: consider removing this duplicate variable from th // Changed almost all colors to better match Mendix palette // Codes taken mostly from PDS (https://designsystem.mendix.com) +// See also filters in _styles_project.scss if any of these colours is changed $primary: #146FF4; // MX Blue (Blue-7 from PDS) YL - updated the Mendix Blue color to its latest version in MX 10 $primary-light: #47A9FF; // DB - Blue-5 from PDS diff --git a/content/en/docs/apidocs-mxsdk/apidocs/deployment/backups-api-v2.md b/content/en/docs/apidocs-mxsdk/apidocs/deployment/backups-api-v2.md index 24c03bacf35..e60783eaabc 100644 --- a/content/en/docs/apidocs-mxsdk/apidocs/deployment/backups-api-v2.md +++ b/content/en/docs/apidocs-mxsdk/apidocs/deployment/backups-api-v2.md @@ -304,7 +304,7 @@ An object with the following key-value pairs: #### Description -Requests the creation of an archive of a backup snapshot. The response is a JSON object containing the `archive_id` attribute which identifies an archive. use this `archive_id` in an API request to check the progress of the creation of this archive, and obtain a URL to allow you to download it. +Requests the creation of an archive of a backup snapshot. The response is a JSON object containing the `archive_id` attribute which identifies an archive. Use this `archive_id` in an API request to check the progress of the creation of this archive, and obtain a URL to allow you to download it. ```bash HTTP Method: POST diff --git a/content/en/docs/apidocs-mxsdk/apidocs/deployment/build-api.md b/content/en/docs/apidocs-mxsdk/apidocs/deployment/build-api.md index f857e952cc7..332cb7cbb1e 100644 --- a/content/en/docs/apidocs-mxsdk/apidocs/deployment/build-api.md +++ b/content/en/docs/apidocs-mxsdk/apidocs/deployment/build-api.md @@ -7,7 +7,7 @@ weight: 20 --- {{% alert color="warning" %}} -The Build API only works for apps which are deployed to the Mendix Cloud. +The Build API only works for apps which are deployed to Mendix Cloud. {{% /alert %}} ## Introduction diff --git a/content/en/docs/apidocs-mxsdk/apidocs/frontend/pluggable-widgets/pluggable-widgets-property-types.md b/content/en/docs/apidocs-mxsdk/apidocs/frontend/pluggable-widgets/pluggable-widgets-property-types.md index 946ca84d4c9..ecac40d2005 100644 --- a/content/en/docs/apidocs-mxsdk/apidocs/frontend/pluggable-widgets/pluggable-widgets-property-types.md +++ b/content/en/docs/apidocs-mxsdk/apidocs/frontend/pluggable-widgets/pluggable-widgets-property-types.md @@ -475,6 +475,10 @@ Then the Studio Pro UI for the property appears like this: ### Action {#action} +{{% alert color="info" %}} +The `defaultType` and `defaultValue` attributes for Action were introduced in Mendix [10.15](/releasenotes/studio-pro/10.15/). +{{% /alert %}} + The action property type allows a user to configure an action which can do things like call nanoflows, save changes, and open pages. If a `dataSource` attribute is not specified, the client will receive an `ActionValue` representing the action or `undefined` if the **Do nothing** action was selected. @@ -483,11 +487,13 @@ When a `dataSource` attribute is specified and configured by the user, it is pas #### XML Attributes -| Attribute | Required | Attribute Type | Description | -|--------------|----------|----------------|-----------------------------------------------------------------------------------------| -| `type` | Yes | String | Must be `action` | -| `key` | Yes | String | See [key](#key) | -| `dataSource` | No | Property Path | Specifies path to a [`datasource`](#datasource) property linked to this action property | +| Attribute | Required | Attribute Type | Description | +|----------------|----------|----------------|---------------------------------------------------------------------------------------------------------| +| `type` | Yes | String | Must be `action` | +| `key` | Yes | String | See [key](#key) | +| `dataSource` | No | Property Path | Specifies path to a [`datasource`](#datasource) property linked to this action property | +| `defaultValue` | No | String | Default value for the property, the format should be `.` | +| `defaultType` | No | String | Default type for the property, supported values are `None`, `OpenPage`, `CallNanoflow`, `CallMicroflow` | #### Studio Pro UI diff --git a/content/en/docs/apidocs-mxsdk/apidocs/governance/user-management-api.md b/content/en/docs/apidocs-mxsdk/apidocs/governance/user-management-api.md index 519907861c6..1a088efdb28 100644 --- a/content/en/docs/apidocs-mxsdk/apidocs/governance/user-management-api.md +++ b/content/en/docs/apidocs-mxsdk/apidocs/governance/user-management-api.md @@ -10,7 +10,9 @@ deprecated: true ## Introduction {{% alert color="warning" %}} -This API is deprecated. If you are currently using this API or intend to start using it, please look at, and contribute to, [this idea in the Mendix Community](https://community.mendix.com/link/space/user-experience/ideas/3962). This will allow us to understand your use case and will help us to prioritize a new API that is fit for purpose. +This API is deprecated. If you are currently using this API or intend to start using it, please look at, and contribute to [this idea in the Mendix Community](https://community.mendix.com/link/space/user-experience/ideas/3962). This will allow us to understand your use case and will help us to prioritize a new API that is fit for purpose. + +Alternatively, you can consider using the [Projects API](/apidocs-mxsdk/apidocs/projects-api/), which provides functionality to manage project memberships for platform users. Although it does not fully cover all kinds of platform users, it can still serve as a viable option for many use cases. Additionally, if you are using BYOIDP, you can restrict platform access to a designated group of users by creating a Mendix platform users group in your IdP. For more information, see [Set Up an SSO (BYOIDP)](/control-center/security/set-up-sso-byoidp/). {{% /alert %}} The User Management API allows your company's user management systems to integrate with the Mendix Platform. Through this API, you can create and manage user accounts in your company. Additionally you can create and manage groups. In the Mendix Platform, you can define group policies for groups which grant access to your company's applications to their members. diff --git a/content/en/docs/apidocs-mxsdk/apidocs/studio-pro/extensibility-api/_index.md b/content/en/docs/apidocs-mxsdk/apidocs/studio-pro/extensibility-api/_index.md index 6f8098776b4..a0bb1261788 100644 --- a/content/en/docs/apidocs-mxsdk/apidocs/studio-pro/extensibility-api/_index.md +++ b/content/en/docs/apidocs-mxsdk/apidocs/studio-pro/extensibility-api/_index.md @@ -37,6 +37,12 @@ Here is a list of how-tos for you to begin with: * [How to host some web content inside a modal dialog using a modal web view](/apidocs-mxsdk/apidocs/extensibility-api/create-modal-web-view/) * [How to create microflows for calculations](/apidocs-mxsdk/apidocs/extensibility-api/create-microflows-for-calculations/) +## Advanced APIs + +APIs for the Mendix platform's advanced users: + +* [Untyped Model Access API](/apidocs-mxsdk/apidocs/extensibility-api/extensibility-api-howtos/untyped-model-access-api/) + ## Learn More You can dive into the following topics in depth: diff --git a/content/en/docs/apidocs-mxsdk/apidocs/studio-pro/extensibility-api/extensibility-api-howtos/interact-with-model-api.md b/content/en/docs/apidocs-mxsdk/apidocs/studio-pro/extensibility-api/extensibility-api-howtos/interact-with-model-api.md index 8b96fe63a12..f709601140c 100644 --- a/content/en/docs/apidocs-mxsdk/apidocs/studio-pro/extensibility-api/extensibility-api-howtos/interact-with-model-api.md +++ b/content/en/docs/apidocs-mxsdk/apidocs/studio-pro/extensibility-api/extensibility-api-howtos/interact-with-model-api.md @@ -12,7 +12,7 @@ After you create some basic extensions, you want to interact with the Studio Pro The easiest way to gain access to the model is by using the `CurrentApp` property of Extension class. All extension classes implement the [`Mendix.StudioPro.ExtensionsAPI.UI.UIExtensionBase`](https://github.com/mendix/ExtensionAPI-Samples/blob/main/API%20Reference/Mendix.StudioPro.ExtensionsAPI.UI/UIExtensionBase.md) base class which provides this access. -The `CurrentApp` property exposes an implementation of [`IModel`](https://github.com/mendix/ExtensionAPI-Samples/blob/main/API%20Reference/Mendix.StudioPro.ExtensionsAPI.Model/IModel.md). with a `IModel` reference you can gain access to any other model elements. However, any changes that you introduce must be contained within a model transaction. +The `CurrentApp` property exposes an implementation of [`IModel`](https://github.com/mendix/ExtensionAPI-Samples/blob/main/API%20Reference/Mendix.StudioPro.ExtensionsAPI.Model/IModel.md). With a `IModel` reference you can gain access to any other model elements. However, any changes that you introduce must be contained within a model transaction. ## Interacting with Model Elements @@ -22,9 +22,9 @@ Transactions do not provide a way to isolate changes, but to group them. That is To create transaction you can call [`IModel.StartTransaction`](https://github.com/mendix/ExtensionAPI-Samples/blob/main/API%20Reference/Mendix.StudioPro.ExtensionsAPI.Model/IModel/StartTransaction.md). This method will return a transaction object which implements [`ITransaction`](https://github.com/mendix/ExtensionAPI-Samples/blob/main/API%20Reference/Mendix.StudioPro.ExtensionsAPI.Model/ITransaction.md). -For your changes to reflect within the model. you must first commit the transaction by calling [`ITransaction.Commit`](https://github.com/mendix/ExtensionAPI-Samples/blob/main/API%20Reference/Mendix.StudioPro.ExtensionsAPI.Model/ITransaction/Commit.md). +For your changes to reflect within the model, you must first commit the transaction by calling [`ITransaction.Commit`](https://github.com/mendix/ExtensionAPI-Samples/blob/main/API%20Reference/Mendix.StudioPro.ExtensionsAPI.Model/ITransaction/Commit.md). -Alternatively. if you wish to abort or revert your changes, you can call [`ITransaction.Rollback`](https://github.com/mendix/ExtensionAPI-Samples/blob/main/API%20Reference/Mendix.StudioPro.ExtensionsAPI.Model/ITransaction/Rollback.md). +Alternatively, if you wish to abort or revert your changes, you can call [`ITransaction.Rollback`](https://github.com/mendix/ExtensionAPI-Samples/blob/main/API%20Reference/Mendix.StudioPro.ExtensionsAPI.Model/ITransaction/Rollback.md). ## Examples diff --git a/content/en/docs/apidocs-mxsdk/apidocs/studio-pro/extensibility-api/extensibility-api-howtos/untyped-model-api.md b/content/en/docs/apidocs-mxsdk/apidocs/studio-pro/extensibility-api/extensibility-api-howtos/untyped-model-api.md new file mode 100644 index 00000000000..8fea3873b07 --- /dev/null +++ b/content/en/docs/apidocs-mxsdk/apidocs/studio-pro/extensibility-api/extensibility-api-howtos/untyped-model-api.md @@ -0,0 +1,110 @@ +--- +title: "Use the Untyped Model Access API" +url: /apidocs-mxsdk/apidocs/extensibility-api/extensibility-api-howtos/untyped-model-access-api/ +weight: 24 +--- + +## Introduction + +The Untyped Model Access API caters to the advanced users who are familiar with the internals of the Mendix platform. With the Untyped Model API, you can access the rich data of model elements. + +When you need to use model elements, units, and property names in the Untyped Model API, you can reference the [Mendix Model SDK](https://apidocs.rnd.mendix.com/modelsdk/latest/index.html). Moreover, you can find the type names used by the Untyped Model Access API under the [structureTypeName](https://apidocs.rnd.mendix.com/modelsdk/latest/classes/Structure.html#structureTypeName) property of any model element. + +{{% alert color="info" %}} +All methods provided by the Untyped Model API are recursive to reduce the amount of API calls necessary to get to the content you are looking for. +{{% /alert %}} + +## Prerequisites + +To see the Untyped Model API in action, as described in the examples in this document, you must create a microflow having the default name `MyFirstLogic` with an action, and add an entity to the domain model. + +## Getting Started + +To start using the Untyped Model API, import it: + +```csharp +class Sample(IUntypedModelAccessService untypedModelAccessService) +{ +} +``` + +## Gaining Access to the Model Root + +To gain access to the model `Root`, request it from the newly added API service: + +```csharp +class Sample2(IUntypedModelAccessService untypedModelAccessService, IModel currentApp) +{ + public IModelRoot GetUntypedModelRoot() => untypedModelAccessService.GetUntypedModel(currentApp); +} + +``` + +## Requesting Top-level Model Elements + +To start going through the model elements, such as `Apps` and `Modules`, choose a starting point first: + +```csharp +class Sample3(IUntypedModelAccessService untypedModelAccessService, IModel currentApp) +{ + public IModelUnit GetProjectData() => + untypedModelAccessService.GetUntypedModel(currentApp) + .GetUnitsOfType("Projects$Project") + .Single(); + + public IModelUnit GetMyModuleData() => + untypedModelAccessService.GetUntypedModel(currentApp) + .GetUnitsOfType("Projects$Module") + .Single(unit => unit.Name == "MyFirstModule"); +} +``` + +## Accessing Child Elements + +It is possible to access the child elements of a model element, such as the actions of a microflow or entities of a domain model. + +Using either `GetElements` or `GetElementsOfType`, can help you, for example, analyze these elements' properties to implement custom validation rules. See an example below: + +```csharp +class Sample4(IUntypedModelAccessService untypedModelAccessService, IModel currentApp) +{ + public IReadOnlyList GetMicroflowActionActivities() => + untypedModelAccessService.GetUntypedModel(currentApp) + .GetUnitsOfType("Projects$Module") + .Single(unit => unit.Name == "MyFirstModule") + .GetUnitsOfType("Microflows$Microflow") + .Single(unit => unit.Name == "MyFirstLogic") + .GetElementsOfType("Microflows$ActionActivity"); + + public IReadOnlyList GetDomainModelEntities() => + untypedModelAccessService.GetUntypedModel(currentApp) + .GetUnitsOfType("Projects$Module") + .Single(unit => unit.Name == "MyFirstModule") + .GetUnitsOfType("DomainModels$DomainModel").Single() + .GetElementsOfType("DomainModels$Entity"); +} +``` + +## Getting Model Unit's Properties + +In case you would like to extract data out of a model element or unit, you need to access its properties. See an example below: + +```csharp +class Sample5(IUntypedModelAccessService untypedModelAccessService, IModel currentApp) +{ + private IReadOnlyList GetProjectRuntimeSettingsProperties() => + untypedModelAccessService.GetUntypedModel(currentApp) + .GetUnitsOfType("Settings$ProjectSettings") + .Single() + .GetElements() + .Single(element => element.Type == "Settings$RuntimeSettings") + .GetProperties(); + + + public string? GetAfterStartupMicroflowId() => + GetProjectRuntimeSettingsProperties() + .Single(property => property.Name == "AfterStartupMicroflowId") + .Value? + .ToString(); +} +``` diff --git a/content/en/docs/apidocs-mxsdk/apidocs/studio-pro/extensibility-api/get-started.md b/content/en/docs/apidocs-mxsdk/apidocs/studio-pro/extensibility-api/get-started.md index 908dc5c8f4a..9ba29b88186 100644 --- a/content/en/docs/apidocs-mxsdk/apidocs/studio-pro/extensibility-api/get-started.md +++ b/content/en/docs/apidocs-mxsdk/apidocs/studio-pro/extensibility-api/get-started.md @@ -23,7 +23,7 @@ Make sure to keep this Studio Pro installation up-to-date to benefit from new fe Extensions can be built on any operating system as the underlying framework is cross-platform. {{% /alert %}} -## Using Extensions API via a Hosted NuGet Package +## Using Extensibility API via a Hosted NuGet Package You can start extension development by simply including the `Mendix.StudioPro.ExtensionsAPI` NuGet package to your project by searching for *Mendix.Studio.ExtensionsAPI* in NuGet. @@ -32,7 +32,7 @@ You can start extension development by simply including the `Mendix.StudioPro.Ex Depending on your local environment setup, you possibly need to manually add a NuGet package to your solution. You can add a package source to Visual Studio via the menu: **Tools** > **Options** > **NuGet Package Manager** > **Package Sources** -## Importing Extensions API via a NuGet Package Hosted on a Local Repository +## Importing Extensibility API via a NuGet Package Hosted on a Local Repository Another option to start extension development is to import a locally hosted `Mendix.StudioPro.ExtensionsAPI` NuGet package into your project. diff --git a/content/en/docs/apidocs-mxsdk/apidocs/studio-pro/extensibility-api/release-notes.md b/content/en/docs/apidocs-mxsdk/apidocs/studio-pro/extensibility-api/release-notes.md index 47b94b66811..2cd8c286cf8 100644 --- a/content/en/docs/apidocs-mxsdk/apidocs/studio-pro/extensibility-api/release-notes.md +++ b/content/en/docs/apidocs-mxsdk/apidocs/studio-pro/extensibility-api/release-notes.md @@ -7,39 +7,46 @@ numberless_headings: true These release notes cover changes to the Extensibility API. +## Version 10.15.0 + +* We introduced the Untyped Model Access API. For more details and practical examples, see [How to Use the Untyped Model Access API](/apidocs-mxsdk/apidocs/extensibility-api/extensibility-api-howtos/untyped-model-access-api/). +* We added `CurrentLanguage` to `IConfiguration` to provide which language is currently set for the UI of Studio Pro. + ## Version 10.14.0 * We added the event `ActiveDocumentChanged`, which allows an extension to be notified when the active document changes in Studio Pro. If the document is not yet supported by the Extensibility API, only its name and type will be returned. * We added support for several microflow activities for lists and objects. * We introduced `IMicroflowActivitiesService`, which includes several functions to facilitate the creation of these new activities. +## Version 10.13.1 + +* No user facing changes. However, the extension package version must be the same as your Studio Pro version. + ## Version 10.13.0 * We fixed a bug where error handling for an activity was lost after you deployed an app. * We fixed a bug where extensions got reloaded during the creation of a deployment package. -## Version 10.12.0 +## Version 10.12.5 + +* No user facing changes. However, the extension package version must be the same as your Studio Pro version. -* We added a new menu public API that is simpler to use than the previous API. The previous API has now been moved to the internal API to only be used by internal Mendix employees. -* We added a new method in the project to allow retrieval of all the documents in it by type and/or module. -* We added `StudioProImage` that has now removed the need to use `Eto` images from the Extensibility API. -* We added the capability to add modules to a project through the Extensibility API. -* We added the `IStudioProNotificationService` that enables showing the balloon notifications in Studio Pro from the Extensibility API. +## Version 10.12.4 -## Version 10.10.0 +* No user facing changes. However, the extension package version must be the same as your Studio Pro version. -* It is now possible to export an add-on module with an extension inside it, only with the `--enable-extension-development` feature flag enabled. +## Version 10.12.3 -## Version 10.8.0 +* No user facing changes. However, the extension package version must be the same as your Studio Pro version. -* We added the new Extensions Overview page where users can view the current app-level extensions loaded by Studio Pro. The new page can be accessed via the following menu: **View** > **Extensions**. +## Version 10.12.2 -## Version 10.7.0 +* No user facing changes. However, the extension package version must be the same as your Studio Pro version. -* We renamed the `MicroflowService UpdateActionAfterRename` method to `RenameVariable`. -* We enable error dialogs for extensions when using the `--enable-extension-development` feature flag. +## Version 10.12.1 -## Version 10.6.0 +* No user facing changes. However, the extension package version must be the same as your Studio Pro version. + +## Version 10.12.0 -* The Extensibility API is released for beta usage. -* We fixed a bug when dealing with model elements detached from a container. +* The first [beta](/releasenotes/beta-features/) release of the Extensibility API. diff --git a/content/en/docs/appstore/use-content/modules/advanced-audit-trail/_index.md b/content/en/docs/appstore/use-content/modules/advanced-audit-trail/_index.md index 5410ccc8df0..a4c41b8d6b5 100644 --- a/content/en/docs/appstore/use-content/modules/advanced-audit-trail/_index.md +++ b/content/en/docs/appstore/use-content/modules/advanced-audit-trail/_index.md @@ -45,7 +45,7 @@ On Mendix Cloud XS [resource packs](/developerportal/deploy/mendix-cloud-deploy/ ### Prerequisites * You need to use Advanced Audit Trail with Studio Pro versions starting with [9.24.18](/releasenotes/studio-pro/9.24/#92418). -* You need to have a [subscription](#obtain-license-key) to the Advanced Audit Trail solution to store your data in an external data storage that runs in the Mendix Cloud. +* You need to have a [subscription](#obtain-license-key) to the Advanced Audit Trail solution to store your data in an external data storage that runs in Mendix Cloud. ### Dependencies diff --git a/content/en/docs/appstore/use-content/modules/aws/amazon-sagemaker-machine-learning.md b/content/en/docs/appstore/use-content/modules/aws/amazon-sagemaker-machine-learning.md index b3ebc17e15c..216d16aafb3 100644 --- a/content/en/docs/appstore/use-content/modules/aws/amazon-sagemaker-machine-learning.md +++ b/content/en/docs/appstore/use-content/modules/aws/amazon-sagemaker-machine-learning.md @@ -78,7 +78,7 @@ Then 4 portions of data are created, which will be used for fitting & predicting The sklearn.model_selection.train_test_split spits the arrays into random train and test subsets. -In the next lines. the pipeline object is created: +In the next lines, the pipeline object is created: *pipe = make_pipeline( CountVectorizer(binary=True), diff --git a/content/en/docs/appstore/use-content/modules/aws/aws-authentication.md b/content/en/docs/appstore/use-content/modules/aws/aws-authentication.md index 31f4d6392b7..241acb8fdd6 100644 --- a/content/en/docs/appstore/use-content/modules/aws/aws-authentication.md +++ b/content/en/docs/appstore/use-content/modules/aws/aws-authentication.md @@ -169,7 +169,7 @@ To run the AWS Authentication connector locally using Studio Pro, you must add t 4. In the **Constants** tab, configure the constants of the temporary credentials' connection details. 5. Make sure that the value of **Client certificate ID** correctly indicates the position of the certificate in the runtime setting. For example, if three certificates have been added in the runtime setting, and the client certificate that you want to use is the second one, then set **Client certificate ID** to *2*. -6. click **OK**. +6. Click **OK**. {{< figure src="/attachments/appstore/use-content/modules/aws-authentication/local-config-session-credentials-constants.png" class="no-border" >}} diff --git a/content/en/docs/appstore/use-content/modules/data-widgets/data-grid-2-properties.md b/content/en/docs/appstore/use-content/modules/data-widgets/data-grid-2-properties.md index af1e0e1729a..39028ce80f7 100644 --- a/content/en/docs/appstore/use-content/modules/data-widgets/data-grid-2-properties.md +++ b/content/en/docs/appstore/use-content/modules/data-widgets/data-grid-2-properties.md @@ -141,16 +141,6 @@ A list of filters that can be used in the header of the data grid. Each filter d This property requires advanced knowledge of data grid widget. Please read [Grid Wide Filtering](/appstore/modules/data-grid-2/#grid-wide-filtering) and view its examples for additional guidance. {{% /alert %}} -#### Groups - -This list contains the groups that will be used for filtering. - -Logically, each group represents a filter. Each group can either contain one or more attributes, or define an association from a parent data source. - -#### Group Attributes - -This list controls the mapping between attributes and groups. Each item contains the "group key", as well as the attribute to be associated with the group. - ### Aria Labels #### Filter Section diff --git a/content/en/docs/appstore/use-content/modules/data-widgets/data-grid-2.md b/content/en/docs/appstore/use-content/modules/data-widgets/data-grid-2.md index c296831691a..bf1176e22a6 100644 --- a/content/en/docs/appstore/use-content/modules/data-widgets/data-grid-2.md +++ b/content/en/docs/appstore/use-content/modules/data-widgets/data-grid-2.md @@ -428,7 +428,7 @@ In this section you can select an action to be executed **On change** by the fil ### Grid Wide Filtering {#grid-wide-filtering} -In order to enable filtering within the data grid header (outside the columns), you must enable `Grid wide filters` and select the desired attributes to be filtered in the **Filtering** tab. You can select attributes of the following types: +In order to enable filtering within the data grid header (outside the columns) you need to enable `Grid wide filters` and select the desired attributes to be filtered in the **Filtering** tab. You can select attributes of the following types: * Autonumber * Boolean @@ -452,41 +452,6 @@ If a filter is being used and its type does not match with any selected attribut There cannot be more than one filter of the same type in the data grid header. For example, if a data grid header already has a `Number Filter`, adding another `Number Filter` will cause incorrect data filtering. {{% /alert %}} -### Filter Groups - -Filter groups are another way to configure a widget's header filters. This way of configuring filters has four main advantages over grid wide filtering: - -* More than 4 filters are allowed in the header at the same time -* No restriction on filter type (the header can have one, two or more filters of the same data type) -* Dropdown filters can use associations -* If personalization is enabled, filter state is saved along with other widget settings - -Compared to grid wide filtering, this way of configuration requires one extra step; you must declare groups in the **Groups** list. - -New settings will only be visible if the **Enable filter groups** switch is set to **Yes**. - -#### Groups - -This list contains the groups that will be used for filtering. - -Logically, each group represents a filter. Each group can either contain one or more attributes, or define an association from a parent data source. - -Each group has a required parameter: the "group key". The only requirement for the "group key" is that it must be unique within the list. - -When creating a new group, you need to select the group type: **Attribute** or **Reference**. - -The group of type **Attribute** represents a group of attributes that should match the condition created by the filter. The only requirement is that all attributes in the group should be of the same type (for example, only string attributes or only number attributes). - -The **Reference** type group controls the association used in the filter. - -{{% alert color="info" %}} -To connect the filter to the group, copy the group key value to the "group key" property of the filter widget. Otherwise, the filter will not be able to connect to the group. -{{% /alert %}} - -#### Group Attributes - -This list controls the mapping between attributes and groups. Each item contains the **group key** and the attribute to be associated with the group. - ## Export to Excel The Data Grid 2 widget ships with built-in functionality to export data from the data source you configured in the settings. The export is done via the *Export_To_Excel* JavaScript action that is distributed as part of the [Data Widgets](/appstore/modules/data-widgets/) module. diff --git a/content/en/docs/appstore/use-content/modules/database-replication.md b/content/en/docs/appstore/use-content/modules/database-replication.md index a3d1015d535..75cf0f098c3 100644 --- a/content/en/docs/appstore/use-content/modules/database-replication.md +++ b/content/en/docs/appstore/use-content/modules/database-replication.md @@ -259,25 +259,30 @@ This setting specifies the time zone in which datetime values are stored in the In most of the cases, there is no need to change this setting unless you know that datetime values in this particular table are stored in a time zone that is different from the rest of the database. -## Configuring an Import Call {#import-call} +## Configuring Import Calls {#import-call} -With an import call, you can easily configure both static constraints (meaning, every call with the same value) and dynamic constraints (meaning, based on a value from an attribute). +An import call is a table mapping configured to be run with constraints. This constraint may be static, where all calls will be constrained by the same values, or dynamic, where the constraint relies on the value of attributes in the table. ### Constraint -In the **Configure import action** dialog box, **Constraints** defines the type of constraint. You can use normal constraints that result in a constraint with all `AND` operators. The constraints will be in alphabetical order according to the constraint number. +This field defines how the custom constraints will be combined to form the import call constraint: -When selecting **Advanced**, you can set up the constraints yourself using the tokens of the constraint. You can use braces and all the operators supported by the database (`AND`, `OR`, `IN`, `NOT`, etc.). For example: `[&7&] OR ([&1&] AND [&2&])`. +* **Normal** - All constraints will be combined together with the `AND` operator following their constraint number. +* **Advanced** - You need to explicitly define the import call constraint in the `Constraint dependency` field. You can use braces and all the operators supported by the database (`AND`, `OR`, `IN`, `NOT`, etc.). For example: `[&7&] OR ([&1&] AND [&2&])`. ### Data Objects -When executing the import using an import call, you can optionally provide two Mendix objects to use as a constraint. This can be all types of objects (even non-persistable). However, if you are using scheduled import actions and you want to use the last successful import date as a constraint, you should select **ScheduledImportActivity** as data object 1. You can select the objects in the **Configure import action** dialog box. +When executing the import using an import call, you can optionally provide two Mendix objects to use as constraint parameters. All object types are supported (including non-persistable). -These objects must be provided as input explicitly in a microflow. Using these objects in an import call disallows it from being executed directly by a user action. **Import** on the **Import call** tab and **Run scheduled events** on the **Planned import action** tab will be affected, as they perform an import using import calls. +{{% alert color="info" %}} +If you are using scheduled import actions and you want to use the last successful import date as a constraint, you should select **ScheduledImportActivity** as data object 1. +{{% /alert %}} + +These objects must be provided as input explicitly in a microflow. Using these objects in an import call prevents it from being executed directly by a user action. **Import** on the **Import call** tab and **Run scheduled events** on the **Planned import action** tab will be affected, as they perform an import using import calls. -### Customer Constraints +### Custom Constraints -If you click any constraint in the **Customer constraints** table, the Constraint details dialog box opens. The descriptions of the fields are as follows: +If you click any constraint in the **Custom constraints** table, the **Constraint details** dialog box opens. The fields are as follows: * **Constraint Type** * **Dynamic** – Use the value from an attribute as a constraint. This can either be an attribute from data object 1 or data object 2. diff --git a/content/en/docs/appstore/use-content/modules/deep-link.md b/content/en/docs/appstore/use-content/modules/deep-link.md index ac6a7217ebb..c2bcc7c7296 100644 --- a/content/en/docs/appstore/use-content/modules/deep-link.md +++ b/content/en/docs/appstore/use-content/modules/deep-link.md @@ -23,7 +23,7 @@ If you need to access pages or set up a published REST service, the Deep Link mo | Solution | Description | Advantage | Disadvantage | | ---------------- | ---- | --------------------------------------------------------- | ------------------------------------------------------------ | | URL property | This property is available both for [pages](/refguide/page-properties/#url) and [microflows](/refguide/microflow/#url). This is an out-of-the-box feature introduced in Mendix Studio Pro 10.6.0 and, since that version, the recommended approach for most users. | Mapping is clearly configured in the application model. No setup is required. | | -| Deep Link module | The Deep Link module processes the request and creates a reference object which is being stored with the user session. After this, the user is forwarded to a location which takes care of loading the Mendix Client. This is by default the `index.html` page. When the Mendix Client is loaded, the **Home** microflow (configured in the model) is executed and the microflow which is configured to handle the deep link request is being executed. | It is possible to set up non-persistent entities which can be passed as a parameter to a page. |The model consistency check is not sufficient in certain scenarios. When a microflow which is configured with a deep link at runtime and afterwards deleted at design time, Mendix consistency checking mechanism cannot catch it.| +| Deep Link module | The Deep Link module processes the request and creates a reference object which is being stored with the user session. After this, the user is forwarded to a location which takes care of loading the Mendix Client. This is by default the `index.html` page. When the Mendix Client is loaded, the **Home** microflow (configured in the model) is executed and the microflow which is configured to handle the deep link request is being executed. | It is possible to set up non-persistable entities which can be passed as a parameter to a page. |The model consistency check is not sufficient in certain scenarios. When a microflow which is configured with a deep link at runtime and afterwards deleted at design time, Mendix consistency checking mechanism cannot catch it.| {{% alert color="info" %}} There can be other approaches which are implemented by community-supported Marketplace modules, but these are not listed in this table. diff --git a/content/en/docs/appstore/use-content/modules/document-generation.md b/content/en/docs/appstore/use-content/modules/document-generation.md index a8d23bba5f2..d80cfebe593 100644 --- a/content/en/docs/appstore/use-content/modules/document-generation.md +++ b/content/en/docs/appstore/use-content/modules/document-generation.md @@ -22,7 +22,7 @@ The [PDF Document Generation](https://marketplace.mendix.com/link/component/2115 * Currently, PDF is the only supported document export format. * For deployment, currently we support [Mendix Cloud](/developerportal/deploy/mendix-cloud-deploy/), [Mendix Cloud Dedicated](/developerportal/deploy/mendix-cloud-deploy/), [Mendix for Private Cloud Connected](/developerportal/deploy/private-cloud/), and [On-Premises](/developerportal/deploy/on-premises-design/). Other deployment scenarios will be supported at a later stage. - {{% alert color="info" %}}For all deployment types except for on-premises, we only support apps that allow bi-directional communication with the PDF Service in the Mendix Cloud.{{% /alert %}} + {{% alert color="info" %}}For all deployment types except for on-premises, we only support apps that allow bi-directional communication with the PDF Service in Mendix Cloud.{{% /alert %}} * The maximum file size is 25 MB per document. If your document exceeds this limit, the action will result in an exception. We recommend compressing high-resolution images to reduce their file size. * When you deploy your app, it needs to be accessible to our cloud service. This requires the restriction type in the Cloud Portal to be set to *Allow all access* for the top-level path (`/`) and the DocGen request handler (`/docgen/`). If your app is configured to [restrict access for incoming requests](/developerportal/deploy/access-restrictions/), for example using IP whitelisting and/or client certificates, our cloud service will not be able to reach your app and the module will not work properly. @@ -39,7 +39,7 @@ The [PDF Document Generation](https://marketplace.mendix.com/link/component/2115 * Objects that are created in microflows that contain the `Generate PDF from page` action are not available to use in your PDF document. This is also applicable for changes made to existing objects. The reason is that those changes are not persisted to the database until the whole microflow has finished. The document generation service will access your document in its own context, and therefore have no access to the non-persisted changes. * Setting the microflow property **Apply entity access** to *Yes* does not have any effect on the `Generate PDF from page` action. Regardless of the **Apply entity access** setting, the action does not require *Create* or *Write* access rights for the `FileDocument` object that gets created. * The `System.Owner` association is currently not set to the user which has run the microflow. Instead, the user that is configured for the `Generate as user` property of the `Generate PDF from page` action is used to set the association. -* For local development, we use the Chrome or Chromium executable that is available on the development machine. Even though we have not observed these yet, there might be minor differences in PDF output locally vs. when using the cloud service. +* For local development, we use the Chrome or Chromium executable that is available on the development machine. Even though we have not observed these yet, there might be minor differences in PDF output locally versus when using the cloud service. * The access (and refresh) tokens used to secure requests to the cloud service are stored unencrypted in the app database. No user roles have read access to these tokens and all communication with the cloud service is encrypted by requiring HTTPS. However, do consider this when sharing a backup of the database with other developers. We will introduce encryption at a later stage. * If you have the [Application Performance Monitor (APM)](/appstore/partner-solutions/apd/) or [Application Performance Diagnostics (APD)](/appstore/partner-solutions/apd/) add-on enabled in your app, or set the log level of the **Services** log node to *Trace*, the PDF Document Generation module will not be able to generate documents when used in Mendix Cloud. This limitation is only applicable for apps built in Mendix 9.24.5 and below and Mendix 10.0.0. @@ -95,7 +95,7 @@ To allow the module to send and receive document generation requests on your Men 1. Enable the DocGen request handler. - {{% alert color="info" %}}This step is only for licensed apps on the Mendix Cloud or Mendix Cloud Dedicated. If your app is deployed on [Mendix for Private Cloud Connected](/developerportal/deploy/private-cloud/), skip this step and make sure that the */docgen/* path is accessible.{{% /alert %}} + {{% alert color="info" %}}This step is only for licensed apps on Mendix Cloud or Mendix Cloud Dedicated. If your app is deployed on [Mendix for Private Cloud Connected](/developerportal/deploy/private-cloud/), skip this step and make sure that the */docgen/* path is accessible.{{% /alert %}} 2. Register your app environments. @@ -449,7 +449,7 @@ If you encounter the message "Unable to generate document for request `}} * In the **Runtime** tab, add the microflow **Deeplink.StartDeeplink** as the **After startup** microflow or as a sub-microflow to an existing after startup microflow. - {{% alert color="warning" %}}For the Forgot Password module version 6.0.0 (Mendix 10.6.0. and above), do not add the **Deeplink.StartDeeplink** microflow as the **After startup** microflow.{{% /alert %}} + {{% alert color="warning" %}}For the Forgot Password module version 6.0.0 (Mendix 10.6.0 and above), do not add the **Deeplink.StartDeeplink** microflow as the **After startup** microflow.{{% /alert %}} * If you are changing the **URL prefix** value in the **Runtime** tab, ensure that you use the same value in the URLPrefix constant of the Forgot Password module. Otherwise, the signup and reset URLs will not work. 1. Open [App Security](/refguide/app-security/) and do the following: * In the **User roles** tab, add a new role called *Guest* in **MyFirstModule** diff --git a/content/en/docs/appstore/use-content/modules/genai/_index.md b/content/en/docs/appstore/use-content/modules/genai/_index.md index 718c94e546f..215ce6b621e 100644 --- a/content/en/docs/appstore/use-content/modules/genai/_index.md +++ b/content/en/docs/appstore/use-content/modules/genai/_index.md @@ -9,6 +9,10 @@ description: "Describes the general properties and common concepts of generative With the Mendix GenAI capabilities you can create engaging, intelligent experiences with a variety of AI models and your own data. +{{% alert color="info" %}} +These pages cover modules which integrate with third-party generative AI tools. For running pre-trained Machine Learning (ML) models using the Mendix Runtime, please see [Machine Learning Kit](/refguide/machine-learning-kit/). +{{% /alert %}} + ### Typical Use Cases Mendix supports a variety of generative AI tasks by integrating with tools such as Amazon Bedrock or Azure OpenAI. Typical use cases include the following: diff --git a/content/en/docs/appstore/use-content/modules/genai/conversational-ui.md b/content/en/docs/appstore/use-content/modules/genai/conversational-ui.md index ac6c0cec63c..c7418e44bdf 100644 --- a/content/en/docs/appstore/use-content/modules/genai/conversational-ui.md +++ b/content/en/docs/appstore/use-content/modules/genai/conversational-ui.md @@ -30,6 +30,7 @@ The Conversational UI module provides the following functionalities: * Pages that you can use in your navigation for chat * Snippets that you can use directly on your pages, for example to display messages or a history sidebar * A floating button that for opening a chat + * Pages, snippets and logic to display and export token usage data (if enabled in GenAI Commons and supported by the GenAI Connector of choice) * Operations to set up your context, interact with the model, and add the data to be displayed in the UI * Domain model to store the chat conversations and additional information * Integration with any model that is compatible with [GenAI Commons](https://marketplace.mendix.com/link/component/227933) @@ -45,6 +46,7 @@ To use the Conversational UI module, your Mendix Studio Pro version must be [9.2 You must also ensure that you have the prerequisite modules that Conversational UI requires. The modules are included by default in the [Blank GenAI App](https://marketplace.mendix.com/link/component/227934) and the [AI Bot Starter App](https://marketplace.mendix.com/link/component/227926), otherwise you must install them yourself: * [Atlas Core](https://marketplace.mendix.com/link/component/117187) +* [Data Widgets](https://marketplace.mendix.com/link/component/116540) * [GenAI Commons](https://marketplace.mendix.com/link/component/227933) * [Nanoflow Commons](https://marketplace.mendix.com/link/component/109515) * [Web Actions](https://marketplace.mendix.com/link/component/114337) @@ -53,7 +55,7 @@ Finally, you must also install and configure a connector that is compatible with ## Installation {#installation} -Follow the instructions in [Using Marketplace Content](/appstore/use-content/) to import the Conversational UI into your app. +Follow the instructions in [Using Marketplace Content](/appstore/use-content/) to import the Conversational UI module into your app. ## Configuration {#configuration} @@ -77,7 +79,8 @@ Make sure that the module role `User` is part of the user roles that are intende | Module role | Description | | --- | --- | | `User` | Role needed for every user that should be able to interact with the chat components. Users can only read their own messages (and related data). | -| `_addOn_ReadAll` | Role can be granted additionally. Users with both roles can read all data. | +| `_addOn_ReadAll` | Role can be granted additionally. Users with both roles can read all chat data. | +| `UsageMonitoring` | Can view and export all token usage data. This is related to a module role with the same name in the GenAI Commons module. | ### ChatContext {#chat-context} @@ -182,6 +185,11 @@ The following versions are available and can be swapped as needed: See the [AI Bot Starter App](https://marketplace.mendix.com/link/component/227926) or the [GenAI Showcase App](https://marketplace.mendix.com/link/component/220475) on how to use those snippets. +#### Token Monitor Snippets {#snippet-token-monitor} + +* **Snippet_TokenMonitor** - This snippet can be used to display token usage informatation in charts and contains several other snippets that you can use to build your own token monitor dashboard. To display the token usage data, users will need the `UsageMonitoring` userrole. +* **Snippet_TokenMonitor_Export** - This snippet can be used to display token usage informatation in a grid and export it as .xlsx. + ### Additional Operations {#operations} The following additional microflows can be found in the **USE_ME** folder: @@ -189,3 +197,19 @@ The following additional microflows can be found in the **USE_ME** folder: * **ChatContext_AddProviderConfig_SetActive** - This microflow adds a `ProviderConfig` to the chat context and sets it to active. * **ChatContext_Delete** - This microflow deletes a chat context. * **AdvancedSettings_GetAndUpdate** - This microflow can be used after chat context creation to set the boundaries and default value for advanced settings in the UI. For more information, see [Configuration Snippets](#snippet-configuration). + +## Troubleshooting + +This section lists possible solutions to known issues. + +### Cannot Export Usage Data for the Token Monitor + +The export of usage data for the token monitor does not work correctly. + +#### Cause + +The [Data Wigets](https://marketplace.mendix.com/link/component/116540) module that you have installed is in an older version which does not support exporting data to *.xlsx* format from the Datagrid 2 widget. + +#### Solution + +Update the [Data Wigets](https://marketplace.mendix.com/link/component/116540) module to version 2.22.0 or above. diff --git a/content/en/docs/appstore/use-content/modules/genai/genai-commons.md b/content/en/docs/appstore/use-content/modules/genai/genai-commons.md index 70ef3e3fd7a..86a5b7289dd 100644 --- a/content/en/docs/appstore/use-content/modules/genai/genai-commons.md +++ b/content/en/docs/appstore/use-content/modules/genai/genai-commons.md @@ -24,11 +24,11 @@ The current scope of the module is focused on text and image generation, as well The GenAI Commons module requires Mendix Studio Pro version [9.24.2](/releasenotes/studio-pro/9.24/#9242) or above. -You must also install and configure the [Community Commons](/appstore/modules/community-commons-function-library/) module. +You must also download the [Community Commons](/appstore/modules/community-commons-function-library/) module. ## Installation {#installation} -If you are starting from the [Blank GenAI app](https://marketplace.mendix.com/link/component/227934), or the [AI Bot Starter App](https://marketplace.mendix.com/link/component/227926), the GenAI Commons module is included and does not need to be installed manually. +If you are starting from the [Blank GenAI app](https://marketplace.mendix.com/link/component/227934), or the [AI Bot Starter App](https://marketplace.mendix.com/link/component/227926), the GenAI Commons module is included and does not need to be downloaded manually. If you start from a blank app, or have an existing project where you want to include a connector for which the GenAI Commons module is a required module, you must install GenAI Commons manually. First, install the [Community commons](/appstore/modules/community-commons-function-library/) module, and then follow the instructions in [using Marketplace content](/appstore/use-content/) to import the GenAI Commons module into your app. @@ -40,6 +40,14 @@ Although GenAI Commons technically defines additional capabilities typically fou The GenAI Commons module is [protected](/refguide/consume-add-on-modules-and-solutions/), which means that it cannot be changed and the logic of the microflows is not visible. For information about what each exposed operation does, see [Microflows](#microflows), or refer to the documentation inside the module. +### Token Usage + +GenAI Commons can help store usage data which allows admins to understand the token usage. Usage data is only persisted if the constant `StoreUsageMetrics` is set to `true` and the GenAI connector of choice has implemented the operation to store token usage. In general, this is only supported for chat completions and embeddings operations. + +To clean up usage data in a deployed app, you can enable the daily scheduled event `ScE_Usage_Cleanup` in the Mendix Cloud Portal. Use the `Usage_CleanUpAfterDays` constant to control for how long token usage data should be persisted. + +Lasty, the [Conversational UI module](/appstore/modules/genai/conversational-ui/) provides pages, snippets and logic to display and export token usage information. For this to work, the module roles `UsageMonitoring` from both Conversational UI as well as GenAI Commons need to be assigned to the applicable project roles. + ## Technical Reference {#technical-reference} The technical purpose of GenAI Commons module is to define a common domain model for generative AI use cases in Mendix applications. To help you work with the **GenAI Commons** module, the following sections list the available [entities](#domain-model), [enumerations](#enumerations), and [microflows](#microflows) that you can use in your application. @@ -763,3 +771,19 @@ The `Embeddings (ChunkCollection)` operation interface allows the invocation of | Name | Type | Description | | --- | --- | --- | | `EmbeddingsResponse` | [EmbeddingsResponse](#embeddingsresponse-entity) | An response object that contains the token usage statistics and the corresponding embedding vector as part of a ChunkCollection. | + +## Troubleshooting + +This section lists possible solutions to known issues. + +### Internal Errors in Hidden Documents + +Adding the GenAI Commons module to an existing project causes internal errors in hidden documents in Studio Pro. + +#### Cause + +The Java actions from the [CommunityCommons](https://marketplace.mendix.com/link/component/170) module are not compatible with the current version of the GenAI Commons module. + +#### Solution + +Update the [CommunityCommons](https://marketplace.mendix.com/link/component/170) module to the latest version. diff --git a/content/en/docs/appstore/use-content/modules/genai/pg-vector-knowledge-base/vector-database-setup.md b/content/en/docs/appstore/use-content/modules/genai/pg-vector-knowledge-base/vector-database-setup.md index 804a67a9ed8..a89cf5b96a1 100644 --- a/content/en/docs/appstore/use-content/modules/genai/pg-vector-knowledge-base/vector-database-setup.md +++ b/content/en/docs/appstore/use-content/modules/genai/pg-vector-knowledge-base/vector-database-setup.md @@ -67,7 +67,7 @@ You can use the values in the steps below for experimental purposes: 3. For **Source**, select *Custom*, and provide the IP CIDR range in the field as follows: * If you have access to a VPN, you can also provide its IP here. Then for the connection to your database to work, all users running the Mendix app locally must be connected to the VPN. - * If you have deployed your Mendix app to the Mendix Cloud, you need to let the database accept incoming requests from it. For this, create inbound rules and select the IP address of your Mendix app as the source. See [Mendix IP Addresses: Outgoing IP](/developerportal/deploy/mendix-ip-addresses/#outgoing) for a list of addresses to safe-list in this scenario. + * If you have deployed your Mendix app to Mendix Cloud, you need to let the database accept incoming requests from it. For this, create inbound rules and select the IP address of your Mendix app as the source. See [Mendix IP Addresses: Outgoing IP](/developerportal/deploy/mendix-ip-addresses/#outgoing) for a list of addresses to safe-list in this scenario. * If you want the database to be accessible from anywhere, have a rule with its source set to *0.0.0.0/0*. {{% alert color="info" %}}For a single IPv4 address, the CIDR range is equal to the IP address with `/32` appended.{{% /alert %}} @@ -102,7 +102,7 @@ You can use the values in the steps below for experimental purposes: 4. Continue with the **Networking** configurations in the next tab. 1. Based on your requirements, decide how the database server can be accessed (for testing purposes, it is recommended to use *Public Access*): - 1. **Public access**: firewall rules need to be added for the IP addresses that are allowed to access the server. Use **Add current client IP address** to add your own IP when running the application locally. For apps running in the Mendix cloud, add the IP of that environment, see [Mendix IP Addresses: Outgoing IP](/developerportal/deploy/mendix-ip-addresses/#outgoing) for a list of addresses to safe-list in this scenario. Alternatively, you can use **Add 0.0.0.0 - 255.255.255.255** so that no IP addresses are blocked. Use this carefully and make sure that this aligns with your security requirements. + 1. **Public access**: firewall rules need to be added for the IP addresses that are allowed to access the server. Use **Add current client IP address** to add your own IP when running the application locally. For apps running in Mendix Cloud, add the IP of that environment, see [Mendix IP Addresses: Outgoing IP](/developerportal/deploy/mendix-ip-addresses/#outgoing) for a list of addresses to safe-list in this scenario. Alternatively, you can use **Add 0.0.0.0 - 255.255.255.255** so that no IP addresses are blocked. Use this carefully and make sure that this aligns with your security requirements. 2. **Private Access**: the server can only be accessed from a **Virtual Network** that needs to be selected (or created). Make sure that your Mendix App is running in the same network. {{% alert color="info" %}}For experimental purposes, you do not need to configure anything in the **Security** or **Tags** tabs to get the server running.{{% /alert %}} diff --git a/content/en/docs/appstore/use-content/modules/mendix-sso.md b/content/en/docs/appstore/use-content/modules/mendix-sso.md index f0838287352..10856dc5383 100644 --- a/content/en/docs/appstore/use-content/modules/mendix-sso.md +++ b/content/en/docs/appstore/use-content/modules/mendix-sso.md @@ -53,7 +53,7 @@ The Mendix SSO module has the following limitations: ### Dependencies -Your app has to be deployed on the Mendix Cloud in order to use this module. Mendix SSO is only activated when your app is deployed to the Mendix Cloud. +Your app has to be deployed on Mendix Cloud in order to use this module. Mendix SSO is only activated when your app is deployed to Mendix Cloud. When you run your app locally, you will need to use local credentials. If it is deployed to a different cloud platform (for example, [Mendix for Private Cloud](/developerportal/deploy/private-cloud/) or [SAP BTP](/developerportal/deploy/sap-cloud-platform/)), you can use the Mendix [Administration](/appstore/modules/administration/) module, or connect to a central IdP using [OIDC SSO](/appstore/modules/oidc/) or [SAML](/appstore/modules/saml/). @@ -134,7 +134,7 @@ To enable Mendix SSO in your app, follow these steps: * *login-with-mendixsso-button.html* – adds a button to the standard sign-in page which the end-user can click to initiate the single sign-on process; this gives the end-user the possibility to sign in using a user name and password if desired * *login-with-mendixsso-automatically.html* – automatically initiates the single sign-on process without needing to click a button -Your app is now configured to use Mendix single sign-on when it is deployed to the Mendix Cloud. +Your app is now configured to use Mendix single sign-on when it is deployed to Mendix Cloud. ## Removing Mendix Single Sign-On diff --git a/content/en/docs/appstore/use-content/modules/model-reflection.md b/content/en/docs/appstore/use-content/modules/model-reflection.md index 0bdb776c25d..84b4a9d0209 100644 --- a/content/en/docs/appstore/use-content/modules/model-reflection.md +++ b/content/en/docs/appstore/use-content/modules/model-reflection.md @@ -40,15 +40,15 @@ All the patterns use the locale from the context. Based on the user's language, * Long attribute with a thousand separator: * Pattern: `%,8d%n` * Value: `12345678` - * Result: `12,345,678` + * Result: `12,345,678` with a newline character at the end of the string * Date attribute: * Pattern: `MM/dd/yyyy` * Value: `2nd of July 2016` - * Result: `7/6/2016` -* Decimal attribute with a thousand separator of 2 decimals: + * Result: `07/02/2016` +* Decimal attribute with a thousand separator and one decimal place: * Pattern: `#,##0.0` - * Value: `12345,678` - * Result: `12,345.68` + * Value: `12345.678` + * Result: `12,345.7` ## Read More diff --git a/content/en/docs/appstore/use-content/modules/oidc.md b/content/en/docs/appstore/use-content/modules/oidc.md index 42c1379a6f2..5d4b719357a 100644 --- a/content/en/docs/appstore/use-content/modules/oidc.md +++ b/content/en/docs/appstore/use-content/modules/oidc.md @@ -148,9 +148,9 @@ Once the Mx Model Reflection module has been imported into your app, you need to {{< figure src="/attachments/appstore/use-content/modules/oidc/model-reflection-button.png" class="no-border" >}} -3. Select the modules **MxModelReflection** and **OIDC** and click **Click to refresh** for both the modules and the entities. Starting from version 3.0.0 of the OIDC SSO module, additionally select and refresh the **Administration**, **UserCommons**, and **System** modules, in the **MxModelReflection.MxObjects_Overview** page to configure User Provisioning. From version 3.1.0, the startup microflow (`OIDC.ASU_OIDC_Startup`) automatically handles this process. +3. Select the modules **MxModelReflection** and **OIDC** and click **Click to refresh** for both the modules and the entities. Starting from version 3.0.0 of the OIDC SSO module, additionally select and refresh the **Administration** and **System** modules in the **MxModelReflection.MxObjects_Overview** page to configure User Provisioning. - {{< figure src="/attachments/appstore/use-content/modules/oidc/select-refresh-modules.png" class="no-border" >}} + {{< figure src="/attachments/appstore/use-content/modules/oidc/select_modules.png" class="no-border" >}} ### Migrating from Community Edition to Platform Edition{#migration} @@ -448,7 +448,7 @@ The following constants are optional: Example: `User` -* **UserType** – assign usertype to the created users +* **UserType** – assign user type to the created users Example: `Internal` @@ -466,8 +466,8 @@ The following constants are mandatory when creating an OIDC SSO Client Credentia * **ClientAlias** – the client alias * **AutomaticConfigurationURL** – the URL of the well-known endpoint (ending with `/.well-known/openid-configuration`) -* **CustomATP** – a custom access token processing microflow — the value of `CompleteName` in the mxmodelreflection$microflows table -Example: OIDC.Default_SAM_TokenProcessing_CustomATP +* **CustomATP** – a custom access token processing microflow — the value of `CompleteName` in the `mxmodelreflection$microflows` table +Example: `OIDC.Default_SAM_TokenProcessing_CustomATP` * **IsClientGrantOnly** (*default: false*) – allow to create Client Credential Configuration in the application {{% alert color="warning" %}} @@ -502,6 +502,10 @@ If you connect multiple IdPs to your Mendix app, you can use separate custom use #### Custom User Provisioning Using a Microflow{#custom-provisioning-mf} +{{% alert color="warning" %}} +This feature is deprecated from the version 3.0.0 of the module. +{{% /alert %}} + Review the microflow `CUSTOM_UserProvisioning` in the **USE_ME** > **1. Configuration** folder of the OIDC module. This is where you can change the way that end-users are provisioned in your app. The OpenID token is passed to the microflow as a parameter. Use this object to find an existing, or create a new, `System.User` object for the end-user. This is set as the return value of the microflow. You can find examples included in the **USE_ME** > **1. Configuration** > **User Provisioning Examples** folder. Make a single call from `CUSTOM_UserProvisioning` to your own module where you implement the provisioning flow you need. This way, it will be easy to install new versions of the OIDC SSO module over time without overwriting your custom provisioning. @@ -560,6 +564,9 @@ You can set up custom user provisioning once your app is running using the `OIDC * You can map multiple **IdP Attribute** (claims) to a **Configured Entity Attribute** but you cannot map a new **IdP Attribute** to a **Configured Entity Attribute** if it is already mapped. * The **IdP Attribute** is one of the fixed claims supported by the OIDC SSO module. * IdP Attributes(Claims) cannot be of type enum, autonumber, or an association. + * The image below shows you the default attribute mapping for the configuration. + + {{< figure src="/attachments/appstore/use-content/modules/oidc/default_mapping.png" max-width=80% >}} 6. Optionally, you can use the custom logic in the **User Provisioning**. In the **Custom UserProvisioning** field, select a microflow you want to run for custom user provisioning. The custom microflow name must begin with the string `UC_CustomProvisioning` and requires the following parameters: diff --git a/content/en/docs/appstore/use-content/modules/opc-ua-connector.md b/content/en/docs/appstore/use-content/modules/opc-ua-connector.md new file mode 100644 index 00000000000..a3821b5542a --- /dev/null +++ b/content/en/docs/appstore/use-content/modules/opc-ua-connector.md @@ -0,0 +1,288 @@ +--- +title: "OPC-UA Connector" +url: /appstore/modules/opc-ua-connector/ +description: "Describes the configuration and usage of the OPC-UA connector, which is available in the Mendix Marketplace." + +--- + +## Introduction + +[OPC](https://opcfoundation.org/) is the interoperability standard for the secure and reliable exchange of data in the industrial automation space and in other industries. You can use the [OPC-UA connector](https://marketplace.mendix.com/link/component/230843) with your Mendix app to communicate with an OPC-UA server. The OPC-UA connector is based on [Eclipse Milo](https://github.com/eclipse/milo) client SDK, an open-source implementation of OPC. + +### Features + +The OPC-UA connector consists of microflows that enable you to do the following: + +* Connect to an OPC-UA server +* Browse nodes on an OPC-UA server +* Read and write OPC-UA node attributes +* Subscribe to OPC-UA data changes + +### License + +The OPC-UA connector is licensed under the [EPL2.0 License](https://www.eclipse.org/legal/epl-2.0/). + +### Pre-requisites + +* Studio Pro version 9.24.3 or above +* OPC-UA server version 1.03 or above + +### Dependencies + +You must have the following Marketplace module installed: + +* [Community Commons](https://marketplace.mendix.com/link/component/170) + +## Installation + +1. Install the dependencies. +2. Follow the instructions in [Using Marketplace Content](/appstore/use-content/) to import the OPC-UA connector into your app. + +## Basic Configuration + +This section shows you how to quickly configure a connection to an OPC-UA server, browse for nodes, read, and write data using the template pages included in the connector. + +### App Startup and Shutdown + +Make sure that you call the OPC-UA after-startup and before-shutdown actions (`OPCUAConnector.ASU_OPCUA` and `OPCUAConnector.BSD_OPCUA`) from your app's after-startup and before-shutdown microflows that are configured in your **App Settings**. + +The descriptions of the actions are as follows: + +* `OPCUAConnector.ASU_OPCUA` tries to reconnect to configured servers, re-monitor items, and pre-loads your app trusted certificates. +* `OPCUAConnector.BSD_OPCUA` closes all open connections. + +{{% alert color="info" %}}If you maintain many connections to OPC-UA servers, the startup can take much longer.{{% /alert %}} + +### Configuring the Connection to the OPC-UA Server + +1. In Studio Pro, add the `NAV_Configuration` microflow to your navigation. It allows to acces the **Configurations** page. +2. Assign the `CanConfigure` module role to a user role that will configure the connections to your server. +3. Run the app locally and open the app. +4. Log in as a user with the `CanConfigure` user role. +5. Go to the added **Configurations** page. +6. If you want to connect to a server with a message security mode `Sign` or `Sign&Encrypt`, add your client certificate by clicking **Update application certificate** in the upper-right corner of the page. + +7. Click **New configuration** in the upper-right corner of the page. + + {{< figure src="/attachments/appstore/use-content/modules/opcua-connector/new-configuration-overview.png" >}} + +8. Follow the instructions in the wizard to set up your connection to an OPC-UA server. + + {{< figure src="/attachments/appstore/use-content/modules/opcua-connector/new-configuration-step-one.png" >}} + + {{% alert color="info" %}}If you want to have your own custom business logic to connect to a server, you can also make your own configuration. It is recommended to use the wizard whenever possible. However, it can be the case that the server is not discoverable. If so, you need to create your own microflow that manually sets all the fields on a server configuration object. For more information, see [Advanced Connections](#advanced-connection) section.{{% /alert %}} + +Once the configuration is saved, the APIs can be used in your application. + +### Browsing the OPC-UA Server + +1. In Studio Pro, assign the `CanBrowse` module role to a user role that will browse the OPC-UA server. +2. Run the app locally and open the app. +3. Log in as a user with the `CanBrowse` user role. +4. Go to the **Configurations** page. +5. Click **Browse** and see what data is available on the server. + + {{< figure src="/attachments/appstore/use-content/modules/opcua-connector/browse.png" >}} + +## Advanced Connection {#advanced-connection} + +This section shows you how to configure a connection to an OPC-UA server without the discovery service. +If you have succesfully set up your configuration in the Basic Configuration section, this section can be omited and please continue to section {[Using Services](#using-services) + +1. Create a microflow to set up a manual connection. Make sure that the microflow do the following in order: + + 1. Create a [`ServerConfiguration`](#server-configuration). + 2. Create and associate an [`IdentityToken`](#identity-token). + 3. Provide an associated [`ClientCertificate`](#client-certificate). + +2. Call the `ServerConfiguration_Connect` microflow to connect to the server. + + * If this microflow returns a `TestConnectionResponse`, with `isSuccess` to `true`, the connection succeeded. + + * If not, the error is shown in the `ErrorMessage` attribute. Read the error message and resolve the error. + +3. [Trust the server certificate](#server-certificate). + +4. Call the microflow that you created from within the application. + +### Server Configuration {#server-configuration} + +The core information of the configuration to connect to an OPC-UA server must be stored as `ServerConfiguration` objects, which contain the following attributes: + +* `ConfigurationName` – This is the name to identify the configuration. +* `EndpointURL` – This is the URL of the endpoint of the OPC-UA server. +* `IsManualConfiguration` – Tis is set to *true* to force the end point configuration. +* `SessionTimeout` – This is the requested maximum number of milliseconds a session should remain open without activity. +* `RequestTimeout` – This is the requested maximum number of milliseconds a request should remain open without response. +* `MessageSecurityMode` – This is the type of security to apply to messages. + * If it is *None* – messages are encrypted. + * If it is *Sign* – messages are signed by the client certificate. + * If it is *Sign&Encrypt* – messages are signed and encrypted by the client certificate. + +* `SecurityPolicyURI` – This determines what algorithm to use to encrypt and sign the data. +* `_IsConnected`: This is set to *true* when connection is open. + +### Identity Token {#identity-token} + +A connection to an OPC-UA server is made using an `IdentityToken`, similar to a user role in Mendix. The server will dictate the type of the identify token it will support. + +The three options are as follows: + +* `Anonymous Identity Token` – This is the identity token for anonymous users, which gives access to the server without credentials. +* `Username Identity Token` – This is the identity token based on a username and password combination. +* `Certificate Identity Token` – This is the identity token based on a certificate. The certificate must be trusted by the OPC-UA server before it can be used. + +### Client Certificate {#client-certificate} + +A connection to an OPC-UA server can be encrypted to provide security. Based on the response, the server will dictate which message security modes (i.e. forms of encryption) it requires for a connection. + +If the `MessageSecurityMode` attribute of the `ServerConfiguration` object is set to *Sign* or *Sign&Encrypt*, the `ServerConfiguration` object requires a `ClientCertificateHolder`, with the `ClientCertificate` and `ClientCertificatePrivateKey` objects that must meet the following requirements: + +* The `ClientCertificate` must be an X509 formatted PEM file. +* The `ClientCertificatePrivateKey` must be an encrypted PKCS8 or PKCS1 formatted PEM file. + +### Trusting the Server Certificate {#server-certificate} + +A connection between an OPC-UA server and OPC-UA client (the Mendix application) can only be established if both identities have been acknowledged by the respective parties. For the client side, this means the client should trust the certificate of the server. + +To do so, add the server certificate to the Mendix certificate list on the **Certificates** tab in **App Settings** of Studio Pro. + +The association between the client and the server certificates does not need to be set in the domain model. + +If you ever want to reject a certificate from the server, remove it from the list of trusted certificates and restart the application. + +## Using Services {#using-services} + +### View Service + +The view services enable you to navigate the content of the server. The following three implementations are provided, which are sufficient for most use cases: + +* `GetRoots` – This retrieves the top level nodes of the server +* `GetChildren` – This retrieves the sub level node for a given node. +* `GetParent` – This retrieves the parent node for a given node. + +For more advanced cases, use the provided Browse action. + +#### Browse Action + +The browse action allows you to traverse from one node to others. The request object for the action is `BrowseDescription`, which contains the following attributes: + +* `Nodeid` – This is the ID of the node from where you want to browse. +* `BrowseDirections` – This specifies the direction to traverse. +* `NodeIdReferenceTypeID` – This specifies the node ID of the reference type to follow. If it is left empty, all references are returned. +* `IncludeSubTypes` – This indicates whether subtypes of the `ReferenceType` are included. +* `NodeClassMask` – This specifies which `NodeClasses` will be returned. If no value is provided, no filter will be applied. This is an integer attribute. The interpretation is a set of bits as described in the table below. You need to sum up the values to create the mask. For example: browsing only `object`, `variable`, and `view` is represented in binary by `[1,1,0,0,0,0,0,1]`, which has to be set up as 1 + 2 + 128 = 131 for the integer value. + + | Bit | Node class | Value | + | ---- | ------------- | ----- | + | 0 | Object | 1 | + | 1 | Variable | 2 | + | 2 | Method | 4 | + | 3 | ObjectType | 8 | + | 4 | VariableType | 16 | + | 5 | ReferenceType | 32 | + | 6 | DataType | 64 | + | 7 | View | 128 | + +* `ResultMask` – This specifies the fields in the reference description structure that will be returned. This is an integer attribute. The interpretation is a set of bits as described in the table below. You need to sum up the values to create the mask. For example: requesting only the field `DisplayName` is represented in binary by `[0,0,0,0,1,0]`, which has to be set up as 16 for the integer value. + + | Bit | Node class | Value | + | ---- | -------------- | ----- | + | 0 | ReferenceType | 1 | + | 1 | IsForward | 2 | + | 2 | NodeClass | 4 | + | 3 | BrowseName | 8 | + | 4 | DisplayName | 16 | + | 5 | TypeDefinition | 32 | + + The response of the `Browse` action returns a browse response object. There is a `StatusCode` associated to the response, which represents the status of the call. The response can contain one or more `BrowseNode` objects. These are the references from the response. `BrowseNode` contains the following fields: + + * `Nodeid` – This is the ID of the referenced node. + * `BrowseName` – This is the browse name of the referenced node. + * `DisplayName` – This is the display name of the referenced node. + * `NodeClass` – This is the node class of the referenced node. If the server does not allow returning as many references as requested, the response will contain a continuation point that can be used in future calls to retrieve more references. + +### Attribute Services + +The attribute services enable you a client access data on a server. In particular, the OPC-UA connector lets you read data from and write data to the server. + +These exposed actions deserve some additional guidance, as the data a client receives and the data the server requires can differ greatly between calls. This is all due to the highly flexible and customizable nature of an OPC-UA protocol. See the [Read Action](#read-action) section and the [Write Action](#write-action) section below as well as the documentation in the microflows and domain model in Studio Pro. + +The data model of an OPC-UA server consists of a set of `Node` objects. These nodes can have one of the following values for their `NodeClasses` attribute: `DataType`, `Method`, `Object`, `ObjectType`, `ReferenceType`, `Variable`, `VariableType`, or `View`. Each of these has their own set of properties. For the purpose of each and the set of properties, see the documentation in the domain model of the specializations of the `Node` entities in Studio Pro. + +To make it easier to get the information on a node, a `GetNodeDetails` action is provided, which reads all properties of the node and puts them in the correct specialization of the `Node` entity. + +For more advanced cases, use the [read action](#read-action) as described below. + +#### Read Action {#read-action} + +The read action allows you to read specific attributes of a node. The request object for the action is `ReadNodeRequest`, which contains a list of `ReadNodeReadValueIDs`. + +Each `ReadNodeReadValueID` object specifies the attributes of the nodes you want to read. Upon executing the read action, a `ReadNodeResponse` object is returned. This object contains a list of `ReadNodeResponseResults`, each corresponding to the attributes requested, in the same order they were specified. + +Each `ReadNodeResponseResult` object contains a `DataValue` attribute. This is the raw payload returned from the OPC-UA Server. + +To read the `VALUE` attribute on a `VariableNode`, set the `NodeId` on your `ReadNodeReadValueId` to the right node ID and the `AttributeId` to *ENUM_AttributeId.VALUE*. + +The corresponding `DataValue` attributes depends on the type of the datatype, as shown in the table below: + +| Data type | Example read response | Example write request | Conversion | +| ---------------------------------------- | ------------------------------------------------------------ | -------------------------------------- | -------------------------------------- | +| Boolean | {"value":true} | "true" | | +| SByte
Int16
Int32
Int64 | {"value": 1} | "1" | | +| Byte
UInt16
UInt32
UInt64 | {"value" : { "value" : 1}} | "1" | | +| Float
Double | {"value" : 1.0} | "1.0" or "3.0E20" | | +| String | {"value" : "string" } | "string" | | +| DateTime | {"value" : {"utcTime" : 11335116845776939}} | "2007-12-03T10:15:30" | CommunityCommons.LongToDateTime | +| Guid | {"value": "cd1fdbc3-1f45-4fe8-9bff-b4927d5401c4"} | "cd1fdbc3-1f45-4fe8-9bff-b4927d5401c4" | | +| ByteString | {"value" : {"bytes":[-1]}} | "0xFF" | | +| XMLElement | {"value" : { "fragment" : "\u003cprice\u003e29.99\u003c/price\u003e"}} | \30.00\ | CommunityCommons.HTMLToPlainText | +| NodeID | {"value" : {"namespaceIndex": {"value": 1}, "identifier":"1"}} | "ns=1;i=1000" | | +| ExpandedNodeID | {"value" : {"namespaceIndex": {"value": 1}, "identifier":"1"}, "serverIndex" : {"value" : 0}} | not supported | | +| StatusCode | {"value" : {"value" : 0}} | "0" | Use the _Value attribute on StatusCode | +| QualifiedName | {"value" : {"namespaceIndex" : {"value" : 1}, "name" : "string"}} | not supported | | +| LocalizedText | {"value" : {"locale" : "en", "text": "hello"}} | "hello" | Currently always writes in "en" locale | + +#### Write Action {#write-action} + +The Write action allows you to write to specific attributes on a node. The request object for the action is a `WriteNodeRequest`, which contains a list of `WriteNodes`. + +The `WriteNode` objects describe how and what to write to a node. + +The `Write node` action returns a `WriteNodeResponse` object. The object contains a list of `WriteNodeStatusCode` that contains the statuses of the written attributes in the same order as the request. Check the statuses to know whether the action succeeded. + +To write the `VALUE` attribute on a `VariableNode`, set the `NodeId` on your `WriteNode` to the right node ID, the `AttributeId` to *ENUM_AttributeId.VALUE*, and the `Payload` to one based on the table above in the [Read Action](#read-action) section and the `VariantType` to the correct type. + +{{% alert color="info" %}} It is highly recommended to set the `VariantType` to avoid the action to read the `Variant type` before it can write. {{% /alert %}} + +### Subscription and Monitored Item Services + +The subscription and monitored item services enable you to receive notification upon a change of a monitored value. A subscription is a client-defined endpoint so that your OPC-UA server can send notification to your Mendix application. A monitored item corresponds to a specific attribute on a node that is monitored. + +In order to monitor items, create a microflow that does the following: +1. Call `CreateSubscription` action. +2. Create `MonitorItem` objects for each attribute to be monitored, with the following fields specified: `NodeID`, `AttributeID`, `MicroflowName`, associated to the created `Subscription`. +3. Do not use the Mendix commit, use instead the provided `CommitMonitoredItem` or `CommitMonitoredItems` action. + +When a notification comes in, the microflow specified by `MicroflowName` on the monitored item will be triggered. + +Use the full name of the microflow, which has this format: `MODULENAME.MICROFLOWNAME`. + +Below are the parameters that can be used when calling a microflow on a notification (not all the parameters are required): + +* `MessageMonitoredItem` – This parameter contains the `MonitoredItem` information, that is, how the notification was generated. +* `MessageMonitoredItemReadValueID` – This parameter contains the information on what node and attribute was read. +* `MessageDataValue` – This parameter contains the information on the actual read value on the `Value` attribute. + +Check out the example microflow `EXAMPLE_MonitoredItem_LogDefaultMessage` in the **USE_ME** > **12.MonitoredItems_service_set** folder. This microflow simply takes the information from the notification and logs it. + +To stop receiving notifications, call the `Delete MonitoredItem(s)` action from the Toolbox. + +## Technical Reference + +The module includes technical reference documentation for the available entities, enumerations, activities, and other items that you can use in your application. You can view the information about each object in context by using the **Documentation** pane in Studio Pro. + +The **Documentation** pane displays the documentation for the currently selected element. To view it, perform the following steps: + +1. In the [View menu](/refguide/view-menu/) of Studio Pro, select **Documentation**. +2. Click the element for which you want to view the documentation. {{< figure src="/attachments/appstore/use-content/modules/doc-pane.png" >}} diff --git a/content/en/docs/appstore/use-content/modules/saml.md b/content/en/docs/appstore/use-content/modules/saml.md index eb6fedf7696..101c2beee07 100644 --- a/content/en/docs/appstore/use-content/modules/saml.md +++ b/content/en/docs/appstore/use-content/modules/saml.md @@ -40,7 +40,7 @@ The SAML SSO module supports the following [SAML 2.0](https://docs.oasis-open.or The Mendix SAML SSO supports usage of SAML metadata in the following way: * Daily synchronization of the IdP metadata, so your Mendix app will always have the latest IdP metadata. - * For daily synchronization of IdP metadata, configure the `SE_SynchronizeIdPMetadata` scheduled event. For local development this can be done from Studio Pro. In the Mendix Cloud, you can do this on the [Environments Details](/developerportal/deploy/environments-details/#model-options) page for your app. + * For daily synchronization of IdP metadata, configure the `SE_SynchronizeIdPMetadata` scheduled event. For local development this can be done from Studio Pro. In Mendix Cloud, you can do this on the [Environments Details](/developerportal/deploy/environments-details/#model-options) page for your app. * Downloading of the metadata for your Mendix application that acts as an SP in the SAML protocol For encryption of SAML messages the following options are supported: @@ -95,7 +95,7 @@ The URL for downloading the SP metadata of your app is independent of the value * Install and configure the [Mx Model Reflection](/appstore/modules/model-reflection/) module. * Install and configure the [Encryption](/appstore/modules/encryption/) module – this is needed to encrypt the key store passwords in version 3.5.0 and above of the SAML module. -* For apps running outside of the Mendix Cloud, make sure you have [external file storage](/refguide/system-requirements/#file-storage) configured. +* For apps running outside of Mendix Cloud, make sure you have [external file storage](/refguide/system-requirements/#file-storage) configured. {{% alert color="warning" %}}The SAML module writes configuration data to a file document on the file storage to read it later. Without external file storage, this configuration will be lost when you restart your app. The SAML module will not work correctly without reading the configuration data from the file storage. {{% /alert %}} @@ -134,7 +134,7 @@ There are different versions of the SAML module, depending on which version of M By default, the SAML module will be installed as the **SAML20** module in your app’s Marketplace modules. You can find all microflows and other configuration elements in this module. 1. Configure the **Startup** microflow in the SAML module (**SAML20.Startup**) to run as (part of) the [After startup](/refguide/app-settings/#after-startup) microflow. This microflow will initialize the custom request handler `/SSO/` (please note the importance of using the final `/` for all instances of `/SSO/`), validate all IdP configurations, and prepare the configuration entities required during the configuration. -1. If you have set up path-based access restrictions in your cloud (for example [Path-Based Access Restrictions](/developerportal/deploy/environments-details/#path-based-restrictions) in the Mendix Cloud), ensure that access to `/SSO/` is allowed. +1. If you have set up path-based access restrictions in your cloud (for example [Path-Based Access Restrictions](/developerportal/deploy/environments-details/#path-based-restrictions) in Mendix Cloud), ensure that access to `/SSO/` is allowed. 1. Add the **OpenConfiguration** microflow to the navigation, and then allow the administrator to access this microflow. 1. Review and configure all the constants: * **DefaultLoginPage** – You can specify a different login page here for when the login process fails. When the end-user cannot be authenticated in the external IdP, a button will appear, and by clicking this button, they will be redirected to the specified login page. If this is left blank, an unauthenticated user will be redirected to `/login.html`. diff --git a/content/en/docs/appstore/use-content/modules/snowflake/snowflake-edc.md b/content/en/docs/appstore/use-content/modules/snowflake/snowflake-edc.md index 02b62a804f0..dd6cccee614 100644 --- a/content/en/docs/appstore/use-content/modules/snowflake/snowflake-edc.md +++ b/content/en/docs/appstore/use-content/modules/snowflake/snowflake-edc.md @@ -148,6 +148,8 @@ To execute and test the query in Studio Pro, follow these steps: 10. Click **OK**. 11. Configure a nanoflow with the [Refresh entity](/appstore/modules/nanoflow-commons/) action to refresh the data grid if a user changes one of the filter values. +{{% alert color="info" %}}When using JDK version above 16, set JVM Parameter **--add-opens=java.base/java.nio=ALL-UNNAMED** in the App configuration.{{% /alert %}} + ## Configuring a Query to Display Data as a Chart This section provides an example of configuring a query that provides the data required to generate a chart. The chart in the example contains multiple series of historic temperatures. The query averages the minimum, maximum and average temperature in Celsius for all US locations and returns one record for each day available in the database. @@ -274,11 +276,11 @@ To execute and test the query in Studio Pro, follow these steps: from ztoday as zt ``` - This query results in a single string return value, containing a nested JSON with weather forecast for today for multiple postal code areas. This resulting string is captured in a non-persistent entity (NPE) with a single attribute. + This query results in a single string return value, containing a nested JSON with weather forecast for today for multiple postal code areas. This resulting string is captured in a non-persistable entity (NPE) with a single attribute. {{< figure src="/attachments/appstore/use-content/modules/external-database-connector/sample-snowflake-query-replication.png" >}} -4. Use a JSON import mapping to directly import the data into multiple associated persistent entities by doing the following steps: +4. Use a JSON import mapping to directly import the data into multiple associated persistable entities by doing the following steps: 1. Define a [JSON structure](/refguide/json-structures/) for the data retrieved from Snowflake. diff --git a/content/en/docs/appstore/use-content/modules/unit-testing.md b/content/en/docs/appstore/use-content/modules/unit-testing.md index d439a9e5862..446a0507b26 100644 --- a/content/en/docs/appstore/use-content/modules/unit-testing.md +++ b/content/en/docs/appstore/use-content/modules/unit-testing.md @@ -39,7 +39,7 @@ For module versions below 9.1.0, the [Object Handling](/appstore/modules/object- * For running remote unit tests via API: * Add the **Startup** flow to your app model's startup sequence * Set the **UnitTesting.RemoteApiEnabled** constant to true and provide a password for **UnitTesting.RemoteApiPassword** - * When hosting in a cloud node or on-premises. open a request handler on the **unittests/** path + * When hosting in a cloud node or on-premises, open a request handler on the **unittests/** path ## Usage diff --git a/content/en/docs/appstore/use-content/modules/workflow-commons.md b/content/en/docs/appstore/use-content/modules/workflow-commons.md index b8ebfe7b152..dd5f25782c7 100644 --- a/content/en/docs/appstore/use-content/modules/workflow-commons.md +++ b/content/en/docs/appstore/use-content/modules/workflow-commons.md @@ -110,6 +110,7 @@ You can find the following microflows in Workflow Commons: 4. For Workflow Commons v2.1.0 and above, you need to configure the state change microflows in the **App Settings**: open **App Settings** > **Workflows** tab to configure the following state change microflows: 1. Set **Workflow state change** to *OCh_Workflow_State* 2. Set **User task state change** to *OCh_WorkflowUserTask_State* +5. For Workflow Commons v3.10.0 and above, we introduced the `DueDateExpirationInDays` constant to configure the period in days for which the workflows/user tasks are to be considered almost due with visual indicators in pages **Task Inbox**, **Task Dashboard**, **Default Workflow Admin** and **Workflow Definition View**. The default value is set to 2 days. You should set the value based on your business needs. ## Workflow Audit Trail diff --git a/content/en/docs/appstore/use-content/partner-solutions/apd/ig/ig-one/ig-one-uninstall-steps.md b/content/en/docs/appstore/use-content/partner-solutions/apd/ig/ig-one/ig-one-uninstall-steps.md index 80eea4cc27f..023021da25b 100644 --- a/content/en/docs/appstore/use-content/partner-solutions/apd/ig/ig-one/ig-one-uninstall-steps.md +++ b/content/en/docs/appstore/use-content/partner-solutions/apd/ig/ig-one/ig-one-uninstall-steps.md @@ -55,7 +55,7 @@ You can find the AfterStartup and BeforeShutdown microflows in the project setti {{< figure src="/attachments/appstore/use-content/partner-solutions/apd/ig/ig-one/ig-one-uninstall-steps/Revert_After_Startup.png" class="no-border" >}} -## Optional: Undo Request Permissions for the Mendix Cloud or On-Premises Runtime +## Optional: Undo Request Permissions for Mendix Cloud or On-Premises Runtime For a Mendix Cloud slot you send an email to Mendix support requesting to undo the added permissions diff --git a/content/en/docs/appstore/use-content/partner-solutions/apd/release-notes/index.md b/content/en/docs/appstore/use-content/partner-solutions/apd/release-notes/index.md index e1018459a83..2ea65d9b904 100644 --- a/content/en/docs/appstore/use-content/partner-solutions/apd/release-notes/index.md +++ b/content/en/docs/appstore/use-content/partner-solutions/apd/release-notes/index.md @@ -340,7 +340,7 @@ The idea is to call your own microflow that sends out an email. The APMAgent mod ### Trigger Log Action with Level -The trigger log action now has a level. You can use this for critical messages and thus receive an email when you run in the Mendix Cloud. +The trigger log action now has a level. You can use this for critical messages and thus receive an email when you run in Mendix Cloud. You could also use debug level to output measurement data so that when a trap occurs, you have measurement info inside the trap. diff --git a/content/en/docs/appstore/use-content/partner-solutions/ats/bp/bp-two/bp-two-finding-the-action-you-need.md b/content/en/docs/appstore/use-content/partner-solutions/ats/bp/bp-two/bp-two-finding-the-action-you-need.md index cbf04e1cfa3..9456acd55ce 100644 --- a/content/en/docs/appstore/use-content/partner-solutions/ats/bp/bp-two/bp-two-finding-the-action-you-need.md +++ b/content/en/docs/appstore/use-content/partner-solutions/ats/bp/bp-two/bp-two-finding-the-action-you-need.md @@ -116,7 +116,7 @@ The solution in this situation is to use one of the following search terms: "Cli In this example, you want to click a specific data grid row inside a data grid. You can use the Click Widget action in combination with the column name, but if there are multiple data grids, ATS cannot distinguish them. -The solution in this situation is to use the following search term: "Click DataGrid". ATS checks all the actions and returns those that match these words. There is an action called [Click DataGrid Row](/appstore/partner-solutions/ats/rg-one-click-datagrid-row/). which enables you to click a data grid row containing a specific value in a specific column. This action also works on list views and template grids. +The solution in this situation is to use the following search term: "Click DataGrid". ATS checks all the actions and returns those that match these words. There is an action called [Click DataGrid Row](/appstore/partner-solutions/ats/rg-one-click-datagrid-row/), which enables you to click a data grid row containing a specific value in a specific column. This action also works on list views and template grids. {{< figure src="/attachments/appstore/use-content/partner-solutions/ats/bp/bp-two/bp-two-finding-the-action-you-need/click-datagrid-row-action-search.png" class="no-border" >}} diff --git a/content/en/docs/appstore/use-content/partner-solutions/ats/ht/v2/ht-two-configure-a-selenium-hub.md b/content/en/docs/appstore/use-content/partner-solutions/ats/ht/v2/ht-two-configure-a-selenium-hub.md index c538cf33b55..3c928bbb0f7 100644 --- a/content/en/docs/appstore/use-content/partner-solutions/ats/ht/v2/ht-two-configure-a-selenium-hub.md +++ b/content/en/docs/appstore/use-content/partner-solutions/ats/ht/v2/ht-two-configure-a-selenium-hub.md @@ -26,7 +26,7 @@ Before starting with this how-to, make sure you have the following prerequisites To get to the test settings follow these steps: -1. Go to ATS and login. +1. Go to ATS and log in. 2. Open the app where you want to add the Selenium hubs. 3. Once inside your app click the profile menu and click **Show Test Settings**. @@ -76,7 +76,7 @@ To configure BrowserStack as a Selenium hub follow these steps: To find the username and access key follow these steps: -1. Go to [BrowserStack](https://www.browserstack.com) and login with the account you want to connect to ATS. +1. Go to [BrowserStack](https://www.browserstack.com) and log in with the account you want to connect to ATS. 2. Click **Automate** in the navigation bar. 3. There is a collapsible menu on the left side of the screen. When you unfold it, it displays the **Username** and the **Access Key** when you unfold it. It also has a **Copy** button. @@ -134,7 +134,7 @@ To configure Sauce Labs as a Selenium hub follow these steps: To find the username and access key follow these steps: -1. Go to [Sauce Labs](https://saucelabs.com) and login with the account you want to connect to ATS. +1. Go to [Sauce Labs](https://saucelabs.com) and log in with the account you want to connect to ATS. 2. Open the profile menu in the upper right corner of your screen and click **My Account** in the drop-down menu. {{< figure src="/attachments/appstore/use-content/partner-solutions/ats/ht/v2/ht-two-configure-a-selenium-hub/my-account-saucelabs.png" class="no-border" >}} @@ -195,7 +195,7 @@ To configure TestingBot as a Selenium hub follow these steps: To find the username and access key follow these steps: -1. Go to [TestingBot](https://testingbot.com) and login with the account you want to connect to ATS. +1. Go to [TestingBot](https://testingbot.com) and log in with the account you want to connect to ATS. 2. Click **My Account** in the upper right corner of the screen. {{< figure src="/attachments/appstore/use-content/partner-solutions/ats/ht/v2/ht-two-configure-a-selenium-hub/my-account-testingbot.png" class="no-border" >}} diff --git a/content/en/docs/appstore/use-content/partner-solutions/ats/ht/v2/ht-two-increase-recorder-helper-coverage.md b/content/en/docs/appstore/use-content/partner-solutions/ats/ht/v2/ht-two-increase-recorder-helper-coverage.md index 025d9466ba9..72e56f82b4b 100644 --- a/content/en/docs/appstore/use-content/partner-solutions/ats/ht/v2/ht-two-increase-recorder-helper-coverage.md +++ b/content/en/docs/appstore/use-content/partner-solutions/ats/ht/v2/ht-two-increase-recorder-helper-coverage.md @@ -45,7 +45,7 @@ To add a constant in Mendix Studio Pro follow these steps: 2. In the **Configuration** tab click **New**. This opens the **New Configuration** dialog. 3. In the dialog click the **Constants** tab and click **New**. This opens the **Select Constant** dialog. 4. Select a module in this dialog where you want to add the constant and click **New**. This opens the **Add Constant** dialog. -5. Enter a name in the dialog and click **OK**. This opens the **Constant** dialog. where you can add the following properties: +5. Enter a name in the dialog and click **OK**. This opens the **Constant** dialog, where you can add the following properties: * Name: EnableScopedSeleniumClasses * Type: Boolean diff --git a/content/en/docs/appstore/use-content/partner-solutions/ats/ht/v2/ht-two-setup-local-selenium-index/ht-two-setting-up-a-local-selenium-solution.md b/content/en/docs/appstore/use-content/partner-solutions/ats/ht/v2/ht-two-setup-local-selenium-index/ht-two-setting-up-a-local-selenium-solution.md index f874df58aa4..2bca3f10618 100644 --- a/content/en/docs/appstore/use-content/partner-solutions/ats/ht/v2/ht-two-setup-local-selenium-index/ht-two-setting-up-a-local-selenium-solution.md +++ b/content/en/docs/appstore/use-content/partner-solutions/ats/ht/v2/ht-two-setup-local-selenium-index/ht-two-setting-up-a-local-selenium-solution.md @@ -9,7 +9,7 @@ description: "Describes the options to set up a local Selenium solution." This how-to describes a few possible local Selenium solutions and contains links to the documentation with simple examples on how to set up each solution. Before reading these documents, pay attention to the following: * These solutions are all under heavy development, and new versions are released on a regular base. The documentation contains examples, and using the official documentation is recommended. -* ATS 2 is running in the Mendix cloud. When running a local Selenium solution, ATS should be able to communicate with the machine on port 4444. In most cases, this means your network department has to arrange something to make this work. +* ATS 2 is running in Mendix Cloud. When running a local Selenium solution, ATS should be able to communicate with the machine on port 4444. In most cases, this means your network department has to arrange something to make this work. * **Security warning!!!** By default, none of the described solutions use SSL or any form of authentication. You might, for example, want to use a web server as a front end to make SSL and authentication possible. This is not covered in the How-tos and it's the responsibility of the party that installs the Selenium solution. * Docker Selenium and Selenoid are two open-source projects based on Selenium that we cover in this How-to. There are many more, but we limit us to these two. * Support for open-source software could be limited or slower, compared to SaaS Selenium providers. diff --git a/content/en/docs/appstore/use-content/partner-solutions/ats/ov/ov-deployment.md b/content/en/docs/appstore/use-content/partner-solutions/ats/ov/ov-deployment.md index 4ad340bd3eb..e3bbcf9ba94 100644 --- a/content/en/docs/appstore/use-content/partner-solutions/ats/ov/ov-deployment.md +++ b/content/en/docs/appstore/use-content/partner-solutions/ats/ov/ov-deployment.md @@ -97,8 +97,8 @@ Future Proof5 | {{< figure src="/attachments/appstore/use-conten 1 Only if supported by ATS.
2 Feature not available yet.
3 Additional setup for every browser required.
-4 ATS will integrate with several APIs from the Mendix Cloud to improve the testing experience. Since some of these APIs are only available for apps that run in the Mendix Cloud, certain features cannot be offered for on-premises apps.
-5 Future features may depend on the functionality offered by the Mendix Cloud or the Selenium service providers. They may not be available if you run your app on-premises or host your own Selenium server.
+4 ATS will integrate with several APIs from Mendix Cloud to improve the testing experience. Since some of these APIs are only available for apps that run in Mendix Cloud, certain features cannot be offered for on-premises apps.
+5 Future features may depend on the functionality offered by Mendix Cloud or the Selenium service providers. They may not be available if you run your app on-premises or host your own Selenium server. ### Setup and Maintenance diff --git a/content/en/docs/appstore/use-content/partner-solutions/ats/release-notes/release-notes.md b/content/en/docs/appstore/use-content/partner-solutions/ats/release-notes/release-notes.md index 828096c35d0..047c26f9922 100644 --- a/content/en/docs/appstore/use-content/partner-solutions/ats/release-notes/release-notes.md +++ b/content/en/docs/appstore/use-content/partner-solutions/ats/release-notes/release-notes.md @@ -1251,11 +1251,11 @@ We saw decreasing performance in some parts of the UI when you had a lot of data Getting started with ATS has never been easier. We’ve put a lot of effort into ensuring that the onboarding of new users is as smooth as possible. Existing users can enjoy zero maintenance and a well-known user interface. -We accomplished this by providing a single, multi-tenant SaaS instance of ATS in the Mendix Cloud. This instance comes with the same styling and usability as the Mendix Cloud facilities. +We accomplished this by providing a single, multi-tenant SaaS instance of ATS in Mendix Cloud. This instance comes with the same styling and usability as Mendix Cloud facilities. #### Application Test Suite as a Service -ATS is now offered as a service. There is a single multi-tenant instance in the Mendix Cloud to serve all customers: +ATS is now offered as a service. There is a single multi-tenant instance in Mendix Cloud to serve all customers: [https://ats.mendix.com](https://ats.mendix.com) diff --git a/content/en/docs/appstore/use-content/services/business-events.md b/content/en/docs/appstore/use-content/services/business-events.md index f6789d94bc8..5f9faa102ea 100644 --- a/content/en/docs/appstore/use-content/services/business-events.md +++ b/content/en/docs/appstore/use-content/services/business-events.md @@ -13,7 +13,7 @@ Business events are like a mailing list to share event notifications between app With [Mendix Business Events](https://marketplace.mendix.com/link/component/202649), applications can signal when something important happens and can independently subscribe to these events if they want to be informed. -To deliver these events reliably between your applications, an event broker is required. For apps running the Mendix cloud on licensed nodes, you will need to purchase a license for the [Mendix Event Broker](/appstore/services/event-broker/). +To deliver these events reliably between your applications, an event broker is required. For apps running Mendix Cloud on licensed nodes, you will need to purchase a license for the [Mendix Event Broker](/appstore/services/event-broker/). {{% alert color="info" %}} Business events are supported in Studio Pro [9.18](/releasenotes/studio-pro/9.18/) and above and currently can only be deployed to the [Mendix Cloud](/developerportal/deploy/mendix-cloud-deploy/).{{% /alert %}} @@ -32,7 +32,7 @@ To use Mendix Business Events, you will need the following: * The [Mendix Business Events](https://marketplace.mendix.com/link/component/202649) service from the Mendix Marketplace * Studio Pro [9.24](/releasenotes/studio-pro/9.24/) and above -* An event broker; this can be a licensed [Mendix Event Broker](#mendix-event-broker) for apps running in the Mendix Cloud or the [local testing](#local-testing) broker (see [Deployment](#deployment)) +* An event broker; this can be a licensed [Mendix Event Broker](#mendix-event-broker) for apps running in Mendix Cloud or the [local testing](#local-testing) broker (see [Deployment](#deployment)) * [Docker](https://www.docker.com/) for local deployment ## Licensing {#licensing} @@ -205,7 +205,7 @@ The **PublishedBusinessEvent** and **ConsumedBusinessEvent** entities are necess * **PublishedBusinessEvent** - This non-persistable entity has the fields settings that every published event will include. Every published business event will inherit from this entity. The three fields can be set from the Java Action. This is used to define what your published business events look like. * **ConsumedBusinessEvent** - This entity has the fields that every consumed event will include. Every consumed business event will inherit from this entity. These fields will be set from the service, as will any additional fields that match with the payload of the event. This defines what you want to receive from the business events you subscribe to. -* **DeadLetterQueue** - This persistent entity within the domain model of the Business Events service is used for generating a historical record of events that are generated for business event activities that were not successful or had errors when received by the consumer and can be referred to for troubleshooting. You can query the DeadLetterQueue entity to determine which received events could not be processed. +* **DeadLetterQueue** - This persistable entity within the domain model of the Business Events service is used for generating a historical record of events that are generated for business event activities that were not successful or had errors when received by the consumer and can be referred to for troubleshooting. You can query the DeadLetterQueue entity to determine which received events could not be processed. * **Outbox** - This entity is used to store the event prior to being sent. This entity is connected to the microflow where a business event is triggered. If the microflow fails, the entity will be removed as part of the same transaction. If the event broker is down at runtime, business events will accumulate in the **Outbox**. They will be retried at increasing intervals for 48 hours and will fail after that time. Once an event is successfully delivered, it gets deleted from the **Outbox**. #### Dead Letter Queue for Failed Messages {#dead-letter-queue} @@ -249,7 +249,7 @@ Business Events offers four different deployment models: * Deploying locally with the [Local Setup Tool](https://github.com/mendix/event-broker-tools) * Free apps using a free multi-tenant event broker -* Production apps using the [Mendix Event Broker](#mendix-event-broker) running in the Mendix Cloud +* Production apps using the [Mendix Event Broker](#mendix-event-broker) running in Mendix Cloud * Apps running their own Kafka cluster (bring your own Kafka) ### Local Deployment diff --git a/content/en/docs/appstore/use-content/services/event-broker.md b/content/en/docs/appstore/use-content/services/event-broker.md index c6a385a2311..9c8fea5b8c1 100644 --- a/content/en/docs/appstore/use-content/services/event-broker.md +++ b/content/en/docs/appstore/use-content/services/event-broker.md @@ -16,7 +16,7 @@ There is a single Kafka broker for Free Apps that your company Free Apps can con ## Mendix Event Broker License {#event-broker-license} -Purchase a license to the Mendix Event Broker to deploy unlimited apps on production environments in the Mendix Cloud. Ask your Customer Success Manager or Account Manager to reach out to purchase a license. See the [Mendix Event Broker](https://marketplace.mendix.com/link/component/202907) platform service page for more details. +Purchase a license to the Mendix Event Broker to deploy unlimited apps on production environments in Mendix Cloud. Ask your Customer Success Manager or Account Manager to reach out to purchase a license. See the [Mendix Event Broker](https://marketplace.mendix.com/link/component/202907) platform service page for more details. A license for the Mendix Event Broker is available for any Mendix region, but once selected, you can only run on a single region (no multi-region support). This license is available for all customers. You can also run business events on [your own Kafka cluster](/appstore/services/business-events/#byok). @@ -279,7 +279,7 @@ After downloading the file, open your Studio Pro app and import the file as a ne {{< figure src="/attachments/appstore/use-content/services/event-broker/event_broker_ede_import_file.png" width="850" >}} -Click **OK**. and the new business event is created and ready to be used with the same features as any other imported event. +Click **OK**, and the new business event is created and ready to be used with the same features as any other imported event. {{< figure src="/attachments/appstore/use-content/services/event-broker/event_broker_ede_imported_file.png" width="850" >}} diff --git a/content/en/docs/appstore/use-content/services/oidc-provider.md b/content/en/docs/appstore/use-content/services/oidc-provider.md index 385ec50be39..676ce638aa9 100644 --- a/content/en/docs/appstore/use-content/services/oidc-provider.md +++ b/content/en/docs/appstore/use-content/services/oidc-provider.md @@ -10,26 +10,54 @@ aliases: ## Introduction -The [OIDC Provider](https://marketplace.mendix.com/link/component/214681) service can be used to build a Mendix app that acts as an OpenID provider for other apps, providing a Single Sign-On (SSO) experience for the end-users of those applications. This app could also delegate authentication of end-users to another Identity provider (IdP), causing it to act as an IAM broker. + The [OIDC Provider](https://marketplace.mendix.com/link/component/214681) module enables developers to build Mendix applications that issue security tokens to other applications. In IAM (Identity and Access Management) terminology, this module acts as an OpenID Provider and an OAuth Authorization Server. Therefore, let us refer to such an application as an access provider application. +An access provider application can offer a Single Sign-On (SSO) experience for end-users of connected applications Additionally, it can issue Access Tokens for API consumption when APIs are secured with OAuth bearer tokens. The service supports responsive browser-based applications and has been tested with applications that use the OIDC SSO module. -The idea is that you set up a single Mendix app which uses the [OIDC SSO](https://marketplace.mendix.com/link/component/120371) module to authenticate end-users with your central IdP. The same app also acts as an OIDC provider for your other apps to use as the IdP for OIDC SSO. This means it is working as an IAM (Identity and Access Management) broker for authentication and, optionally, authorization. You can easily add or remove apps from the IAM Broker app within the Mendix ecosystem using an API without each app and relevant user roles having to be added to your central IdP. However, you retain all the benefits of your central IdP in controlling on- and offboarding of users. +### Typical Usage Scenarios -For more information on the concepts behind authorization, see [About Authorization](#about-authorization), below. +The following are usage scenarios that would be achievable with the OIDC Provider module. -{{< figure src="/attachments/appstore/use-content/services/oidc-provider/typical-usage.png" class="no-border" >}} +* SSO brokering +* SSO within multi-app Mendix solution +* Non-user specific API consumption -You can also set up your users manually in your app, using the Mendix [Administration](/appstore/modules/administration/) module, rather than linking to your central IdP. +For more information on how SSO brokering and SSO are implemented within a multi-app Mendix solution, see the [End-User Account Creation in the OIDC Provider](#end-user-account) section below. -### Typical Usage Scenarios +#### SSO Brokering for Rapid Innovation{#brokering} + +{{< figure src="/attachments/appstore/use-content/services/oidc-provider/brokering.png" class="no-border" >}} + +The Mendix marketplace offers Single Sign-On (SSO) module, enabling your Mendix application to delegate end-user login to your Identity Providers (IdPs) such as Entra ID and Okta. However, for some organizations, implementing SSO for each Mendix application can cost more or slow down innovation. In such cases, an SSO broker between your IdP and your expanding portfolio of Mendix applications can offer an effective solution. + +You can build a Mendix application that acts as a SSO Broker by using the OIDC SSO and the OIDC Provider modules. The OIDC SSO module authenticates end-users at your central IdP, while the OIDC Provider module enables your new app to act as an IdP (OpenID Provider) for your other Mendix applications. This means it is working as an SSO broker, catering for authentication and, optionally, for authorization. + +For more information on the concepts behind authorization, see the [About Authorization](#about-authorization) section below. + +Your deployment pipeline (deployment agent) would be responsible for registering additional Mendix apps with the SSO broker. This process can be automated using client registration API provided by the OIDC Provider module. + +#### SSO Within Multi-app Mendix Solution + +Mendix Solution Vendors (MSVs) may build a multi-app solution that acts as a single application from the end-user perspective. This solution may have initially been a big monolith and is gradually refactored into multiple Mendix applications. + +{{< figure src="/attachments/appstore/use-content/services/oidc-provider/SSO_within_multiapp.png" class="no-border" >}} + +As an MSV, you probably want to hide the internal multi-application structure from your end-users. They prefer logging in once to your overall solution rather than separately to individual apps. The OIDC Provider module allows you to build a ‘Central Portal App' where your end-users login once and subsequently get a SSO experience when navigating to the various applications in the solution. This approach does not need an external third-party IdP to create such a SSO experience, as your Central Portal App acts as a lightweight solution for Customer Identity & Access Management (CIAM). + +Instead of using local credentials in the Central Portal App, you may want to integrate your solution with an IdP. As an MSV, you probably also want to hide the internal multi-application structure from this IdP and have a single integration point. The Central Portal App can then act as an SSO broker, similar to the usage scenario described in the [SSO Brokering for rapid innovation](#brokering) section above. + +#### Non-user Specific API Consumption + +{{< figure src="/attachments/appstore/use-content/services/oidc-provider/API_consumption.png" class="no-border" >}} + +For API security, it is a best practice to use OAuth-tokens rather than API-keys. OAuth tokens are also known as bearer tokens, access tokens or simply JWTs. You have below two options for using OAuth tokens: -The following are usage scenarios that would be achievable with the OIDC Broker. +* Use human identities: An end-user logs in via SSO, allowing the client application to consume the API on behalf of your end-user, using the OAuth access token which is received from the SSO process. -* Mendix customers that want to build an IAM Broker solution that would hide the complexity of a multitude of Mendix apps from their corporate IdP. By having those apps delegate authentication to the broker and have the broker delegate authentication to their IdP, only one OAuth client needs to be configured at their IdP. A deployment pipeline (deployment agent) can register additional Mendix apps with the IAM Broker in an automated fashion via an API. -* Mendix Solution Vendors (MSVs) may want to hide the microservice architecture of their solution from the customer. By building an IAM Broker they can offer their customers a single SSO integration point. +* Use a machine identity: Machine identities are also known as service accounts or application accounts. In this case, access tokens are used by the client application to consume the API on behalf of itself. In this scenario, the end-user is not relevant. -See [End-User Account Creation in OIDC Provider](#end-user-account), below for more information on how these two use cases are implemented. +The OIDC Provider supports the so-called Client Credential grant. This means that, a client application can obtain a client access token by authenticating at the OIDC Provider and present that access token to the API it consumes. The OIDC SSO module (version 3.1.0 and above) helps you to implement security in your API. It validates the token either through token introspection at the OIDC Provider or by verifying its signature. Moreover, it creates a user that represents the client that is consuming the API. ### Features and Limitations @@ -84,7 +112,7 @@ To install the OIDC Provider service in your IAM broker app, you need to import * [OIDC Provider](https://marketplace.mendix.com/link/component/214681) * [Community Commons](https://marketplace.mendix.com/link/component/170) * [Mx Model reflection](https://marketplace.mendix.com/link/component/69) -* [Administration](https://marketplace.mendix.com/link/component/23513) – Version 3.0.0 and below +* [Administration](https://marketplace.mendix.com/link/component/23513) {{% alert color="info" %}} To develop your IAM broker app more quickly, consider using the [Access Provider Template](https://marketplace.mendix.com/link/component/229790). This template facilitates the setup and integration of OIDC Provider and OIDC SSO modules, including all necessary dependencies. For more information, refer to the documentation tab of the Access Provider Template Marketplace module. @@ -266,7 +294,7 @@ To return requested scopes to your client app, you need to perform the following 1. Open the **Scopes** tab for the client you want to configure 1. Create a new scope for every user role which is implemented in your client apps. You can identify the user role in one of two ways: - 1. use the **Name** as the user role in your client app. + 1. Use the **Name** as the user role in your client app. 1. From version 1.1.0 you can also use the UUID of the user role in your client app. The benefit of this second approach is that it avoids ‘scope collision’. In other words, you avoid having confusion between user roles with the same name but in different apps. @@ -510,7 +538,7 @@ The OIDC Provider service is one such central component and you can communicate Using OAuth scopes is the recommended approach since it is the standard OAuth solution. With Mendix, we advise you to think of an app’s user roles as being the same as OAuth scope values. By adhering to this logic, you can develop apps with any user roles without having to decide and agree on custom attributes. You can customize the OIDC SSO module with microflows which parse the tokens from the OIDC Provider service and apply user roles to enforce the authorization indicated in the token. -### End-User Account Creation in OIDC Provider{#end-user-account} +### End-User Account Creation in the OIDC Provider{#end-user-account} Since the OIDC Provider issues access tokens for end-users that are logged in, it needs to record end-users as objects in the app which contains the OIDC Provider service. diff --git a/content/en/docs/appstore/use-content/widgets/barcode-scanner.md b/content/en/docs/appstore/use-content/widgets/barcode-scanner.md index b67be316901..60b5573f4cb 100644 --- a/content/en/docs/appstore/use-content/widgets/barcode-scanner.md +++ b/content/en/docs/appstore/use-content/widgets/barcode-scanner.md @@ -16,7 +16,7 @@ The widget does the following: * Allows for additional styling customizations through Atlas UI {{% alert color="info" %}} -For security reasons, certain browsers will only allow access to an end-user device's camera over an HTTPS connection and not a default HTTP connection. Since this widget accesses the end-user device's camera through this method, the same constraints apply for using this widget in both production and local development. For production, an appropriate security setting can be applied when deploying to the Mendix Cloud. For local development, the easiest solution is to set up a local proxy that secures the connection towards your local Mendix application. +For security reasons, certain browsers will only allow access to an end-user device's camera over an HTTPS connection and not a default HTTP connection. Since this widget accesses the end-user device's camera through this method, the same constraints apply for using this widget in both production and local development. For production, an appropriate security setting can be applied when deploying to Mendix Cloud. For local development, the easiest solution is to set up a local proxy that secures the connection towards your local Mendix application. {{% /alert %}} ## Usage diff --git a/content/en/docs/catalog/_index.md b/content/en/docs/catalog/_index.md index efe858a8589..f74cf560cdf 100644 --- a/content/en/docs/catalog/_index.md +++ b/content/en/docs/catalog/_index.md @@ -20,11 +20,11 @@ The Mendix Portal is the online platform of Mendix. It includes [Apps](/develope ## Introduction -The [Catalog](https://catalog.mendix.com) is a development tool provided in the Mendix Cloud. +The [Catalog](https://catalog.mendix.com) is a development tool provided in Mendix Cloud. {{< figure src="/attachments/catalog/catalog-home.png" class="no-border" >}} -REST services provided by Mendix Apps running in the Mendix Cloud (published [OData](/refguide/published-odata-services/) and OpenAPI REST Services) are automatically registered in your organization's Catalog upon deployment. This provides you with an up-to-date view of all the OData and OpenAPI REST APIs published and consumed by your Mendix apps. These assets can be [curated](/catalog/manage/curate/) in the Catalog to ensure that they are exposed to the relevant users and can be found easily. +REST services provided by Mendix Apps running in Mendix Cloud (published [OData](/refguide/published-odata-services/) and OpenAPI REST Services) are automatically registered in your organization's Catalog upon deployment. This provides you with an up-to-date view of all the OData and OpenAPI REST APIs published and consumed by your Mendix apps. These assets can be [curated](/catalog/manage/curate/) in the Catalog to ensure that they are exposed to the relevant users and can be found easily. Learn about updates and improvements in the [Catalog](/releasenotes/data-hub/) release notes. diff --git a/content/en/docs/catalog/manage/search.md b/content/en/docs/catalog/manage/search.md index d746a4df231..38c2abd3fac 100644 --- a/content/en/docs/catalog/manage/search.md +++ b/content/en/docs/catalog/manage/search.md @@ -442,7 +442,7 @@ This is a link to the business owner of the data exposed in the data source. For This is a technical contact for the app. By default, this is the owner who registered the service. -For apps hosted in the Mendix Cloud, the **Technical Owner** is the app developer that deployed the app. +For apps hosted in Mendix Cloud, the **Technical Owner** is the app developer that deployed the app. Technical owners can be [changed](/catalog/manage/curate/#changing-owners). diff --git a/content/en/docs/catalog/register/_index.md b/content/en/docs/catalog/register/_index.md index 375d26767b6..1a6b015e828 100644 --- a/content/en/docs/catalog/register/_index.md +++ b/content/en/docs/catalog/register/_index.md @@ -11,7 +11,7 @@ Publishing developers can register services in the Catalog in different ways dep Common tasks for registering data sources include the following: -* [Registering services automatically on the Mendix Cloud](/catalog/register/register-data/#mendix-cloud) +* [Registering services automatically on Mendix Cloud](/catalog/register/register-data/#mendix-cloud) * [Registering data sources on-premises or on a Private Cloud](/catalog/register/data-sources-without-mendix-cloud/) * [Automating registration in a pipeline on a Private Cloud](/catalog/automate-registration/) * Manually uploading a metadata contract with the [Catalog UI form](/catalog/register/register-data/#registration-form) diff --git a/content/en/docs/catalog/register/open-api-registration.md b/content/en/docs/catalog/register/open-api-registration.md index f0fcef7d62a..960ffd255be 100644 --- a/content/en/docs/catalog/register/open-api-registration.md +++ b/content/en/docs/catalog/register/open-api-registration.md @@ -14,7 +14,7 @@ This functionality is currently in [beta](/releasenotes/beta-features/). ## Introduction -OpenAPI automatic registration registers all your OpenAPI and OData APIs in the Catalog automatically when you app is deployed to the Mendix CLoud. This makes them easily discoverable within your organization. +OpenAPI automatic registration registers all your OpenAPI and OData APIs in the Catalog automatically when you app is deployed to Mendix Cloud. This makes them easily discoverable within your organization. ## Prerequisites diff --git a/content/en/docs/catalog/register/register-non-odata-resources.md b/content/en/docs/catalog/register/register-non-odata-resources.md index b1272b269ee..d7ff9069f7c 100644 --- a/content/en/docs/catalog/register/register-non-odata-resources.md +++ b/content/en/docs/catalog/register/register-non-odata-resources.md @@ -17,7 +17,7 @@ The Catalog collects metadata from exposed services and currently supports all O ## Expose OData via a Mendix App {#use-mendix-app} -To expose OData via a Mendix app, replicate and save your persistent entity data in a module. In this module, expose the persistent entities as published OData services. This will allow read-only access to the external entity data within the Mendix Landscape. +To expose OData via a Mendix app, replicate and save your persistable entity data in a module. In this module, expose the persistable entities as published OData services. This will allow read-only access to the external entity data within the Mendix Landscape. For more information, see [Published OData Services](/refguide/published-odata-services/) and [Building Connectors](/appstore/creating-content/connector-guide-build/). diff --git a/content/en/docs/catalog/register/without-mendix-cloud.md b/content/en/docs/catalog/register/without-mendix-cloud.md index d9717ff8d41..c554c3d1102 100644 --- a/content/en/docs/catalog/register/without-mendix-cloud.md +++ b/content/en/docs/catalog/register/without-mendix-cloud.md @@ -18,13 +18,13 @@ This guide explains how to use [published OData services](/refguide/published-od This document covers the following use cases: * You are developing both the service and the client on a local machine, without deploying to a cloud environment (deploying locally) -* You are deploying to a [Private Cloud](/developerportal/deploy/private-cloud/) or [On-Premises](/developerportal/deploy/on-premises-design/), rather than the Mendix Cloud +* You are deploying to a [Private Cloud](/developerportal/deploy/private-cloud/) or [On-Premises](/developerportal/deploy/on-premises-design/), rather than Mendix Cloud In these cases, you can still publish and consume external entities. This guide will explain how to work with the Catalog and external entities by taking a step back and distinguishing between design time (when you are modeling your app) and runtime (after it has been deployed to a development server). ## Using Data in Design Time{#dh-design-time} -During design time, when you are [modeling](/refguide/modeling/) your app, you are finding, registering, or importing data source [metadata](#metadata) into Studio Pro. This metadata is in the form of contracts, and is registered automatically in the Catalog if your application is hosted on the Mendix Cloud. See the [Metadata Contracts](#metadata) section below for more details. +During design time, when you are [modeling](/refguide/modeling/) your app, you are finding, registering, or importing data source [metadata](#metadata) into Studio Pro. This metadata is in the form of contracts, and is registered automatically in the Catalog if your application is hosted on Mendix Cloud. See the [Metadata Contracts](#metadata) section below for more details. If you will be deploying locally, to a Private Cloud, or On-Premises, you can add an app, the environments on which it is deployed, and the [published OData entity](/refguide/published-odata-entity/) it provides using the metadata contract. For general resources on using data when modeling your app during design time, check out [Share Data Between Apps](/data-hub/share-data/) and [Write Data to Another App](/catalog/write-data/). @@ -32,7 +32,7 @@ If you will be deploying locally, to a Private Cloud, or On-Premises, you can ad The Catalog acts as a phonebook or map to the data and capabilities provided by software in your organization. It contains metadata about the applications, environments, services, and versions deployed. For every system registered, the contracts describing its services are parsed and stored, so users can easily find the descriptions of the datasets, logic, and events provided by these systems. The Catalog does not contain any data, only the metadata required to describe these applications and services. -See the [Registering a Service Through the Mendix Cloud](/catalog/register/register-data/#mendix-cloud) section of *Register Resources in the Catalog to read how this works if you are deploying to the Mendix Cloud. +See the [Registering a Service Through Mendix Cloud](/catalog/register/register-data/#mendix-cloud) section of *Register Resources in the Catalog to read how this works if you are deploying to Mendix Cloud. ### Supported Metadata Contract Types @@ -48,14 +48,14 @@ To manually register an OData contract metadata file to the Catalog, follow thes 2. Use the [Transform](/catalog/register/register-data/#transform-api) operation to transform the contents of `dependencies.json` into payloads for other operations (see the [Transform operation specs](http://datahub-spec.s3-website.eu-central-1.amazonaws.com/registration_v5.html#/Endpoints/post_transform_dependenciesjson)). 3. Use the [Registration API](/apidocs-mxsdk/apidocs/catalog-apis/#registration) to register the data source. -For detailed steps, see the [Registering a Service without the Mendix Cloud](/catalog/register/register-data/#without-mendix-cloud) section of *Register Resources in the Catalog*. +For detailed steps, see the [Registering a Service without Mendix Cloud](/catalog/register/register-data/#without-mendix-cloud) section of *Register Resources in the Catalog*. ### Manually Registering Contracts to the Catalog without Team Server {#manual-no-team-server} To manually register contracts to the Catalog without the Mendix Team Server, do the following: 1. Export the contract from the publishing app and download it to your computer.
Go to **Settings** tab of the **Published OData Service** document, and click **Export** next to the **Metadata** field. Save the `$metadata.xml` file. -2. Register the contract into the Catalog manually.
See the [Registering a Service without the Mendix Cloud](/catalog/register/register-data/#without-mendix-cloud) section of *Register Resources in the Catalog*. +2. Register the contract into the Catalog manually.
See the [Registering a Service without Mendix Cloud](/catalog/register/register-data/#without-mendix-cloud) section of *Register Resources in the Catalog*. ### Importing Contracts Directly into Studio Pro (Bypassing the Catalog) {#import-contracts} diff --git a/content/en/docs/community-tools/contribute-to-mendix-docs/_index.md b/content/en/docs/community-tools/contribute-to-mendix-docs/_index.md index 5ca9031d1a9..5a4f1cdfc62 100644 --- a/content/en/docs/community-tools/contribute-to-mendix-docs/_index.md +++ b/content/en/docs/community-tools/contribute-to-mendix-docs/_index.md @@ -92,7 +92,7 @@ To edit existing documentation in GitHub, follow these steps: 8. Make sure that **Allow edits by maintainers** is selected. 9. Click **Create pull request**. -The pull request is created. the Mendix Docs team will review the pull request as soon as possible. After the review and if there are no questions, the pull request will be published and you will be able to see the changes on the Mendix Docs site! +The pull request is created. The Mendix Docs team will review the pull request as soon as possible. After the review and if there are no questions, the pull request will be published and you will be able to see the changes on the Mendix Docs site! ## Editing the Documentation and Previewing Changes Locally {#local-build} diff --git a/content/en/docs/control-center/apps.md b/content/en/docs/control-center/apps.md index 7444ebb2e04..89937f4427a 100644 --- a/content/en/docs/control-center/apps.md +++ b/content/en/docs/control-center/apps.md @@ -20,7 +20,7 @@ We will enhance this page to provide information about apps deployed on standalo ## Mendix Cloud -The **Mendix Cloud** tab gives an overview of all the licensed apps that can be published on the Mendix Cloud. +The **Mendix Cloud** tab gives an overview of all the licensed apps that can be published on Mendix Cloud. By default you only see apps and their production environments. Turn off the **Production** toggle on the right side above the table to see all the environments. @@ -138,7 +138,7 @@ The description of the items that you can select are as follows: ## Mendix Free Cloud -The **Mendix Free Cloud** tab shows all the free apps that are deployed on the Mendix Cloud. +The **Mendix Free Cloud** tab shows all the free apps that are deployed on Mendix Cloud. You can customize the columns of the table by clicking the column selector (the {{% icon name="view" %}} icon) on the upper-right corner of the table. The items selected are shown as columns in the table. diff --git a/content/en/docs/control-center/roles-permissions.md b/content/en/docs/control-center/roles-permissions.md index fa1068a6b1d..5d801f9bcf2 100644 --- a/content/en/docs/control-center/roles-permissions.md +++ b/content/en/docs/control-center/roles-permissions.md @@ -8,11 +8,11 @@ no_list: true ## Introduction -On the **Roles & Permissions** page, you can view and manage app roles and permissions. +On the **Roles & Permissions** page, you can view and manage project roles and permissions. Additionaly, you can migrate default project-level roles to centralized company-level roles. -## Default App Roles +## Default Project Roles -Default app roles are the default [team roles](/developerportal/general/app-roles/#team-roles) assigned for every new app created in your company. +Default project roles are the default [team roles](/developerportal/general/app-roles/#team-roles) assigned for every new project created in your company. {{< figure src="/attachments/control-center/roles-permissions/roles-permissions.png" alt="Roles & Permissions page" >}} @@ -23,3 +23,37 @@ To edit a role, click **Edit Role**. To delete a role, click **Edit Role** and then **Delete Project Role**. You can not edit or delete the **SCRUM Master** role. + +## Migrating to Centralized Company-level Project Roles {#migrate-centralized-roles} + +### Why Migrate? + +Previously, project roles were managed at the individual project level. This allowed Scrum Masters of an project to create custom project roles within their specific project, even though Mendix Admins could create templates for project roles at the company level. + +Mendix has now centralized project roles at the company level. To take advantage of this update, you just need to migrate all individual project roles to the new centralized project roles. This will enhance your ability to govern access across all Mendix projects and also enable the programmatic assignment of project roles via [the Mendix Projects API](/apidocs-mxsdk/apidocs/projects-api/). + +### How to Migrate? + +{{% alert color="warning" %}} +Migrating to the centralized company-level project roles is a permanent action. Once it is done, it cannot be reversed. +{{% /alert %}} + +To migrate to centralized company-level project roles, click **Learn More** on the blue banner at the top of the page and follow the outlined steps to complete the migration. + +{{< figure src="/attachments/control-center/roles-permissions/learn-more.png" >}} + +### After the Migration + +The results of migrating to the centralized company-level roles will be as follows: + +- Mendix Admins will be the only ones who can create or modify project roles. + +- Scrum Masters and team members will only be able to view the project roles established by Mendix Admins and select the appropriate one. They will not have the ability to modify the permissions of project roles. If a custom permission set is needed, they must reach out to a Mendix Admin for assistance in creating it. + +- If there were any old custom project roles before the migration, they will appear with the tag **Inherited from project** on the **Roles & Permissions** page in Control Center. Mendix Admin can review these custom project roles, keep the useful ones, and merge any duplicates. + + {{% alert color="info" %}} + + When members of your company [invite someone to an project](/developerportal/general/team/#inviting), they cannot select any old custom role with the tag **Inherited from project** shown here, as these roles will not be shown to them. + + {{% /alert %}} diff --git a/content/en/docs/control-center/security/set-up-sso-byoidp.md b/content/en/docs/control-center/security/set-up-sso-byoidp.md index e03d9187612..e2c51d3d6b5 100644 --- a/content/en/docs/control-center/security/set-up-sso-byoidp.md +++ b/content/en/docs/control-center/security/set-up-sso-byoidp.md @@ -52,7 +52,7 @@ BYOIDP SSO integrates with the Mendix Platform using the following techniques: * BYOIDP uses the IdP's OIDC (OpenID Connect) well-known/discovery endpoint to retrieve the URLs for the authorization endpoint, the token endpoint, and the JWKS endpoint. * The user's email address is used to associate a user's existing account within Mendix with the user's account at your IdP. This means that any existing Mendix account is linked to their IdP account for authentication, rather than a new Mendix account being created for them. - * This assumes that the IdP returns an email address to Mendix during SSO which the user previously used to sign-up and login to Mendix. If the email address that is returned to Mendix is not recognized, then the user will be offered the sign-up option to enable them to create a new account. + * This assumes that the IdP returns an email address to Mendix during SSO which the user previously used to sign up and log in to Mendix. If the email address that is returned to Mendix is not recognized, then the user will be offered the sign-up option to enable them to create a new account. * BYOIDP SSO makes an authentication request to your IdP which means that only the 'openid' and 'profile' scope values are requested, as defined by OIDC. The request does not explicitly ask for authorization for specific platform roles such as developer, Mendix Admin, or Technical Contact. You can set up your IdP, however, to apply coarse-grained access rules based on the `client_id` for the Mendix Platform to deny access to the Mendix Platform for certain groups of employees. * Mendix provides support for two client authentication methods: `client_secret_post` (client credentials in the payload) or `client_secret_basic` (basic authentication credentials in the HTTP header). If the IdP supports both methods, `client_secret_post` is used. * Mendix includes the `login_hint` parameter in requests to your IdP This allows the IdP to pre-populate the login screen with the user's email address, which gives a better user experience. Your IdP may choose to ignore the hint. After receiving a positive response, Mendix does not do any validation if the logged-in user matches the login_hint. @@ -70,7 +70,7 @@ BYOIDP SSO has the following limitations. * Use a personal account as if it were a service account * Create a service account in the company IdP * Create a service account on an email domain that is not federated with BYOIDP -* When the Mendix Admin activates the BYOIDP configuration, Mendix scrambles the Mendix passwords for all impacted users. De-activation of the feature does not roll back those changes. If you deactivate BYOIDP SSO, users have to reset their Mendix password before being able to login with their Mendix account. +* When the Mendix Admin activates the BYOIDP configuration, Mendix scrambles the Mendix passwords for all impacted users. De-activation of the feature does not roll back those changes. If you deactivate BYOIDP SSO, users have to reset their Mendix password before being able to log in with their Mendix account. * Your conditional access policies in Entra ID (formerly Azure AD) may block Studio Pro logins for versions of Mendix below 9.18, as these make use of an embedded browser. If you are using Microsoft's Intune for MDM/MAM and versions of Mendix below 9.18, you may not want to activate BYOIDP for this reason. * You cannot associate multiple Mendix accounts (for example, an Admin account and a regular account) with a single identity in your IdP. diff --git a/content/en/docs/control-center/software-composition.md b/content/en/docs/control-center/software-composition.md index aaaf95f3db5..ee004f84e5e 100644 --- a/content/en/docs/control-center/software-composition.md +++ b/content/en/docs/control-center/software-composition.md @@ -16,7 +16,7 @@ This feature is in beta. For more information, see [Beta Releases](/releasenotes A Mendix app can consist of the Mendix Model (which includes pages, domain model, microflows, etc.), custom Java, and JavaScript. Additionally, it can use reusable components such as standard marketplace modules, widgets, Java libraries, npm packages, and the runtime version. These reusable components are dependencies, namely, components you are dependent on for your Mendix app to run. -Over time, these dependencies can become deprecated, outdated. or vulnerable. Enterprises also have policies on which of these reusable components can or cannot be used based on support, license, etc. It is important to have an easily accessible, clear view of component dependencies through the development lifecycle in order to address any security finding raised by your admins or security teams. +Over time, these dependencies can become deprecated, outdated, or vulnerable. Enterprises also have policies on which of these reusable components can or cannot be used based on support, license, etc. It is important to have an easily accessible, clear view of component dependencies through the development lifecycle in order to address any security finding raised by your admins or security teams. To enable this, the **Software Composition** page in Control Center provides visibility into the component dependencies in each app environment. The components displayed here will be based on the [Software Bill of Materials (SBOM)](/refguide/sbom-generation/). diff --git a/content/en/docs/deployment/general/_index.md b/content/en/docs/deployment/general/_index.md index ac2c28a8f35..5d322cec3ce 100644 --- a/content/en/docs/deployment/general/_index.md +++ b/content/en/docs/deployment/general/_index.md @@ -21,6 +21,7 @@ The subjects covered in this documentation section are as follows: * [Iframes and Running Apps](/developerportal/deploy/running-in-iframe/) * [Deployment Location](/developerportal/deploy/deployment-location/) * [Webhooks](/developerportal/deploy/webhooks/) +* [Software Composition](/developerportal/deploy/software-composition/) (Beta) ## Building Your Model @@ -29,5 +30,7 @@ To deploy an app to the cloud, you first have to build a project model (MDA). Th The time it takes to build your model depends on the complexity of the model and the number and size of the files held in the Team Server repository that is used to build the model. {{% alert color="info" %}} -Starting September 1, 2024, your app will need to run Mendix version 8 or above to build a deployment package on the Mendix platform. This applies to all cloud deployment models, including Mendix Cloud, Mendix Cloud Dedicated, Private Cloud, and SAP Cloud. If your app runs on version 7 or below, you will still be able to build a local deployment package from Studio Pro. +Starting September 1, 2024, your app will need to run Mendix version 8 or above to build a deployment package on the Mendix platform. This applies to all cloud deployment models, including Mendix Cloud, Mendix Cloud Dedicated, Private Cloud, and SAP Cloud. + +If your app runs on version 7 or below, you will still be able to build a local deployment package from Studio Pro, but you will not be able to upload this package to the Mendix platform. {{% /alert %}} diff --git a/content/en/docs/deployment/general/deployment-location.md b/content/en/docs/deployment/general/deployment-location.md index 5ef34b54609..b55464b1339 100644 --- a/content/en/docs/deployment/general/deployment-location.md +++ b/content/en/docs/deployment/general/deployment-location.md @@ -1,7 +1,7 @@ --- title: "Deployment Location" url: /developerportal/deploy/deployment-location/ -weight: 50 +weight: 60 description: "URL considerations for deploying Mendix" --- diff --git a/content/en/docs/deployment/general/licensing-apps-outside-mxcloud.md b/content/en/docs/deployment/general/licensing-apps-outside-mxcloud.md index 7fcae7fde7d..9d3279e69fe 100644 --- a/content/en/docs/deployment/general/licensing-apps-outside-mxcloud.md +++ b/content/en/docs/deployment/general/licensing-apps-outside-mxcloud.md @@ -1,7 +1,7 @@ --- title: "Licensing Apps" url: /developerportal/deploy/licensing-apps-outside-mxcloud/ -weight: 50 +weight: 10 description: "How to obtain and activate a Mendix license for apps on various clouds" #To update these screenshots, you can log in with credentials detailed in How to Update Screenshots Using Team Apps. #NB have left out AWS and Azure Marketplace offerings for now, pending further research. diff --git a/content/en/docs/deployment/general/securing-outgoing-connections-from-your-application.md b/content/en/docs/deployment/general/securing-outgoing-connections-from-your-application.md index d68cd5d77a4..4f07845cdc5 100644 --- a/content/en/docs/deployment/general/securing-outgoing-connections-from-your-application.md +++ b/content/en/docs/deployment/general/securing-outgoing-connections-from-your-application.md @@ -2,7 +2,7 @@ title: "Secure Outgoing Connections from Your App" linktitle: "Secure Outgoing Connections" url: /developerportal/deploy/securing-outgoing-connections-from-your-application/ -weight: 50 +weight: 20 description: "Describes which methods are available for securing connections from your app to the outside world." #To update these screenshots, you can log in with credentials detailed in How to Update Screenshots Using Team Apps. #If moving or renaming this doc file, implement a temporary redirect and let the respective team know they should update the URL in the product. See Mapping to Products for more details. diff --git a/content/en/docs/deployment/general/software-composition.md b/content/en/docs/deployment/general/software-composition.md index bda4d23759b..56a9a7cf3e4 100644 --- a/content/en/docs/deployment/general/software-composition.md +++ b/content/en/docs/deployment/general/software-composition.md @@ -3,7 +3,7 @@ title: "Software Composition" linktitle: "Software Composition" url: /developerportal/deploy/software-composition/ description: "Describes the Software Composition page in Apps." -weight: 3 +weight: 80 beta: true --- diff --git a/content/en/docs/deployment/general/two-factor-authentication.md b/content/en/docs/deployment/general/two-factor-authentication.md index 9d00d3cae98..3145052dc7f 100644 --- a/content/en/docs/deployment/general/two-factor-authentication.md +++ b/content/en/docs/deployment/general/two-factor-authentication.md @@ -1,7 +1,7 @@ --- title: "Two-Factor Authentication" url: /developerportal/deploy/two-factor-authentication/ -weight: 1 +weight: 30 description: "Describes the purpose and functionality of 2FA in the Mendix Portal." #To update these screenshots, you can log in with credentials detailed in How to Update Screenshots Using Team Apps. --- diff --git a/content/en/docs/deployment/general/version-downgrade-prevention.md b/content/en/docs/deployment/general/version-downgrade-prevention.md index 844ccf6c1a2..4b21df2b16b 100644 --- a/content/en/docs/deployment/general/version-downgrade-prevention.md +++ b/content/en/docs/deployment/general/version-downgrade-prevention.md @@ -1,7 +1,7 @@ --- title: "Version Downgrade Protection" url: /developerportal/deploy/version-downgrade-prevention/ -weight: 50 +weight: 40 description: "What to do if you cannot migrate a Mendix database to an earlier version" #To update these screenshots, you can log in with credentials detailed in How to Update Screenshots Using Team Apps. --- diff --git a/content/en/docs/deployment/general/webhooks.md b/content/en/docs/deployment/general/webhooks.md index aee0934c9b0..7fb133f0651 100644 --- a/content/en/docs/deployment/general/webhooks.md +++ b/content/en/docs/deployment/general/webhooks.md @@ -2,7 +2,7 @@ title: "Webhooks" linktitle: "Webhooks" url: /developerportal/deploy/webhooks/ -weight: 10 +weight: 70 description: "Creating a webhook to trigger actions from Mendix Cloud and Mendix for Private Cloud." --- diff --git a/content/en/docs/deployment/mendix-cloud-deploy/environments-details.md b/content/en/docs/deployment/mendix-cloud-deploy/environments-details.md index c3247eb93d7..32992a3a5fd 100644 --- a/content/en/docs/deployment/mendix-cloud-deploy/environments-details.md +++ b/content/en/docs/deployment/mendix-cloud-deploy/environments-details.md @@ -490,24 +490,40 @@ To support features that are in beta, click **Add** and select **Unsupported**. ## The Maintenance Tab {#maintenance-tab} -You can use the **Maintenance** tab to view information about planned maintenance. You can also configure your preferred maintenance window. +You can use the **Maintenance** tab to view information about planned maintenance, as well as configure your preferred maintenance window. {{< figure src="/attachments/deployment/mendix-cloud-deploy/environments-details/maintenance.png" alt="Viewing the Maintenance tab" >}} There are two types of maintenance: -* Regular weekly maintenance does not affect your app. During regular weekly maintenance, you can change the preferred maintenance window. -* Planned maintenance affects your app in some ways. You will automatically receive an email about any planned maintenance, and you can override the maintenance window if necessary. - -For more information about configuring maintenance windows, see the [Configuring Maintenance](/developerportal/deploy/maintenance-windows/) section of the *Maintenance Windows* page. +* Regular weekly maintenance (which does not affect your app), during which you can change the preferred maintenance window +* Planned maintenance (which affects your app in some ways), about which you will automatically receive an email ### Preferred Maintenance Window -You can view and change your preferred maintenance window in this section. +You can view and change the preferred maintenance. For more information about maintenance, see [Maintenance Windows: Configuration](/developerportal/deploy/maintenance-windows/). ### Planned Maintenance -When a maintenance operation is planned, it appears under **Planned Maintenance**. By default, this is planned in your preferred maintenance window. To override the maintenance window of a specific maintenance operation, click **Override**. +When a maintenance operation is planned, it appears under **Planned Maintenance**. Each task card will show the purpose of the maintenance, when it is scheduled and its status. + +{{% alert color="info" %}} +Maintenance topics (for example, "PostgreSQL 14 Upgrade") have a predefined period (start date and deadline). Once the start date is reached, you will get the option to execute it immediately, regardless of the Maintenance Window configured for the environment, by clicking **Execute Now**. +{{% /alert %}} + +The status of a maintenance task can be one of: + +* **Succeeded** – the maintenance task was successful +* **Failed** – the maintenance task failed and the environment requires intervention + * Our engineering team should already have been notified about the failed task. If you are still experiencing issues, please create a support ticket with [Mendix Support](https://support.mendix.com/hc/en-us) +* **Incomplete** – the maintenance task was unsuccessful and no changes were applied + * You can operate the environment as usual. Our engineering team should already have been alerted about the incomplete task and will take the appropriate action (which may involve rescheduling the task). +* **Ineligible** – the maintenance task was unsuccessful because one or more starting criteria were not met + * You can operate the environment as usual. This can happen, for example, if the database of your environment was scheduled to be upgraded but it is already on the target version + +{{% alert color="info" %}} +You will automatically receive email notifications about planned maintenance. +{{% /alert %}} ## The Tags Tab{#tags} diff --git a/content/en/docs/deployment/private-cloud/private-cloud-cluster/_index.md b/content/en/docs/deployment/private-cloud/private-cloud-cluster/_index.md index c6e9659b14d..fe0b81de005 100644 --- a/content/en/docs/deployment/private-cloud/private-cloud-cluster/_index.md +++ b/content/en/docs/deployment/private-cloud/private-cloud-cluster/_index.md @@ -593,7 +593,7 @@ startupProbe: In this example, the application will have a maximum of 5 minutes (30 * 10 = 300s) to finish its startup. Once the startup probe has succeeded once, the liveness probe takes over to provide a fast response to container deadlocks. If the startup probe never succeeds, the container is killed after 300s and subject to the pod's [restartPolicy](https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#restart-policy). {{% alert color="info" %}} -If you misconfigure a startup probe, for example you don't allow enough time for the startup probe to succeed, the kubelet might restart the container prematurely. causing your container to continually restart. +If you misconfigure a startup probe, for example you don't allow enough time for the startup probe to succeed, the kubelet might restart the container prematurely, causing your container to continually restart. Startup probes are available in the Mendix for Private Cloud Operator version 2.6.0 and above. {{% /alert %}} diff --git a/content/en/docs/deployment/private-cloud/private-cloud-cluster/private-cloud-storage-plans.md b/content/en/docs/deployment/private-cloud/private-cloud-cluster/private-cloud-storage-plans.md index 3181144a241..5078c46da46 100644 --- a/content/en/docs/deployment/private-cloud/private-cloud-cluster/private-cloud-storage-plans.md +++ b/content/en/docs/deployment/private-cloud/private-cloud-cluster/private-cloud-storage-plans.md @@ -147,7 +147,7 @@ If the commands return a *not found* response, your environment database and blo ## Database Plans {#database} -Every Mendix app needs a database to store persistent and non-persistent entities. A database plan tells the Mendix Operator how to provide a database to a new Mendix app environment. +Every Mendix app needs a database to store persistable and non-persistable entities. A database plan tells the Mendix Operator how to provide a database to a new Mendix app environment. {{% alert color="warning" %}} The database plan does not include any functionality for backing up or restoring data on your database. It is your responsibility to ensure that appropriate planning is made for backing up and restoring your database using the tools provided by your database management system or cloud provider. diff --git a/content/en/docs/deployment/private-cloud/private-cloud-data-transfer.md b/content/en/docs/deployment/private-cloud/private-cloud-data-transfer.md index 266297e34e6..d4babe24088 100644 --- a/content/en/docs/deployment/private-cloud/private-cloud-data-transfer.md +++ b/content/en/docs/deployment/private-cloud/private-cloud-data-transfer.md @@ -14,7 +14,7 @@ The Private Cloud data migration tool allows you to: * export the database and files from a Private Cloud environment into a backup file * import the database and files from a previously exported backup file into an environment -The Private Cloud data migration tool is compatible with [backup files](/developerportal/operate/restore-backup/#format-of-backup-file) from the Mendix Cloud, allowing you to transfer application data between the Mendix Cloud and Mendix for Private Cloud. +The Private Cloud data migration tool is compatible with [backup files](/developerportal/operate/restore-backup/#format-of-backup-file) from Mendix Cloud, allowing you to transfer application data between Mendix Cloud and Mendix for Private Cloud. When exporting files from an environment, the export only includes files which are in use (that is, which are referenced by a `System.FileDocument` entity). Any files that are not used by the app are ignored. diff --git a/content/en/docs/deployment/private-cloud/private-cloud-deploy.md b/content/en/docs/deployment/private-cloud/private-cloud-deploy.md index 175584e972a..765e05dd59f 100644 --- a/content/en/docs/deployment/private-cloud/private-cloud-deploy.md +++ b/content/en/docs/deployment/private-cloud/private-cloud-deploy.md @@ -39,7 +39,7 @@ To deploy an app to your private cloud platform, you need the following: ### Selecting Mendix for Private Cloud -When you first create your app, it will be set to deploy to the Mendix Cloud. You need to change the target to be private cloud. +When you first create your app, it will be set to deploy to Mendix Cloud. You need to change the target to be private cloud. 1. Open your app in [Apps](https://sprintr.home.mendix.com/). @@ -536,18 +536,18 @@ If you change the data type and value in the .mpr file, the changes are visible ### Network Tab -On the Network tab, you add client certificates (in the PKCS12 format) or certificate authorities (in the PEM format) for outgoing connections. These will be used when your application initiates SSL/TLS connections. This works in the same way as the Network tab for deployments to the Mendix Cloud. For more details on these, see the [Network Tab](/developerportal/deploy/environments-details/#network-tab) section of *Environment Details*. +On the Network tab, you add client certificates (in the PKCS12 format) or certificate authorities (in the PEM format) for outgoing connections. These will be used when your application initiates SSL/TLS connections. This works in the same way as the Network tab for deployments to Mendix Cloud. For more details on these, see the [Network Tab](/developerportal/deploy/environments-details/#network-tab) section of *Environment Details*. {{< figure src="/attachments/deployment/private-cloud/private-cloud-deploy/network-tab.png" class="no-border" >}} ### Runtime Tab {#runtime-tab} -On the Runtime tab, you can change various runtime settings for your app environment. This works in the same way as the Runtime tab for deployments to the Mendix Cloud. For more details on these, see the [Runtime Tab](/developerportal/deploy/environments-details/#runtime-tab) section of *Environment Details*. +On the Runtime tab, you can change various runtime settings for your app environment. This works in the same way as the Runtime tab for deployments to Mendix Cloud. For more details on these, see the [Runtime Tab](/developerportal/deploy/environments-details/#runtime-tab) section of *Environment Details*. {{< figure src="/attachments/deployment/private-cloud/private-cloud-deploy/runtime-tab.png" class="no-border" >}} {{% alert color="info" %}} -When you use some settings on the Runtime tab for Mendix for Private Cloud they may work differently from how they work in the Mendix Cloud. +When you use some settings on the Runtime tab for Mendix for Private Cloud they may work differently from how they work in Mendix Cloud. {{% /alert %}} {{% alert color="info" %}} diff --git a/content/en/docs/deployment/private-cloud/private-cloud-license-manager.md b/content/en/docs/deployment/private-cloud/private-cloud-license-manager.md index 922f03bebfb..58976c27be0 100644 --- a/content/en/docs/deployment/private-cloud/private-cloud-license-manager.md +++ b/content/en/docs/deployment/private-cloud/private-cloud-license-manager.md @@ -14,7 +14,7 @@ Private Cloud License Manager is currently in beta. For more information, see [B When deploying your Mendix app for production use, it needs to be licensed. This removes the restrictions which are placed on unlicensed apps. For more information, see [Licensing Mendix for Private Cloud](/developerportal/deploy/private-cloud/#licensing) in the *Private Cloud* documentation. -Apps which are deployed to the Mendix Cloud have access to the internet and have licenses which work on a subscription basis, contacting the Mendix license server to validate the license. This method is not appropriate for apps which are deployed using Mendix for Private Cloud, and may even be in standalone mode and not connected to the internet (air-gapped). +Apps which are deployed to Mendix Cloud have access to the internet and have licenses which work on a subscription basis, contacting the Mendix license server to validate the license. This method is not appropriate for apps which are deployed using Mendix for Private Cloud, and may even be in standalone mode and not connected to the internet (air-gapped). Rather than having to apply and update licenses for each environment individually, the Mendix **Private Cloud License Manager** (PCLM) provides a repository of offline Mendix licenses to enable you to manage these centrally. This reduces the possibility of errors, and enables the production of license usage reports. diff --git a/content/en/docs/deployment/private-cloud/private-cloud-monitor.md b/content/en/docs/deployment/private-cloud/private-cloud-monitor.md index 4c5937c767c..f9cee25e62e 100644 --- a/content/en/docs/deployment/private-cloud/private-cloud-monitor.md +++ b/content/en/docs/deployment/private-cloud/private-cloud-monitor.md @@ -844,6 +844,6 @@ The following example will send logs for: ``` -{{% alert color="info" %}}The format for `mxAgentConfig` is identical to the APM `METRICS_AGENT_CONFIG` [custom environment variable](/developerportal/operate/monitoring-with-apm/#mx-agent-format) in the Mendix Cloud.{{% /alert %}} +{{% alert color="info" %}}The format for `mxAgentConfig` is identical to the APM `METRICS_AGENT_CONFIG` [custom environment variable](/developerportal/operate/monitoring-with-apm/#mx-agent-format) in Mendix Cloud.{{% /alert %}} Advanced instrumentation configuration can be specified through `mxAgentInstrumentationConfig`. If this attribute is not supplied, the default instrumentation configuration will be used. diff --git a/content/en/docs/deployment/private-cloud/private-cloud-supported-environments.md b/content/en/docs/deployment/private-cloud/private-cloud-supported-environments.md index a9a6adf5a55..2ea13e68c61 100644 --- a/content/en/docs/deployment/private-cloud/private-cloud-supported-environments.md +++ b/content/en/docs/deployment/private-cloud/private-cloud-supported-environments.md @@ -266,7 +266,7 @@ As an alternative to static password authentication, Mendix Operator can use its {{% alert color="info" %}} To use a SQL Server database, the Mendix Operator requires Superuser account with permissions to create new users and databases. -For every Mendix app environment, a new database, user and login will be created so that the app can only access its own data. +For every Mendix app environment, a new database, user, and login will be created so that the app can only access its own data. {{% /alert %}} {{% alert color="info" %}} diff --git a/content/en/docs/deployment/sap-btp/sap-destination-service.md b/content/en/docs/deployment/sap-btp/sap-destination-service.md index 5dc350223c4..8c62edd23b9 100644 --- a/content/en/docs/deployment/sap-btp/sap-destination-service.md +++ b/content/en/docs/deployment/sap-btp/sap-destination-service.md @@ -76,7 +76,7 @@ This is a free text description of this destination. #### ProtocolType -This identifies the type of Hypertext Transfer Protocol being used. it corresponds to the **Type** field in the SAP BTP cockpit. The possible values are +This identifies the type of Hypertext Transfer Protocol being used. It corresponds to the **Type** field in the SAP BTP cockpit. The possible values are * HTTP * HTTPS diff --git a/content/en/docs/developerportal/general/buzz.md b/content/en/docs/developerportal/general/buzz.md index a7efc094d9d..effc8353ecd 100644 --- a/content/en/docs/developerportal/general/buzz.md +++ b/content/en/docs/developerportal/general/buzz.md @@ -21,7 +21,7 @@ On the top of the page, you can find the following key information about your ap {{% alert color="info" %}}If you have the **App Settings** permission, you can change the logo, name, and description of the app on the [Settings](/developerportal/collaborate/general-settings/) page.{{% /alert %}} * The name of the **Company** owning the app -* The **Target Cloud** where your app is deployed, and, if the target is the public Mendix cloud, the **License State** of the app +* The **Target Cloud** where your app is deployed, and, if the target is the public Mendix Cloud, the **License State** of the app * The date of the **Last Commit to the Main Line** of your app; only available if you have access to the app on the Team Server * The **Mendix Version** of your app on main line; only available if you have access to the app on the Team Server diff --git a/content/en/docs/developerportal/general/team-server/migrate-to-git.md b/content/en/docs/developerportal/general/team-server/migrate-to-git.md index 44c8e2fb7ca..ed9e9350012 100644 --- a/content/en/docs/developerportal/general/team-server/migrate-to-git.md +++ b/content/en/docs/developerportal/general/team-server/migrate-to-git.md @@ -24,7 +24,7 @@ To be able to migrate your app to Git, your app needs to meet the following crit * The size of the `.mpr` file for the latest revision of your app and the total number of commits in your version control history fall in one of these two categories: 1. `.mpr` file smaller than 75 MB - 2. fewer than 2000 commits and `.mpr` file smaller than 125 MB + 2. Fewer than 2000 commits and `.mpr` file smaller than 125 MB {{% alert type="info" %}} diff --git a/content/en/docs/developerportal/general/team/app-roles.md b/content/en/docs/developerportal/general/team/app-roles.md index 011d771ae71..835653f274e 100644 --- a/content/en/docs/developerportal/general/team/app-roles.md +++ b/content/en/docs/developerportal/general/team/app-roles.md @@ -74,7 +74,7 @@ When a Mendix app is on premises, it is running on the customer's own infrastruc {{% alert color="info" %}} It is not possible to have more than one Technical Contact for an app. -You can only change the Technical Contact for licensed Mendix apps. You cannot change the Technical Contact for Free Apps or apps running outside the Mendix Cloud. +You can only change the Technical Contact for licensed Mendix apps. You cannot change the Technical Contact for Free Apps or apps running outside Mendix Cloud. {{% /alert %}} If you are the current Technical Contact for an app, you can transfer your Technical Contact role to another team member as follows: diff --git a/content/en/docs/developerportal/portfolio-management/archive.md b/content/en/docs/developerportal/portfolio-management/archive.md index 38f8dfefa0c..fd92c0de601 100644 --- a/content/en/docs/developerportal/portfolio-management/archive.md +++ b/content/en/docs/developerportal/portfolio-management/archive.md @@ -30,7 +30,7 @@ The list contains the following information: * Icon of the linked apps – If there is only one linked app, clicking the icon shows the information about the app. If there are multiple apps or no linked apps, the icon is not clickable. -* Avatar of the initiative owner – Hovering over the avatar shows the name of the initiative owner. +* Avatars of the initiative owners – Hovering over an avatar shows the name of the initiative owner. * **More Options** ({{% icon name="three-dots-menu-horizontal" %}}) – Clicking this opens a menu that enables you to [restore](#restore-delete-archived-initiative) or [delete](#restore-delete-archived-initiative) the archived initiative. diff --git a/content/en/docs/developerportal/portfolio-management/export-import-initiatives.md b/content/en/docs/developerportal/portfolio-management/export-import-initiatives.md index 728198fb73d..f195bfb1436 100644 --- a/content/en/docs/developerportal/portfolio-management/export-import-initiatives.md +++ b/content/en/docs/developerportal/portfolio-management/export-import-initiatives.md @@ -51,7 +51,7 @@ All the details of an initiative are exported, except the data of the following * **Linked Apps** * **Linked Epics** -* **Owner** +* **Owners** * **Created By** * **Comments** * **Attachments** diff --git a/content/en/docs/developerportal/portfolio-management/initiatives-overview/_index.md b/content/en/docs/developerportal/portfolio-management/initiatives-overview/_index.md index 7da833074b7..90f9002fa64 100644 --- a/content/en/docs/developerportal/portfolio-management/initiatives-overview/_index.md +++ b/content/en/docs/developerportal/portfolio-management/initiatives-overview/_index.md @@ -67,7 +67,7 @@ To add general information to your initiative, follow these steps: 3. Repeat the two steps above to link more apps if you want to link more than one app. -6. Set the **Owner** for the initiative. +6. Set the **Owners** for the initiative. 7. Select the **Stage**, **Department**, **Location**, **Country**, and **Use Case** for the initiative. @@ -131,7 +131,7 @@ You can link any epic from [Epics](/developerportal/project-management/epics/) t 6. If you need to link epics belonging to other apps to this initiative, repeat the steps from 2 to 5, until you link all the epics. -Once an epic is added, its ID, name, owner, and progress are displayed in this section. Users can go to the epic directly from here if they have rights to the app to which the epic belongs. +Once an epic is added, its ID, name, owners, and progress are displayed in this section. Users can go to the epic directly from here if they have rights to the app to which the epic belongs. {{% alert color="info" %}} To remove an existing linked epic from the initiative, hover over the row where the epic is listed, and click the **Delete** button ({{% icon name="trash-can" %}}) that appears at the end of the row. @@ -240,7 +240,7 @@ Each initiative card shows the following information: 7. Icon of the linked apps – If there is only one linked app, clicking the icon shows the information about the app. If there are multiple apps or no linked apps, the icon is not clickable. -8. Avatar of the initiative owner – Hovering over the avatar shows the name of the initiative owner. +8. Avatars of the initiative owners – Hovering over an avatar shows the name of the initiative owner. ### List View {#list-view} @@ -270,7 +270,7 @@ The list contains the following information: * Icon of the linked apps – If there is only one linked app, clicking the icon shows the information about the app. If there are multiple apps or no linked apps, the icon is not clickable. -* Avatar of the initiative owner – Hovering over the avatar shows the name of the initiative owner. +* Avatars of the initiative owners – Hovering over an avatar shows the name of the initiative owner. * **More Options** ({{% icon name="three-dots-menu-horizontal" %}}) – Clicking this button opens a menu that enables you to [edit](#edit-delete-initiative), [archive](#archive-initiative), or [delete](#edit-delete-initiative) the initiative. @@ -308,7 +308,7 @@ The list contains the following information: * Icon of the linked apps – If there is only one linked app, clicking the icon shows the information about the app. If there are multiple apps or no linked apps, the icon is not clickable. -* Avatar of the initiative owner – Hovering over the avatar shows the name of the initiative owner. +* Avatars of the initiative owners – Hovering over an avatar shows the name of the initiative owner. * **More Options** ({{% icon name="three-dots-menu-horizontal" %}}) – Clicking this button opens a menu that enables you to [edit](#edit-delete-initiative), [archive](#archive-initiative), or [delete](#edit-delete-initiative) the initiative. @@ -346,7 +346,7 @@ The list contains the following information: * Icon of the linked apps – If there is only one linked app, clicking the icon shows the information about the app. If there are multiple apps or no linked apps, the icon is not clickable. -* Avatar of the initiative owner – Hovering over the avatar shows the name of the initiative owner. +* Avatars of the initiative owners – Hovering over an avatar shows the name of the initiative owner. * **More Options** ({{% icon name="three-dots-menu-horizontal" %}}) – Clicking this button opens a menu that enables you to [edit](#edit-delete-initiative), [archive](#archive-initiative), or [delete](#edit-delete-initiative) the initiative. @@ -363,7 +363,7 @@ The view contains the following information: * Initiative name – Clicking this opens a side pane that shows initiative details. * Initiative status – This shows the status of your initiative. It can be **On Track**, **At Risk**, or **Off Track**. * Icon of the linked apps – If there is only one linked app, clicking the icon shows the information about the app. If there are multiple apps or no linked apps, the icon is not clickable. -* Avatar of the initiative owner – Hovering over the avatar shows the name of the initiative owner. +* Avatars of the initiative owners – Hovering over an avatar shows the name of the initiative owner. * Timeline bar – The timeline bar indicates the start date and the go-live date of an initiative. The color shading of the bar reflects how much progress has been made for the initiative. The darker shade indicates the percentage completed, while the lighter shade shows the remaining unfinished portion. (In dark mode, the shading is reversed.) Hovering over the timeline bar shows the following information in a tooltip: * **Start date** – The start date is the date when the first actions are taken to start implementation. * **Go-Live** – The go-live date is the date when the initiative is expected to be delivered or implemented. diff --git a/content/en/docs/howto/integration/use-a-client-certificate.md b/content/en/docs/howto/integration/use-a-client-certificate.md index 7389d3e556d..59a419f62bd 100644 --- a/content/en/docs/howto/integration/use-a-client-certificate.md +++ b/content/en/docs/howto/integration/use-a-client-certificate.md @@ -15,7 +15,7 @@ Let's assume that you already have an app that calls a service. For details on h This how-to teaches you how to do the following: * Configure to run locally -* Configure in the Mendix Cloud +* Configure in Mendix Cloud {{% alert color="info" %}} This capability can also be described as Mutual Transport Layer Security (mTLS). Following this guide, the server certificate will be verified against any certificate authorities (CAs) in Mendix application's trust store. If you require true "zero trust" mTLS where standard internet CAs should not be trusted by default, please contact Mendix Expert Services for assistance. @@ -68,7 +68,7 @@ The following sample uses client certificate `Mx1.pfx` for `WebService1` and no You will only be able to follow the steps below if you have the correct access rights for the client certificates. {{% /alert %}} -To configure client certificates in the Mendix Cloud, follow these steps: +To configure client certificates in Mendix Cloud, follow these steps: 1. Go to [Apps](https://sprintr.home.mendix.com/) and go to the **Environments** page for your app. 2. Each environment has its own configuration. Click **Details** next to one of the environments. diff --git a/content/en/docs/howto/integration/use-extensions/use-the-external-database-connector.md b/content/en/docs/howto/integration/use-extensions/use-the-external-database-connector.md index 28652acc470..b6dcaa6e75f 100644 --- a/content/en/docs/howto/integration/use-extensions/use-the-external-database-connector.md +++ b/content/en/docs/howto/integration/use-extensions/use-the-external-database-connector.md @@ -96,24 +96,59 @@ You can typecast `String` into UUID as shown below: 1. Click **Use Response** to view the response data and mapping. -2. In the **Response Structure** tab, you can view the entity. +2. In the **Response Structure** tab, you can choose create **New Entity** or **Reuse Existing Entity**. -3. Click **Save Query & Create Entity** to save the query and the newly created entity in the domain model. +3. If **New Entity** is selected, you can view the entity in the **Response** tab. Click **Save Query & Create Entity** to save the query and the newly created entity in the domain model. -{{< figure src="/attachments/howto/integration/use-the-external-database-connector/5.png" >}} + {{< figure src="/attachments/howto/integration/use-the-external-database-connector/5.png" >}} + +4. If **Reuse Entity** is selected, all entities mapped to other queries of same document are listed in the drop down list. Select the entity you want to reuse and and click on **Save Query**. + + {{< figure src="/attachments/howto/integration/use-the-external-database-connector/5a.png" >}} ### Save DML Query 1. For DML queries, *Number of affected rows* will be displayed as a response. - + For example, `INSERT INTO classicmodels.productlines(productLine, requestedProductRequirement)VALUES({productLine}, {requestedProductRequirement})` 2. Click **Save Query**. -{{< figure src="/attachments/howto/integration/use-the-external-database-connector/6.png" >}} + {{< figure src="/attachments/howto/integration/use-the-external-database-connector/6.png" >}} {{% alert color="info" %}} For all DML Queries, changes made to database in the Mendix Design phase are automatically rolled back. {{% /alert %}} +## Update Existing Query + +It is possible to use the existing entity when updating a existing query. + +{{% alert color="info" %}} + +This possibility was introduced in Studio Pro 10.15 and above. + +{{% /alert %}} + +For example, you can modify the query below to retrieve a list of productLine, textDescription, htmlDescription columns from ProductLines where the ProductLine is **Planes**. + +SQL Query: +Existing Query: `Select requestedProductRequirement from productlines where productLine = {productLine}` +Modified Query: `Select productLine, textDescription, htmlDescription from productlines where productLine = {productLine}` + +Do the following: + +1. Rerun the Query, to see the **Response**. + +2. Click **Use Response** to see the entity preview. + +3. Use the existing entity or create a new entity: + +4. If **New Entity** is selected, you can view the entity in the **Response** tab. + 1. Click **Save Query & Create Entity** to save the query and the newly created entity in the domain model. + +5. If **Update Entity** is selected,you can see changes that will be made to the existing entity. + 1. Click **Update Entity** to save the query and the changes made to the entity in the domain model. + {{< figure src="/attachments/howto/integration/use-the-external-database-connector/5b.png" >}} + ## Call Stored Procedure {{% alert color="info" %}} Calling stored procedures with parameters is supported for Studio Pro 10.13 and above. {{% /alert %}} @@ -176,7 +211,7 @@ For MSSQL, for **INOUT** and **OUT** parameters of type Decimal, test values (in 5. Output details for the selected query auto-populate. -{{< figure src="/attachments/howto/integration/use-the-external-database-connector/7.png" >}} + {{< figure src="/attachments/howto/integration/use-the-external-database-connector/7.png" >}} You are now ready to use data from an external database in your Mendix App. diff --git a/content/en/docs/howto/monitoring-troubleshooting/log-levels.md b/content/en/docs/howto/monitoring-troubleshooting/log-levels.md index ee0d14f0e07..5eee9fbc728 100644 --- a/content/en/docs/howto/monitoring-troubleshooting/log-levels.md +++ b/content/en/docs/howto/monitoring-troubleshooting/log-levels.md @@ -62,15 +62,13 @@ These are the log levels used by Mendix: ## Setting the Log Levels -In this section, you will learn how to configure the log levels of the messages produced by the system. The different highlighted [levels](#level) can be applied to the predefined logging produced by Mendix Studio Pro and to custom logging. - -This section describes how to configure both the log levels for predefined logging created by Studio Pro and custom logging. +In this section you will learn how to specify which log messages are generated, based on the level of the log messages. Log messages with lower levels than the configured log level will not be generated. The different [levels](#level) can be applied both to the predefined logging produced by Mendix Studio Pro and to custom logging. ### Configuring Log Levels via Script -Log levels can be configured through the runtime admin port before the actual log levels exist. This enables creating a script that sets all the required log levels at once. +Log levels can be configured through the runtime admin port before the actual log levels exist. You can therefore create a script that sets all the required log levels at once. -This is a Python script that sets `ConnectionBus` and `ActionManager` to the Trace and Debug levels: +This is a Python script that sets `ConnectionBus` and `ActionManager` to the Trace and Debug levels, respectively: ```py import requests, base64, json, sys @@ -92,9 +90,9 @@ C:\temp\LogDemoApp\python {"feedback":{},"result":0} ``` -### Configuring the Log Levels for Standard Log Messages{#standard-log-levels} +### Configuring Log Levels Within Studio Pro {#configure-log-levels-from-studio-pro} -To set the log levels for standard log messages, follow these steps: +To set the log levels within Studio Pro, follow these steps: 1. Ensure that your app is running locally – if not, the option to set log levels will not be clickable. 2. In the **Console** pane, click **Advanced** to open the menu of advanced options. @@ -104,10 +102,10 @@ To set the log levels for standard log messages, follow these steps: {{< figure src="/attachments/howto/monitoring-troubleshooting/log-levels/set-log-levels.png" class="no-border" >}} {{% alert color="info" %}} -You can override the log level for standard log messages in each environment when your app is deployed to Mendix Cloud. See the [Log Levels Tab](/developerportal/deploy/environments-details/#log-levels) section in *Environment Details* for more information. +You can override the log level for log messages in each environment when your app is deployed to Mendix Cloud. See the [Log Levels Tab](/developerportal/deploy/environments-details/#log-levels) section in *Environment Details* for more information. {{% /alert %}} -### Configuring the Log Levels for Custom Log Messages +## Setting the Log Levels for Custom Log Messages To set the level of custom log messages that you have created via a microflow, follow these steps: diff --git a/content/en/docs/howto/monitoring-troubleshooting/manage-app-performance/manage-app-performance-with-new-relic.md b/content/en/docs/howto/monitoring-troubleshooting/manage-app-performance/manage-app-performance-with-new-relic.md index 7b0152f1123..30e6ae2569b 100644 --- a/content/en/docs/howto/monitoring-troubleshooting/manage-app-performance/manage-app-performance-with-new-relic.md +++ b/content/en/docs/howto/monitoring-troubleshooting/manage-app-performance/manage-app-performance-with-new-relic.md @@ -18,7 +18,7 @@ This how-to teaches you how to do the following: * Set up application performance management for your Mendix application on New Relic {{% alert color="warning" %}} -New Relic is not supported for apps deployed to the Mendix Cloud. +New Relic is not supported for apps deployed to Mendix Cloud. {{% /alert %}} ## Prerequisite diff --git a/content/en/docs/howto/security/best-practices-security.md b/content/en/docs/howto/security/best-practices-security.md index cbaa275ab59..8fd7c6d5895 100644 --- a/content/en/docs/howto/security/best-practices-security.md +++ b/content/en/docs/howto/security/best-practices-security.md @@ -3,7 +3,7 @@ title: "Implement Best Practices for App Security" linktitle: "Best Practices for App Security" url: /howto/security/best-practices-security/ weight: 20 -description: "Describes the common aspects you should consider when delivering an application within the Mendix Cloud." +description: "Describes the common aspects you should consider when delivering an application within Mendix Cloud." aliases: - /howtogeneral/bestpractices/best-practices-security-and-improvements-for-mendix-applications.html - /howtogeneral/bestpractices/best-practices-security-and-improvements-for-mendix-applications @@ -12,9 +12,9 @@ aliases: ## Introduction -Security is one of the most important aspects of an application, because misconfiguration or failing security can have large stakeholder consequences. The Mendix Runtime protects your application and data according to your model, and the Mendix Cloud handles security at the infrastructure level. +Security is one of the most important aspects of an application, because misconfiguration or failing security can have large stakeholder consequences. The Mendix Runtime protects your application and data according to your model, and Mendix Cloud handles security at the infrastructure level. -This document describes the common aspects you should consider when delivering an application within the Mendix Cloud. +This document describes the common aspects you should consider when delivering an application within Mendix Cloud. ## Implementing Access Rules{#access-rules} @@ -173,7 +173,7 @@ You may need to store sensitive information, such as credentials, in your app. T * Values for the constants can be provided during testing by creating a [configuration](/refguide/configuration/#constants). -* Only authorized people should be given access to set the constants when the app is deployed. This is done through the [app roles](/developerportal/general/app-roles/) and (for the Mendix Cloud) the [node permissions](/developerportal/deploy/node-permissions/). +* Only authorized people should be given access to set the constants when the app is deployed. This is done through the [app roles](/developerportal/general/app-roles/) and (for Mendix Cloud) the [node permissions](/developerportal/deploy/node-permissions/). Credentials should not be stored in your database as this means that they are also included in backups. Even if they are encrypted, your app will know the encryption key so that they can be decrypted. @@ -207,7 +207,7 @@ This information can be exploited by an attacker (for example, by trying to gues The user name of the administrator can be changed in 's **App Security** settings on the **Administrator** tab. -When deployed to the Mendix Cloud, the information about the administrator user name and role is taken into account when using the **Change admin password** button on the environment. After changing the settings in and redeploying the application, a successful admin password change will trigger the creation of a user in the app with the new name and role. +When deployed to Mendix Cloud, the information about the administrator user name and role is taken into account when using the **Change admin password** button on the environment. After changing the settings in and redeploying the application, a successful admin password change will trigger the creation of a user in the app with the new name and role. {{% alert color="info" %}} At this point, the application does not automatically remove the user with the previous user name. Removing the old **MxAdmin** account has to be done manually. @@ -225,7 +225,7 @@ By using an SSL connection and adding the public key of the endpoint within your There are several scenarios possible for protecting your outgoing connections using encryption. These depend on the infrastructure possibilities and protocols used. For more information, see [How to Secure Outgoing Connections from Your App](/developerportal/deploy/securing-outgoing-connections-from-your-application/). -You can add individual certificates in your app's settings in . Test, acceptance, and production environments require their certificates to be uploaded to the Mendix Cloud (for more information, see [Certificates](/developerportal/deploy/certificates/)). +You can add individual certificates in your app's settings in . Test, acceptance, and production environments require their certificates to be uploaded to Mendix Cloud (for more information, see [Certificates](/developerportal/deploy/certificates/)). ## Adding HTTP Headers {#adding-http-header} @@ -233,7 +233,7 @@ HTTP headers can add an additional layer of security and help you detect certain An example of an attack is when an application is embedded in an iframe. Applications that can be embedded within an iframe can be misused by attackers. By using an overlay, it could trick users into clicking buttons and make them perform actions within the application on their behalf without knowing it. This approach is called [clickjacking](https://www.owasp.org/index.php/Clickjacking). -By sending a header to the user’s browser, it can block the use of the Mendix application within an iframe and avoid this type of attack. The header is set by default to block embedding within an iframe. For the Mendix Cloud, this can be configured using [HTTP Headers](/developerportal/deploy/environments-details/#http-headers) in your node’s environment details within the Mendix Portal. If you change this value, you will also need to ensure that *SameSite* cookies are set to the correct value. See [Iframes and Running Apps](/developerportal/deploy/running-in-iframe/) for more information. +By sending a header to the user’s browser, it can block the use of the Mendix application within an iframe and avoid this type of attack. The header is set by default to block embedding within an iframe. For Mendix Cloud, this can be configured using [HTTP Headers](/developerportal/deploy/environments-details/#http-headers) in your node’s environment details within the Mendix Portal. If you change this value, you will also need to ensure that *SameSite* cookies are set to the correct value. See [Iframes and Running Apps](/developerportal/deploy/running-in-iframe/) for more information. If you are running your Mendix app on Mendix for Private Cloud, you can configure the HTTP headers as part of advanced operator configuration. See the [Endpoint (network) Configuration](/developerportal/deploy/private-cloud-cluster/#advanced-network-settings) section of *Creating a Private Cloud Cluster*. diff --git a/content/en/docs/howto8/collaboration-requirements-management/on-premises-svn-howto.md b/content/en/docs/howto8/collaboration-requirements-management/on-premises-svn-howto.md index 5a3d6f3a63f..143251c0984 100644 --- a/content/en/docs/howto8/collaboration-requirements-management/on-premises-svn-howto.md +++ b/content/en/docs/howto8/collaboration-requirements-management/on-premises-svn-howto.md @@ -77,7 +77,7 @@ For the purpose of creating an app to store in your on-premises SVN server, this 5. With all instances of Studio Pro closed, open the folder in which your app is stored locally. 6. Delete the **.svn** and **.mendix-cache** folders (note that these folders may be hidden, in which case you will need to enable the option in your file explorer to make them visible). By deleting these folders, references to the Mendix Team Server are removed. Now, your app is ready to be uploaded to your own SVN server. 7. Double-click the **.mpr** file in the project folder to open the app again in Studio Pro (for example, if your app is called **MyApp**, this file will have the name **MyApp.mpr**). Alternatively, you can start Studio Pro, click **My Apps** > **Open App**, and browse to the abovementioned local **.mpr** file to open your app. -8. When the app is opened in Studio Pro, go to the top menu, select **Edit** > **Preferences** > **Advanced**. and make sure the **Enable private version control** box is checked. +8. When the app is opened in Studio Pro, go to the top menu, select **Edit** > **Preferences** > **Advanced**, and make sure the **Enable private version control** box is checked. 9. In the top menu, select **Version Control** > **Upload to Version Control Server**. 10. In the [Upload to Version Control Server](/refguide8/upload-to-version-control-dialog/) dialog box, select **Private server**. 11. In the **App repository address** field, enter the address of your SVN server. This address must include the name of the repository you are going to use for your app (for example, `https://svn.example.com:9876/repos/myapp`). diff --git a/content/en/docs/howto8/data-models/migrating-your-mendix-database.md b/content/en/docs/howto8/data-models/migrating-your-mendix-database.md index 4d4456b1601..6a1589f7271 100644 --- a/content/en/docs/howto8/data-models/migrating-your-mendix-database.md +++ b/content/en/docs/howto8/data-models/migrating-your-mendix-database.md @@ -12,8 +12,8 @@ This document explains how to migrate the data in an existing Mendix database to * Migrate a non-PostgreSQL database to a PostgreSQL database * Export a PostgreSQL database -* Upload an exported PostgreSQL database to the Mendix cloud -* Export a Mendix cloud database +* Upload an exported PostgreSQL database to Mendix Cloud +* Export a Mendix Cloud database * Import into an on-premise PostgreSQL database * Migrate a PostgreSQL database to a non-PostgreSQL database, including migrating a PostgreSQL database to SAP HANA @@ -85,7 +85,7 @@ If you already have the database, for example a test database in the cloud, you ## Migrating a Non-PostgreSQL Database to a PostgreSQL Database -The Mendix cloud environment only uses PostgreSQL as a database server. The recommended way is to migrate your existing on-premises non-PostgreSQL source database to a new on-premises PostgreSQL target database. +Mendix Cloud environment only uses PostgreSQL as a database server. The recommended way is to migrate your existing on-premises non-PostgreSQL source database to a new on-premises PostgreSQL target database. The source database is the database with the data that you would like to migrate to the cloud. The target PostgreSQL database should be completely empty, as in, it should not contain any tables. In the Mendix project the active configuration in Settings should point to the target database, and you should add the Custom configuration settings for the source database as explained above in the overview. @@ -95,9 +95,9 @@ Having configured the Mendix project, just run the application locally and it wi To export a PostgreSQL database, refer to either the [pg_dump](https://www.postgresql.org/docs/current/backup-dump.html) command line tool or the [PG Admin](https://www.pgadmin.org/docs/) visual tool documentation to understand how to create a backup of your new PostgreSQL database. -### Uploading an Exported PostgreSQL Database to the Mendix Cloud Database +### Uploading an Exported PostgreSQL Database to Mendix Cloud Database -Use Mendix Portal to upload the migrated, exported database backup to the Mendix cloud. This can be accessed using the Nodes page in [Apps](https://sprintr.home.mendix.com/): select your app and environment, click **Details**, click the **Backup** tab and use the **Upload Data** button to upload your Database using the file chooser to select the exported database file from your local file system. This will stop and clear your existing environment. +Use Mendix Portal to upload the migrated, exported database backup to Mendix Cloud. This can be accessed using the Nodes page in [Apps](https://sprintr.home.mendix.com/): select your app and environment, click **Details**, click the **Backup** tab and use the **Upload Data** button to upload your Database using the file chooser to select the exported database file from your local file system. This will stop and clear your existing environment. ## Exporting a Mendix Cloud Database @@ -120,7 +120,7 @@ Below is general guidance on how to migrate a PostgreSQL database to a different #### General Guidance -The source database is a PostgreSQL database with the downloaded database from the Mendix cloud. The target non-PostgreSQL database should be completely empty, as in, it should not contain any tables. In the Mendix project the active configuration in Settings should point to the target database, and you should add the Custom configuration settings for the source PostgreSQL database as explained above in the overview. +The source database is a PostgreSQL database with the downloaded database from Mendix Cloud. The target non-PostgreSQL database should be completely empty, as in, it should not contain any tables. In the Mendix project the active configuration in Settings should point to the target database, and you should add the Custom configuration settings for the source PostgreSQL database as explained above in the overview. Having configured the Mendix project, just run the application locally and it will automatically migrate the database schema and all the data from the source database to the target database. You should always validate it first by viewing the application in a browser. diff --git a/content/en/docs/howto8/front-end/custom-error-page.md b/content/en/docs/howto8/front-end/custom-error-page.md index 27a3c9a328f..dc2f61655b8 100644 --- a/content/en/docs/howto8/front-end/custom-error-page.md +++ b/content/en/docs/howto8/front-end/custom-error-page.md @@ -29,7 +29,7 @@ This how-to teaches you how to do the following: Before starting this how-to, make sure you have completed the following prerequisites: * Have a local repository of the app -* Have your app *hosted in the Mendix Cloud* +* Have your app *hosted in Mendix Cloud* ## Create a Custom Error Page diff --git a/content/en/docs/howto8/integration/access-a-samba-share-from-the-mxcloud.md b/content/en/docs/howto8/integration/access-a-samba-share-from-the-mxcloud.md index eef1547c736..f7dc64d7db9 100644 --- a/content/en/docs/howto8/integration/access-a-samba-share-from-the-mxcloud.md +++ b/content/en/docs/howto8/integration/access-a-samba-share-from-the-mxcloud.md @@ -50,7 +50,7 @@ If you choose to connect to a server based on the server name instead of the IP | **jcifs.netbios.lmhosts** | The path to an LMHOSTS (LAN Manager Hosts) file containing a map of the IP addresses to hostnames. The format of this file is identical to that of the Windows LMHOSTS file format (with a few exceptions noted below.) | | **jcifs.netbios.scope** | This is rare, but NetBIOS provides for a "scope ID" to be used in an attempt to conceal groups of machines on the same network. Ask your network administrator if a scope ID is used. If so, it must be set using this property, or the name queries will fail. | -However, the cloud edit library requires an additional property override. The DFS property is not supposed to be enabled in the Mendix cloud since the Mendix cloud cannot resolve the DFS server by default. If you choose to enable the DFS, you will need to make sure that the server will be able to resolve the DFS based on the domain name and DNS location. +However, the cloud edit library requires an additional property override. The DFS property is not supposed to be enabled in Mendix Cloud since Mendix Cloud cannot resolve the DFS server by default. If you choose to enable the DFS, you will need to make sure that the server will be able to resolve the DFS based on the domain name and DNS location. | Name | Resolution Properties | | --- | --- | diff --git a/content/en/docs/howto8/integration/implement-cicd-pipeline.md b/content/en/docs/howto8/integration/implement-cicd-pipeline.md index 848fc21e213..8e2534f7b4e 100644 --- a/content/en/docs/howto8/integration/implement-cicd-pipeline.md +++ b/content/en/docs/howto8/integration/implement-cicd-pipeline.md @@ -25,7 +25,7 @@ Before starting this how-to, make sure you are familiar with the following: #### User API Key -To get access to the Mendix Cloud environments, an authorized user is needed when executing the APIs. With Mendix APIs, API keys are used to achieve this. To create a Mendix API key, follow the steps in [Authentication](/apidocs-mxsdk/apidocs/authentication/). +To get access to Mendix Cloud environments, an authorized user is needed when executing the APIs. With Mendix APIs, API keys are used to achieve this. To create a Mendix API key, follow the steps in [Authentication](/apidocs-mxsdk/apidocs/authentication/). #### Mendix API Rights diff --git a/content/en/docs/howto8/integration/use-a-client-certificate.md b/content/en/docs/howto8/integration/use-a-client-certificate.md index 2b210b62da6..6f2d6c80e1a 100644 --- a/content/en/docs/howto8/integration/use-a-client-certificate.md +++ b/content/en/docs/howto8/integration/use-a-client-certificate.md @@ -12,7 +12,7 @@ Let's assume that you already have an app that calls a service. For details on h This how-to teaches you how to do the following: * Configure to run locally -* Configure in the Mendix Cloud +* Configure in Mendix Cloud ## Prerequisites @@ -65,7 +65,7 @@ You will only be able to follow the steps below if you have the correct access r {{% /alert %}} -To configure client certificates in the Mendix Cloud, follow these steps: +To configure client certificates in Mendix Cloud, follow these steps: 1. Go to [Apps](https://sprintr.home.mendix.com/) and go to the **Environments** page for your app. 2. Each environment has its own configuration. Click **Details** next one of the environments. diff --git a/content/en/docs/howto8/logic-business-rules/create-a-custom-save-button.md b/content/en/docs/howto8/logic-business-rules/create-a-custom-save-button.md index 6b3fec26323..8d9590dfb43 100644 --- a/content/en/docs/howto8/logic-business-rules/create-a-custom-save-button.md +++ b/content/en/docs/howto8/logic-business-rules/create-a-custom-save-button.md @@ -32,7 +32,7 @@ To replace the default **Save** button with a custom one, follow these steps: 3. Right-click the drop-zone under the **Cancel** button, select **Add widget**, and then select **Call microflow button**. -4. In the **Select Microflow** dialog box, click **New** to create a new microflow. called **Customer_Save**. +4. In the **Select Microflow** dialog box, click **New** to create a new microflow called **Customer_Save**. {{< figure src="/attachments/howto8/logic-business-rules/create-a-custom-save-button/customer-save.png" class="no-border" >}} diff --git a/content/en/docs/howto8/mobile/hybrid-mobile/build-hybrid-apps/publishing-a-mendix-hybrid-mobile-app-in-mobile-app-stores.md b/content/en/docs/howto8/mobile/hybrid-mobile/build-hybrid-apps/publishing-a-mendix-hybrid-mobile-app-in-mobile-app-stores.md index c8a8f3d64b0..da3d72b4ba4 100644 --- a/content/en/docs/howto8/mobile/hybrid-mobile/build-hybrid-apps/publishing-a-mendix-hybrid-mobile-app-in-mobile-app-stores.md +++ b/content/en/docs/howto8/mobile/hybrid-mobile/build-hybrid-apps/publishing-a-mendix-hybrid-mobile-app-in-mobile-app-stores.md @@ -30,7 +30,7 @@ This how-to teaches you how to do the following: Before starting this how-to, make sure you have completed the following prerequisites: -* Have a Mendix app with mobile support running in the Mendix Cloud, either as a Free App or on a licensed cloud node +* Have a Mendix app with mobile support running in Mendix Cloud, either as a Free App or on a licensed cloud node * Have an account for Adobe PhoneGap Build (you can create one for free [here](https://helpx.adobe.com/experience-manager/kb/adobe-phonegap-end-of-service.html)) To publish your app in the Apple App Store, do the following: diff --git a/content/en/docs/howto8/mobile/hybrid-mobile/deploy-your-first-hybrid-mobile-app.md b/content/en/docs/howto8/mobile/hybrid-mobile/deploy-your-first-hybrid-mobile-app.md index e8a44e94bd5..edb88295ccc 100644 --- a/content/en/docs/howto8/mobile/hybrid-mobile/deploy-your-first-hybrid-mobile-app.md +++ b/content/en/docs/howto8/mobile/hybrid-mobile/deploy-your-first-hybrid-mobile-app.md @@ -6,7 +6,7 @@ weight: 50 ## Introduction -Besides boasting native functionality, another major advantage of a hybrid mobile apps is that you only need to go through the approval process once. Updates after the approval process only require a new deployment of your app in the Mendix cloud. +Besides boasting native functionality, another major advantage of a hybrid mobile apps is that you only need to go through the approval process once. Updates after the approval process only require a new deployment of your app in Mendix Cloud. This how-to teaches you how to do the following: @@ -26,7 +26,7 @@ To open a hybrid example app, follow these steps: 1. Open Mendix Studio Pro, clikc **New App**, and under the **Starter Apps** tab click **Blank App**. 2. Click the **Use this starting point** button. 3. Adjust your configurations (be sure to keep **Enable online services** > **Yes** selected) and then click **Create app**. -4. Click **Run** to deploy this application to the Mendix Cloud: +4. Click **Run** to deploy this application to Mendix Cloud: {{< figure src="/attachments/howto8/mobile/hybrid-mobile/deploy-your-first-hybrid-mobile-app/18581186.png" class="no-border" >}} diff --git a/content/en/docs/howto8/mobile/hybrid-mobile/implement-sso-on-a-hybrid-app-with-mendix-and-saml.md b/content/en/docs/howto8/mobile/hybrid-mobile/implement-sso-on-a-hybrid-app-with-mendix-and-saml.md index 50ad2aa46c4..cff7d5a89a1 100644 --- a/content/en/docs/howto8/mobile/hybrid-mobile/implement-sso-on-a-hybrid-app-with-mendix-and-saml.md +++ b/content/en/docs/howto8/mobile/hybrid-mobile/implement-sso-on-a-hybrid-app-with-mendix-and-saml.md @@ -125,6 +125,17 @@ MxApp.onConfigReady(function(config) { To address the [second problem](#secondproblem), after a successful authentication against the IdP, Mendix stores a token in the device’s local storage. The system will use that token from that moment on to create a new session for the user. The session is created in Mendix only, so a new authentication against the IdP will not be performed again. This token is a TokenInformation (part of the System module) object, and it can be accessed/edited in microflows. By default, this local token will never expire, but this can be overridden by changing the `com.mendix.webui.HybridAppLoginTimeOut` [Runtime customization setting](/refguide8/custom-settings/). The downside of this approach is that access rights will not be updated upon login, since no interaction is done with the IdP. However, in most systems using SSO, user and role provisioning is handled separately from the authentication, so this might not be an issue. +In some cases the window will not close properly. To solve this issue, add the following code (after line 9 as shown in the snippet above) as a workaround: + +```javascript + samlWindow.addEventListener('loadstart', (param)=>{ + if(param.url == config.unmodifiedRemoteUrl + 'index.html'){ + samlWindow.close(); + window.mx.afterLoginAction && window.mx.afterLoginAction(); + } + }); +``` + ### The Hybrid App Package To use the hybrid app package, follow these steps: diff --git a/content/en/docs/howto8/mobile/hybrid-mobile/push-notifications/implementation-guide.md b/content/en/docs/howto8/mobile/hybrid-mobile/push-notifications/implementation-guide.md index 9a6b974e5bb..f7c8de62a9a 100644 --- a/content/en/docs/howto8/mobile/hybrid-mobile/push-notifications/implementation-guide.md +++ b/content/en/docs/howto8/mobile/hybrid-mobile/push-notifications/implementation-guide.md @@ -102,7 +102,7 @@ On the **User roles** tab of the **Project Security** dialog box, include the fo ## Deploying Your App -At this point, all the implementation steps are done and you can deploy your application to the Mendix Cloud. If you are using a Free App, simply click **Run**. +At this point, all the implementation steps are done and you can deploy your application to Mendix Cloud. If you are using a Free App, simply click **Run**. {{% alert color="warning" %}} diff --git a/content/en/docs/howto8/mobile/hybrid-mobile/push-notifications/testing-the-implementation.md b/content/en/docs/howto8/mobile/hybrid-mobile/push-notifications/testing-the-implementation.md index 8d9dcdfa8ca..be0870d07cd 100644 --- a/content/en/docs/howto8/mobile/hybrid-mobile/push-notifications/testing-the-implementation.md +++ b/content/en/docs/howto8/mobile/hybrid-mobile/push-notifications/testing-the-implementation.md @@ -31,7 +31,7 @@ If you would like to use APNS instead of FCM for your iOS devices, then you will ## Building Your Mobile App -Now that you have set up your hybrid app for push notifications you may continue building it. by following the [hybrid app package documentation](https://github.com/mendix/hybrid-app-template/). Once you have a running app, continue to the section below. +Now that you have set up your hybrid app for push notifications, you may continue building it by following the [hybrid app package documentation](https://github.com/mendix/hybrid-app-template/). Once you have a running app, continue to the section below. ## Sending a Push Notification to a Device diff --git a/content/en/docs/howto8/monitoring-troubleshooting/debug-microflows/debug-microflows-remotely.md b/content/en/docs/howto8/monitoring-troubleshooting/debug-microflows/debug-microflows-remotely.md index 36b56413b37..c68c00237c4 100644 --- a/content/en/docs/howto8/monitoring-troubleshooting/debug-microflows/debug-microflows-remotely.md +++ b/content/en/docs/howto8/monitoring-troubleshooting/debug-microflows/debug-microflows-remotely.md @@ -118,7 +118,7 @@ If you do cannot connect the debugger, then you do not have sufficient permissio 2. In the **Connect Debugger** dialog box set the following: - * **Connect to** – select the option *An app running in the Mendix Cloud or on another remote server.* + * **Connect to** – select the option *An app running in Mendix Cloud or on another remote server.* * **URL** – the *URL* from the **Debugger Settings** for your app environment * **Password** – the *Password* from the **Debugger Settings** for your app environment diff --git a/content/en/docs/howto8/monitoring-troubleshooting/log-levels.md b/content/en/docs/howto8/monitoring-troubleshooting/log-levels.md index e2284f44c71..fe8627bf131 100644 --- a/content/en/docs/howto8/monitoring-troubleshooting/log-levels.md +++ b/content/en/docs/howto8/monitoring-troubleshooting/log-levels.md @@ -102,7 +102,7 @@ To set the log levels for standard log messages, follow these steps: {{< figure src="/attachments/howto8/monitoring-troubleshooting/log-levels/18580029.png" class="no-border" >}} {{% alert color="info" %}} -You can override the log level for standard log messages in each environment when your app is deployed to the Mendix cloud. See the [Log Levels Tab](/developerportal/deploy/environments-details/#log-levels) section in *Environment Details* for more information. +You can override the log level for standard log messages in each environment when your app is deployed to Mendix Cloud. See the [Log Levels Tab](/developerportal/deploy/environments-details/#log-levels) section in *Environment Details* for more information. {{% /alert %}} ### Configuring the Log Levels for Custom Log Messages diff --git a/content/en/docs/howto8/security/best-practices-security.md b/content/en/docs/howto8/security/best-practices-security.md index 0b90cda5006..f46914645cb 100644 --- a/content/en/docs/howto8/security/best-practices-security.md +++ b/content/en/docs/howto8/security/best-practices-security.md @@ -9,9 +9,9 @@ description: "A set of security aspects and checks to use when developing your M ## Introduction -Security is one of the most important aspects of an application, because misconfiguration or failing security can have large stakeholder consequences. The Mendix Runtime protects your application and data according to your model, and the Mendix Cloud handles security at the infrastructure level. +Security is one of the most important aspects of an application, because misconfiguration or failing security can have large stakeholder consequences. The Mendix Runtime protects your application and data according to your model, and Mendix Cloud handles security at the infrastructure level. -This document describes the common aspects you should consider when delivering an application within the Mendix Cloud. +This document describes the common aspects you should consider when delivering an application within Mendix Cloud. ## Implementing Access Rules @@ -77,7 +77,7 @@ When publishing a web or REST service, you should consider whether this service Mendix offers the following options for providing authentication for your services: * User name and password validation, specified within Mendix Studio Pro (for details, see [Published Web Services](/refguide8/published-web-services/)) -* Client certificates and IP ranges, which are specified in the Mendix Cloud – these can be found at the network tab of your node’s environment details as **Access Restriction Profiles** +* Client certificates and IP ranges, which are specified in Mendix Cloud – these can be found at the network tab of your node’s environment details as **Access Restriction Profiles** ## Using the Encryption Module When Storing Sensitive Information @@ -118,7 +118,7 @@ This information can be exploited by an attacker (for example, by trying to gues The user name of the administrator can be changed in 's **Project Security** settings on the **Administrator** tab. -When deployed to the Mendix Cloud, the information about the administrator user name and role is taken into account when using the **Change admin password** button on the environment. After changing the settings in and redeploying the application, a successful admin password change will trigger the creation of a user in the app with the new name and role. +When deployed to Mendix Cloud, the information about the administrator user name and role is taken into account when using the **Change admin password** button on the environment. After changing the settings in and redeploying the application, a successful admin password change will trigger the creation of a user in the app with the new name and role. {{% alert color="info" %}} At this point, the application does not automatically remove the user with the previous user name. Removing the old **MxAdmin** account has to be done manually. @@ -136,7 +136,7 @@ By using an SSL connection and adding the public key of the endpoint within your There are several scenarios possible for protecting your outgoing connections using encryption. These depend on the infrastructure possibilities and protocols used. For more information, see [How to Secure Outgoing Connections from Your App](/developerportal/deploy/securing-outgoing-connections-from-your-application/). -You can add individual certificates in your project’s settings in . Test, acceptance, and production environments require their certificates to be uploaded to the Mendix Cloud (for more information, see [Certificates](/developerportal/deploy/certificates/)). +You can add individual certificates in your project’s settings in . Test, acceptance, and production environments require their certificates to be uploaded to Mendix Cloud (for more information, see [Certificates](/developerportal/deploy/certificates/)). ## Adding HTTP Headers {#adding-http-header} diff --git a/content/en/docs/howto8/security/create-a-secure-app.md b/content/en/docs/howto8/security/create-a-secure-app.md index c34c80ea37e..96a5ff2b1f3 100644 --- a/content/en/docs/howto8/security/create-a-secure-app.md +++ b/content/en/docs/howto8/security/create-a-secure-app.md @@ -62,7 +62,7 @@ To see the results of this how-to, you must set up a test project with test data ## Setting the Security Level to Prototype/Demo {#prototype} -In this part of the how-to, you will learn how to configure the security at the prototype/demo level. Be aware that this level of security is only applicable for development/demo purposes. This level is available for the quick development of demo applications. It simulates security without the more complex configuration of data access. When deploying to the Mendix cloud, production security is mandatory. +In this part of the how-to, you will learn how to configure the security at the prototype/demo level. Be aware that this level of security is only applicable for development/demo purposes. This level is available for the quick development of demo applications. It simulates security without the more complex configuration of data access. When deploying to Mendix Cloud, production security is mandatory. To set the security level to prototype/demo, follow these steps: @@ -149,7 +149,7 @@ To configure the page and microflow access of a module, follow these steps: ## Setting the Security Level to Production {#production} -In this section of the how-to, you will configure the security at the production level. At this level, all security settings must be configured. In addition to prototype/demo security, you have to configure the entity (data) access. Production security is mandatory when deploying to the Mendix cloud. +In this section of the how-to, you will configure the security at the production level. At this level, all security settings must be configured. In addition to prototype/demo security, you have to configure the entity (data) access. Production security is mandatory when deploying to Mendix Cloud. To set the security level to production, follow these steps: diff --git a/content/en/docs/howto9/data-models/migrating-your-mendix-database.md b/content/en/docs/howto9/data-models/migrating-your-mendix-database.md index f5b9738e32c..44323172c38 100644 --- a/content/en/docs/howto9/data-models/migrating-your-mendix-database.md +++ b/content/en/docs/howto9/data-models/migrating-your-mendix-database.md @@ -13,7 +13,7 @@ After completing this how-to, you will know how to do the following: * Migrate a non-PostgreSQL database to a PostgreSQL database * Export a PostgreSQL database -* Upload an exported PostgreSQL database to the Mendix cloud +* Upload an exported PostgreSQL database to Mendix Cloud * Export a Mendix cloud database * Import into an on-premise PostgreSQL database * Migrate a PostgreSQL database to a non-PostgreSQL database, including migrating a PostgreSQL database to SAP HANA @@ -136,7 +136,7 @@ Below is general guidance on how to migrate a PostgreSQL database to a different #### General Guidance -The source database is a PostgreSQL database with the downloaded database from the Mendix cloud. The target non-PostgreSQL database should be completely empty, as in, it should not contain any tables. In the Mendix app the active configuration in Settings should point to the target database, and you should add the Custom configuration settings for the source PostgreSQL database as explained above in the overview. +The source database is a PostgreSQL database with the downloaded database from Mendix Cloud. The target non-PostgreSQL database should be completely empty, as in, it should not contain any tables. In the Mendix app the active configuration in Settings should point to the target database, and you should add the Custom configuration settings for the source PostgreSQL database as explained above in the overview. Having configured the Mendix app, just run the application locally and it will automatically migrate the database schema and all the data from the source database to the target database. You should always validate it first by viewing the application in a browser. diff --git a/content/en/docs/howto9/front-end/custom-error-page.md b/content/en/docs/howto9/front-end/custom-error-page.md index 1d71d5f2732..41096229831 100644 --- a/content/en/docs/howto9/front-end/custom-error-page.md +++ b/content/en/docs/howto9/front-end/custom-error-page.md @@ -36,7 +36,7 @@ This how-to teaches you how to do the following: Before starting this how-to, make sure you have completed the following prerequisites: * Have a local repository of the app -* Have your app *hosted in the Mendix Cloud* +* Have your app *hosted in Mendix Cloud* * Identify which version of the Atlas module you are using ## Creating a Custom Error Page diff --git a/content/en/docs/howto9/integration/access-a-samba-share-from-the-mxcloud.md b/content/en/docs/howto9/integration/access-a-samba-share-from-the-mxcloud.md index 1be7f20ec8c..0f5a25c3720 100644 --- a/content/en/docs/howto9/integration/access-a-samba-share-from-the-mxcloud.md +++ b/content/en/docs/howto9/integration/access-a-samba-share-from-the-mxcloud.md @@ -51,7 +51,7 @@ If you choose to connect to a server based on the server name instead of the IP | **jcifs.netbios.lmhosts** | The path to an LMHOSTS (LAN Manager Hosts) file containing a map of the IP addresses to hostnames. The format of this file is identical to that of the Windows LMHOSTS file format (with a few exceptions noted below.) | | **jcifs.netbios.scope** | This is rare, but NetBIOS provides for a "scope ID" to be used in an attempt to conceal groups of machines on the same network. Ask your network administrator if a scope ID is used. If so, it must be set using this property, or the name queries will fail. | -However, the cloud edit library requires an additional property override. The DFS property is not supposed to be enabled in the Mendix cloud since the Mendix cloud cannot resolve the DFS server by default. If you choose to enable the DFS, you will need to make sure that the server will be able to resolve the DFS based on the domain name and DNS location. +However, the cloud edit library requires an additional property override. The DFS property is not supposed to be enabled in Mendix Cloud since Mendix Cloud cannot resolve the DFS server by default. If you choose to enable the DFS, you will need to make sure that the server will be able to resolve the DFS based on the domain name and DNS location. | Name | Resolution Properties | | --- | --- | diff --git a/content/en/docs/howto9/integration/implement-cicd-pipeline.md b/content/en/docs/howto9/integration/implement-cicd-pipeline.md index 46b7075e210..dfde43404d1 100644 --- a/content/en/docs/howto9/integration/implement-cicd-pipeline.md +++ b/content/en/docs/howto9/integration/implement-cicd-pipeline.md @@ -26,7 +26,7 @@ Before starting this how-to, make sure you are familiar with the following: #### User API Key -To get access to the Mendix Cloud environments, an authorized user is needed when executing the APIs. With Mendix APIs, API keys are used to achieve this. To create a Mendix API key, follow the steps in [Authentication](/apidocs-mxsdk/apidocs/authentication/). +To get access to Mendix Cloud environments, an authorized user is needed when executing the APIs. With Mendix APIs, API keys are used to achieve this. To create a Mendix API key, follow the steps in [Authentication](/apidocs-mxsdk/apidocs/authentication/). #### Mendix API Rights diff --git a/content/en/docs/howto9/integration/use-a-client-certificate.md b/content/en/docs/howto9/integration/use-a-client-certificate.md index 9cf8eec22f9..fc4b1d75a66 100644 --- a/content/en/docs/howto9/integration/use-a-client-certificate.md +++ b/content/en/docs/howto9/integration/use-a-client-certificate.md @@ -15,7 +15,7 @@ Let's assume that you already have an app that calls a service. For details on h This how-to teaches you how to do the following: * Configure to run locally -* Configure in the Mendix Cloud +* Configure in Mendix Cloud ## Prerequisites @@ -64,7 +64,7 @@ The following sample uses client certificate `Mx1.pfx` for `WebService1` and no You will only be able to follow the steps below if you have the correct access rights for the client certificates. {{% /alert %}} -To configure client certificates in the Mendix Cloud, follow these steps: +To configure client certificates in Mendix Cloud, follow these steps: 1. Go to [Apps](https://sprintr.home.mendix.com/) and go to the **Environments** page for your app. 2. Each environment has its own configuration. Click **Details** next to one of the environments. diff --git a/content/en/docs/howto9/monitoring-troubleshooting/log-levels.md b/content/en/docs/howto9/monitoring-troubleshooting/log-levels.md index e1e0732e0a3..d19f63aeba2 100644 --- a/content/en/docs/howto9/monitoring-troubleshooting/log-levels.md +++ b/content/en/docs/howto9/monitoring-troubleshooting/log-levels.md @@ -62,15 +62,13 @@ These are the log levels used by Mendix: ## Setting the Log Levels -In this section, you will learn how to configure the log levels of the messages produced by the system. The different highlighted [levels](#level) can be applied to the predefined logging produced by Mendix Studio Pro and to custom logging. - -This section describes how to configure both the log levels for predefined logging created by Studio Pro and custom logging. +In this section you will learn how to specify which log messages are generated, based on the level of the log messages. Log messages with lower levels than the configured log level will not be generated. The different [levels](#level) can be applied both to the predefined logging produced by Mendix Studio Pro and to custom logging. ### Configuring Log Levels via Script -Log levels can be configured through the runtime admin port before the actual log levels exist. This enables creating a script that sets all the required log levels at once. +Log levels can be configured through the runtime admin port before the actual log levels exist. You can therefore create a script that sets all the required log levels at once. -This is a Python script that sets `ConnectionBus` and `ActionManager` to the Trace and Debug levels: +This is a Python script that sets `ConnectionBus` and `ActionManager` to the Trace and Debug levels, respectively: ```py import requests, base64, json, sys @@ -92,9 +90,9 @@ C:\temp\LogDemoApp\python {"feedback":{},"result":0} ``` -### Configuring the Log Levels for Standard Log Messages{#standard-log-levels} +### Configuring Log Levels Within Studio Pro {#configure-log-levels-from-studio-pro} -To set the log levels for standard log messages, follow these steps: +To set the log levels within Studio Pro, follow these steps: 1. Ensure that your app is running locally – if not, the option to set log levels will not be clickable. 2. In the **Console** pane, click **Advanced** to open the menu of advanced options. @@ -104,10 +102,10 @@ To set the log levels for standard log messages, follow these steps: {{< figure src="/attachments/howto9/monitoring-troubleshooting/log-levels/set-log-levels.png" class="no-border" >}} {{% alert color="info" %}} -You can override the log level for standard log messages in each environment when your app is deployed to the Mendix cloud. See the [Log Levels Tab](/developerportal/deploy/environments-details/#log-levels) section in *Environment Details* for more information. +You can override the log level for standard log messages in each environment when your app is deployed to Mendix Cloud. See the [Log Levels Tab](/developerportal/deploy/environments-details/#log-levels) section in *Environment Details* for more information. {{% /alert %}} -### Configuring the Log Levels for Custom Log Messages +## Setting the Log Levels for Custom Log Messages To set the level of custom log messages that you have created via a microflow, follow these steps: diff --git a/content/en/docs/howto9/monitoring-troubleshooting/manage-app-performance/_index.md b/content/en/docs/howto9/monitoring-troubleshooting/manage-app-performance/_index.md index e6df50edf4e..8c2051ce6cf 100644 --- a/content/en/docs/howto9/monitoring-troubleshooting/manage-app-performance/_index.md +++ b/content/en/docs/howto9/monitoring-troubleshooting/manage-app-performance/_index.md @@ -18,10 +18,10 @@ You can also set up an integration to [Datadog](/developerportal/operate/datadog ### Other Deployment Options {{% alert color="warning" %}} -For apps deployed to the Mendix Cloud, only Datadog, AppDynamics, and Dynatrace are supported. +For apps deployed to Mendix Cloud, only Datadog, AppDynamics, and Dynatrace are supported. {{% /alert %}} -Outside the Mendix Cloud, you can use the following monitoring tools: +Outside Mendix Cloud, you can use the following monitoring tools: * Datadog * New Relic – see [Manage App Performance with New Relic](/howto9/monitoring-troubleshooting/manage-app-performance-with-new-relic/) diff --git a/content/en/docs/howto9/monitoring-troubleshooting/manage-app-performance/manage-app-performance-with-new-relic.md b/content/en/docs/howto9/monitoring-troubleshooting/manage-app-performance/manage-app-performance-with-new-relic.md index 5affcc9f065..9d2c84c1c09 100644 --- a/content/en/docs/howto9/monitoring-troubleshooting/manage-app-performance/manage-app-performance-with-new-relic.md +++ b/content/en/docs/howto9/monitoring-troubleshooting/manage-app-performance/manage-app-performance-with-new-relic.md @@ -18,7 +18,7 @@ This how-to teaches you how to do the following: * Set up application performance management for your Mendix application on New Relic {{% alert color="warning" %}} -New Relic is not supported for apps deployed to the Mendix Cloud. +New Relic is not supported for apps deployed to Mendix Cloud. {{% /alert %}} ## Prerequisite diff --git a/content/en/docs/howto9/security/best-practices-security.md b/content/en/docs/howto9/security/best-practices-security.md index c22a4c8a57a..1af0556de7e 100644 --- a/content/en/docs/howto9/security/best-practices-security.md +++ b/content/en/docs/howto9/security/best-practices-security.md @@ -3,7 +3,7 @@ title: "Implement Best Practices for App Security" linktitle: "Best Practices for App Security" url: /howto9/security/best-practices-security/ weight: 20 -description: "Describes the common aspects you should consider when delivering an application within the Mendix Cloud." +description: "Describes the common aspects you should consider when delivering an application within Mendix Cloud." aliases: - /howtogeneral/bestpractices/best-practices-security-and-improvements-for-mendix-applications.html - /howtogeneral/bestpractices/best-practices-security-and-improvements-for-mendix-applications @@ -12,9 +12,9 @@ aliases: ## Introduction -Security is one of the most important aspects of an application, because misconfiguration or failing security can have large stakeholder consequences. The Mendix Runtime protects your application and data according to your model, and the Mendix Cloud handles security at the infrastructure level. +Security is one of the most important aspects of an application, because misconfiguration or failing security can have large stakeholder consequences. The Mendix Runtime protects your application and data according to your model, and Mendix Cloud handles security at the infrastructure level. -This document describes the common aspects you should consider when delivering an application within the Mendix Cloud. +This document describes the common aspects you should consider when delivering an application within Mendix Cloud. ## Implementing Access Rules{#access-rules} @@ -194,7 +194,7 @@ This information can be exploited by an attacker (for example, by trying to gues The user name of the administrator can be changed in 's **App Security** settings on the **Administrator** tab. -When deployed to the Mendix Cloud, the information about the administrator user name and role is taken into account when using the **Change admin password** button on the environment. After changing the settings in and redeploying the application, a successful admin password change will trigger the creation of a user in the app with the new name and role. +When deployed to Mendix Cloud, the information about the administrator user name and role is taken into account when using the **Change admin password** button on the environment. After changing the settings in and redeploying the application, a successful admin password change will trigger the creation of a user in the app with the new name and role. {{% alert color="info" %}} At this point, the application does not automatically remove the user with the previous user name. Removing the old **MxAdmin** account has to be done manually. @@ -212,7 +212,7 @@ By using an SSL connection and adding the public key of the endpoint within your There are several scenarios possible for protecting your outgoing connections using encryption. These depend on the infrastructure possibilities and protocols used. For more information, see [How to Secure Outgoing Connections from Your App](/developerportal/deploy/securing-outgoing-connections-from-your-application/). -You can add individual certificates in your app's settings in . Test, acceptance, and production environments require their certificates to be uploaded to the Mendix Cloud (for more information, see [Certificates](/developerportal/deploy/certificates/)). +You can add individual certificates in your app's settings in . Test, acceptance, and production environments require their certificates to be uploaded to Mendix Cloud (for more information, see [Certificates](/developerportal/deploy/certificates/)). ## Adding HTTP Headers {#adding-http-header} @@ -220,11 +220,11 @@ HTTP headers can add an additional layer of security and help you detect certain An example of an attack is when an application is embedded in an iframe. Applications that can be embedded within an iframe can be misused by attackers. By using an overlay, it could trick users into clicking buttons and make them perform actions within the application on their behalf without knowing it. This approach is called [clickjacking](https://www.owasp.org/index.php/Clickjacking). -By sending a header to the user’s browser, it can block the use of the Mendix application within an iframe and avoid this type of attack. The header is set by default to block embedding within an iframe. For the Mendix Cloud, this can be configured using [HTTP Headers](/developerportal/deploy/environments-details/#http-headers) in your node’s environment details within **Apps**. If you change this value, you will also need to ensure that *SameSite* cookies are set to the correct value. See [Iframes and Running Apps](/developerportal/deploy/running-in-iframe/) for more information. +By sending a header to the user’s browser, it can block the use of the Mendix application within an iframe and avoid this type of attack. The header is set by default to block embedding within an iframe. For Mendix Cloud, this can be configured using [HTTP Headers](/developerportal/deploy/environments-details/#http-headers) in your node’s environment details within **Apps**. If you change this value, you will also need to ensure that *SameSite* cookies are set to the correct value. See [Iframes and Running Apps](/developerportal/deploy/running-in-iframe/) for more information. If you are running your Mendix app on Mendix for Private Cloud, you can configure the HTTP headers as part of advanced operator configuration. See the [Endpoint (network) Configuration](/developerportal/deploy/private-cloud-cluster/#advanced-network-settings) section of *Creating a Private Cloud Cluster*. -The Mendix Cloud Foundry Buildpack and Mendix Docker Buildpack also provide [an option to configure HTTP headers](https://github.com/mendix/cf-mendix-buildpack#built-in-proxy-configuration). +Mendix Cloud Foundry Buildpack and Mendix Docker Buildpack also provide [an option to configure HTTP headers](https://github.com/mendix/cf-mendix-buildpack#built-in-proxy-configuration). If you use a traditional deployment of your Mendix app, using Windows or Linux, you need to set up these headers on the web server in front of your Mendix application server, for example in Microsoft Internet Informations Services (IIS). diff --git a/content/en/docs/howto9/security/create-a-secure-app.md b/content/en/docs/howto9/security/create-a-secure-app.md index b71b68ea2bb..91010598bda 100644 --- a/content/en/docs/howto9/security/create-a-secure-app.md +++ b/content/en/docs/howto9/security/create-a-secure-app.md @@ -63,7 +63,7 @@ To see the results of this how-to, you must set up a test project with test data ## Setting the Security Level to Prototype/Demo {#prototype} -In this part of the how-to, you will learn how to configure the security at the prototype/demo level. Be aware that this level of security is only applicable for development/demo purposes. This level is available for the quick development of demo applications. It simulates security without the more complex configuration of data access. When deploying to the Mendix cloud, production security is mandatory. +In this part of the how-to, you will learn how to configure the security at the prototype/demo level. Be aware that this level of security is only applicable for development/demo purposes. This level is available for the quick development of demo applications. It simulates security without the more complex configuration of data access. When deploying to Mendix Cloud, production security is mandatory. To set the security level to prototype/demo, follow these steps: @@ -146,7 +146,7 @@ To configure the page and microflow access of a module, follow these steps: ## Setting the Security Level to Production {#production} -In this section of the how-to, you will configure the security at the production level. At this level, all security settings must be configured. In addition to prototype/demo security, you have to configure the entity (data) access. Production security is mandatory when deploying to the Mendix cloud. +In this section of the how-to, you will configure the security at the production level. At this level, all security settings must be configured. In addition to prototype/demo security, you have to configure the entity (data) access. Production security is mandatory when deploying to Mendix Cloud. To set the security level to production, follow these steps: diff --git a/content/en/docs/partners/siemens/3d-viewer/3d-viewer-api.md b/content/en/docs/partners/siemens/3d-viewer/3d-viewer-api.md index 65b15ef5b3a..cf3867726ad 100644 --- a/content/en/docs/partners/siemens/3d-viewer/3d-viewer-api.md +++ b/content/en/docs/partners/siemens/3d-viewer/3d-viewer-api.md @@ -77,4 +77,4 @@ Starting from version 2.2.0, 3D Viewer module includes some out-of-box API actio ## Feedback -If you have problem using the 3D Viewer API listed in [3D Viewer API Reference](https://d102io3ppw18a6.cloudfront.net/). or you would like more APIs to be exposed, raise a ticket in [Mendix Support portal](https://support.mendix.com/). We will address them accordingly. +If you have problem using the 3D Viewer API listed in [3D Viewer API Reference](https://d102io3ppw18a6.cloudfront.net/), or you would like more APIs to be exposed, raise a ticket in [Mendix Support portal](https://support.mendix.com/). We will address them accordingly. diff --git a/content/en/docs/partners/siemens/3d-viewer/_index.md b/content/en/docs/partners/siemens/3d-viewer/_index.md index 4cfe5d29d26..1f73a674661 100644 --- a/content/en/docs/partners/siemens/3d-viewer/_index.md +++ b/content/en/docs/partners/siemens/3d-viewer/_index.md @@ -322,9 +322,9 @@ The **Toolbar** widgets do not require additional configuration. Simply place th You can deploy 3D Viewer locally or in a Mendix Free App for free. However, to deploy 3D Viewer on the cloud, it will need to be licensed, and you need to obtain a license token as described in [Obtaining a License Token](#obtain-license-token), above, and then configure it as follows: -#### For an App Deployed in the Mendix Cloud +#### For an App Deployed in Mendix Cloud -If you deploy your app in the Mendix Cloud, configure the license token in the [Mendix Portal](/developerportal/deploy/environments-details/). +If you deploy your app in Mendix Cloud, configure the license token in the [Mendix Portal](/developerportal/deploy/environments-details/). Before you deploy your app, configure the app **Constants** in the deployment package. diff --git a/content/en/docs/partners/siemens/mindsphere/mindsphere-api-only.md b/content/en/docs/partners/siemens/mindsphere/mindsphere-api-only.md index 81343dbb410..f239dc62fe2 100644 --- a/content/en/docs/partners/siemens/mindsphere/mindsphere-api-only.md +++ b/content/en/docs/partners/siemens/mindsphere/mindsphere-api-only.md @@ -90,7 +90,7 @@ For security, the values of the **ClientSecret** should not be included when you When you deploy your app, you should remove the values of **ClientID** and **ClientSecret** from the app model for security reasons. You should then set the correct value as a constant (Cloud Foundry / Kubernetes environment variable) during the deployment. -For the Mendix Cloud, this can be done by setting the value of the constants on the [Model Options](/developerportal/deploy/environments-details/#model-options) tab of the **Environment Details**. See [Constants](/refguide/constants/) for information on how to set these values on other deployment platforms. +For Mendix Cloud, this can be done by setting the value of the constants on the [Model Options](/developerportal/deploy/environments-details/#model-options) tab of the **Environment Details**. See [Constants](/refguide/constants/) for information on how to set these values on other deployment platforms. ## Insights Hub Widgets diff --git a/content/en/docs/partners/siemens/mindsphere/mindsphere-mobile-native.md b/content/en/docs/partners/siemens/mindsphere/mindsphere-mobile-native.md index 2d2400ecc98..fdd04a615da 100644 --- a/content/en/docs/partners/siemens/mindsphere/mindsphere-mobile-native.md +++ b/content/en/docs/partners/siemens/mindsphere/mindsphere-mobile-native.md @@ -90,7 +90,7 @@ You now have successfully registered your application within the Developer Cockp {{% alert color="info" %}} The [Insights Hub Mobile Starter Application](https://marketplace.mendix.com/link/component/118164) can be used to build applications for both native mobile apps and 'normal' web applications. -Currently you can register either a mobile app or a web app in the Insights Hub Developer Cockpit but not both together. If you need access in a web browser, please push your application to the Mendix cloud and set up another registration via the Auto Registration for your web application as described in [Setting up Insights Hub Launchpad](/developerportal/deploy/deploying-to-mindsphere/#launchpad). This app can then be added to the Insights Hub Launchpad. Please note, pushing a Mendix Mobile Native application to the Insights Hub Cloud Foundry is currently not supported, as the Native applications needing an unprotected endpoint to any time. +Currently you can register either a mobile app or a web app in the Insights Hub Developer Cockpit but not both together. If you need access in a web browser, please push your application to Mendix Cloud and set up another registration via the Auto Registration for your web application as described in [Setting up Insights Hub Launchpad](/developerportal/deploy/deploying-to-mindsphere/#launchpad). This app can then be added to the Insights Hub Launchpad. Please note, pushing a Mendix Mobile Native application to the Insights Hub Cloud Foundry is currently not supported, as the Native applications needing an unprotected endpoint to any time. {{% /alert %}} ### Start Developing your App with Mendix Studio Pro diff --git a/content/en/docs/private-platform/configuration/pmp-configure-k8s.md b/content/en/docs/private-platform/configuration/pmp-configure-k8s.md index 5d894b9ed8e..e3dadcf9787 100644 --- a/content/en/docs/private-platform/configuration/pmp-configure-k8s.md +++ b/content/en/docs/private-platform/configuration/pmp-configure-k8s.md @@ -23,7 +23,7 @@ If you have a Kubernetes cluster, you can set Kubernetes as your CI System in ** * [Build Cluster Setting](#build-cluster) * [Build Images Setting](#build-images) -* [S3 Bucket Setting](#s3-bucket) +* [MDA Storage Setting](#mda-storage) Finally, you must also [register your Kubernetes cluster](#register-cluster). @@ -58,11 +58,9 @@ If you have already configured a custom CA certificate, you must only add your n The settings in this section configure the Kubernetes cluster. -**API Server** - Your Kubernetes API server. - -**Namespace** - The namespace used to create the Kubernetes pod. - -**Token** - You must create a service account, role, and role binding in the above namespace, and then get the service account's token. For reference, see the following shell script: +* **API Server** - Your Kubernetes API server. +* **Namespace** - The namespace used to create the Kubernetes pod. +* **Token** - You must create a service account, role, and role binding in the above namespace, and then get the service account's token. For reference, see the following shell script: ```text # create ServiceAccount, Role, and RoleBinding @@ -125,60 +123,54 @@ kubectl get secret mxplatform-cicd -n$NAMESPACE -o jsonpath='{.metadata.annotati The settings in this section configure the images. -**Keep Build Pod** - Select this checkbox to keep the build pod after the build is completed. This is useful for troubleshooting if the build failed due to pod creation failure or build failure. You can describe the pod to see its status, or check the logs of the pod. - -**Run As User** - The default value is *1001110000*. For an OpenShift cluster, you must check the user ID range by using the below command, and check the annotations. For example, for `openshift.io/sa.scc.uid-range: 1001190000/10000`, you can choose one ID from the *1001190000 - 1001199999* range. - -```text -export NAMESPACE=default -kubectl get ns $NAMESPACE -oyaml -``` - -**Build Image** - The default value is private-cloud.registry.mendix.com/privateplatform/pmp-pipeline-tools. This image is used to build MDA package and OCI image. - -**Build Package Path** - The default value is https://cdn.mendix.com/runtime. If you have your own file server, you must download the package from the Mendix Content Delivery Network, and then upload it to your file server. You can also use an S3 bucket for this purpose. The file name format is mxbuild-9.24.1.4658.tar.gz. - -**Build OCI Image** - Select this check box to build the OCI image besides the MDA file. Only OCI image can be used for deployment if this is checked. - -**Runtime Base Image** - This setting is only applicable if you selected the **Build OCI Image** check box. The default value is `private-cloud.registry.mendix.com/app-building-blocks`. If you are in an air gap environment, sync tag `ubi9-1-jre{XX}-entrypoint` and `runtime-{YYYYY}`, where `{XX}` is java version in your app, and `{YYYYY}` is your app runtime version. For example: `app-building-blocks:ubi9-1-jre21-entrypoint` and `app-building-blocks:runtime-10.12.1.39914`. - -**Allow Anonymous Access** - Select this checkbox if above Runtime Base Image is accessible without authentication. - -**Runtime Base Registry User** - This setting is only applicable if you did not select the **Allow Anonymous Access** check box. User name for the registry authentication. - -**Runtime Base Registry Password** - This setting is only applicable if you did not select the **Allow Anonymous Access** check box. Password for the registry authentication. - -**OCI Registry** - This setting is only applicable if you selected the **Build OCI Image** check box. This registry is used to store OCI image, also repository name should be appended to the registry, quay.io/pmp as an example. - -**OCI Registry User** - This setting is only applicable if you selected the **Build OCI Image** check box. User name for the registry authentication. +* **Keep Build Pod** - Select this checkbox to keep the build pod after the build is completed. This is useful for troubleshooting if the build failed due to pod creation failure or build failure. You can describe the pod to see its status, or check the logs of the pod. +* **Run As User** - The default value is *1001110000*. For an OpenShift cluster, you must check the user ID range by using the below command, and check the annotations. For example, for `openshift.io/sa.scc.uid-range: 1001190000/10000`, you can choose one ID from the *1001190000 - 1001199999* range. -**OCI Registry Password** - This setting is only applicable if you selected the **Build OCI Image** check box. Password for the registry authentication. - -### Configuring S3 Bucket Setting {#s3-bucket} - -The settings in this section configure the S3 bucket. - -**S3 Endpoint** - For example, `https://s3.ap-southeast-1.amazonaws.com`. - -**No Verify SSL** - Select this checkbox if you use your own bucket server, and its certificate is self-signed. Selecting this option adds --no-verify-ssl to the AWS CLI command to avoid failure. - -**S3 Bucket Name** - Your S3 bucket name, for example, *mybucket*. - -**Mda Location** - Your S3 bucket name's domain, for example, `https://mybucket.s3.ap-southeast-1.amazonaws.com`. This URL is used to access build artifacts, the whole path is: `Mda Location + Appid + Mda/Meta file`. Make sure it is publicly accessible without any authentication. - -**Region** - For example, `ap-southeast-1`. - -**Use K8S Secret** - Select whether you want to input the **Access Key ID** and **Secret Access Key**, or set them in a Kubernetes secret. Enable this setting to avoid showing sensitive credentials in a build pod. + ```text + export NAMESPACE=default + kubectl get ns $NAMESPACE -oyaml + ``` -**Secret Name** - This setting is only applicable if you selected the **Use K8S Secret** check box. This is the secret name where you want to store the **Access Key ID** and **Secret Access Key**. Use the following command to create this secret, where your-namespace is the namespace that you specified in **Build Cluster Setting** > **Namespace**. +* **Build Image** - The default value is `private-cloud.registry.mendix.com/privateplatform/pmp-pipeline-tools`. This image is used to build MDA package and OCI image. +* **Build Package Source** - Select the download source for the *mxbuild* package. The following values are supported: + + * **File Server** - This option allows anonymous access without any authentication. + * **S3 Bucket** - This option requires an access key ID and secret access key for authentication. + * **Azure Blob** - This option requires the Azure Workload identity authentication. The default service account is used in the build pod for downloading the *mxbuild* package. Add role assignment with the Storage Blob Data Reader role to the storage account in your managed identity. + +* **Build Package Path** - This setting is required for the **File Server** build package source. The default value is `https://cdn.mendix.com/runtime`. If you have your own file server, you must download the package from the Mendix Content Delivery Network, and then upload it to your file server. The file name format is *mxbuild-9.24.1.4658.tar.gz*. +* **S3 Endpoint**, **S3 Bucket Name**, **Region**, **Access Key ID**, **Secret Access Key** - These settings are required for the **S3 Bucket** build package source. +* **Storage Account**, **Container** - These settings are requried for the **Azure Blob** build package source. +* **Build OCI Image** - Select this check box to build the OCI image besides the MDA file. Only OCI image can be used for deployment if this is checked. This option can be used to avoid configuring anonymous access to your S3 bucket or Azure Blob container. +* **Runtime Base Image** - This setting is only applicable if you selected the **Build OCI Image** check box. The default value is `private-cloud.registry.mendix.com/app-building-blocks`. If you are in an air gap environment, sync tag `ubi9-1-jre{XX}-entrypoint` and `runtime-{YYYYY}`, where `{XX}` is java version in your app, and `{YYYYY}` is your app runtime version. For example: `app-building-blocks:ubi9-1-jre21-entrypoint` and `app-building-blocks:runtime-10.12.1.39914`. +* **Allow Anonymous Access** - Select this checkbox if above Runtime Base Image is accessible without authentication. +* **Runtime Base Registry User** - This setting is only applicable if you did not select the **Allow Anonymous Access** check box. User name for the registry authentication. +* **Runtime Base Registry Password** - This setting is only applicable if you did not select the **Allow Anonymous Access** check box. Password for the registry authentication. +* **OCI Registry** - This setting is only applicable if you selected the **Build OCI Image** check box. This registry is used to store OCI image, also repository name should be appended to the registry, quay.io/pmp as an example. +* **OCI Registry User** - This setting is only applicable if you selected the **Build OCI Image** check box. User name for the registry authentication. +* **OCI Registry Password** - This setting is only applicable if you selected the **Build OCI Image** check box. Password for the registry authentication. + +### Configuring MDA Storage Setting {#mda-storage} + +The settings in this section configure the storage for build output artifacts. + +* **Mda Storage Option** - Configure where to store the build output artifacts. The supported values are S3 Bucket and Azure Blob. The Azure Blob option requires the Azure Workload identity authentication. The *default* service account is used in the build pod for uploading build artifacts. Add role assignment with the Storage Blob Data Contributor role to the storage account in your managed identity. +* **S3 Endpoint** - For example, `https://s3.ap-southeast-1.amazonaws.com`. +* **No Verify SSL** - Select this checkbox if you use your own bucket server, and its certificate is self-signed. Selecting this option adds --no-verify-ssl to the AWS CLI command to avoid failure. +* **S3 Bucket Name** - Your S3 bucket name, for example, *mybucket*. +* **Mda Location** - Your S3 bucket name's domain, for example, `https://mybucket.s3.ap-southeast-1.amazonaws.com`. This URL is used to access build artifacts, the whole path is: `Mda Location + Appid + Mda/Meta file`. Make sure that the S3 bucket is configured to allow anonymous access. +* **Region** - For example, `ap-southeast-1`. +* **Use K8S Secret** - Select whether you want to input the **Access Key ID** and **Secret Access Key**, or set them in a Kubernetes secret. Enable this setting to avoid showing sensitive credentials in a build pod. +* **Secret Name** - This setting is only applicable if you selected the **Use K8S Secret** check box. This is the secret name where you want to store the **Access Key ID** and **Secret Access Key**. Use the following command to create this secret, where your-namespace is the namespace that you specified in **Build Cluster Setting** > **Namespace**. -```text -kubectl create secret generic mxplatform-awssecret -n your-namespace --from-literal=aws_access_key_id=your-aws-access-key-id --from-literal=aws_secret_access_key=your-aws-secret-access-key -``` - -**Access Key ID** - This setting is only applicable if you did not select the Use K8S Secret check box. This value is used to access the S3 bucket. + ```text + kubectl create secret generic mxplatform-awssecret -n your-namespace --from-literal=aws_access_key_id=your-aws-access-key-id --from-literal=aws_secret_access_key=your-aws-secret-access-key + ``` -**Secret Access Key** - This setting is only applicable if you did not select the Use K8S Secret check box. This value is used to access the S3 bucket. +* **Access Key ID** - This setting is only applicable if you did not select the **Use K8S Secret** check box. This value is used to access the S3 bucket. +* **Secret Access Key** - This setting is only applicable if you did not select the **Use K8S Secret** check box. This value is used to access the S3 bucket. +* **Storage Account, Container** - This setting is used to configure Azure Blob when the **Mda Storage Option** is set to **Azure Blob**. +* **Mda Location** - Your Azure Blob container's domain, for example, `https://your-storage-account.blob.core.windows.net/your-container`. This setting is only applicable if **Build OCI Image** is not selected. Make sure that the container's anonymous access level is set to **Blob**. ### Registering a Kubernetes Cluster {#register-cluster} @@ -355,6 +347,6 @@ Before creating any environments, you must register your Kubernetes clusters by ## Architecture of the CI/CD Pipeline -The diagrams in this section present the architecture and components of the pipeline. For more information, see [Build Images Setting](#build-images) above. +The diagram in this section presents the architecture and components of the pipeline. For more information, see [Build Images Setting](#build-images) above. {{< figure src="/attachments/private-platform/pmp-cicd2.png" alt="Auto Detect Mx Runtime Version" class="no-border" >}} diff --git a/content/en/docs/quickstarts/leading-mendix-implementation.md b/content/en/docs/quickstarts/leading-mendix-implementation.md index 36fce5b721f..2e7b0ac4144 100644 --- a/content/en/docs/quickstarts/leading-mendix-implementation.md +++ b/content/en/docs/quickstarts/leading-mendix-implementation.md @@ -174,7 +174,7 @@ In the beginning, it’s highly likely that not all these people will come from * **Center of Excellence Lead (COE Lead):** Generally, larger organizations implement a Mendix COE to help define and enforce good governance, development, and enablement practices that can evolve with the business and technological changes for overall platform and program success throughout the enterprise over time. The COE Lead ensures the Mendix COE is properly staffed to support, oversee and enable development teams, and ensures the products produced are of high-quality following best practices for high re-usability, maintainability and return on investment. This person generally has sufficient senior-level technical and managerial skills to oversee the COE’s Enterprise and Solution Architects, DevOps technical leads, trainers and mentors, and other experienced staff. -**Product owners** are key players to a successful program, because they’ll have in-depth knowledge of the business, the product, and its users, and will have insight into the value that it will create. If possible, make sure that your first product owner comes from your own organization and is familiar with the problem you are setting out to solve with your first application. Product owner is not really a leadership role, but the choice of a product owner is crucial for the success of your first app, which is why we touch on it here. can POs are also a part of the agile scrum team, so we will mention them again in section [Identify Your First Mendix Project Team](#identify-first-mendix-team). +**Product owners** are key players to a successful program, because they’ll have in-depth knowledge of the business, the product, and its users, and will have insight into the value that it will create. If possible, make sure that your first product owner comes from your own organization and is familiar with the problem you are setting out to solve with your first application. Product owner is not really a leadership role, but the choice of a product owner is crucial for the success of your first app, which is why we touch on it here. POs are also a part of the agile scrum team, so we will mention them again in section [Identify Your First Mendix Project Team](#identify-first-mendix-team). **Architects** will help establish a target architecture, infrastructure, and governance.  @@ -235,7 +235,7 @@ High-level positioning is about knowing how and where Mendix fits in with the re **Deployment strategy**  -The Start stage is an excellent time to start exploring your cloud options, and use this knowledge as input for strategic choices in the future. You’re most likely going to deploy your application on the Mendix Cloud because it’s the most optimized cloud to run Mendix-built applications. Built on top of Cloud Foundry and AWS, the Mendix Cloud is the deployment solution in which Mendix provides hosting environments for you. It’s available globally and comes standard with deep insights, alerting capabilities, high availability options, and backups.  +The Start stage is an excellent time to start exploring your cloud options, and use this knowledge as input for strategic choices in the future. You’re most likely going to deploy your application on Mendix Cloud because it’s the most optimized cloud to run Mendix-built applications. Built on top of Cloud Foundry and AWS, Mendix Cloud is the deployment solution in which Mendix provides hosting environments for you. It’s available globally and comes standard with deep insights, alerting capabilities, high availability options, and backups.  {{< figure src="/attachments/quickstarts/leading-mendix-implementation/cloud-options.png" >}} @@ -1125,15 +1125,15 @@ By the end of this section, you will be able to:  ### Deploy Your Application -**Deploy your application to the Mendix Cloud** +**Deploy your application to Mendix Cloud** -Deploying your application to the Mendix Cloud is a simple process, that will give you access to all the features and services in the Mendix Cloud. It requires only a few steps to set it up, which you only need to do once for each application. Once the cloud settings of your application is done, you can deploy and redeploy your application with just one click. +Deploying your application to Mendix Cloud is a simple process, that will give you access to all the features and services in Mendix Cloud. It requires only a few steps to set it up, which you only need to do once for each application. Once the cloud settings of your application is done, you can deploy and redeploy your application with just one click. -Note that Mendix also offers [other deployment options](/releasenotes/developer-portal/deployment/) than the Mendix cloud e.g. to a private cloud if that’s a requirement. +Note that Mendix also offers [other deployment options](/releasenotes/developer-portal/deployment/) than Mendix Cloud e.g. to a private cloud if that’s a requirement. **Obtain a licensed node** -You can deploy your application for free on the Mendix Cloud. These [Free Apps have limitations](/developerportal/deploy/mendix-cloud-deploy/#free-app) when it comes to run time, features and resources. You can publish Free Apps to test the Mendix platform, a specific feature of to quickly prototype an application to test an idea. Once you decide to take your application to the next-level and start serious development on it, you will need to obtain a licensed node, so this is something you will need to do before your launch. +You can deploy your application for free on Mendix Cloud. These [Free Apps have limitations](/developerportal/deploy/mendix-cloud-deploy/#free-app) when it comes to run time, features and resources. You can publish Free Apps to test the Mendix platform, a specific feature of to quickly prototype an application to test an idea. Once you decide to take your application to the next-level and start serious development on it, you will need to obtain a licensed node, so this is something you will need to do before your launch. If you have an existing contract that allows for more licensed nodes, you can [request a new licensed node](/developerportal/deploy/licensing-apps/#obtaining-licensed-node). If you don’t have a contract, or if your contract doesn’t allow for more licensed nodes, contact your Customer Success Manager. @@ -1144,7 +1144,7 @@ If you have a licensed node available, you can link your application to this lic If you have backed up your data, you can [unlink your application](/developerportal/deploy/licensing-apps/#unlink-free) from the Free App environment. -When your app is unlinked from a Free App environment, you can link it to a licensed node. By linking it to a licensed node, you get access to all the features of the Mendix Cloud, such as one-click deployment from Studio Pro and our platform, log management, backups management and monitoring tools. +When your app is unlinked from a Free App environment, you can link it to a licensed node. By linking it to a licensed node, you get access to all the features of Mendix Cloud, such as one-click deployment from Studio Pro and our platform, log management, backups management and monitoring tools. **Set node permissions** @@ -1158,9 +1158,9 @@ Granting permissions to team members is dependent on your deployment strategy an **Set cloud settings** -When the node permissions are set up, you can start configuring your cloud settings. This can be done by any team member with the correct permissions. Changing your cloud settings is not mandatory, as most of settings are set for you by default in the Mendix Cloud, but in some cases you want to customize them to tailor the end user experience or to adhere to company standards. +When the node permissions are set up, you can start configuring your cloud settings. This can be done by any team member with the correct permissions. Changing your cloud settings is not mandatory, as most of settings are set for you by default in Mendix Cloud, but in some cases you want to customize them to tailor the end user experience or to adhere to company standards. -Things can you can customize for your applications in the Mendix Cloud include: +Things can you can customize for your applications in Mendix Cloud include: * [Studio Pro deployment target](/developerportal/deploy/studio-deployment-settings/#studio-pro-target) @@ -1176,9 +1176,9 @@ Things can you can customize for your applications in the Mendix Cloud include: **Deploy your application** -Once you have linked and configured your Mendix Cloud node, which you only have to do once, you can start deploying your application to the Mendix Cloud. It is recommended that you deploy any new version of your application to the Test or Acceptance environment of your application first for testing, before deploying it to the Production environment. +Once you have linked and configured your Mendix Cloud node, which you only have to do once, you can start deploying your application to Mendix Cloud. It is recommended that you deploy any new version of your application to the Test or Acceptance environment of your application first for testing, before deploying it to the Production environment. -There are multiple ways to deploy your application to the Mendix Cloud, so there is always a deployment flow that fits your needs. You (or your team) can get a complete overview of those in [Deploying an App to Mendix Cloud](/developerportal/deploy/mendix-cloud-deploy/deploying-an-app/). +There are multiple ways to deploy your application to Mendix Cloud, so there is always a deployment flow that fits your needs. You (or your team) can get a complete overview of those in [Deploying an App to Mendix Cloud](/developerportal/deploy/mendix-cloud-deploy/deploying-an-app/). ### Test Your Application @@ -1188,7 +1188,7 @@ There are a variety of tools available for testing, from Mendix-supported ones t Aside from unit tests, performance tests can also be performed with multiple third-party tools, such as JMeter, BlazeMeter and LoadRunner—all of which are capable of testing the performance of your Mendix application. -After go-live, the Mendix Cloud offers metrics and logs to provide insights into application performance and can help track down bugs. +After go-live, Mendix Cloud offers metrics and logs to provide insights into application performance and can help track down bugs. ### User Acceptance Testing diff --git a/content/en/docs/quickstarts/responsive-web-app.md b/content/en/docs/quickstarts/responsive-web-app.md index 4692616a21d..a712676927d 100644 --- a/content/en/docs/quickstarts/responsive-web-app.md +++ b/content/en/docs/quickstarts/responsive-web-app.md @@ -300,7 +300,7 @@ You have now finished developing your responsive app! You can run your photo alb {{< figure src="/attachments/quickstarts/responsive-web-app/7-closepageaction6.png" width="450px" alt="Run your app" class="no-border" >}} {{% alert type="info" %}} -Running your app compiles it locally on your development machine (your local host). Publishing your app pushes it to a cloud environment or web container connected to the app. If none exists, an environment is initialized for your app on the Mendix Cloud Free Tier EU. +Running your app compiles it locally on your development machine (your local host). Publishing your app pushes it to a cloud environment or web container connected to the app. If none exists, an environment is initialized for your app on Mendix Cloud Free Tier EU. {{% /alert %}} Congratulations! You successfully completed this quickstart tutorial. You have your first Mendix app to prove it, and it works on almost any device. Well done! diff --git a/content/en/docs/refguide/general/mxbuild.md b/content/en/docs/refguide/general/mxbuild.md index 01387d870b7..99b119492b0 100644 --- a/content/en/docs/refguide/general/mxbuild.md +++ b/content/en/docs/refguide/general/mxbuild.md @@ -61,34 +61,52 @@ Command-line options are described in the table below: | `-h`, `--help` | Prints a short description of the MxBuild and a list of all available options. | | `--java-home=DIRECTORY` | (Required). The directory in which the JDK is installed.
For example, `--java-home=/usr/lib/jvm/java-8-oracle`.
For Windows, *DIRECTORY* should be enclosed in double-quotes `"`. | | `--java-exe-path=FILENAME` | (Required). The full path to the Java executable.
For example, `--java-exe-path=/usr/lib/jvm/java-8-oracle/bin/java`.
For Windows, *DIRECTORY* should be enclosed in double-quotes `"` and must contain the complete file name `...\java.exe`. | -| ––target=[package|deploy] | `package`: default if option is omitted; creates a deployment package (*.mda file*).
`deploy`: deploys the app without making a deployment package. | +| ––target=[package|deploy] | `package`: default if option is omitted; creates a deployment package (*.mda file*).
`deploy`: deploys the app without making a deployment package.
`sbom`: generates a [Software Bill of Materials](/refguide/sbom-generation/) (SBOM) in the CycloneDX format for the app. | | `--loose-version-check` | Creates a deployment package from an app which was created with a lower Mendix version.
The app will be upgraded to the MxBuild version before the deployment package is created.
Any changes included as a result of this upgrade will not be stored in your app. | | `--write-errors=FILENAME` | Writes all errors, warnings, and deprecations encountered during deployment of the app to the specified file in JSON format.
This file is only written when the app contains errors.
If the file already exists, it will be overwritten without a warning.
For a description of the format of this file, see the [App Errors](#app-errors) section below. | -| `--generate-sbom` | Generates a [Software Bill of Materials](/refguide/sbom-generation/) (SBOM) in the CycloneDX format. | -| `--sbom-output-path=VALUE` | File path to generate bill of material file (Default value: `deployment\sbom.json`). | +| `--generate-sbom` | Generates a Software Bill of Materials (SBOM) file as a part of the `package` and `deployment` targets. The SBOM will be included in the deployment package if this option is used and is saved under its default location: `deployment\sbom.json` | +| `--sbom-output-path=VALUE` | The file path to generate a bill of material file for the `package` and `deployment` targets. Use `--output` for the `sbom` target (Default value: `deployment\sbom.json`).
This parameter is deprecated and will be removed in Mendix 11 and replaced with the `sbom` target.
| | `--gradle-home` | Sets the Gradle home directory. This can be used when auto-detection of the Gradle installation fails. | ### Options When Creating a Package {{% alert color="info" %}} -The following options are only applicable with the `--target=package` option: +The following options are only applicable with the `--target=package` option. {{% /alert %}} Options when creating a package are described in the table below: -| Option                      | Description | +| Option | Description | | --- | --- | | `-o FILENAME` or
`--output=FILENAME` | The name (with optional relative or absolute path) of the *.mda* file that is created by MxBuild.
If this option is omitted, the file will be saved in the current directory under a name `out.mda`. | | `--project-name=NAME` | Changes the name of the application to the one used by the Mendix Runtime.
When this option is not specified, the name of the app is used. | | `--model-version=VERSION` | Applies a specific version number to the model in the package. | | `--model-description=DESCRIPTION` | Embeds a description of the model in the package. | -For example, to create a deployment package `out.mda` in the current directory using the app `MyApp` using the Windows version of MxBuild, you can use the following command: +For example, to create a deployment package `out.mda` in the current directory using the app `MyApp` with the Windows version of MxBuild, you can use the following command: ```bat mxbuild --target=package --java-home="C:\Program Files\Java\jdk1.8.0_144" --java-exe-path="C:\Program Files\Java\jdk1.8.0_144\bin\java.exe" "C:\Users\username\Documents\Mendix\MyApp\MyApp.mpr" ``` +### Options When Creating a SBOM + +{{% alert color="info" %}} +The following options are only applicable with the `--target=sbom` option: +{{% /alert %}} + +Options when creating a software bill of materials (SBOM) are described in the table below: + +| Option                      | Description | +| --- | --- | +| `-o FILENAME` or
`--output=FILENAME` | The name (with optional relative or absolute path) of the file that will contain the SBOM and is created by MxBuild.
If this option is omitted, the file will be saved in the deployment directory of the App under the name `sbom.json`. | + +For example, to create a SBOM in the deployment directory of the App with the name `sbom.json` using the app `MyApp` using the Windows version of MxBuild, you can use the following command: + +```bat +mxbuild --target=sbom --java-home="C:\Program Files\Java\jdk1.8.0_144" --java-exe-path="C:\Program Files\Java\jdk1.8.0_144\bin\java.exe" "C:\Users\username\Documents\Mendix\MyApp\MyApp.mpr" +``` + ## Return Code When MxBuild exits, one of the following codes will be returned: diff --git a/content/en/docs/refguide/general/studio-pro-overview/keyboard-shortcuts.md b/content/en/docs/refguide/general/studio-pro-overview/keyboard-shortcuts.md index 0196559fb28..22c6da8c066 100644 --- a/content/en/docs/refguide/general/studio-pro-overview/keyboard-shortcuts.md +++ b/content/en/docs/refguide/general/studio-pro-overview/keyboard-shortcuts.md @@ -115,8 +115,10 @@ The following shortcut keys are available in the workflow editor: | --- | --- | --- | | Mouse scroll wheel| Mouse scroll wheel | Scroll up or down. | | Shift + Mouse scroll wheel | Shift + Mouse scroll wheel | Scroll left or right. | +|Ctrl + Mouse scroll wheel
(in Studio Pro 10.15.0 and above) | Command + Mouse scroll wheel
(in Studio Pro 10.15.0 and above) | Zoom in or out. | | Ctrl + Plus sign/Minus sign | Command + Plus sign/Minus sign | Zoom in or out. | | Ctrl + 0 | Command + 0 | Reset zoom level to 100%. | +| Ctrl + Left/Right arrow
(in Studio Pro 10.15.0 and above) | Command + Left/Right arrow
(in Studio Pro 10.15.0 and above) | Move a [boundary event](/refguide/workflow-boundary-events/) left or right. | ## Debugger Shortcut Keys {#debugger-shortcuts} diff --git a/content/en/docs/refguide/installation/install.md b/content/en/docs/refguide/installation/install.md index 2f3ab267179..7f0d0f2f9ec 100644 --- a/content/en/docs/refguide/installation/install.md +++ b/content/en/docs/refguide/installation/install.md @@ -59,7 +59,7 @@ The prerequisites are the following: * [Mendix Native Mobile Builder one-click Installer](https://appdev-mx-cdn.s3.amazonaws.com/native-builders/latest.exe) * [Git for Windows (x64)](https://git-scm.com/download/win) using the versions described below. These are the versions of Git that Studio Pro installs if the Git version installed on the system is below the suggested one. - | Studio Pro 10.0.0 - 10.1.0 | Studio Pro 10.2.0 - 10.9 | Studio Pro 10.10 and above | + | Studio Pro 10.0.0 - 10.1.0 | Studio Pro 10.2.0 - 10.9 | Studio Pro 10.6.10 (MTS), 10.10 and above | --- | --- | --- | | [2.37.1](https://github.com/git-for-windows/git/releases/tag/v2.37.1.windows.1) | [2.41.0](https://github.com/git-for-windows/git/releases/tag/v2.41.0.windows.3) | [2.43.0](https://github.com/git-for-windows/git/releases/tag/v2.43.0.windows.1)| diff --git a/content/en/docs/refguide/mobile/best-practices/batch-synchronization.md b/content/en/docs/refguide/mobile/best-practices/batch-synchronization.md index 32c83d240f8..a6fb485a180 100644 --- a/content/en/docs/refguide/mobile/best-practices/batch-synchronization.md +++ b/content/en/docs/refguide/mobile/best-practices/batch-synchronization.md @@ -26,7 +26,7 @@ Batch synchronization lets you group large synchronization actions into smaller To implement this best practice, do the following: 1. Implement [incremental synchronization](/refguide/mobile/best-practices/incremental-synchronization/) for the target entity. -1. Add a non-persistent entity to store the progress of your synchronization (for example, *SyncProgress* with an attribute **Progress** of type `Integer`). +1. Add a non-persistable entity to store the progress of your synchronization (for example, *SyncProgress* with an attribute **Progress** of type `Integer`). 1. Change the microflow that retrieves and synchronizes the changed objects to accept an offset: 1. Add a parameter **Offset** of type `Integer`. 1. Set the offset of the retrieve to the parameter and the amount to a fixed value (for example, `100`). diff --git a/content/en/docs/refguide/mobile/building-efficient-mobile-apps/offlinefirst-data/_index.md b/content/en/docs/refguide/mobile/building-efficient-mobile-apps/offlinefirst-data/_index.md index 2612ac397c9..c03ca8c576c 100644 --- a/content/en/docs/refguide/mobile/building-efficient-mobile-apps/offlinefirst-data/_index.md +++ b/content/en/docs/refguide/mobile/building-efficient-mobile-apps/offlinefirst-data/_index.md @@ -39,7 +39,7 @@ Changes made by the user are stored in this offline-first database, too. This me Another important aspect of developing offline-first apps is backwards-compatibility. Typically when you deploy a new version of a web app to the cloud, all users immediately have access to the latest model. However, that is not the case with offline-first apps. Some parts of your app model are distributed as part of the native mobile app package, such as pages, nanoflows and JavaScript actions. This means even if you change and deploy new versions of these parts, your users do not have access to the latest version until they update their native mobile apps through an OTA package or an online app store such as Google Play or App Store. -Imagine that you have deployed the first version of your native mobile app, your users have downloaded it, and now they are using it. At this point you should be thoughtful of the changes you introduce to the model. For example, assume you rename an entity and deploy it to the Mendix Cloud. The local databases in your users' devices will still be using the old entity name. This may cause synchronization errors if your users attempt to synchronize a new object of the entity you renamed, because the server no longer has an entity with the old name. Even after your users update the apps on their devices, there may be data created using the old model domain that needs to be synchronized with the server. Issues like this are why you need to ensure that your app's model changes are backward-compatible. +Imagine that you have deployed the first version of your native mobile app, your users have downloaded it, and now they are using it. At this point you should be thoughtful of the changes you introduce to the model. For example, assume you rename an entity and deploy it to Mendix Cloud. The local databases in your users' devices will still be using the old entity name. This may cause synchronization errors if your users attempt to synchronize a new object of the entity you renamed, because the server no longer has an entity with the old name. Even after your users update the apps on their devices, there may be data created using the old model domain that needs to be synchronized with the server. Issues like this are why you need to ensure that your app's model changes are backward-compatible. A similar issue may occur regarding changes to other app elements, including microflows and constants available to the client. For example, if your new deployment renames a microflow or modifies its parameters, users who have not updated their apps will be working with the previous model of the app where it references the microflow with the old name. diff --git a/content/en/docs/refguide/mobile/building-efficient-mobile-apps/offlinefirst-data/local-data-security.md b/content/en/docs/refguide/mobile/building-efficient-mobile-apps/offlinefirst-data/local-data-security.md index 9596a71b4a5..33e5d1ce13d 100644 --- a/content/en/docs/refguide/mobile/building-efficient-mobile-apps/offlinefirst-data/local-data-security.md +++ b/content/en/docs/refguide/mobile/building-efficient-mobile-apps/offlinefirst-data/local-data-security.md @@ -35,11 +35,11 @@ In apps where you want to grant end-users working with objects access to the res To learn more about customizing the synchronization behavior, see [Customizable Synchronization](/refguide/mobile/building-efficient-mobile-apps/offlinefirst-data/synchronization/#customizable-synchronization). -### Using Non-Persistent Entities +### Using Non-Persistable Entities -For sensitive data that should never be stored locally, consider using non-persistent entities to store the data temporarily and use microflow calls to securely process the data on the server. +For sensitive data that should never be stored locally, consider using non-persistable entities to store the data temporarily and use microflow calls to securely process the data on the server. -The app keeps the non-persistent objects only in the memory and removes them when they are no longer needed. However, this approach requires connectivity to the Mendix Runtime to call microflows, and thus limits the app's offline-first capabilities. +The app keeps the non-persistable objects only in the memory and removes them when they are no longer needed. However, this approach requires connectivity to the Mendix Runtime to call microflows, and thus limits the app's offline-first capabilities. ### Encrypting the Local Database diff --git a/content/en/docs/refguide/mobile/using-mobile-capabilities/authenticating-users.md b/content/en/docs/refguide/mobile/using-mobile-capabilities/authenticating-users.md index ee576b7650f..753a83c841c 100644 --- a/content/en/docs/refguide/mobile/using-mobile-capabilities/authenticating-users.md +++ b/content/en/docs/refguide/mobile/using-mobile-capabilities/authenticating-users.md @@ -28,7 +28,7 @@ To model your native sign-in page, do the following: The page already contains a sign-in form but is missing a data source to store the sign-in information. 1. Before you will model the data source, make sure to change the new page's layout to **NativePhone_TopBarOnly** to remove the bottom navigation. -1. To model the data source that will store the sign-in form data, start by creating a non-persistent entity in the [Domain model](/refguide/domain-model/) called *Login*. +1. To model the data source that will store the sign-in form data, start by creating a non-persistable entity in the [Domain model](/refguide/domain-model/) called *Login*. 1. Add three attributes of type String: **Username**, **Password**, and **ValidationMessage**: {{< figure src="/attachments/refguide/mobile/native-mobile/authenticating-users/login-entity.png" alt="Login entity" class="no-border" >}} diff --git a/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/activities/integration-activities/call-rest-action.md b/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/activities/integration-activities/call-rest-action.md index 3e2d6ca0eca..128dab379ae 100644 --- a/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/activities/integration-activities/call-rest-action.md +++ b/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/activities/integration-activities/call-rest-action.md @@ -70,7 +70,7 @@ The **HTTP method** property defines the HTTP method to use when calling a REST Set **Use timeout on request** to **Yes** to be able specify how long the Call REST service activity should wait for the REST endpoint to respond. {{% alert color="warning" %}} -It is recommended that you keep this set to **Yes**. Most cloud infrastructure services (including those used by the Mendix Cloud) will close HTTP connections automatically if there is no traffic for a few minutes, even if your activity is still waiting for a response. This means that, if your activity calls a web service which takes a long time to respond, the connection may be closed without the activity being aware of this, and your activity will not receive a response. Under these circumstances, if **Use timeout on request** is set to **No**, your activity will get stuck waiting indefinitely for data to arrive. +It is recommended that you keep this set to **Yes**. Most cloud infrastructure services (including those used by Mendix Cloud) will close HTTP connections automatically if there is no traffic for a few minutes, even if your activity is still waiting for a response. This means that, if your activity calls a web service which takes a long time to respond, the connection may be closed without the activity being aware of this, and your activity will not receive a response. Under these circumstances, if **Use timeout on request** is set to **No**, your activity will get stuck waiting indefinitely for data to arrive. {{% /alert %}} Default value: *Yes* @@ -106,7 +106,7 @@ The options are: When you select **Override**, you can configure which client certificate will be used. Click **Edit** to specify the **Client certificate identifier**. This identifier can be set in different places, depending on where you deploy the app: -* When you deploy the app in the Mendix cloud, set the **Client certificate identifier** to the desired **WEB SERVICE CALL NAME** when [pinning a client certificate](/developerportal/deploy/certificates/#outgoing-client-certificates). +* When you deploy the app in Mendix Cloud, set the **Client certificate identifier** to the desired **WEB SERVICE CALL NAME** when [pinning a client certificate](/developerportal/deploy/certificates/#outgoing-client-certificates). * When you deploy the app elsewhere, the identifier is set in the custom setting [ClientCertificateUsages](/refguide/custom-settings/#CACertificates). For testing locally, this can be set as a custom server setting in a [Configuration](/refguide/configuration/#custom). When this identifier is not set for the environment where your app is deployed (either not pinned or not present in *ClientCertificateUsages*), the default settings will be used (as if **Use app settings** were selected). diff --git a/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/activities/integration-activities/call-web-service-action.md b/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/activities/integration-activities/call-web-service-action.md index b0365ec0937..336d10757dc 100644 --- a/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/activities/integration-activities/call-web-service-action.md +++ b/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/activities/integration-activities/call-web-service-action.md @@ -75,7 +75,7 @@ This can be used to throw an exception when the web service takes too long to re Default value: *Yes* {{% alert color="warning" %}} -It is recommended that you keep this set this to **Yes**. Most cloud infrastructure services (including those used by the Mendix Cloud) will close HTTP connections automatically if there is no traffic for a few minutes, even if your activity is still waiting for a response. This means that, if your activity calls a web service which takes a long time to respond, the connection may be closed without the activity being aware of this, and your activity will not receive a response. Under these circumstances, if **Use timeout on request** is set to **No**, your activity will get stuck waiting indefinitely for data to arrive. +It is recommended that you keep this set this to **Yes**. Most cloud infrastructure services (including those used by Mendix Cloud) will close HTTP connections automatically if there is no traffic for a few minutes, even if your activity is still waiting for a response. This means that, if your activity calls a web service which takes a long time to respond, the connection may be closed without the activity being aware of this, and your activity will not receive a response. Under these circumstances, if **Use timeout on request** is set to **No**, your activity will get stuck waiting indefinitely for data to arrive. {{% /alert %}} Default: *No* @@ -125,7 +125,7 @@ The options are: When you select **Override**, you can configure which client certificate will be used. Click **Edit** to specify the **Client certificate identifier**. This identifier can be set in different places, depending on where you deploy the app: -* When you deploy the app in the Mendix cloud, set the **Client certificate identifier** to the desired **WEB SERVICE CALL NAME** when [pinning a client certificate](/developerportal/deploy/certificates/#outgoing-client-certificates). +* When you deploy the app in Mendix Cloud, set the **Client certificate identifier** to the desired **WEB SERVICE CALL NAME** when [pinning a client certificate](/developerportal/deploy/certificates/#outgoing-client-certificates). * When you deploy the app elsewhere, the identifier is set in the custom setting [ClientCertificateUsages](/refguide/custom-settings/#CACertificates). For testing locally, this can be set as a custom server setting in a [Configuration](/refguide/configuration/#custom). When this identifier is not set for the environment where your app is deployed (either not pinned or not present in *ClientCertificateUsages*), the default settings will be used (as if **Use app settings** were selected). diff --git a/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/activities/metrics-activities/metrics-counter.md b/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/activities/metrics-activities/metrics-counter.md index f2bac5b281e..3c0813a21cb 100644 --- a/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/activities/metrics-activities/metrics-counter.md +++ b/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/activities/metrics-activities/metrics-counter.md @@ -44,7 +44,7 @@ The name of the counter whose value you want to increment, which must adhere to * The name is case-insensitive. {{% alert color="info" %}} -It is recommended to use a common prefix that uniquely defines your organisation and application. +It is recommended to use a common prefix that uniquely defines your organization and application. {{% /alert %}} ### Value diff --git a/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/activities/metrics-activities/metrics-gauge.md b/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/activities/metrics-activities/metrics-gauge.md index eb8b4deeec4..3d71b1e9ba6 100644 --- a/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/activities/metrics-activities/metrics-gauge.md +++ b/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/activities/metrics-activities/metrics-gauge.md @@ -44,7 +44,7 @@ The name of the gauge for which you want to set a value, which must adhere to th * The name is case-insensitive. {{% alert color="info" %}} -It is recommended to use a common prefix that uniquely defines your organisation and application. +It is recommended to use a common prefix that uniquely defines your organization and application. {{% /alert %}} ### Value diff --git a/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/activities/metrics-activities/metrics-increment-counter.md b/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/activities/metrics-activities/metrics-increment-counter.md index bfe30af2e67..48bc957e92c 100644 --- a/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/activities/metrics-activities/metrics-increment-counter.md +++ b/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/activities/metrics-activities/metrics-increment-counter.md @@ -44,7 +44,7 @@ The name of the counter whose value you want to increment by 1, which must adher * The name is case-insensitive. {{% alert color="info" %}} -It is recommended to use a common prefix that uniquely defines your organisation and application. +It is recommended to use a common prefix that uniquely defines your organization and application. {{% /alert %}} ### Tags diff --git a/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/activities/workflow-activities/generate-jump-to-options.md b/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/activities/workflow-activities/generate-jump-to-options.md index d3724073ac5..f9fcdbc9a28 100644 --- a/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/activities/workflow-activities/generate-jump-to-options.md +++ b/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/activities/workflow-activities/generate-jump-to-options.md @@ -13,17 +13,13 @@ This activity can only be used in microflows. The **Generate jump-to options** activity allows you to generate a list of workflow activities where the workflow can jump to as its next step. The [Apply jump-to option](/refguide/apply-jump-to-option/) activity should be used after the **Generate jump-to options** to let the workflow continue from the selected activity. This is useful when, for example, the workflow is in incompatible state and the Workflow Administrator or any other user should be able to select a specific activity where the workflow can continue. {{% alert color="warning" %}} - -The list of generated options will only contain activities of the currently executed path in the workflow, excluding activities inside a [Parallel split](/refguide/parallel-split/) activity of the workflow. When the workflow is executing a path in a [Parallel split](/refguide/parallel-split/), the generated options will only contain activities of the current parallel split path. - +The list of generated options only contains activities of the currently executed path in the workflow, excluding activities inside a [Parallel split](/refguide/parallel-split/) activity of the workflow or activities inside a non-interrupting [Boundary Event](/refguide/workflow-boundary-events/) path. When the workflow is executing a path in a [Parallel split](/refguide/parallel-split/) or in a non-interrupting [Boundary Event](/refguide/workflow-boundary-events/) path, the generated options will only contain activities of the current path. {{% /alert %}} For more information on configuring the jumping to other activities, see [Jumping to Different Activities in a Workflow](/refguide/jump-to/). {{% alert color="info" %}} - This functionality is different from the [Jump activity](/refguide/jump-activity/) in workflows, which you can add from the **Toolbox** when you configure the workflow. - {{% /alert %}} ## Properties diff --git a/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/debug-microflows-and-nanoflows/debug-microflows-remotely.md b/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/debug-microflows-and-nanoflows/debug-microflows-remotely.md index 49662afa9ab..17e3ef50397 100644 --- a/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/debug-microflows-and-nanoflows/debug-microflows-remotely.md +++ b/content/en/docs/refguide/modeling/application-logic/microflows-and-nanoflows/debug-microflows-and-nanoflows/debug-microflows-remotely.md @@ -34,7 +34,7 @@ Before starting this how-to, make sure you have completed the following prerequi ## The Basics -In the Mendix Cloud, the debugger is always listening for connections so you cannot turn it on or off. To debug your app in the cloud, you need to get a URL and a password from the app environment and provide that information to Studio Pro. The steps below explain how to do this. +In Mendix Cloud, the debugger is always listening for connections so you cannot turn it on or off. To debug your app in the cloud, you need to get a URL and a password from the app environment and provide that information to Studio Pro. The steps below explain how to do this. {{% alert color="info" %}} The debugger supports only debugging of single-instance environments. Multi-instance environments need to be scaled down to one instance before the debugger can be used. See [Scaling Your Environment in Mendix Cloud](/developerportal/deploy/scale-environment/) for more information. @@ -140,7 +140,7 @@ If you do cannot connect the debugger, then you do not have sufficient permissio 2. In the **Connect Debugger** dialog box set the following: - * **Connect to** – select the option *An app running in the Mendix Cloud or on another remote server.* + * **Connect to** – select the option *An app running in Mendix Cloud or on another remote server.* * **URL** – the *URL* from the **Debugger Settings** for your app environment * **Password** – the *Password* from the **Debugger Settings** for your app environment diff --git a/content/en/docs/refguide/modeling/application-logic/workflows/add-action-to-workflow-toolbox.md b/content/en/docs/refguide/modeling/application-logic/workflows/add-action-to-workflow-toolbox.md index c2a4a497cc2..c2e1b4a31be 100644 --- a/content/en/docs/refguide/modeling/application-logic/workflows/add-action-to-workflow-toolbox.md +++ b/content/en/docs/refguide/modeling/application-logic/workflows/add-action-to-workflow-toolbox.md @@ -3,7 +3,7 @@ title: "Adding a Custom Action to the Workflow Toolbox" linktitle: "Add Custom Action to Workflow Toolbox" url: /refguide/add-action-to-workflow-toolbox/ description: "Describes how to expose a microflow as a workflow action in Mendix Studio Pro." -weight: 80 +weight: 100 aliases: - /howto/logic-business-rules/add-action-to-workflow-toolbox/ --- diff --git a/content/en/docs/refguide/modeling/application-logic/workflows/boundary-events.md b/content/en/docs/refguide/modeling/application-logic/workflows/boundary-events.md new file mode 100644 index 00000000000..f972dac0cab --- /dev/null +++ b/content/en/docs/refguide/modeling/application-logic/workflows/boundary-events.md @@ -0,0 +1,96 @@ +--- +title: "Boundary Events" +url: /refguide/workflow-boundary-events/ +weight: 20 +beta: true +--- + +{{% alert color="info" %}} +This feature is currently in public beta as of Studio Pro 10.15. Certain functionalities may be subject to change and may contain issues. For more information, see [Beta Releases](/releasenotes/beta-features/). +{{% /alert %}} + +## Introduction + +Based on Business Process Model and Notation (BPMN) 2.0, boundary events are a type of event that is attached to the boundary of an activity (such as a task or a sub-process) to handle exceptional situations or are triggered by certain behaviors. + +There are two main types of boundary events: + +* Non-interrupting boundary events: These events do not interrupt the ongoing activity. When triggered, they allow the activity to continue while simultaneously starting a new path from the boundary event. As per BPMN 2.0 specification, non-interrupting boundary events are visualized as two dashed circles with an icon in the center. +* Interrupting boundary events: When these events are triggered, they interrupt the normal path of the activity they are attached to. The activity stops and the process flow is redirected to the boundary event's outgoing sequence path. As per BPMN 2.0 specification, interrupting boundary events are visualized as two solid circles. + {{% alert color="info" %}}Interrupting boundary events are not available yet in the current release.{{% /alert %}} + +Boundary Events are always displayed by 2 circles (either solid or dashed) and are linked by a dotted line to the parent activity. The icon inside the event indicates the type of event. For example, a clock indicates that it is a timer boundary event. + +Below is an example of how a timer boundary event looks like: + +{{< figure src="/attachments/refguide/modeling/application-logic/workflows/boundary-events/drag-drop.png" alt="Adding boundary events through drag and drop" width="200" >}} + +Studio Pro now supports the following boundary event: + +* [Timer](/refguide/timer/) + +## Getting started + +To enable this feature, go to Studio Pro **Preferences** -> the **New features** tab -> the **Workflow editor** section and select **Enable non-interrupting timer boundary events (beta)**: + +{{< figure src="/attachments/refguide/modeling/application-logic/workflows/boundary-events/enable-boundary-events.png" alt="Enable boundary events" width="450" >}} + +You can now add boundary events to the following activities: + +* [Wait for notification](/refguide/wait-for-notification/) +* [User task](/refguide/user-task/) +* [Multi-user task](/refguide/multi-user-task/) +* [Call microflow](/refguide/call-microflow/) +* [Call workflow](/refguide/call-workflow/) + +{{% alert color="info" %}} +When a boundary event is added to an activity, this activity is also referred to as the parent activity of the boundary event. +{{% /alert %}} + +### Adding Boundary Events + +To add a boundary event to the [above-listed activities](#supported-activities), choose one of the following ways: + +* Select an event from the **Events** section in the workflow **Toolbox** and drag it onto one of the activities listed above. + + {{< figure src="/attachments/refguide/modeling/application-logic/workflows/boundary-events/drag-drop.png" alt="Adding boundary events through drag and drop" width="200" >}} + +* Double-click one of the above-listed activities to open its properties dialog box, go to the **Events** tab, and in the > **Boundary events** section, click **New** to add a new boundary event. + + {{< figure src="/attachments/refguide/modeling/application-logic/workflows/boundary-events/edit-dialog.png" alt="Adding boundary events through edit dialog" width="450" >}} + +To configure the properties of a boundary event, double-click the event to open its properties dialog box. For more information on how to configure the properties of a timer boundary event, see the [Properties](/refguide/timer/#properties) section in *Timer*. + +### Rearranging Boundary Events + +You can rearrange boundary events in the following ways: + +* Right-click a boundary event to open its context menu and click **Move boundary event left** or **Move boundary event right**, or use the Ctrl/Command + Left arrow or Ctrl/Command + Right arrow shortcut keys. + + {{< figure src="/attachments/refguide/modeling/application-logic/workflows/boundary-events/arrange-in-editor.png" width="400px" alt="Timer Event arrange in editor" >}} + +* Double-click the parent activity to open its properties dialog box and click **Move up** or **Move down** to change the order of the boundary events' paths. + + {{< figure src="/attachments/refguide/modeling/application-logic/workflows/boundary-events/arrange-in-dialog.png" width="400px" alt="Arrange non-interrupting boundary event in dialog" >}} + + {{% alert color="info" %}}This does not change the order execution of the paths, as this is dependent on the expiration of the timer.{{% /alert %}} + +## Execution + +Boundary events are initiated when their parent activity is initiated. For example, for a timer with a fixed duration, it will start its count down when the parent activity is initiated. When the parent activity is completed before any of the boundary events are triggered, none of the activities in the boundary event path will be executed and all timers will be cancelled. + +With non-interrupting boundary events, the parent activity remains active/in progress when a boundary event is triggered (which means that the parent activity is not interrupted). For example, when a timer boundary event on a user task is triggered after 2 days, this task will remain in progress and the path defined below the timer boundary event is executed. When the boundary event's path reaches the **End of boundary path**, the workflow will await the completion of the parent activity. + +## Current Limitations + +The current release of boundary events has the following limitations which are actively being developed: + +* No access to the data of the parent activity in the boundary path. For user tasks, we will add a variable `$ParentTask` which is available in the boundary event path of a user task (for example, to enable getting the assigned user that should receive a notification when a task is overdue). This is the same for `$CalledWorkflowInstance` if the parent activity is a **Call workflow** activity. +* Non-interrupting timer boundary events currently have no recurrence. They are only executed once and will not repeat. + +## Read more + +* [Workflows](/refguide/workflows/) +* [Add Date Function Calls](/refguide/add-date-function-calls/) +* [Parse and Format Date Function Calls](/refguide/parse-and-format-date-function-calls/) +* [Workflow Versioning and Conflict Mitigation](/refguide/workflow-versioning/) diff --git a/content/en/docs/refguide/modeling/application-logic/workflows/jump-to.md b/content/en/docs/refguide/modeling/application-logic/workflows/jump-to.md index 824710f395b..9b32ac484f8 100644 --- a/content/en/docs/refguide/modeling/application-logic/workflows/jump-to.md +++ b/content/en/docs/refguide/modeling/application-logic/workflows/jump-to.md @@ -2,11 +2,11 @@ title: "Jumping to Different Activities in a Workflow" url: /refguide/jump-to/ linktitle: "Jump to Different Activities" -weight: 55 +weight: 60 --- ## Introduction -Running workflow instances can be manually changed while they are in progress. This means that you can manually select what activity the workflow will continue from. This can be useful to correct wrong decisions or to continue a workflow when it is in incompatible state. You can use the [Generate Jump-to Option](/refguide/generate-jump-to-options/) microflow action to generate a list of activities the workflow can jump to and the [Apply Jump-To Option](/refguide/apply-jump-to-option/) microflow action to apply the desired changes to the workflow instance. The information is captured in a set of non-persistent entities. +Running workflow instances can be manually changed while they are in progress. This means that you can manually select what activity the workflow will continue from. This can be useful to correct wrong decisions or to continue a workflow when it is in incompatible state. You can use the [Generate Jump-to Option](/refguide/generate-jump-to-options/) microflow action to generate a list of activities the workflow can jump to and the [Apply Jump-To Option](/refguide/apply-jump-to-option/) microflow action to apply the desired changes to the workflow instance. The information is captured in a set of non-persistable entities. {{% alert color="info" %}} @@ -40,9 +40,9 @@ When the **Action** attribute is set to *JumpTo*, the **System.WorkflowCurrentAc After setting the objects, changes can be applied by calling a microflow containing the [Apply jump-to option](/refguide/apply-jump-to-option/). This will change the current activities of the associated workflow instance and queue the workflow for execution (as this happens asynchronously, execution may not happen instantly). If the workflow was in incompatible state because of versioning conflicts, the workflow is set to its previous state (for example *In Progress* or *Paused*). -## Jumping to Other Activities in Parallel Splits +## Jumping to Other Activities in Parallel Splits or in Boundary Event Paths -Jumping to other activities has a limitation in parallel splits: it is not possible to jump into or out of a current parallel split path. However, it is possible to jump to other activities in a current parallel split path including the end of the path. Activities in other parallel split paths and activities outside of the current parallel split path will not be available in the **System.WorkflowCurrentActivity_ApplicableTargets** association. +Jumping to other activities has a limitation in parallel splits and in non-interrupting boundary event paths: it is not possible to jump into or out of a current parallel split or a non-interrupting boundary event path. However, it is possible to jump to other activities within a current parallel split or a non-interrupting boundary event path, including the end of the path. Activities in other parallel split or boundary event paths, as well as activities outside of the current path, are not available in the **System.WorkflowCurrentActivity_ApplicableTargets** association. ## Read More diff --git a/content/en/docs/refguide/modeling/application-logic/workflows/perform-workflow-basic-functions.md b/content/en/docs/refguide/modeling/application-logic/workflows/perform-workflow-basic-functions.md index c7eee057a43..1ffd4f2dd1f 100644 --- a/content/en/docs/refguide/modeling/application-logic/workflows/perform-workflow-basic-functions.md +++ b/content/en/docs/refguide/modeling/application-logic/workflows/perform-workflow-basic-functions.md @@ -2,7 +2,7 @@ title: "Performing Workflow Basic Functions" linktitle: "Perform Basic Functions" url: /refguide/perform-workflow-basic-functions/ -weight: 20 +weight: 50 --- ## Introduction @@ -77,7 +77,8 @@ You can move elements around in your workflow. To do so, drag and drop an elemen This moves the whole structure of the dragged element, meaning that the element and its underlying elements are moved too. -You cannot move the first (and only) start event and the last end event. +* You cannot move the first (and only) start event and the last end event. +* You cannot move the end of a boundary event path ### Moving Outgoing Paths in a Workflow @@ -101,6 +102,9 @@ When using cut/copy/paste, note the following: * When the clipboard contents has an **Annotation**, it can only be pasted into the workflow or into individual activities that support annotations. * Pasting an activity after an **End** or **Jump** activity results in a consistency error as an **End** or **Jump** activity should be placed at the end of a flow. * Pasting activity can result in a consistency error when the next activity becomes unreachable by either placing an **End** or **Jump** activity in front of it or when all flows before a merge end with an **End** or **Jump** activity. +* Pasting a boundary event on an activity adds it to the activity. You can add maximum five boundary events to one activity. For more information, see [a list of activities that support adding boundary events](/refguide/workflow-boundary-events/#supported-activities). +* Pasting a **Jump** activity in a boundary event is only allowed when there are multiple paths going to the boundary event's ending path, otherwise a consistency error is thrown. +* Pasting an **End** event inside a non-interrupting boundary event path is not allowed. This is because an **End** event is only allowed if no other paths will be executed, which is not the case in a non-interrupting timer boundary event. ### Elements that Cannot be Cut, Copied or Pasted @@ -108,9 +112,10 @@ The following elements cannot be cut, copied or pasted in the workflow editor: * Workflow (this can be only be done in the [App Explorer](/refguide/app-explorer/#basic-functions)) * WorkflowContext -* Start activity -* End activity (the final **End activity** which is at the end of the workflow) +* Start event +* End event (the final End event which is at the end of the workflow) * Outcomes (meaning outcomes of different outgoing flows from an activity that can have several flows, for example, a Decision) +* End of boundary path (the end of a boundary event path) ## Viewing Element Properties {#view-element-properties} @@ -120,6 +125,12 @@ To view properties of an element, do one of the following: * Right-click an element and select **Properties** from the list of options that opens. * Double-click an element. +### Elements that do not have any properties + +The following element does not have any properties and context menu. + +* End of boundary path + ## Triggering a Workflow {#trigger-workflow} You can trigger a workflow [from a page](#trigger-page) or [via a microflow](#trigger-microflow). diff --git a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/_index.md b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/_index.md index be88d646dd0..747ff8891a5 100644 --- a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/_index.md +++ b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/_index.md @@ -56,7 +56,7 @@ The elements of this category are described in the table below: | Graphic | Element | Description | | ----------------------------------------------------------- | --------------------------------- | ------------------------------------------------------------ | -{{< figure src="/attachments/refguide/modeling/application-logic/workflows/workflow-elements/wait-for-timer.png" width="50px" alt="timer activity" class="no-border" >}} | [Timer](/refguide/wait-for-timer/) | Allows you to suspend the execution of a workflow path until a timer has elapsed or deadline has been reached. | +{{< figure src="/attachments/refguide/modeling/application-logic/workflows/workflow-elements/timer.png" width="50px" alt="timer activity" class="no-border" >}} | [Timer](/refguide/timer/) | Allows you to configure a certain duration or a specific date and time in a workflow. It can be used as a standalone activity on a workflow path or as a [Boundary Event](/refguide/workflow-boundary-events/) attached to another workflow activity.| ## System Actions {#system} diff --git a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/call-microflow.md b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/call-microflow.md index 141e54c9356..ec17851b14b 100644 --- a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/call-microflow.md +++ b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/call-microflow.md @@ -1,7 +1,7 @@ --- title: "Call Microflow" url: /refguide/call-microflow/ -weight: 70 +weight: 95 --- ## Introduction @@ -17,6 +17,7 @@ Call microflow properties consist of the following sections: * [General](#general) * [Parameters](#parameters) * [Outcomes](#outcomes) +* [Boundary events](#boundary-events) * [Common](#common) ### General Section {#general} @@ -37,6 +38,10 @@ Parameters of the selected microflow. Depending on the selected microflow, you w **Outcomes** depends on the return type and values of the microflow. For example, when there is not return type, you have a single outcome; for the Boolean, you have **true** and **false** outcomes; and for the enumeration – an outcome per each enumeration value and an empty one when the value is unassigned. +### Boundary Events Section {#boundary-events} + +For more information, see [Boundary Events](/refguide/workflow-boundary-events/). + ### Common Section {#common} **Name** is the internal name of the element. When referring to the element in the app you will use this name. It must be unique within the workflow, but you can have two elements with the same name in different workflows. diff --git a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/call-workflow.md b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/call-workflow.md index 49969456f47..99d7b5d984e 100644 --- a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/call-workflow.md +++ b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/call-workflow.md @@ -1,7 +1,7 @@ --- title: "Call Workflow" url: /refguide/call-workflow/ -weight: 70 +weight: 100 --- {{% alert color="info" %}} @@ -25,6 +25,7 @@ It is also possible to nest **Call Workflow** activities, that is, to use **Call Call workflow properties consist of the following sections: * [General](#general) +* [Boundary events](#boundary-events) * [Common](#common) ### General Section {#general} @@ -45,6 +46,10 @@ To change the parameter, either double-click the parameter from the list or sele {{< figure src="/attachments/refguide/modeling/application-logic/workflows/workflow-elements/call-workflow/call-workflow-parameter-example.jpg" alt="Call Workflow Parameter Example" class="no-border" >}} +### Boundary Events Section {#boundary-events} + +For more information, see [Boundary Events](/refguide/workflow-boundary-events/). + ### Common Section {#common} **Name** is the internal name of the element. When referring to the element in the app you will use this name. It must be unique within the workflow, but you can have two elements with the same name in different workflows. diff --git a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/decision-in-workflows.md b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/decision-in-workflows.md index 7e02fe7fa3c..c9e02583c78 100644 --- a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/decision-in-workflows.md +++ b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/decision-in-workflows.md @@ -1,7 +1,7 @@ --- title: "Decision in Workflows" url: /refguide/decision-in-workflows/ -weight: 40 +weight: 30 --- ## Introduction diff --git a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/jump-activity.md b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/jump-activity.md index 162ea8e35cc..74487e8f0a0 100644 --- a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/jump-activity.md +++ b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/jump-activity.md @@ -1,7 +1,7 @@ --- title: "Jump Activity" url: /refguide/jump-activity/ -weight: 60 +weight: 50 --- ## Introduction @@ -28,7 +28,7 @@ The **Caption** describes what happens in this element. It is displayed in the w **Target** is the activity that the workflow process will jump to during execution. You can select the activity you would like to go to from the drop-down menu. {{% alert color="warning" %}} -You cannot use the **Jump** activity in a [Parallel split](/refguide/parallel-split/) or in a path where it would end the workflow without any other path continuing it. +You cannot use the **Jump** activity as the final step in a [Parallel split](/refguide/parallel-split/) path, a [Boundary Event](/refguide/workflow-boundary-events/) path, or the main workflow path without providing an alternative route. Doing so prevents the path from reaching its endpoint. {{% /alert %}} ### Common Section {#common} diff --git a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/multi-user-task.md b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/multi-user-task.md index ca1b6abb3c6..05186a90c79 100644 --- a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/multi-user-task.md +++ b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/multi-user-task.md @@ -1,7 +1,7 @@ --- title: "Multi-User Task" url: /refguide/multi-user-task/ -weight: 30 +weight: 80 --- ## Introduction @@ -24,6 +24,8 @@ Multi-user task properties consist of the following sections: * [Outcomes](#outcomes) * [Task page](#task-page) * [Display information](#display-info) +* [Events](#events) +* [Boundary events](#boundary-events) * [Common](#common) ### General Section {#general} @@ -42,10 +44,6 @@ The **Due date** section properties are described in the table below: | Duration | You can set the deadline for the multi-user task with the **Due in** option, which indicates the number of hours, days, or weeks the task is due in. Possible values of the property are the following ones:
  • Hours
  • Days
  • Weeks
| | Expression | You can set a due date for the multi-user task writing an expression. For example, to set a due date to tomorrow, you can use `addDays([%CurrentDateTime%], 1)`. | -### Events Section {#events} - -**On Created** event allows you to select a microflow that is executed immediately after users have been determined for a newly created task instance. You can use this setting for a microflow that will send an email notification about the multi-user task to the assigned users. - ### Targeted Users Section {#users} #### Target Users Using {#target-users} @@ -396,6 +394,14 @@ In addition to adding new parameters, you can perform the following actions on p * **Move up** – to move a parameter up in the list of parameters and also to change its index, click **Move up** * **Move down** – to move a parameter down in the list of parameters and also to change its index, click **Move down** +### Events Section {#events} + +**On Created** event allows you to select a microflow that is executed immediately after users have been determined for a newly created task instance. You can use this setting for a microflow that will send an email notification about the multi-user task to the assigned users. + +### Boundary Events Section {#boundary-events} + +For more information, see [Boundary Events](/refguide/workflow-boundary-events/). + ### Common Section {#common} **Name** is the internal name of the multi-user task. When referring to the multi-user task in the app you will use this name. It must be unique within the workflow, but you can have two multi-user tasks with the same name in different workflows. diff --git a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/parallel-split.md b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/parallel-split.md index a44bfbe9727..620d8501830 100644 --- a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/parallel-split.md +++ b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/parallel-split.md @@ -1,7 +1,7 @@ --- title: "Parallel Split" url: /refguide/parallel-split/ -weight: 50 +weight: 40 --- ## Introduction diff --git a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/wait-for-timer.md b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/timer.md similarity index 67% rename from content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/wait-for-timer.md rename to content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/timer.md index 2f68771b56f..c63be726046 100644 --- a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/wait-for-timer.md +++ b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/timer.md @@ -1,7 +1,7 @@ --- title: "Timer" url: /refguide/timer/ -weight: 30 +weight: 90 aliases: - /refguide/wait-for-timer/ #If moving or renaming this doc file, implement a temporary redirect and let the respective team know they should update the URL in the product. See Mapping to Products for more details. @@ -13,11 +13,17 @@ aliases: **Wait for timer** was renamed to **Timer** in Studio Pro 10.14.0. {{% /alert %}} -The **Timer** activity allows you to suspend a workflow path for a configurable duration or until a certain date and time. +**Timer** allows you to configure a certain duration or a specific date and time in a workflow. -For example, when a new salary legislation is about to take effect, a timer can be set until the date of effect to actually adjust the values in the system. +It can be used in the following two ways: -{{< figure src="/attachments/refguide/modeling/application-logic/workflows/workflow-elements/wait-for-timer/wait-for-timer-example.png" alt="Timer" width="250" class="no-border" >}} +* **Timer** can be used as a standalone activity on a workflow path. It suspends the workflow path for a configurable duration or until a set date and time. For example, when a new salary legislation is about to take effect, a timer can be set until the date of effect to actually adjust the values in the system. + + {{< figure src="/attachments/refguide/modeling/application-logic/workflows/workflow-elements/timer/standalone-timer-activity.png" alt="Standalone Timer activity" width="250" >}} + +* **Timer** can also be attached to another workflow activity as a [Boundary Event](/refguide/workflow-boundary-events/) (in Studio Pro 10.15.0 and above): + + {{< figure src="/attachments/refguide/modeling/application-logic/workflows/workflow-elements/timer/timer-boundary-event.png" alt="Timer boundary event" width="300" >}} ## Properties @@ -29,11 +35,11 @@ For example, when a new salary legislation is about to take effect, a timer can ### General Section {#general} -The **Caption** describes what happens in this element. It is displayed in the workflow element to make the **Timer** activity easier to read and understand without the need to add annotations. +The **Caption** describes what happens in this element. It is displayed in the workflow element to make the **Timer** easier to read and understand without the need to add annotations. ### Timer Section {#timer} -The **Timer** property defines at which time the workflow path continues. With this property, you can set the timer in two ways: you can set a certain duration, or a certain date and time with an expression. When an activity before the timer finishes and the workflow path reaches the timer, the configured duration or date and time will be scheduled to take effect. +The **Timer** property can be configured in two ways: you can set a certain duration or a date and time with an expression. When the workflow path reaches the timer, the configured duration or date and time will be scheduled to take effect. The **Timer** properties are described in the table below: @@ -44,31 +50,40 @@ The **Timer** properties are described in the table below: ### Common Section {#common} +{{% alert color="info" %}} +This section is only applicable when **Timer** is used as a standalone activity on a workflow path. +{{% /alert %}} + **Name** is the internal name of the **Timer**. When referring to the activity in an application, you will use this name. It must be unique within the workflow, but you can have two **Timer** activities with the same name in different workflows. ## Timer Expiration {#timer-expiration} -When a **Timer** activity expires, it behaves differently depending on the state of the workflow: +When a **Timer** expires, it behaves differently depending on the state of the workflow: * When a timer is set on an in-progress workflow, the workflow continues when the timer expires. * When a time is set on a paused workflow and when the timer expires, the workflow only continues after the workflow is in progress again. -### Workflow Incompatibility - -When a **Timer** activity is added to the workflow definition and the application is redeployed, a validation on already running workflow instances is performed. When the **Timer** activity has been added before the currently in-progress activity, the workflow becomes incompatible. The conflict/incompatibility validation is analogous to other activities added before an in-progress activity. For more information, see [Workflow Versioning and Conflict Mitigation](/refguide/workflow-versioning/). - -When a **Timer** activity is removed from the workflow definition and the application is redeployed, on initiation of the application, it validates if there are any running timers (that is, active timers that are initiated but have not reached their defined date and time). In this case, the workflow becomes incompatible and a warning log is created. For information on how to resolve a conflict when an activity is removed, see [Workflow Versioning and Conflict Mitigation](/refguide/workflow-versioning/). - ### Specific Workflow State Cases The following cases do not trigger a continuation of the workflow path when timer expires. * Expiration in a workflow that is aborted. -* Expiration in a workflow that is incompatible. (After the workflow resumes, the workflow path continues normally.) +* Expiration in a workflow that is incompatible - After the workflow resumes, the workflow path continues normally. * Expiration in a workflow that is jumped from the timer to a different activity. +* Expiration in a workflow that is completed - This can only occur when **Timer** is used as a [Boundary Event](/refguide/workflow-boundary-events/). * A workflow is restarted and a previous timer was still scheduled. +### Workflow Incompatibility + +{{% alert color="info" %}} +This section is only applicable when **Timer** is used as a standalone activity on a workflow path. +{{% /alert %}} + +When a **Timer** activity is added to the workflow definition and the application is redeployed, a validation on already running workflow instances is performed. When the **Timer** activity has been added before the currently in-progress activity, the workflow becomes incompatible. The conflict/incompatibility validation is analogous to other activities added before an in-progress activity. For more information, see [Workflow Versioning and Conflict Mitigation](/refguide/workflow-versioning/). + +When a **Timer** activity is removed from the workflow definition and the application is redeployed, on initiation of the application, it validates if there are any running timers (that is, active timers that are initiated but have not reached their defined date and time). In this case, the workflow becomes incompatible and a warning log is created. For information on how to resolve a conflict when an activity is removed, see [Workflow Versioning and Conflict Mitigation](/refguide/workflow-versioning/). + ## Read More * [Workflows](/refguide/workflows/) diff --git a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/user-task.md b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/user-task.md index 2c840b64cf9..8b3c372a822 100644 --- a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/user-task.md +++ b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/user-task.md @@ -1,7 +1,7 @@ --- title: "User Task" url: /refguide/user-task/ -weight: 30 +weight: 70 --- ## Introduction @@ -22,11 +22,12 @@ User task properties consist of the following sections: * [General](#general) * [Due date](#due-date) -* [Events](#events) * [Targeted users](#users) * [Outcomes](#outcomes) * [Task page](#task-page) * [Display information](#display-info) +* [Events](#events) +* [Boundary events](#boundary-events) * [Common](#common) ### General Section {#general} @@ -45,10 +46,6 @@ The **Due date** section properties are described in the table below: | Duration | You can set the deadline for the user task with the **Due in** option, which indicates the number of hours, days, or weeks the task is due in. Possible values of the property are the following ones:
  • Hours
  • Days
  • Weeks
| | Expression | You can set a due date for the user task writing an expression. For example, to set a due date to tomorrow, you can use `addDays([%CurrentDateTime%], 1)`. | -### Events Section {#events} - -**On Created** event allows you to select a microflow that is executed immediately after users have been determined for a newly created task instance. You can use this setting for a microflow that will send an email notification about the user task to the assigned users. - ### Targeted Users Section {#users} #### Target Users Using {#target-users} @@ -139,6 +136,14 @@ In addition to adding new parameters, you can perform the following actions on p * **Move up** – to move a parameter up in the list of parameters and also to change its index, click **Move up** * **Move down** – to move a parameter down in the list of parameters and also to change its index, click **Move down** +### Events Section {#events} + +**On Created** event allows you to select a microflow that is executed immediately after users have been determined for a newly created task instance. You can use this setting for a microflow that will send an email notification about the user task to the assigned users. + +### Boundary Events Section {#boundary-events} + +For more information, see [Boundary Events](/refguide/workflow-boundary-events/). + ### Common Section {#common} **Name** is the internal name of the user task. When referring to the user task in the app you will use this name. It must be unique within the workflow, but you can have two user tasks with the same name in different workflows. diff --git a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/wait-for-notification.md b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/wait-for-notification.md index f18d65b369c..b4c7b55878d 100644 --- a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/wait-for-notification.md +++ b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-elements/wait-for-notification.md @@ -1,7 +1,7 @@ --- title: "Wait for Notification" url: /refguide/wait-for-notification/ -weight: 30 +weight: 60 #If moving or renaming this doc file, implement a temporary redirect and let the respective team know they should update the URL in the product. See Mapping to Products for more details. --- @@ -22,12 +22,17 @@ However, the whole parallel split will still suspend on the merge of the split u **Wait for notification** properties consist of the following sections: * [General](#general) +* [Boundary events](#boundary-events) * [Common](#common) ### General Section {#general} The **Caption** describes what happens in this element. It is displayed in the workflow element to make the **Wait for notification** activity easier to read and understand without the need to add annotations. +### Boundary Events {#boundary-events} + +For more information, see [Boundary Events](/refguide/workflow-boundary-events/). + ### Common Section {#common} **Name** is the internal name of the wait for notification activity. When referring to the wait for notification in the app, you will use this name. It must be unique within the workflow, but you can have two wait for notification activities with the same name in different workflows. diff --git a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-engine.md b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-engine.md index a8e28b51d5d..61d9c6ad02d 100644 --- a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-engine.md +++ b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-engine.md @@ -1,7 +1,7 @@ --- title: "Workflow Engine" url: /refguide/workflow-engine/ -weight: 35 +weight: 30 --- ## Introduction @@ -136,6 +136,16 @@ All microflows that are run as part of the workflow are executed as an asynchron Failed workflows can be retried using the **Retry workflow** option of the [Change Workflow State microflow activity](/refguide/change-workflow-state/#operation). This option will attempt to run the user task from the point it failed. When the user task failed because no users were targeted, it is possible to manually correct user targeting and then use the **Retry Workflow** option to set the workflow into the in-progress state again. +#### Boundary Events {#boundary-events} + +A [boundary event](/refguide/workflow-boundary-events/) is attached to the boundary of an activity. Once the activity begins, the boundary events are initialized. For example, with a timer boundary event, when the set timer expires, the workflow engine checks if the parent activity is in progress. If the parent activity has already been completed, aborted, or has failed, the trigger will be ignored and the boundary path will not be executed. If the workflow is paused or in an incompatible state, the boundary event path will commence its execution once the workflow resumes an in-progress state. Otherwise, if the activity is still ongoing, the boundary event path will initiate its execution. + +Each boundary event can have only one active instance of the event path at a time. + +If there are boundary event paths that have not yet been completed and the workflow's main path ends, the ongoing boundary event paths and their activities will be aborted. This will also occur if the workflow is aborted, retried, or restarted. + +With non-interrupting boundary events, the parent activity remains active/in-progress when an event is triggered (which means that the parent activity is not interrupted). For example, when a timer boundary event on a user task is triggered after 2 days, this task will remain in progress and the path defined below the timer boundary event is executed. When the boundary event path reaches the **End of Boundary Path**, the workflow will await the completion of the parent activity. + #### Measures Against Endless Loops The [Jump activity](/refguide/jump-activity/) allows the workflow to jump to another activity of the same workflow. Jumping back to an earlier activity can create endless loops if defined incorrectly. To prevent endless loops occupying the Workflow Engine, the Workflow Engine executes only a limited amount of activities in the workflow (default number is 50, but it can be changed using the custom Runtime Server setting `com.mendix.workflow.MaxActivityExecutions`). When the limit is reached, the workflow execution stops and the workflow instance is queued for re-execution (which means that it is put at the end of the queue). This queuing mechanism allows other workflow instances to proceed. diff --git a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-events.md b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-events.md index 551cb87817e..01dd3675b1a 100644 --- a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-events.md +++ b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-events.md @@ -1,7 +1,7 @@ --- title: "Workflow Events" url: /refguide/workflow-events/ -weight: 55 +weight: 40 --- ## Introduction @@ -47,10 +47,10 @@ The **WorkflowRecord** entity represents workflow instance data at a specific ex {{< figure src="/attachments/refguide/modeling/application-logic/workflows/workflow-events/workflow-event-entities.png" max-width=100% >}} {{% alert color="warning" %}} -All associations to the above-mentioned non-persistent entities (with the exception of a sub **WorkflowRecord**) are associations to "live" objects, whose state may have been updated since the event occurred. +All associations to the above-mentioned non-persistable entities (with the exception of a sub **WorkflowRecord**) are associations to "live" objects, whose state may have been updated since the event occurred (for example, when receiving the **User Task Ended** event, the **WorkflowUserTask** instance may already be deleted). {{% /alert %}} -These non-persistent entities are provided as the default input parameters to the microflow specified in the event handler configuration: +These non-persistable entities are provided as the default input parameters to the microflow specified in the event handler configuration: {{< figure src="/attachments/refguide/modeling/application-logic/workflows/workflow-events/event-handler-microflow-parameters.png" max-width=80% >}} @@ -110,6 +110,7 @@ The event types listed in the tables below correspond to the enumeration values | Wait for Notification Ended | Triggered in the following situations:
  • Notification is received successfully
  • Workflow suspended on **Wait for notification** activity is aborted, restarted, or when jump-to option is applied
  • Parallel path containing **Wait for notification** activity is removed and workflow is continued | See [Wait for Notification](/refguide/wait-for-notification/) | | Timer Started | Triggered in the following cases:
    • Timer is successfully scheduled
    • Delay expression results in an empty value
    • Delay expression is invalid (for example, divide by zero error in an expression) | See [Timer](/refguide/timer/) | | Timer Ended | Triggered in following cases:
      • Timer has expired
      • Delay expression results in an empty value
      • Delay expression in invalid (for example, divide by zero error in expression)
      • Workflow suspended on **Timer** activity is aborted, restarted, or when jump-to option is applied
      • Parallel path containing **Timer** activity is removed and workflow is continued | See [Timer](/refguide/timer/) | +| Non-Interrupting Timer Event Executed | Triggered when the scheduled timer for the non-interrupting boundary event expires | See [Boundary Events](/refguide/workflow-boundary-events/) | | User Task Started | Triggered in following cases:
        • User targeting is evaluated
        • On-created microflow is successfully scheduled | See [User Task](/refguide/user-task/) or [Multi-User Task](/refguide/multi-user-task/) | | Multi-User Task Outcome Selected | Triggered when a vote is specified for a multi-user task | | | User Task Ended | Triggered in following cases:
          • User task fails
          • Workflow suspended on a user task is aborted, restarted, or when jump-to option is applied
          • Parallel path containing a user task is removed and workflow is continued | See [User Task](/refguide/user-task/) or [Multi-User Task](/refguide/multi-user-task/)

            User task can fail due to the following reasons:
            • On-created microflow fails
            • When number of required users is more than the targeted users in a multi-user task

              {{% alert color="info" %}}**WorkflowActivityRecord** for failure cases will have the **Failed** activity state.

              **WorkflowActivityRecord** will only have one actor in the case of a single-user task.{{% /alert %}} | diff --git a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-how-to-configure.md b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-how-to-configure.md index 010ce56e18e..04f33a0bc87 100644 --- a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-how-to-configure.md +++ b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-how-to-configure.md @@ -3,7 +3,7 @@ title: "Configuring a Workflow in Studio Pro for the Employee Onboarding Process linktitle: "Workflow for Employee Onboarding" url: /refguide/workflow-how-to-configure/ description: "Describes how to configure a workflow in Mendix Studio Pro." -weight: 70 +weight: 80 aliases: - /howto/logic-business-rules/workflow-how-to-configure/ --- diff --git a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-properties.md b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-properties.md index f935c51c037..0b05769a335 100644 --- a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-properties.md +++ b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-properties.md @@ -1,7 +1,7 @@ --- title: "Workflow Properties" url: /refguide/workflow-properties/ -weight: 10 +weight: 25 --- ## Introduction diff --git a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-security.md b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-security.md index baa1cd781d4..5dc89387d9c 100644 --- a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-security.md +++ b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-security.md @@ -3,7 +3,7 @@ title: "Configuring Security for a Workflow Process" url: /refguide/workflow-security/ linktitle: "Configure Workflow Security" description: "Describes how to configure security for a workflow in Mendix Studio Pro." -weight: 30 +weight: 110 --- ## Introduction diff --git a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-setting-up-app.md b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-setting-up-app.md index 7c00cecffea..e36ee5cff9d 100644 --- a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-setting-up-app.md +++ b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-setting-up-app.md @@ -3,7 +3,7 @@ title: "Adding a Workflow to an Existing App: Using Workflow Commons" linktitle: "Add Workflow to Existing App" url: /refguide/workflow-setting-up-app/ description: "Describes how to use Workflow Commons in an existing app in Mendix Studio Pro." -weight: 40 +weight: 90 #If moving or renaming this doc file, implement a temporary redirect and let the respective team know they should update the URL in the product. See Mapping to Products for more details. --- diff --git a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-versioning.md b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-versioning.md index 15b9e13e2bb..b56324a1375 100644 --- a/content/en/docs/refguide/modeling/application-logic/workflows/workflow-versioning.md +++ b/content/en/docs/refguide/modeling/application-logic/workflows/workflow-versioning.md @@ -1,7 +1,7 @@ --- title: "Workflow Versioning and Conflict Mitigation" url: /refguide/workflow-versioning/ -weight: 60 +weight: 120 --- ## Introduction @@ -150,7 +150,7 @@ You can do one of the following: #### Current Activity Moved out of Path -When an app developer moves activities out of a **Parallel Split** path, currently running workflow instances that are executing the moved activity cannot complete the **Parallel Split**. +When an app developer moves activities out of a **Parallel Split** path or a non-interrupting boundary event path, currently running workflow instances that are executing the moved activity cannot complete the **Parallel Split** or the non-interrupting boundary event. Similarly, if an activity is moved from the parent path into a boundary event path, the currently running workflow instances may not be able to complete properly. You can do one of the following: diff --git a/content/en/docs/refguide/modeling/domain-model/entities/validation-rules.md b/content/en/docs/refguide/modeling/domain-model/entities/validation-rules.md index 06e76a13ae0..1b943f55506 100644 --- a/content/en/docs/refguide/modeling/domain-model/entities/validation-rules.md +++ b/content/en/docs/refguide/modeling/domain-model/entities/validation-rules.md @@ -94,7 +94,7 @@ The uniqueness constraint will also take into account the way that the underlyin When you add a uniqueness constraint to an entity which already contains data, all the existing objects for the affected entity will be checked on deployment for the uniqueness of the attribute. If you have, for example, applied uniqueness validation to an insurance number and there are multiple people with the same insurance number then: * if you deploy the app from Studio Pro, an error will be shown on deployment -* if you deploy the app from a deployment package (for example in the Mendix cloud), the app will not start and errors will be written to the log +* if you deploy the app from a deployment package (for example in Mendix Cloud), the app will not start and errors will be written to the log {{< figure src="/attachments/refguide/modeling/domain-model/entities/validation-rules/startup-error.png" class="no-border" >}} diff --git a/content/en/docs/refguide/modeling/integration/odata-services/build-odata-apis.md b/content/en/docs/refguide/modeling/integration/odata-services/build-odata-apis.md index 4b9af692930..9f276998ba1 100644 --- a/content/en/docs/refguide/modeling/integration/odata-services/build-odata-apis.md +++ b/content/en/docs/refguide/modeling/integration/odata-services/build-odata-apis.md @@ -411,7 +411,7 @@ In this example, you can publish a single REST resource that combines data from {{< figure src="/attachments/refguide/modeling/integration/build-odata-apis/get-call.png" class="no-border" >}} -5. You have decoupled your REST resource from your domain model persistent entities. You can change your entities and use the OQL query to ensure the published data remains backwards compatible. +5. You have decoupled your REST resource from your domain model persistable entities. You can change your entities and use the OQL query to ensure the published data remains backwards compatible. The Java action used above adds the OData query to the original OQL query as follows: diff --git a/content/en/docs/refguide/modeling/menus/edit-menu/preferences-dialog.md b/content/en/docs/refguide/modeling/menus/edit-menu/preferences-dialog.md index e4954acf335..95b962c188a 100644 --- a/content/en/docs/refguide/modeling/menus/edit-menu/preferences-dialog.md +++ b/content/en/docs/refguide/modeling/menus/edit-menu/preferences-dialog.md @@ -246,12 +246,6 @@ In Studio Pro 10.12.0, Translation Generator was introduced as an experimental f This setting allows you to set the beta version as the default editor. -### Page Editor - -In Studio Pro version 10.9, X-ray mode was introduced to the page editor in beta. Enable this option to view your app in X-ray mode: a more detailed version of Design mode. - -For more information, see [X-Ray Mode](/refguide/page/#x-ray-mode). - ### System Texts Editor In Studio Pro 10.14.0, the web version of the system texts editor was released as an experimental feature. Enable this option to use the web version of the editor. diff --git a/content/en/docs/refguide/modeling/menus/help-menu/_index.md b/content/en/docs/refguide/modeling/menus/help-menu/_index.md index ac3858c6290..79fc3114e67 100644 --- a/content/en/docs/refguide/modeling/menus/help-menu/_index.md +++ b/content/en/docs/refguide/modeling/menus/help-menu/_index.md @@ -17,6 +17,6 @@ The **Help** menu items are described in the table below: | **Help** (F1) | Opens the documentation page about the currently selected element. If an entity is selected, for example, the documentation for entities will be shown. | | **Help Contents** | Opens the home page of the documentation in the default web browser. | | **Ask a Question** | Opens the Mendix Community in the default web browser. | -| **Support Tools** | Provides tools that can be used to share with Mendix Support, especially when you encounter issues with performance or high memory consumption. Support tools include the following:
              • [Performance Logging](/refguide/performance-logging/) – logs performance measurements to key functionalities (such as opening and closing microflow editors and moving items around in the App Explorer) that can help identify performance degradations.
              • [Profiling](/refguide/profiling/) – runs a performance profiler session from within Studio Pro without installing the actual profiler on your machine. This session generates a report written to disk, which you can then send to the Mendix Support teams.
              • **Optimize MPR** *(introduced in Mendix version 10.6.0)* – starts an action that will remove allocated memory resources clean from a project file (.mpr) if they are from no longer required.
              • **Convert to full clone…** *(introduced in Mendix version 10.12.0)* – starts an action that will turn a [partially cloned](/refguide/clone-type/) application into full one.
              • **Project Context** *(introduced in Mendix version 10.13.0)* – shows a pane containing information about part of the background memory of studio pro.
              • **Background** *(introduced in Mendix version 10.13.0)* – shows a pane containing information about current and previous background tasks.
              | +| **Support Tools** | Provides tools that can be used to share with Mendix Support, especially when you encounter issues with performance or high memory consumption. Support tools include the following:
              • [Performance Logging](/refguide/performance-logging/) – logs performance measurements to key functionalities (such as opening and closing microflow editors and moving items around in the App Explorer) that can help identify performance degradations.
              • [Profiling](/refguide/profiling/) – runs a performance profiler session from within Studio Pro without installing the actual profiler on your machine or captures a memory snapshot. For more information, see [Profiling](/refguide/profiling/).
              • **Optimize MPR** *(introduced in Studio Pro version 10.6.0)* – starts an action that will remove allocated memory resources clean from a project file (.mpr) if they are from no longer required.
              • **Convert to full clone…** *(introduced in Studio Pro version 10.12.0)* – starts an action that will turn a [partially cloned](/refguide/clone-type/) application into full one.
              • **Project Context** *(introduced in Studio Pro version 10.15.0)* – shows a pane containing information about part of the background memory of Studio Pro.
              • **Background** *(introduced in Studio Pro version 10.15.0)* – shows a pane containing information about current and previous background tasks.
              • **Collect version control data** *(introduced in Studio Pro version 10.15.0)* – helps you to collect basic version control data kept in the logs of Studio Pro.
              | | **Open Log File Directory** | Opens the log files written by Studio Pro that can be used to see what might be the reason something went wrong in Studio Pro. Studio Pro retains these logs for the last 30 days, with files organized from the most recent to the oldest. Log files can also be used to share with Mendix Support when you submit a ticket. | | **About Mendix Studio Pro** | Shows information about the current version of Mendix Studio Pro. | diff --git a/content/en/docs/refguide/modeling/menus/help-menu/profiling.md b/content/en/docs/refguide/modeling/menus/help-menu/profiling.md index 2acc4688143..45b67c98a3a 100644 --- a/content/en/docs/refguide/modeling/menus/help-menu/profiling.md +++ b/content/en/docs/refguide/modeling/menus/help-menu/profiling.md @@ -7,16 +7,16 @@ description: "Describes how to run a performance profiler session on the local m ## Introduction {{% alert color="info" %}} -This feature is not yet supported on native MacOS machines. +These features are not yet supported on native macOS machines. {{% /alert %}} -To investigate performance issues that are reproduced on your local machine, you can run a performance profiler session from within Studio Pro without installing the actual profiler on your machine. This session generates a report written to disk, which you can then send to the Mendix Support teams. Mendix developers will load this report on their machines to investigate the performance issues you experienced locally. - -The profiling feature can be reached by clicking **Help** > **Support Tools** > **Profiling**: +The **Profiling** section of the **Help** menu > **Support Tools** allows you to run a performance profiler session and to capture a memory snapshot: {{< figure src="/attachments/refguide/modeling/menus/help-menu/profiling/profiling-menu.png" class="no-border" width="500" >}} -## Run a Performance Profiler Session +### Run a Performance Profiler Session (Start Profiling/Stop Profiling) + +To investigate performance issues that are reproduced on your local machine, you can run a performance profiler session from within Studio Pro without installing the actual profiler on your machine. This session generates a report written to disk, which you can then send to the Mendix Support teams. Mendix developers will load this report on their machines to investigate the performance issues you experienced locally. When you click **Start profiling**, you are presented with a dialog box that asks you to choose a location on the local disk to save the performance reports to. Choose a local spot on your disk and avoid selecting a network drive. @@ -27,3 +27,15 @@ When you are done, click **Profiling** > **Stop profiling**. Zip all the files y {{% alert color="info" %}} Profiling can be started at any time (when you start to see performance issues) and does not need to start immediately after running Studio Pro. {{% /alert %}} + +### Capture Memory Snapshot + +You can capture a snapshot of memory consumed by Studio Pro. The snapshot is written to disk, which you can then send to the Mendix Support teams. Mendix developers will load this snapshot on their machines to investigate the issues related to memory consumption. + +When you click **Profiling** > **Capture Memory Snapshot**, you see a dialog box that asks you to choose a location on the local disk to save the memory snapshot to. Avoid selecting a network drive. + +When the operation is complete, zip the file from the directory that are opened (the directory you chose when clicking **Capture Memory Snapshot**), then send the archive to Mendix Support. + +{{% alert color="info" %}} +The **Capture Memory Snapshot** menu is not available when a performance profiler session is in progress. Stop the running session to capture memory snapshot. +{{% /alert %}} \ No newline at end of file diff --git a/content/en/docs/refguide/modeling/pages/authentication-widgets/_index.md b/content/en/docs/refguide/modeling/pages/authentication-widgets/_index.md index 14bb4546121..cfcc4f5ec70 100644 --- a/content/en/docs/refguide/modeling/pages/authentication-widgets/_index.md +++ b/content/en/docs/refguide/modeling/pages/authentication-widgets/_index.md @@ -23,7 +23,7 @@ The **Authentication** category contains the following widgets: * [Sign-in button](/refguide/sign-in-button/) – sends a user’s login id and password to the server for authentication {{< figure src="/attachments/refguide/modeling/pages/authentication-widgets/sign-in-button-example.png" alt="Sign-In Button Example" class="no-border" >}} -* **Sign-out button** – signs the currently signed-in user out. The sign-out button is a button with an on-click event set to **Sign out**. For more information on on-click events, see the [On Click Event and Events Section](/refguide/on-click-event/). For details on button properties. see [Button Properties](/refguide/button-properties/). +* **Sign-out button** – signs the currently signed-in user out. The sign-out button is a button with an on-click event set to **Sign out**. For more information on on-click events, see the [On Click Event and Events Section](/refguide/on-click-event/). For details on button properties, see [Button Properties](/refguide/button-properties/). * [Validation message](/refguide/validation-message/) – informs a user about authentication failures if any diff --git a/content/en/docs/refguide/modeling/pages/common-widget-properties.md b/content/en/docs/refguide/modeling/pages/common-widget-properties.md index ac355e784e4..eb23d33fb72 100644 --- a/content/en/docs/refguide/modeling/pages/common-widget-properties.md +++ b/content/en/docs/refguide/modeling/pages/common-widget-properties.md @@ -85,6 +85,10 @@ You can see which widgets in a page have styling applied via the style or class On a DataGrid column, a dynamic class is only applied to the `` element, not to the `` element (in contrast to the class property). {{% /alert %}} +{{% alert color="info" %}} +In Studio Pro 10.15 and above, dynamic classes do not require a data container. +{{% /alert %}} + ### Documentation{#documentation} Some widgets, for example snippets and building blocks, have a **Documentation** property which can be used to store developer documentation. This can be used to explain to other developers how to use these widgets. End-users will never see this documentation. @@ -393,6 +397,10 @@ For example, you might want a button to only be visible if a condition is met. A Note that the expression is evaluated in the browser, and hence, we advise against using "secret" values (like access keys) in it. In particular, we disallow usages of [constants](/refguide/constants/). Also, client-side expressions currently do not support all the functions that are available in the microflows. Please refer to an autocomplete list to know what functions are supported in your version. +{{% alert color="info" %}} +In Studio Pro 10.15 and above, dynamic classes do not require a data container. +{{% /alert %}} + #### Module Roles The widget can be made visible to a specific of the user roles available in your application. When activated, this setting will render the widget invisible to all users that are not linked to one of the selected user roles. diff --git a/content/en/docs/refguide/modeling/pages/page/_index.md b/content/en/docs/refguide/modeling/pages/page/_index.md index 65765124373..c8c5ca24d3f 100644 --- a/content/en/docs/refguide/modeling/pages/page/_index.md +++ b/content/en/docs/refguide/modeling/pages/page/_index.md @@ -191,19 +191,13 @@ It has the following features which are not available in **Structure mode**: * **X-ray mode** to visualize the structure of a page -#### X-Ray Mode (Beta) {#x-ray-mode} +#### X-Ray Mode {#x-ray-mode} -{{% alert color="info" %}} -**X-ray mode** is currently in beta. The feature is enabled by default on Mac and disabled by default on Windows. It can be enabled or disabled in **Preferences** > **New features**. - -When the feature is disabled, the button to toggle **X-ray mode** is not shown in the top bar and the keyboard shortcuts do not work. -{{% /alert %}} - -Before this feature, you could either work in **Structure** mode and see a completely detailed view of your app in progress or **Design** mode which gave you a more simplified view of the app as your end-user might see it. +**Structure** mode allows you to see a completely detailed view of your app in progress. **Design** mode gives you a more simplified view of the app as your end-user might see it. **X-ray mode** is a way to visualize certain structures of a page while in **Design mode**. It offers you a similar experience as **Design** mode, but you get more detailed information on structures and page elements. -When enabled, certain widgets appear bigger with an extra outline so they are easier to work with. **X-ray mode** affects structures such as **Container**, **Layout Grid**, and **Data View** widgets. These extra effects are removed when **X-ray mode** is turned off. +When enabled, certain widgets appear larger (and are outlined bodly) so they are easier to work with. **X-ray mode** affects structures such as **Container**, **Layout Grid**, and **Data View** widgets. In addition, widgets such as **Data View** will show information on their data sources, even if the widget is not currently selected. These extra effects are removed when **X-ray mode** is turned off. **X-ray mode** can be enabled and disabled by clicking the button in the top bar from **Design** mode. It can also be enabled or disabled using these shortcuts: diff --git a/content/en/docs/refguide/modeling/resources/task-queue.md b/content/en/docs/refguide/modeling/resources/task-queue.md index b4c8bc63c73..d4155912efa 100644 --- a/content/en/docs/refguide/modeling/resources/task-queue.md +++ b/content/en/docs/refguide/modeling/resources/task-queue.md @@ -256,7 +256,7 @@ You can use the [Task Queue Helpers](https://marketplace.mendix.com/link/compone Task queues have the following limitations: * Microflows or Java actions that are executed in the background execute as soon as possible in the order they were created, but possibly in parallel. They are consumed in FIFO order, but then executed in parallel in case of multiple threads. If you want to ensure that only a single microflow or action is executed at any point in time, you can do this by [creating a Tasks Queue](#create-queue) with a cluster wide scope and a single thread. -* Microflows or Java actions that are executed in the background can *only* use the following types of parameters: Boolean, Integer/Long, Decimal, String, Date and time, Enumeration, committed Persistent Entity. +* Microflows or Java actions that are executed in the background can *only* use the following types of parameters: Boolean, Integer/Long, Decimal, String, Date and time, Enumeration, committed Persistable Entity. * Background microflows or Java actions will start execution as soon as the transaction in which they are created is completed. This ensures that any data that is needed by the background microflow or Java action is committed as well. It is not possible to start a background microflow or Java action immediately, halfway during a transaction. Note that if the transaction is rolled back, the task is not executed at all. ### Behavior If App Stops Unexpectedly @@ -273,7 +273,7 @@ The tasks are then consumed by executors that perform a `SELECT FOR UPDATE SKIP After the task has been executed, it is moved to be an object of the `System.ProcessedQueueTask` entity with `Status` `Completed` or `Failed`. If the task failed with an exception, this is included in the `ErrorMessage` attribute. -Arguments are stored in the `Arguments` attribute as JSON values. Arguments can be any primitive type ([variable](/refguide/variable-activities/)) or a committed persistent object, which is included in the `Arguments` field by its Mendix identifier. Upon execution of the task, the corresponding object is retrieved from the database using the Mendix identifier. For this reason the persistent object must be committed before the task executes, because otherwise a runtime exception will occur. +Arguments are stored in the `Arguments` attribute as JSON values. Arguments can be any primitive type ([variable](/refguide/variable-activities/)) or a committed persistable object, which is included in the `Arguments` field by its Mendix identifier. Upon execution of the task, the corresponding object is retrieved from the database using the Mendix identifier. For this reason the persistable object must be committed before the task executes, because otherwise a runtime exception will occur. When a node crashes, this is eventually detected by another cluster node, because it no longer updates its heartbeat timestamp. At this point the other node will reset all tasks that were running on the crashed node. The reset performs the following actions: diff --git a/content/en/docs/refguide/modeling/security/_index.md b/content/en/docs/refguide/modeling/security/_index.md index e3d2c8f8f7b..ca1913acae6 100644 --- a/content/en/docs/refguide/modeling/security/_index.md +++ b/content/en/docs/refguide/modeling/security/_index.md @@ -67,7 +67,7 @@ The [Administration module](https://marketplace.mendix.com/link/component/23513) ### Authentication via the Mendix Identity Provider -A second approach is to have end-users authenticate via the Mendix Identity Provider through single sign on ([SSO](/appstore/modules/mendix-sso/)) using their Mendix credentials. This is the default option for developers who deploy their application to the Mendix Cloud. +A second approach is to have end-users authenticate via the Mendix Identity Provider through single sign on ([SSO](/appstore/modules/mendix-sso/)) using their Mendix credentials. This is the default option for developers who deploy their application to Mendix Cloud. ### Authentication via a Third-Party Identity Provider diff --git a/content/en/docs/refguide/modeling/security/app-security/_index.md b/content/en/docs/refguide/modeling/security/app-security/_index.md index 22f5ff958e2..9a3641a912b 100644 --- a/content/en/docs/refguide/modeling/security/app-security/_index.md +++ b/content/en/docs/refguide/modeling/security/app-security/_index.md @@ -31,7 +31,7 @@ The security level defines if security is switched off or on for the app and whi | Production | Full security is applied. | Administrator and anonymous access, user roles, security for forms, microflows, entities, and reports. | {{% alert color="warning" %}} -For all licensed Mendix Cloud nodes, you need to use the **Production** security level and configure all security settings accordingly. Security levels **Off** and **Prototype/demo** are only allowed when testing locally, when deploying a Free App, and in cloud environments outside the Mendix Cloud which are specifically set up with **Development mode**. +For all licensed Mendix Cloud nodes, you need to use the **Production** security level and configure all security settings accordingly. Security levels **Off** and **Prototype/demo** are only allowed when testing locally, when deploying a Free App, and in cloud environments outside Mendix Cloud which are specifically set up with **Development mode**. {{% /alert %}} ### Settings Availability for Different Security Levels diff --git a/content/en/docs/refguide/modeling/security/app-security/administrator.md b/content/en/docs/refguide/modeling/security/app-security/administrator.md index 09766dc9fff..0bcd5353d96 100644 --- a/content/en/docs/refguide/modeling/security/app-security/administrator.md +++ b/content/en/docs/refguide/modeling/security/app-security/administrator.md @@ -42,7 +42,7 @@ This password is only used when Mendix is running locally. Changing the password #### Free Apps -The MxAdmin user is not created automatically when you deploy your app as a Free App. For licensed environments the MxAdmin user is created when you change the password for the first time, for example through the [Environment Details](/developerportal/deploy/environments-details/) for the Mendix Cloud. +The MxAdmin user is not created automatically when you deploy your app as a Free App. For licensed environments the MxAdmin user is created when you change the password for the first time, for example through the [Environment Details](/developerportal/deploy/environments-details/) for Mendix Cloud. When your Free App *has never been deployed and the database still needs to be created*, any data snapshot you have added to your app will be restored to the database of your Free App. You can use this process to add the MxAdmin user to your Free App by doing the following: @@ -80,7 +80,7 @@ This role may be helpful in case you have exceeded your user license restriction {{% /alert %}} {{% alert color="warning" %}} -When your app is not deployed locally, for example to the Mendix Cloud, changes to the user role of the administrator account will not be applied until the administrator password is changed. See the [actions](/developerportal/deploy/environments-details/#actions) section of *Environment Detail* for instructions on changing the admin password. +When your app is not deployed locally, for example to Mendix Cloud, changes to the user role of the administrator account will not be applied until the administrator password is changed. See the [actions](/developerportal/deploy/environments-details/#actions) section of *Environment Detail* for instructions on changing the admin password. {{% /alert %}} ## Read More diff --git a/content/en/docs/refguide/modeling/security/app-security/user-roles.md b/content/en/docs/refguide/modeling/security/app-security/user-roles.md index b6ae1a94f74..d5893764b72 100644 --- a/content/en/docs/refguide/modeling/security/app-security/user-roles.md +++ b/content/en/docs/refguide/modeling/security/app-security/user-roles.md @@ -22,6 +22,12 @@ To access user roles, open **App Security** > **User roles** tab: {{< figure src="/attachments/refguide/modeling/security/app-security/user-roles/user-roles-example.png" class="no-border" >}} +{{% alert color="warning" %}} +The effects of changes to user roles are not immediate. This means that your app might show outdated pages or incorrect data. For more information, please refer documentation about [persistent sessions](/refguide/clustered-mendix-runtime/#sessions-are-always-persistent). + +Mendix recommends that you do NOT use this feature to create a dynamic UI as these changes will not take effect immediately. +{{% /alert %}} + ## User Role Properties Double-click the user role to open its properties. @@ -57,7 +63,7 @@ Internally, user management properties are translated into entity access rules f ## Read More -* [App Security](/refguide/app-security/) +* [App Security](/refguide/app-security/) * [Administrator](/refguide/administrator/) * [Demo Users](/refguide/demo-users/) * [Anonymous Users](/refguide/anonymous-users/) diff --git a/content/en/docs/refguide/runtime/clustered-mendix-runtime.md b/content/en/docs/refguide/runtime/clustered-mendix-runtime.md index 466b1b47b93..6c3e57e848d 100644 --- a/content/en/docs/refguide/runtime/clustered-mendix-runtime.md +++ b/content/en/docs/refguide/runtime/clustered-mendix-runtime.md @@ -133,10 +133,10 @@ When data is associated to the current user or current session, it cannot be aut To support seamless clustering, sessions are always persisted in the database. In previous versions, this was a known performance bottleneck. Mendix now contains optimizations to mitigate this performance hit. -Roundtrips to the database for this purpose are reduced by giving the persistent sessions a maximum caching time of thirty seconds (by default). This means that after signing out of a session, the session might still be accessible for thirty seconds on other nodes of the cluster, but only in case that node has handled a previous request on that session just before the logout happened. This timeout can be configured. 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. This can be configured by setting `SessionValidationTimeout` (value in milliseconds). +Roundtrips to the database for this purpose are reduced by giving the persistent sessions a maximum caching time of thirty seconds (by default). This means that after signing out of a session, the session might still be accessible for thirty seconds on other nodes of the cluster, but only if that node has handled a previous request on that session just before the logout happened. This timeout can be configured. 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. This can be configured by setting `SessionValidationTimeout` (value in milliseconds). Persistent sessions also store a last-active date upon each request. To improve this particular aspect of the performance, the last-active date attribute of a session is no longer committed to the database immediately on each request. Instead, this information is queued for an action to run at a configurable interval to be stored in the Mendix database. This action verifies whether the session has not been logged out by another node and whether the last active date is more recent than the one in the database. The interval can be configured by setting `ClusterManagerActionInterval` (value in milliseconds). {{% alert color="warning" %}} -Overriding the default values for the `SessionTimeout` and `ClusterManagerActionInterval` custom settings can impact the behavior of "keep alive" and results in an unexpected session logout. The best practice is to set the `ClusterManagerActionInterval` to half of the `SessionTimeout` so that each node gets the chance to run the clean-up action at least once during the session time out interval. +Overriding the default values for the `SessionTimeout` and `ClusterManagerActionInterval` custom settings can impact the behavior of "keep alive" and result in an unexpected session logout. The best practice is to set the `ClusterManagerActionInterval` to half of the `SessionTimeout` so that each node gets the chance to run the clean-up action at least once during the session time out interval. {{% /alert %}} diff --git a/content/en/docs/refguide/runtime/communication-patterns.md b/content/en/docs/refguide/runtime/communication-patterns.md index ddbaad2595a..11dc2354b57 100644 --- a/content/en/docs/refguide/runtime/communication-patterns.md +++ b/content/en/docs/refguide/runtime/communication-patterns.md @@ -63,9 +63,9 @@ A registration of the Runtime Operation has the following properties: | Property | Explanation | |----------------------|--------------------------------------------------------------| | Unique ID | For every individual Runtime Operation, an unique ID is generated. | -| Type | The generic type of Runtime Operation, e.g. “create” | -| Constants | Any constant specific to the Runtime Operation type, e.g. the entity name for “create”. | -| Parameters | Which parameters are expected and what should be their type, e.g. the attribute values of the entity for “create” | +| Type | The generic type of Runtime Operation, such as “create” | +| Constants | Any constant specific to the Runtime Operation type, such as the entity name for “create”. | +| Parameters | Which parameters are expected and what should be their type, such as the attribute values of the entity for “create” | | Allowed module roles | Only these users with an allowed module is able to execute the operation, e.g. “User” and “Admin”. | After all Runtime Operations are registered, they are exported to the Client. Within the Client, the Runtime Operation ID and its parameters are stored at the locations where they are utilized. diff --git a/content/en/docs/refguide/runtime/logging.md b/content/en/docs/refguide/runtime/logging.md index 0b80bce997e..480d9eeb245 100644 --- a/content/en/docs/refguide/runtime/logging.md +++ b/content/en/docs/refguide/runtime/logging.md @@ -9,7 +9,7 @@ description: "Describes what the various log levels of the runtime will show as Below we describe what the various log levels of the runtime will show as output. During development, these log levels can be set in the console (advanced -> set log levels), when deployed on a server, please refer to the [Deployment](/developerportal/deploy/mendix-cloud-deploy/) pages. -You can also set log levels to provide more or less information when testing locally using the console in Studio Pro. See [Configuring the Log Levels for Standard Log Messages](/howto/monitoring-troubleshooting/log-levels/#standard-log-levels) in *How To Set Log Levels* for more information. +You can also set log levels to provide more or less information when testing locally using the console in Studio Pro. See [Configuring Log Levels Within Studio Pro](/howto/monitoring-troubleshooting/log-levels/#configure-log-levels-from-studio-pro) in *How To Set Log Levels* for more information. ## Log Levels {#log-levels} @@ -67,6 +67,7 @@ This list is currently incomplete and is being updated. | DataStorage_QueryPlan | Query execution plan information for installations (currently only supported for PostgreSQL databases). | | DocumentExporter | Logs messages related to the templating engine that generates documents. | | FileDocumentSizesPopulateJob | Logs messages for a background job that populates the file-size field in the database for documents that do not have that field filled (used during legacy migration). | +| InvalidRequestLimiter | Logs messages related to responses being throttled due to invalid requests. | | IDResolution | Information on retrieval queries and runtime operations that are being executed. | | I18NProcessor | Logs messages related to translation of the app. | | Integration API | Logs messages related to the documentation of integration APIs. | @@ -74,23 +75,28 @@ This list is currently incomplete and is being updated. | JSON Export | Logs messages related to export mappings to JSON. | | JSON Import | Logs messages related to import mappings from JSON. | | Jetty | Logs messages from the internal Jetty webserver that handles HTTP requests between the runtime and the outside world. | -| LocalFileSystemStore | Logs messages related to file handling if you are using local file system as your file store. | +| LicenseService | Logs messages related to the licensing of the app. | | Logging | Logs messages related to the logging framework used by Mendix. | | M2EE | Logs messages from the administration interface with the Mendix Runtime. | +| Metrics | Logs messages related to the runtime metrics reporting infrastructure. | | MicroflowDebugger | Logs messages related to the status of the microflow debugger (for example, connection status, incoming and outgoing requests). | | MicroflowEngine | Logs messages related to microflow execution (for example, which microflow or microflow action is being executed and errors that occur during the execution). | +| MicroflowStructureOptimizer | Logs messages related to microflow structure optimization performed during startup. | | ModelStore | Logs debug messages related to synchronizing User Role and language information to the system tables. | | Module | Logs messages for modules that are loaded on-demand in the core runtime like the microflow-engine. | | ObjectManagement | Logs errors relating to attempts to make associations to non-existent object | | ODataConsume | Logs messages related to consumed OData services. | | OData Publish | Logs messages related to published OData/GraphQL services. | +| OrphanFileCleaner | Logs messages related the orphan file cleaning background task. | | QueryParser | Logs messages related to the parsing or interpretation of XPath and OQL queries. | -| Queue | All actions related to Task Queues | +| TaskQueue | All actions related to Task Queues | | REST Consume | Logs messages related to the Call REST service activity. | | REST Publish | Logs messages related to published REST services. | | RequestStatistics | Logs if thresholds related to state defined in [Client Runtime Settings](/refguide/custom-settings/#web-client-settings) have exceeded the defined threshold. | +| SchemeManager | Logs messages related to model loading that is performed during startup. | | Services | Logs messages related to [Web Services](/refguide/integration/web-services/) | | StorageAzure | Logs messages related to file handling if you are using Azure system as your file store. | +| StorageLocal | Logs messages related to file handling if you are using the local file system as your file store. | | StorageS3 | Logs messages related to file handling if you are using Amazon S3 system as your file store. | | WebServices | Traces SOAP call request and response contents. | | WebUI | Logs if thresholds related to feedback size defined in [Client Runtime Settings](/refguide/custom-settings/#web-client-settings) have exceeded the defined threshold, or creating a valid session has failed. | diff --git a/content/en/docs/refguide/runtime/mendix-client/content-readiness.md b/content/en/docs/refguide/runtime/mendix-client/content-readiness.md index 1518a916901..ba89126cbc4 100644 --- a/content/en/docs/refguide/runtime/mendix-client/content-readiness.md +++ b/content/en/docs/refguide/runtime/mendix-client/content-readiness.md @@ -13,39 +13,39 @@ If the Marketplace component you are interested in is not included on this list, ## Marketplace Component Status Table -The following table shows which of the more popular platform-supported Marketplace components are ready for the React client (✅) or not (❌). We will continuously update this table as we improve the compatibility of our Marketplace components. +The following table shows which of the more popular platform-supported Marketplace components are ready for the React client ({{< icon name="checkmark-circle-filled" color="green" >}}) or not ({{< icon name="remove-circle-filled" color="red" >}}). We will continuously update this table as we improve the compatibility of our Marketplace components. | Marketplace Component | React Client Ready | | --- | --- | -| [Community Commons](https://marketplace.mendix.com/link/component/170) | ✅ | -| [Mx Model Reflection](https://marketplace.mendix.com/link/component/69) | ❌ | -| [Excel Importer](https://marketplace.mendix.com/link/component/72) | ❌ | -| [Encryption](https://marketplace.mendix.com/link/component/1011) | ❌ | -| [SAML](https://marketplace.mendix.com/link/component/1174) | ❌ | -| [Excel Exporter](https://marketplace.mendix.com/link/component/726) | ❌ | -| [Deep Link Module](https://marketplace.mendix.com/link/component/43) | ✅ | -| [Native Mobile Resources](https://marketplace.mendix.com/link/component/109513) | ✅ | -| [Nanoflow Commons](https://marketplace.mendix.com/link/component/109515) | ✅ | -| [Data Widgets](https://marketplace.mendix.com/link/component/116540) | ✅ | -| [Database Connector](https://marketplace.mendix.com/link/component/2888) | ✅ | -| [Workflow Commons](https://marketplace.mendix.com/link/component/117066) | ❌ | -| [Atlas Core](https://marketplace.mendix.com/link/component/117187) | ✅ | -| [Email Connector](https://marketplace.mendix.com/link/component/120739) | ❌ | -| [UnitTesting](https://marketplace.mendix.com/link/component/390) | ✅ | -| [MendixSSO](https://marketplace.mendix.com/link/component/111349) | ✅ | -| [OData Connector for SAP solutions](https://marketplace.mendix.com/link/component/74525) | ✅ | -| [Atlas Web Content](https://marketplace.mendix.com/link/component/117183) | ✅ | -| [Forgot Password Module](https://marketplace.mendix.com/link/component/1296) | ❌ | -| [Audittrail](https://marketplace.mendix.com/link/component/138) | ❌ | -| [DatabaseReplication](https://marketplace.mendix.com/link/component/160) | ❌ | -| [ObjectHandling](https://marketplace.mendix.com/link/component/37114) | ✅ | -| [Administration Module](https://marketplace.mendix.com/link/component/23513) | ✅ | -| [Push Notifications Connector](https://marketplace.mendix.com/link/component/3003) | ❌ | -| [AnyChart](https://marketplace.mendix.com/link/component/106517) | ❌ | -| [Mendix Application Performance Diagnostics](https://marketplace.mendix.com/link/component/6127) | ❌ | -| [OIDC SSO](https://marketplace.mendix.com/link/component/120371) | ❌ | -| [Atlas Native Content](https://marketplace.mendix.com/link/component/117175) | ✅ | -| [Web Actions](https://marketplace.mendix.com/link/component/114337) | ✅ | -| [Image Crop](https://marketplace.mendix.com/link/component/254) | ❌ | -| [XSUAA Connector for SAP Cloud Platform](https://marketplace.mendix.com/link/component/78091) | ❌ | -| [AWS Authentication Connector](https://marketplace.mendix.com/link/component/120333) | ✅ | +| [Community Commons](https://marketplace.mendix.com/link/component/170) | {{< icon name="checkmark-circle-filled" color="green" >}} | +| [Mx Model Reflection](https://marketplace.mendix.com/link/component/69) | {{< icon name="remove-circle-filled" color="red" >}} | +| [Excel Importer](https://marketplace.mendix.com/link/component/72) | {{< icon name="remove-circle-filled" color="red" >}} | +| [Encryption](https://marketplace.mendix.com/link/component/1011) | {{< icon name="remove-circle-filled" color="red" >}} | +| [SAML](https://marketplace.mendix.com/link/component/1174) | {{< icon name="remove-circle-filled" color="red" >}} | +| [Excel Exporter](https://marketplace.mendix.com/link/component/726) | {{< icon name="remove-circle-filled" color="red" >}} | +| [Deep Link Module](https://marketplace.mendix.com/link/component/43) | {{< icon name="checkmark-circle-filled" color="green" >}} | +| [Native Mobile Resources](https://marketplace.mendix.com/link/component/109513) | {{< icon name="checkmark-circle-filled" color="green" >}} | +| [Nanoflow Commons](https://marketplace.mendix.com/link/component/109515) | {{< icon name="checkmark-circle-filled" color="green" >}} | +| [Data Widgets](https://marketplace.mendix.com/link/component/116540) | {{< icon name="checkmark-circle-filled" color="green" >}} | +| [Database Connector](https://marketplace.mendix.com/link/component/2888) | {{< icon name="checkmark-circle-filled" color="green" >}} | +| [Workflow Commons](https://marketplace.mendix.com/link/component/117066) | {{< icon name="remove-circle-filled" color="red" >}} | +| [Atlas Core](https://marketplace.mendix.com/link/component/117187) | {{< icon name="checkmark-circle-filled" color="green" >}} | +| [Email Connector](https://marketplace.mendix.com/link/component/120739) | {{< icon name="remove-circle-filled" color="red" >}} | +| [UnitTesting](https://marketplace.mendix.com/link/component/390) | {{< icon name="checkmark-circle-filled" color="green" >}} | +| [MendixSSO](https://marketplace.mendix.com/link/component/111349) | {{< icon name="checkmark-circle-filled" color="green" >}} | +| [OData Connector for SAP solutions](https://marketplace.mendix.com/link/component/74525) | {{< icon name="checkmark-circle-filled" color="green" >}} | +| [Atlas Web Content](https://marketplace.mendix.com/link/component/117183) | {{< icon name="checkmark-circle-filled" color="green" >}} | +| [Forgot Password Module](https://marketplace.mendix.com/link/component/1296) | {{< icon name="remove-circle-filled" color="red" >}} | +| [Audittrail](https://marketplace.mendix.com/link/component/138) | {{< icon name="remove-circle-filled" color="red" >}} | +| [DatabaseReplication](https://marketplace.mendix.com/link/component/160) | {{< icon name="remove-circle-filled" color="red" >}} | +| [ObjectHandling](https://marketplace.mendix.com/link/component/37114) | {{< icon name="checkmark-circle-filled" color="green" >}} | +| [Administration Module](https://marketplace.mendix.com/link/component/23513) | {{< icon name="checkmark-circle-filled" color="green" >}} | +| [Push Notifications Connector](https://marketplace.mendix.com/link/component/3003) | {{< icon name="remove-circle-filled" color="red" >}} | +| [AnyChart](https://marketplace.mendix.com/link/component/106517) | {{< icon name="remove-circle-filled" color="red" >}} | +| [Mendix Application Performance Diagnostics](https://marketplace.mendix.com/link/component/6127) | {{< icon name="remove-circle-filled" color="red" >}} | +| [OIDC SSO](https://marketplace.mendix.com/link/component/120371) | {{< icon name="remove-circle-filled" color="red" >}} | +| [Atlas Native Content](https://marketplace.mendix.com/link/component/117175) | {{< icon name="checkmark-circle-filled" color="green" >}} | +| [Web Actions](https://marketplace.mendix.com/link/component/114337) | {{< icon name="checkmark-circle-filled" color="green" >}} | +| [Image Crop](https://marketplace.mendix.com/link/component/254) | {{< icon name="remove-circle-filled" color="red" >}} | +| [XSUAA Connector for SAP Cloud Platform](https://marketplace.mendix.com/link/component/78091) | {{< icon name="remove-circle-filled" color="red" >}} | +| [AWS Authentication Connector](https://marketplace.mendix.com/link/component/120333) | {{< icon name="checkmark-circle-filled" color="green" >}} | diff --git a/content/en/docs/refguide/version-control/using-version-control-in-studio-pro/_index.md b/content/en/docs/refguide/version-control/using-version-control-in-studio-pro/_index.md index 5525c867cc5..142027c0676 100644 --- a/content/en/docs/refguide/version-control/using-version-control-in-studio-pro/_index.md +++ b/content/en/docs/refguide/version-control/using-version-control-in-studio-pro/_index.md @@ -333,7 +333,7 @@ When it creates the package, Studio Pro will also create a tag representing this #### Deploying a Specific Version to a Mendix Licensed Cloud Node -If you are using the Mendix Cloud, you can choose **App** > **Deploy to Licensed Cloud Node** to deploy a specific version. +If you are using Mendix Cloud, you can choose **App** > **Deploy to Licensed Cloud Node** to deploy a specific version. {{< figure src="/attachments/refguide/version-control/using-version-control-in-studio-pro/deploy-to-cloud.png" class="no-border" >}} @@ -354,7 +354,7 @@ We advise you to always commit and update/pull inside Studio Pro, because, in th If you are doing more advanced changes to files, like adding Java actions or resources to your app, you will have to install a separate tool on your computer and perform some operations yourself: you can use [TortoiseGit](https://tortoisegit.org/) (can be downloaded for free). {{% alert color="info" %}} -Studio Pro adds metadata on the Mendix version of your app to each revision when you commit or create a branch. Therefore, when committing or merging using third-party tools, it may no longer be possible to deploy to the Mendix Cloud. This can be fixed by making a commit using Studio Pro so that the correct metadata is present again. +Studio Pro adds metadata on the Mendix version of your app to each revision when you commit or create a branch. Therefore, when committing or merging using third-party tools, it may no longer be possible to deploy to Mendix Cloud. This can be fixed by making a commit using Studio Pro so that the correct metadata is present again. {{% /alert %}} {{% alert color="warning" %}} diff --git a/content/en/docs/refguide8/java-programming/_index.md b/content/en/docs/refguide8/java-programming/_index.md index e458252b923..624e2c22cc9 100644 --- a/content/en/docs/refguide8/java-programming/_index.md +++ b/content/en/docs/refguide8/java-programming/_index.md @@ -51,7 +51,7 @@ For details on usage and example, see [How to Use the Java API](/howto8/logic-bu ## Opening HTTP Connections -Most cloud infrastructure services (including those used by the Mendix Cloud) will close HTTP connections automatically if there is no traffic for a few minutes, even if your activity is still waiting for a response. This means that, if your activity calls a web service which takes a long time to respond, the connection may be closed without the activity being aware of this and your activity will not receive a response, but instead get stuck waiting indefinitely for data to arrive. +Most cloud infrastructure services (including those used by Mendix Cloud) will close HTTP connections automatically if there is no traffic for a few minutes, even if your activity is still waiting for a response. This means that, if your activity calls a web service which takes a long time to respond, the connection may be closed without the activity being aware of this and your activity will not receive a response, but instead get stuck waiting indefinitely for data to arrive. You should therefore ensure that you always set a timeout for any connections you make in your custom Java code. diff --git a/content/en/docs/refguide8/modeling/application-logic/activities/integration-activities/call-rest-action.md b/content/en/docs/refguide8/modeling/application-logic/activities/integration-activities/call-rest-action.md index 28fb09e7939..1e114e4acb9 100644 --- a/content/en/docs/refguide8/modeling/application-logic/activities/integration-activities/call-rest-action.md +++ b/content/en/docs/refguide8/modeling/application-logic/activities/integration-activities/call-rest-action.md @@ -68,7 +68,7 @@ The **HTTP method** property defines the HTTP method to use when calling a REST Set **Use timeout on request** to **Yes** to be able specify how long the Call REST activity should wait for the REST endpoint to respond. {{% alert color="warning" %}} -It is recommended that you keep this set to **Yes**. Most cloud infrastructure services (including those used by the Mendix Cloud) will close HTTP connections automatically if there is no traffic for a few minutes, even if your activity is still waiting for a response. This means that, if your activity calls a web service which takes a long time to respond, the connection may be closed without the activity being aware of this, and your activity will not receive a response. Under these circumstances, if **Use timeout on request** is set to **No**, your activity will get stuck waiting indefinitely for data to arrive. +It is recommended that you keep this set to **Yes**. Most cloud infrastructure services (including those used by Mendix Cloud) will close HTTP connections automatically if there is no traffic for a few minutes, even if your activity is still waiting for a response. This means that, if your activity calls a web service which takes a long time to respond, the connection may be closed without the activity being aware of this, and your activity will not receive a response. Under these circumstances, if **Use timeout on request** is set to **No**, your activity will get stuck waiting indefinitely for data to arrive. {{% /alert %}} Default value: *Yes* (as of Studio Pro [8.5.0](/releasenotes/studio-pro/8.5/#850); in earlier versions, the default value was No) @@ -107,7 +107,7 @@ Select from one of the following: When you select **Override**, you can configure the client certificate that will be used. Click **Edit** to specify the **Client certificate identifier**. This identifier can be set in different places, depending on where you deploy the app: -* When you deploy the app to the Mendix cloud, the identifier is set when [pinning a client certificate](/developerportal/deploy/certificates/#outgoing-client-certificates) +* When you deploy the app to Mendix Cloud, the identifier is set when [pinning a client certificate](/developerportal/deploy/certificates/#outgoing-client-certificates) * When you deploy the app elsewhere, the identifier is set in the custom setting [ClientCertificateUsages](/refguide8/custom-settings/#ca-certificates) When this identifier is not set (either not pinned or not present in *ClientCertificateUsages*), the default settings will be used (as if **Use project settings** were selected). diff --git a/content/en/docs/refguide8/modeling/application-logic/activities/integration-activities/call-web-service-action.md b/content/en/docs/refguide8/modeling/application-logic/activities/integration-activities/call-web-service-action.md index df02705b56c..52c8c7bb9f2 100644 --- a/content/en/docs/refguide8/modeling/application-logic/activities/integration-activities/call-web-service-action.md +++ b/content/en/docs/refguide8/modeling/application-logic/activities/integration-activities/call-web-service-action.md @@ -73,7 +73,7 @@ This can be used to throw an exception when the web service takes too long to re Default value: *Yes* (as of Studio Pro [8.5.0](/releasenotes/studio-pro/8.5/#850); in earlier versions, the default value was No) {{% alert color="warning" %}} -It is recommended that you keep this set this to **Yes**. Most cloud infrastructure services (including those used by the Mendix Cloud) will close HTTP connections automatically if there is no traffic for a few minutes, even if your activity is still waiting for a response. This means that, if your activity calls a web service which takes a long time to respond, the connection may be closed without the activity being aware of this, and your activity will not receive a response. Under these circumstances, if **Use timeout on request** is set to **No**, your activity will get stuck waiting indefinitely for data to arrive. +It is recommended that you keep this set this to **Yes**. Most cloud infrastructure services (including those used by Mendix Cloud) will close HTTP connections automatically if there is no traffic for a few minutes, even if your activity is still waiting for a response. This means that, if your activity calls a web service which takes a long time to respond, the connection may be closed without the activity being aware of this, and your activity will not receive a response. Under these circumstances, if **Use timeout on request** is set to **No**, your activity will get stuck waiting indefinitely for data to arrive. {{% /alert %}} Default: *No* @@ -126,7 +126,7 @@ Select from one of the following: When you select **Override**, you can configure the client certificate that will be used. Click **Edit** to specify the **Client certificate identifier**. This identifier can be set in different places, depending on where you deploy the app: -* When you deploy the app to the Mendix cloud, the identifier is set when [pinning a client certificate](/developerportal/deploy/certificates/#outgoing-client-certificates) +* When you deploy the app to Mendix Cloud, the identifier is set when [pinning a client certificate](/developerportal/deploy/certificates/#outgoing-client-certificates) * When you deploy the app elsewhere, the identifier is set in the custom setting [ClientCertificateUsages](/refguide8/custom-settings/#ca-certificates) When this identifier is not set (either not pinned or not present in *ClientCertificateUsages*), the default settings will be used (as if **Use project settings** were selected). diff --git a/content/en/docs/refguide8/modeling/menus/project-menu/create-deployment-package-dialog.md b/content/en/docs/refguide8/modeling/menus/project-menu/create-deployment-package-dialog.md index 036a03d3f5f..5dc790a89ca 100644 --- a/content/en/docs/refguide8/modeling/menus/project-menu/create-deployment-package-dialog.md +++ b/content/en/docs/refguide8/modeling/menus/project-menu/create-deployment-package-dialog.md @@ -5,7 +5,7 @@ url: /refguide8/create-deployment-package-dialog/ ## Introduction -A deployment package can be deployed to the Mendix Cloud, another cloud provider (for example SAP BTP), or on a server that is configured to run Mendix software. While developing you can deploy and run on your local machine, but once you are ready to deploy your project elsewhere you will need to create a deployment package. For some platforms, this is done automatically as part of the deploy process but, for others, you will need to explicitly create the deployment package. +A deployment package can be deployed to Mendix Cloud, another cloud provider (for example SAP BTP), or on a server that is configured to run Mendix software. While developing you can deploy and run on your local machine, but once you are ready to deploy your project elsewhere you will need to create a deployment package. For some platforms, this is done automatically as part of the deploy process but, for others, you will need to explicitly create the deployment package. {{< figure src="/attachments/refguide8/modeling/menus/project-menu/create-deployment-package-dialog/create-deployment-package.png" alt="Create Deployment Package dialog" class="no-border" >}} diff --git a/content/en/docs/refguide8/modeling/menus/project-menu/deploy-to-the-cloud-dialog.md b/content/en/docs/refguide8/modeling/menus/project-menu/deploy-to-the-cloud-dialog.md index 09e7612bc5a..f0bb1ebe2f6 100644 --- a/content/en/docs/refguide8/modeling/menus/project-menu/deploy-to-the-cloud-dialog.md +++ b/content/en/docs/refguide8/modeling/menus/project-menu/deploy-to-the-cloud-dialog.md @@ -5,7 +5,7 @@ url: /refguide8/deploy-to-the-cloud-dialog/ ## Introduction -This menu option dialog creates a versioned deployment package and deploys it to your environment in the Mendix Cloud. +This menu option dialog creates a versioned deployment package and deploys it to your environment in Mendix Cloud. {{< figure src="/attachments/refguide8/modeling/menus/project-menu/deploy-to-the-cloud-dialog/deploy-to-the-cloud.png" alt="Deploy to the Cloud dialog" class="no-border" >}} @@ -31,7 +31,7 @@ You can enter a custom **Description** for this deployment package. It is purely ## App -This shows the **App** in the Mendix Cloud where the deployment package will be deployed. This is for information only, you cannot change the destination here. +This shows the **App** in Mendix Cloud where the deployment package will be deployed. This is for information only, you cannot change the destination here. ## Licensee diff --git a/content/en/docs/refguide8/modeling/menus/view-menu/data-hub-pane.md b/content/en/docs/refguide8/modeling/menus/view-menu/data-hub-pane.md index f949968e71d..f252cd42172 100644 --- a/content/en/docs/refguide8/modeling/menus/view-menu/data-hub-pane.md +++ b/content/en/docs/refguide8/modeling/menus/view-menu/data-hub-pane.md @@ -98,7 +98,7 @@ The search results and Project pane will show the following at a service level: {{< figure src="/attachments/refguide8/modeling/integration/consumed-odata-services/data-hub-pane-update.png" alt="Data Hub Pane update" class="no-border" >}} - {{% alert color="info" %}}If there is an OData Service update available, then the entities that are listed are those that are available in that version of the OData service. These entities will be "grayed-out" to indicate that they cannot be dragged into the domain model as the *current* contract that is consumed in the project does not have these entities. You will have to update the contract to the version shown in the search results by clicking the **Update**. arrow. {{% /alert %}} + {{% alert color="info" %}}If there is an OData Service update available, then the entities that are listed are those that are available in that version of the OData service. These entities will be "grayed-out" to indicate that they cannot be dragged into the domain model as the *current* contract that is consumed in the project does not have these entities. You will have to update the contract to the version shown in the search results by clicking the **Update** arrow. {{% /alert %}} {{% alert color="info" %}}The version number that is shown for the OData service is the latest one that is available in the Catalog at the service endpoint—in the example above version 1.0.11 of **Theatre_service** is currently consumed in the project, but version **1.0.12** is now available in the Catalog. The search results display the entities available in the new service (also showing one that is locally consumed) however they are greyed-out and cannot be selected until the local service is **Updated** to this one.{{% /alert %}} @@ -126,7 +126,7 @@ If you right-click a consumed entity and **Go to entity**, it will take you to t The associations that are exposed in the services are listed before attributes in alphabetical order. You can click on the **+** to see the entity that the association is with. -**Mulitple association**s between the same entities are shown before single associations. +**Multiple association**s between the same entities are shown before single associations. In the following example the entity **Customer** has multiple associations with the entity **Order** however, these associations are not supported and cannot be used in your model" diff --git a/content/en/docs/refguide8/modeling/menus/view-menu/project-explorer/project/project-settings/configuration.md b/content/en/docs/refguide8/modeling/menus/view-menu/project-explorer/project/project-settings/configuration.md index cd5e21f7b1b..87edd17f8a1 100644 --- a/content/en/docs/refguide8/modeling/menus/view-menu/project-explorer/project/project-settings/configuration.md +++ b/content/en/docs/refguide8/modeling/menus/view-menu/project-explorer/project/project-settings/configuration.md @@ -13,7 +13,7 @@ You can define any number of configurations. The active configuration, as in, th You can use configurations to have different database settings for different people working on your project. Maybe one person has SQL Server on their computer and the other has PostgreSQL. You can also have a shared configuration for connecting to a database server that you both have access to. {{% alert color="warning" %}} -When you are deploying your application to a server or the Mendix cloud you will have to configure settings there. For more information, see [Mendix Cloud](/developerportal/deploy/mendix-cloud-deploy/). +When you are deploying your application to a server or Mendix Cloud you will have to configure settings there. For more information, see [Mendix Cloud](/developerportal/deploy/mendix-cloud-deploy/). {{% /alert %}} ## Configuration Settings diff --git a/content/en/docs/refguide8/modeling/menus/view-menu/project-explorer/security/project-security/_index.md b/content/en/docs/refguide8/modeling/menus/view-menu/project-explorer/security/project-security/_index.md index 188f787670a..02e2968dbf2 100644 --- a/content/en/docs/refguide8/modeling/menus/view-menu/project-explorer/security/project-security/_index.md +++ b/content/en/docs/refguide8/modeling/menus/view-menu/project-explorer/security/project-security/_index.md @@ -29,7 +29,7 @@ The security level defines if security is switched off or on for the project and | Production | Full security is applied. | Administrator and anonymous access, user roles, security for forms, microflows, entities, and reports. | {{% alert color="warning" %}} -For all licensed Mendix Cloud nodes, you need to use the **Production** security level and configure all security settings accordingly. Security levels **Off** and **Prototype/demo** are only allowed when testing locally, when deploying a Free App, and in cloud environments outside the Mendix Cloud which are specifically set up with **Development mode**. +For all licensed Mendix Cloud nodes, you need to use the **Production** security level and configure all security settings accordingly. Security levels **Off** and **Prototype/demo** are only allowed when testing locally, when deploying a Free App, and in cloud environments outside Mendix Cloud which are specifically set up with **Development mode**. {{% /alert %}} ### Settings Availability for Different Security Levels diff --git a/content/en/docs/refguide8/modeling/menus/view-menu/project-explorer/security/project-security/administrator.md b/content/en/docs/refguide8/modeling/menus/view-menu/project-explorer/security/project-security/administrator.md index 0cdd489a9cb..09cbcfb8b11 100644 --- a/content/en/docs/refguide8/modeling/menus/view-menu/project-explorer/security/project-security/administrator.md +++ b/content/en/docs/refguide8/modeling/menus/view-menu/project-explorer/security/project-security/administrator.md @@ -57,7 +57,7 @@ This role may be helpful in case you have exceeded your user license restriction {{% /alert %}} {{% alert color="warning" %}} -When your app is not deployed locally, for example to the Mendix Cloud, changes to the user role of the administrator account will not be applied until the administrator password is changed. See the [actions](/developerportal/deploy/environments-details/#actions) section of *Environment Detail* for instructions on changing the admin password. +When your app is not deployed locally, for example to Mendix Cloud, changes to the user role of the administrator account will not be applied until the administrator password is changed. See the [actions](/developerportal/deploy/environments-details/#actions) section of *Environment Detail* for instructions on changing the admin password. {{% /alert %}} ## Read More diff --git a/content/en/docs/refguide8/modeling/pages/authentication-widgets/_index.md b/content/en/docs/refguide8/modeling/pages/authentication-widgets/_index.md index c3ecd72f5cf..ebb4475ed59 100644 --- a/content/en/docs/refguide8/modeling/pages/authentication-widgets/_index.md +++ b/content/en/docs/refguide8/modeling/pages/authentication-widgets/_index.md @@ -23,7 +23,7 @@ The **Authentication widgets** category contains the following widgets: * [Sign-in button](/refguide8/sign-in-button/) – sends a user’s login id and password to the server for authentication {{< figure src="/attachments/refguide8/modeling/pages/authentication-widgets/sign-in-button-example.png" alt="Sign-In Button Example" class="no-border" >}} -* **Sign-out button** – signs the currently signed-in user out. The sign-out button is a button with an on-click event set to **Sign out**. For more information on on-click events, see the [On Click Event and Events Section](/refguide8/on-click-event/). For details on button properties. see [Button Properties](/refguide8/button-properties/). +* **Sign-out button** – signs the currently signed-in user out. The sign-out button is a button with an on-click event set to **Sign out**. For more information on on-click events, see the [On Click Event and Events Section](/refguide8/on-click-event/). For details on button properties, see [Button Properties](/refguide8/button-properties/). * [Validation message](/refguide8/validation-message/) – informs a user about authentication failures if any diff --git a/content/en/docs/refguide8/runtime/custom-settings/_index.md b/content/en/docs/refguide8/runtime/custom-settings/_index.md index 10f0488b66f..88c89bb2949 100644 --- a/content/en/docs/refguide8/runtime/custom-settings/_index.md +++ b/content/en/docs/refguide8/runtime/custom-settings/_index.md @@ -16,7 +16,7 @@ Only use this functionality if you know exactly what you are doing. Incorrect va Each custom setting consists of a name and a value. For example, to enable persistent sessions you add a custom setting with name `PersistentSessions` and value `true`. For a more detailed list of settings and example values, consult [full-documented-m2ee.yaml](https://github.com/mendix/m2ee-tools/blob/master/examples/full-documented-m2ee.yaml). -If you are running your app on the Mendix Cloud, you can access these settings in **Apps** via **Environments** > **Environment Details** > **Runtime** > **Custom Runtime Settings**. For more information see the [Runtime Tab](/developerportal/deploy/environments-details/#runtime-tab) section of *Environment Details*. +If you are running your app on Mendix Cloud, you can access these settings in **Apps** via **Environments** > **Environment Details** > **Runtime** > **Custom Runtime Settings**. For more information see the [Runtime Tab](/developerportal/deploy/environments-details/#runtime-tab) section of *Environment Details*. If you are running on SAP Cloud, you can add custom settings as User-Provided Variables prefixed with `MXRUNTIME_`. If the setting contains a dot `.` you can use an underscore `_` in the variable. [Reference](https://github.com/mendix/cf-mendix-buildpack#custom-runtime-settings) diff --git a/content/en/docs/refguide8/runtime/custom-settings/tricky-custom-runtime-settings.md b/content/en/docs/refguide8/runtime/custom-settings/tricky-custom-runtime-settings.md index 0246fce87cc..86ecaa2939c 100644 --- a/content/en/docs/refguide8/runtime/custom-settings/tricky-custom-runtime-settings.md +++ b/content/en/docs/refguide8/runtime/custom-settings/tricky-custom-runtime-settings.md @@ -52,7 +52,7 @@ So, make sure to keep in mind all of the above when changing these values. Also, `LogMinDurationQuery` can be a very helpful tool in detecting queries that are taking longer than expected. This is especially useful for queries that only take longer than expected after the data used in and by the app grows larger, because this might mean the queries will only become slower after a few months of usage and might not have turned up in pre-release performance tests. Determining that a query is slow depends on the type of app you are running. But in general, any query that directly affects a user using the app (meaning, not a background process) will have a lower threshold for determining it as slow than a query running in the background. For example, a drop-down menu that takes 5 seconds to load before anything can be selected is many times worse than a PDF generated in the background taking 8 instead of 4 seconds because of a “slow” query that takes 5 seconds instead of 1 second. -In the Mendix Cloud, we have chosen a default value of 10000 (meaning, 10 seconds). As any such query would be noticeable on the front end of the application. If your application has no background processes, this value might be too high. On the other hand, if your application is running many background processes with minimal user interaction, this value might be too low. In the end, the right value to set will depend on the functional requirements of your app and needs to be set accordingly. +In Mendix Cloud, we have chosen a default value of 10000 (meaning, 10 seconds). As any such query would be noticeable on the front end of the application. If your application has no background processes, this value might be too high. On the other hand, if your application is running many background processes with minimal user interaction, this value might be too low. In the end, the right value to set will depend on the functional requirements of your app and needs to be set accordingly. The most important part of this setting is to regularly check the application log for any queries exceeding this value and to resolve them if they are deemed problematic. Setting this value without following up on it is as useful as not setting the value at all. Queries running slowly can negatively affect the user experience, the throughput of any action affected by them, the memory usage of the application, the CPU usage of the application, and can even lead to outages in extreme cases. Given all that, Mendix strongly advises setting this value to a number that makes sense for your application and following up on any query that is logged. diff --git a/content/en/docs/refguide8/runtime/data-storage/_index.md b/content/en/docs/refguide8/runtime/data-storage/_index.md index 922ce4b89f2..82fd2176a29 100644 --- a/content/en/docs/refguide8/runtime/data-storage/_index.md +++ b/content/en/docs/refguide8/runtime/data-storage/_index.md @@ -14,7 +14,7 @@ Data storage is the data foundation of the Mendix Runtime. Data storage does the ## Supported Databases -For apps deployed to the Mendix Cloud, Mendix uses a PostgreSQL database for storing the data defined in the app domain model(s). +For apps deployed to Mendix Cloud, Mendix uses a PostgreSQL database for storing the data defined in the app domain model(s). If you are deploying to a different infrastructure, Mendix supports the following databases. diff --git a/content/en/docs/refguide8/runtime/data-storage/uniqueness-constraint-migration.md b/content/en/docs/refguide8/runtime/data-storage/uniqueness-constraint-migration.md index 639082e9e4d..5fa28821d1d 100644 --- a/content/en/docs/refguide8/runtime/data-storage/uniqueness-constraint-migration.md +++ b/content/en/docs/refguide8/runtime/data-storage/uniqueness-constraint-migration.md @@ -55,7 +55,7 @@ We highly recommend setting this radio button to **Database**. This will prepare The effect of selecting **Database** is that when you deploy a model with unique validation rules on attributes (existing rules or new rules), all the existing objects for the affected entity will be checked for the uniqueness of the attribute. If there are multiple people with the same insurance number then: * if you deploy the app from Studio Pro, an error will be shown on deployment -* if you deploy the app from a deployment package (for example in the Mendix cloud), the app will not start and errors will be written to the log +* if you deploy the app from a deployment package (for example in Mendix Cloud), the app will not start and errors will be written to the log {{< figure src="/attachments/refguide8/runtime/data-storage/uniqueness-constraint-migration/startup-error.png" class="no-border" >}} diff --git a/content/en/docs/refguide8/runtime/runtime-deployment.md b/content/en/docs/refguide8/runtime/runtime-deployment.md index a53fec1c014..c01dfaa1bf1 100644 --- a/content/en/docs/refguide8/runtime/runtime-deployment.md +++ b/content/en/docs/refguide8/runtime/runtime-deployment.md @@ -41,7 +41,7 @@ This is the command line interpreter which allows Cloud Foundry environments to ### Buildpack -The buildpack is the Mendix script which controls the deployment of Mendix models to a cloud environment. it performs the following tasks: +The buildpack is the Mendix script which controls the deployment of Mendix models to a cloud environment. It performs the following tasks: * identifies the target environment and bound services such as database and file storage * if it receives a project in mpk format it initiates Mxbuild to convert it into mda format diff --git a/content/en/docs/refguide8/runtime/runtime-java/_index.md b/content/en/docs/refguide8/runtime/runtime-java/_index.md index ad19f793435..3d27a1b512a 100644 --- a/content/en/docs/refguide8/runtime/runtime-java/_index.md +++ b/content/en/docs/refguide8/runtime/runtime-java/_index.md @@ -17,7 +17,7 @@ When using Mendix you will use it together with Java (JDK) to deploy and run the {{< figure src="/attachments/refguide8/runtime/runtime-java/2.jpg" class="no-border" >}} -Or as shown in the Mendix Cloud: +Or as shown in Mendix Cloud: {{< figure src="/attachments/refguide8/runtime/runtime-java/4.jpg" class="no-border" >}} @@ -47,7 +47,7 @@ Back to the Heap. We can divide it into three parts: When the GC executes a minor garbage collection it will try to clean up all the objects in the young generation only. If it fails to clean up an Eden Space object it will move it to the Survivor Space. If it fails to clean up a Survivor Space object enough times, it will move it to the Tenured Generation. If the Tenured Generation grows large enough (around 60% of the total space available to the Heap) it will execute a major garbage collection and try to clean up all the objects in both the young and the old generation. So a healthy JVM would have a Heap that goes up and down in relation to its memory usage in the various parts. -You can see this quite well in the following JVM Object Heap graph taken from the Mendix Cloud: +You can see this quite well in the following JVM Object Heap graph taken from Mendix Cloud: {{< figure src="/attachments/refguide8/runtime/runtime-java/5.jpg" class="no-border" >}} diff --git a/content/en/docs/refguide8/version-control/using-version-control-in-studio-pro.md b/content/en/docs/refguide8/version-control/using-version-control-in-studio-pro.md index 7436d9427fd..826cce2dead 100644 --- a/content/en/docs/refguide8/version-control/using-version-control-in-studio-pro.md +++ b/content/en/docs/refguide8/version-control/using-version-control-in-studio-pro.md @@ -323,7 +323,7 @@ When it creates the package, Studio Pro will also create a tag representing this #### Deploying a Specific Version to a Mendix Licensed Cloud Node -If you are using the Mendix Cloud you can choose **Project** > **Deploy to Licensed Cloud Node** to deploy a specific version. +If you are using Mendix Cloud you can choose **Project** > **Deploy to Licensed Cloud Node** to deploy a specific version. {{< figure src="/attachments/refguide8/version-control/using-version-control-in-studio-pro/2018-02-21_17-05-05.png" class="no-border" >}} diff --git a/content/en/docs/refguide9/general/moving-from-8-to-9/moving-from-atlas-2-to-3/atlas3-change-summary.md b/content/en/docs/refguide9/general/moving-from-8-to-9/moving-from-atlas-2-to-3/atlas3-change-summary.md index e65c3b354e5..b1aeaa725de 100644 --- a/content/en/docs/refguide9/general/moving-from-8-to-9/moving-from-atlas-2-to-3/atlas3-change-summary.md +++ b/content/en/docs/refguide9/general/moving-from-8-to-9/moving-from-atlas-2-to-3/atlas3-change-summary.md @@ -59,7 +59,7 @@ Consult the table below for a summary of additional design properties. | Progress Circle | Addition of design properties for styling the new updated progress circle. Properties including bar color and bar thickness. | | Progress Bar | Addition of design properties for the styling the new updated progress bar. Properties including bar color and bar thickness. | | Additional background variants | Dark and light variations can be added to your background colors via design properties. | -| Responsive images with image-fit | Options can now be added for images to be resized to fit its container. options include fill, contain, cover and scale-down. | +| Responsive images with image-fit | Options can now be added for images to be resized to fit its container. Options include fill, contain, cover and scale-down. | ### Web Environment Changes diff --git a/content/en/docs/refguide9/java-programming/_index.md b/content/en/docs/refguide9/java-programming/_index.md index 8f84c396243..5a133c1494d 100644 --- a/content/en/docs/refguide9/java-programming/_index.md +++ b/content/en/docs/refguide9/java-programming/_index.md @@ -77,7 +77,7 @@ For details on usage and examples, see [Using the Java API](/refguide9/java-api- ## Opening HTTP Connections -Most cloud infrastructure services (including those used by the Mendix Cloud) will close HTTP connections automatically if there is no traffic for a few minutes, even if your activity is still waiting for a response. This means that, if your activity calls a web service which takes a long time to respond, the connection may be closed without the activity being aware of this and your activity will not receive a response, but instead get stuck waiting indefinitely for data to arrive. +Most cloud infrastructure services (including those used by Mendix Cloud) will close HTTP connections automatically if there is no traffic for a few minutes, even if your activity is still waiting for a response. This means that, if your activity calls a web service which takes a long time to respond, the connection may be closed without the activity being aware of this and your activity will not receive a response, but instead get stuck waiting indefinitely for data to arrive. You should therefore ensure that you always set a timeout for any connections you make in your custom Java code. diff --git a/content/en/docs/refguide9/mobile/building-efficient-mobile-apps/offlinefirst-data/_index.md b/content/en/docs/refguide9/mobile/building-efficient-mobile-apps/offlinefirst-data/_index.md index 69b5e5cbf34..738e319e44a 100644 --- a/content/en/docs/refguide9/mobile/building-efficient-mobile-apps/offlinefirst-data/_index.md +++ b/content/en/docs/refguide9/mobile/building-efficient-mobile-apps/offlinefirst-data/_index.md @@ -39,7 +39,7 @@ Changes made by the user are stored in this offline-first database, too. This me Another important aspect of developing offline-first apps is backwards-compatibility. Typically when you deploy a new version of a web app to the cloud, all users immediately have access to the latest model. However, that is not the case with offline-first apps. Some parts of your app model are distributed as part of the native mobile app package, such as pages, nanoflows and JavaScript actions. This means even if you change and deploy new versions of these parts, your users do not have access to the latest version until they update their native mobile apps through an OTA package or an online app store such as Google Play or App Store. -Imagine that you have deployed the first version of your native mobile app, your users have downloaded it, and now they are using it. At this point you should be thoughtful of the changes you introduce to the model. For example, assume you rename an entity and deploy it to the Mendix Cloud. The local databases in your users' devices will still be using the old entity name. This may cause synchronization errors if your users attempt to synchronize a new object of the entity you renamed, because the server no longer has an entity with the old name. Even after your users update the apps on their devices, there may be data created using the old model domain that needs to be synchronized with the server. Issues like this are why you need to ensure that your app's model changes are backward-compatible. +Imagine that you have deployed the first version of your native mobile app, your users have downloaded it, and now they are using it. At this point you should be thoughtful of the changes you introduce to the model. For example, assume you rename an entity and deploy it to Mendix Cloud. The local databases in your users' devices will still be using the old entity name. This may cause synchronization errors if your users attempt to synchronize a new object of the entity you renamed, because the server no longer has an entity with the old name. Even after your users update the apps on their devices, there may be data created using the old model domain that needs to be synchronized with the server. Issues like this are why you need to ensure that your app's model changes are backward-compatible. A similar issue may occur regarding changes to other app elements, including microflows and constants available to the client. For example, if your new deployment renames a microflow or modifies its parameters, users who have not updated their apps will be working with the previous model of the app where it references the microflow with the old name. diff --git a/content/en/docs/refguide9/mobile/building-efficient-mobile-apps/offlinefirst-data/local-data-security.md b/content/en/docs/refguide9/mobile/building-efficient-mobile-apps/offlinefirst-data/local-data-security.md index 63d898b0a54..1e6541a74dd 100644 --- a/content/en/docs/refguide9/mobile/building-efficient-mobile-apps/offlinefirst-data/local-data-security.md +++ b/content/en/docs/refguide9/mobile/building-efficient-mobile-apps/offlinefirst-data/local-data-security.md @@ -35,11 +35,11 @@ In apps where you want to grant end-users working with objects access to the res To learn more about customizing the synchronization behavior, see [Customizable Synchronization](/refguide9/mobile/building-efficient-mobile-apps/offlinefirst-data/synchronization/#customizable-synchronization). -### Using Non-Persistent Entities +### Using Non-Persistable Entities -For sensitive data that should never be stored locally, consider using non-persistent entities to store the data temporarily and use microflow calls to securely process the data on the server. +For sensitive data that should never be stored locally, consider using non-persistable entities to store the data temporarily and use microflow calls to securely process the data on the server. -The app keeps the non-persistent objects only in the memory and removes them when they are no longer needed. However, this approach requires connectivity to the Mendix Runtime to call microflows, and thus limits the app's offline-first capabilities. +The app keeps the non-persistable objects only in the memory and removes them when they are no longer needed. However, this approach requires connectivity to the Mendix Runtime to call microflows, and thus limits the app's offline-first capabilities. ### Encrypting the Local Database diff --git a/content/en/docs/refguide9/modeling/app-explorer/app/app-settings/configuration.md b/content/en/docs/refguide9/modeling/app-explorer/app/app-settings/configuration.md index 52edf15a8ed..f4a5a621177 100644 --- a/content/en/docs/refguide9/modeling/app-explorer/app/app-settings/configuration.md +++ b/content/en/docs/refguide9/modeling/app-explorer/app/app-settings/configuration.md @@ -13,7 +13,7 @@ You can define any number of configurations. The active configuration, as in, th You can use configurations to have different database settings for different people working on your app. Maybe one person has SQL Server on their computer and the other has PostgreSQL. You can also have a shared configuration for connecting to a database server that you both have access to. {{% alert color="warning" %}} -When you are deploying your application to a server or the Mendix cloud you will have to configure settings there. For more information, see [Mendix Cloud](/developerportal/deploy/mendix-cloud-deploy/). +When you are deploying your application to a server or Mendix Cloud you will have to configure settings there. For more information, see [Mendix Cloud](/developerportal/deploy/mendix-cloud-deploy/). {{% /alert %}} ## Configuration Settings diff --git a/content/en/docs/refguide9/modeling/app-explorer/security/app-security/_index.md b/content/en/docs/refguide9/modeling/app-explorer/security/app-security/_index.md index 3937b5f1ebb..fa0f9a17efa 100644 --- a/content/en/docs/refguide9/modeling/app-explorer/security/app-security/_index.md +++ b/content/en/docs/refguide9/modeling/app-explorer/security/app-security/_index.md @@ -31,7 +31,7 @@ The security level defines if security is switched off or on for the app and whi | Production | Full security is applied. | Administrator and anonymous access, user roles, security for forms, microflows, entities, and reports. | {{% alert color="warning" %}} -For all licensed Mendix Cloud nodes, you need to use the **Production** security level and configure all security settings accordingly. Security levels **Off** and **Prototype/demo** are only allowed when testing locally, when deploying a Free App, and in cloud environments outside the Mendix Cloud which are specifically set up with **Development mode**. +For all licensed Mendix Cloud nodes, you need to use the **Production** security level and configure all security settings accordingly. Security levels **Off** and **Prototype/demo** are only allowed when testing locally, when deploying a Free App, and in cloud environments outside Mendix Cloud which are specifically set up with **Development mode**. {{% /alert %}} ### Settings Availability for Different Security Levels diff --git a/content/en/docs/refguide9/modeling/app-explorer/security/app-security/administrator.md b/content/en/docs/refguide9/modeling/app-explorer/security/app-security/administrator.md index 2b5d8b3e488..55bf0a77fd8 100644 --- a/content/en/docs/refguide9/modeling/app-explorer/security/app-security/administrator.md +++ b/content/en/docs/refguide9/modeling/app-explorer/security/app-security/administrator.md @@ -42,7 +42,7 @@ This password is only used when Mendix is running locally. Changing the password #### Free Apps -The MxAdmin user is not created automatically when you deploy your app as a Free App. For licensed environments the MxAdmin user is created when you change the password for the first time, for example through the [Environment Details](/developerportal/deploy/environments-details/) for the Mendix Cloud. +The MxAdmin user is not created automatically when you deploy your app as a Free App. For licensed environments the MxAdmin user is created when you change the password for the first time, for example through the [Environment Details](/developerportal/deploy/environments-details/) for Mendix Cloud. When your Free App *has never been deployed and the database still needs to be created*, any data snapshot you have added to your app will be restored to the database of your Free App. You can use this process to add the MxAdmin user to your Free App by doing the following: @@ -80,7 +80,7 @@ This role may be helpful in case you have exceeded your user license restriction {{% /alert %}} {{% alert color="warning" %}} -When your app is not deployed locally, for example to the Mendix Cloud, changes to the user role of the administrator account will not be applied until the administrator password is changed. See the [actions](/developerportal/deploy/environments-details/#actions) section of *Environment Detail* for instructions on changing the admin password. +When your app is not deployed locally, for example to Mendix Cloud, changes to the user role of the administrator account will not be applied until the administrator password is changed. See the [actions](/developerportal/deploy/environments-details/#actions) section of *Environment Detail* for instructions on changing the admin password. {{% /alert %}} ## Read More diff --git a/content/en/docs/refguide9/modeling/application-logic/microflows-and-nanoflows/activities/integration-activities/call-rest-action.md b/content/en/docs/refguide9/modeling/application-logic/microflows-and-nanoflows/activities/integration-activities/call-rest-action.md index 868eb0b57fc..b2459e8eb50 100644 --- a/content/en/docs/refguide9/modeling/application-logic/microflows-and-nanoflows/activities/integration-activities/call-rest-action.md +++ b/content/en/docs/refguide9/modeling/application-logic/microflows-and-nanoflows/activities/integration-activities/call-rest-action.md @@ -68,7 +68,7 @@ The **HTTP method** property defines the HTTP method to use when calling a REST Set **Use timeout on request** to **Yes** to be able specify how long the Call REST activity should wait for the REST endpoint to respond. {{% alert color="warning" %}} -It is recommended that you keep this set to **Yes**. Most cloud infrastructure services (including those used by the Mendix Cloud) will close HTTP connections automatically if there is no traffic for a few minutes, even if your activity is still waiting for a response. This means that, if your activity calls a web service which takes a long time to respond, the connection may be closed without the activity being aware of this, and your activity will not receive a response. Under these circumstances, if **Use timeout on request** is set to **No**, your activity will get stuck waiting indefinitely for data to arrive. +It is recommended that you keep this set to **Yes**. Most cloud infrastructure services (including those used by Mendix Cloud) will close HTTP connections automatically if there is no traffic for a few minutes, even if your activity is still waiting for a response. This means that, if your activity calls a web service which takes a long time to respond, the connection may be closed without the activity being aware of this, and your activity will not receive a response. Under these circumstances, if **Use timeout on request** is set to **No**, your activity will get stuck waiting indefinitely for data to arrive. {{% /alert %}} Default value: *Yes* @@ -104,7 +104,7 @@ The options are: When you select **Override**, you can configure which client certificate will be used. Click **Edit** to specify the **Client certificate identifier**. This identifier can be set in different places, depending on where you deploy the app: -* When you deploy the app in the Mendix cloud, set the **Client certificate identifier** to the desired **WEB SERVICE CALL NAME** when [pinning a client certificate](/developerportal/deploy/certificates/#outgoing-client-certificates). +* When you deploy the app in Mendix Cloud, set the **Client certificate identifier** to the desired **WEB SERVICE CALL NAME** when [pinning a client certificate](/developerportal/deploy/certificates/#outgoing-client-certificates). * When you deploy the app elsewhere, the identifier is set in the custom setting [ClientCertificateUsages](/refguide9/custom-settings/#CACertificates). For testing locally, this can be set as a custom server setting in a [Configuration](/refguide9/configuration/#custom). When this identifier is not set for the environment where your app is deployed (either not pinned or not present in *ClientCertificateUsages*), the default settings will be used (as if **Use app settings** were selected). diff --git a/content/en/docs/refguide9/modeling/application-logic/microflows-and-nanoflows/activities/integration-activities/call-web-service-action.md b/content/en/docs/refguide9/modeling/application-logic/microflows-and-nanoflows/activities/integration-activities/call-web-service-action.md index 07f841c75c2..24b65236c47 100644 --- a/content/en/docs/refguide9/modeling/application-logic/microflows-and-nanoflows/activities/integration-activities/call-web-service-action.md +++ b/content/en/docs/refguide9/modeling/application-logic/microflows-and-nanoflows/activities/integration-activities/call-web-service-action.md @@ -73,7 +73,7 @@ This can be used to throw an exception when the web service takes too long to re Default value: *Yes* {{% alert color="warning" %}} -It is recommended that you keep this set this to **Yes**. Most cloud infrastructure services (including those used by the Mendix Cloud) will close HTTP connections automatically if there is no traffic for a few minutes, even if your activity is still waiting for a response. This means that, if your activity calls a web service which takes a long time to respond, the connection may be closed without the activity being aware of this, and your activity will not receive a response. Under these circumstances, if **Use timeout on request** is set to **No**, your activity will get stuck waiting indefinitely for data to arrive. +It is recommended that you keep this set this to **Yes**. Most cloud infrastructure services (including those used by Mendix Cloud) will close HTTP connections automatically if there is no traffic for a few minutes, even if your activity is still waiting for a response. This means that, if your activity calls a web service which takes a long time to respond, the connection may be closed without the activity being aware of this, and your activity will not receive a response. Under these circumstances, if **Use timeout on request** is set to **No**, your activity will get stuck waiting indefinitely for data to arrive. {{% /alert %}} Default: *No* @@ -123,7 +123,7 @@ The options are: When you select **Override**, you can configure which client certificate will be used. Click **Edit** to specify the **Client certificate identifier**. This identifier can be set in different places, depending on where you deploy the app: -* When you deploy the app in the Mendix cloud, set the **Client certificate identifier** to the desired **WEB SERVICE CALL NAME** when [pinning a client certificate](/developerportal/deploy/certificates/#outgoing-client-certificates). +* When you deploy the app in Mendix Cloud, set the **Client certificate identifier** to the desired **WEB SERVICE CALL NAME** when [pinning a client certificate](/developerportal/deploy/certificates/#outgoing-client-certificates). * When you deploy the app elsewhere, the identifier is set in the custom setting [ClientCertificateUsages](/refguide9/custom-settings/#CACertificates). For testing locally, this can be set as a custom server setting in a [Configuration](/refguide9/configuration/#custom). When this identifier is not set for the environment where your app is deployed (either not pinned or not present in *ClientCertificateUsages*), the default settings will be used (as if **Use app settings** were selected). diff --git a/content/en/docs/refguide9/modeling/application-logic/microflows-and-nanoflows/debug-microflows-and-nanoflows/debug-microflows-remotely.md b/content/en/docs/refguide9/modeling/application-logic/microflows-and-nanoflows/debug-microflows-and-nanoflows/debug-microflows-remotely.md index 575ba6cffc3..43fb1c90634 100644 --- a/content/en/docs/refguide9/modeling/application-logic/microflows-and-nanoflows/debug-microflows-and-nanoflows/debug-microflows-remotely.md +++ b/content/en/docs/refguide9/modeling/application-logic/microflows-and-nanoflows/debug-microflows-and-nanoflows/debug-microflows-remotely.md @@ -34,7 +34,7 @@ Before starting this how-to, make sure you have completed the following prerequi ## The Basics -In the Mendix Cloud, the debugger is always listening for connections so you cannot turn it on or off. To debug your app in the cloud, you need to get a URL and a password from the app environment and provide that information to Studio Pro. The steps below explain how to do this. +In Mendix Cloud, the debugger is always listening for connections so you cannot turn it on or off. To debug your app in the cloud, you need to get a URL and a password from the app environment and provide that information to Studio Pro. The steps below explain how to do this. {{% alert color="info" %}} The debugger supports only debugging of single-instance environments. Multi-instance environments need to be scaled down to one instance before the debugger can be used. See [Scaling Your Environment in Mendix Cloud](/developerportal/deploy/scale-environment/) for more information. @@ -140,7 +140,7 @@ If you do cannot connect the debugger, then you do not have sufficient permissio 2. In the **Connect Debugger** dialog box set the following: - * **Connect to** – select the option *An app running in the Mendix Cloud or on another remote server.* + * **Connect to** – select the option *An app running in Mendix Cloud or on another remote server.* * **URL** – the *URL* from the **Debugger Settings** for your app environment * **Password** – the *Password* from the **Debugger Settings** for your app environment diff --git a/content/en/docs/refguide9/modeling/application-logic/workflows/_index.md b/content/en/docs/refguide9/modeling/application-logic/workflows/_index.md index ebaf39ac6f3..3d2500e640d 100644 --- a/content/en/docs/refguide9/modeling/application-logic/workflows/_index.md +++ b/content/en/docs/refguide9/modeling/application-logic/workflows/_index.md @@ -153,9 +153,9 @@ You can find the following workflow-related entities in the System module: * **WorkflowUserTaskDefinition** – Represents your [user tasks](/refguide9/user-task/) and [system activities](/refguide9/call-microflow/) in the database. It contains two attributes, where **Name** is a **Name** property of the user task or a system activity, and **IsObsolete** is a Boolean that is marked as true when you delete a user task/system activity from your workflow. They still stay in the database (and you will still be able to create reports with them), but Mendix marks that they do not exist anymore. * **Workflow** – A representation of a running workflow, so every time when the new workflow is started, the Runtime creates a new instance. * **WorkflowUserTask** – This entity is created when the Runtime executes the user task and an end-user chooses an action (for example, clicks an **Approve** button to approve a request). This entity can be used for workflow overview pages and in an application logic. -* **WorkflowJumpToDetails** – This non-persistent entity is generated by the [Generate Jump-to Option](/refguide9/generate-jump-to-options/) microflow action and contains information on the workflow instance and activities where the workflow can jump to. -* **WorkflowCurrentActivity** – This non-persistent entity represents data generated by the [Generate Jump-to Option](/refguide9/generate-jump-to-options/) microflow action and contains information on the current activity of the workflow instance. -* **WorkflowActivityDetails** – This non-persistent entity represents data generated by the [Generate Jump-to Option](/refguide9/generate-jump-to-options/) microflow action and contains information on activities of the workflow instance. +* **WorkflowJumpToDetails** – This non-persistable entity is generated by the [Generate Jump-to Option](/refguide9/generate-jump-to-options/) microflow action and contains information on the workflow instance and activities where the workflow can jump to. +* **WorkflowCurrentActivity** – This non-persistable entity represents data generated by the [Generate Jump-to Option](/refguide9/generate-jump-to-options/) microflow action and contains information on the current activity of the workflow instance. +* **WorkflowActivityDetails** – This non-persistable entity represents data generated by the [Generate Jump-to Option](/refguide9/generate-jump-to-options/) microflow action and contains information on activities of the workflow instance. ## Workflow Variables diff --git a/content/en/docs/refguide9/modeling/application-logic/workflows/jump-to.md b/content/en/docs/refguide9/modeling/application-logic/workflows/jump-to.md index 168505a9cf4..c9b37c6e9c4 100644 --- a/content/en/docs/refguide9/modeling/application-logic/workflows/jump-to.md +++ b/content/en/docs/refguide9/modeling/application-logic/workflows/jump-to.md @@ -6,7 +6,7 @@ weight: 55 --- ## Introduction -Running workflow instances can be manually changed while they are in progress. This means that you can manually select what activity the workflow will continue from. This can be useful to correct wrong decisions or to continue a workflow when it is in incompatible state. You can use the [Generate Jump-to Option](/refguide9/generate-jump-to-options/) microflow action to generate a list of activities the workflow can jump to and the [Apply Jump-To Option](/refguide9/apply-jump-to-option/) microflow action to apply the desired changes to the workflow instance. The information is captured in a set of non-persistent entities. +Running workflow instances can be manually changed while they are in progress. This means that you can manually select what activity the workflow will continue from. This can be useful to correct wrong decisions or to continue a workflow when it is in incompatible state. You can use the [Generate Jump-to Option](/refguide9/generate-jump-to-options/) microflow action to generate a list of activities the workflow can jump to and the [Apply Jump-To Option](/refguide9/apply-jump-to-option/) microflow action to apply the desired changes to the workflow instance. The information is captured in a set of non-persistable entities. {{% alert color="info" %}} diff --git a/content/en/docs/refguide9/modeling/domain-model/entities/validation-rules.md b/content/en/docs/refguide9/modeling/domain-model/entities/validation-rules.md index 5555065f6f6..09b4c48f6d1 100644 --- a/content/en/docs/refguide9/modeling/domain-model/entities/validation-rules.md +++ b/content/en/docs/refguide9/modeling/domain-model/entities/validation-rules.md @@ -94,7 +94,7 @@ The uniqueness constraint will also take into account the way that the underlyin When you add a uniqueness constraint to an entity which already contains data, all the existing objects for the affected entity will be checked on deployment for the uniqueness of the attribute. If you have, for example, applied uniqueness validation to an insurance number and there are multiple people with the same insurance number then: * if you deploy the app from Studio Pro, an error will be shown on deployment -* if you deploy the app from a deployment package (for example in the Mendix cloud), the app will not start and errors will be written to the log +* if you deploy the app from a deployment package (for example in Mendix Cloud), the app will not start and errors will be written to the log {{< figure src="/attachments/refguide9/modeling/domain-model/entities/validation-rules/startup-error.png" class="no-border" >}} diff --git a/content/en/docs/refguide9/modeling/integration/odata-services/wrap-services-odata.md b/content/en/docs/refguide9/modeling/integration/odata-services/wrap-services-odata.md index 3958d0414e6..1cb77f1abdf 100644 --- a/content/en/docs/refguide9/modeling/integration/odata-services/wrap-services-odata.md +++ b/content/en/docs/refguide9/modeling/integration/odata-services/wrap-services-odata.md @@ -178,7 +178,7 @@ Set up a connector module that communicates to the Twitter API with OData by fol {{< figure src="/attachments/refguide9/modeling/integration/wrap-services-odata/query-followers-microflow.png" alt="Microflow for querying followers." class="no-border" >}} 6. Export the metadata file of the published OData service to be used in the client module. To do so, open the service and go to **Settings**, and click **Export** next to the **Metadata** field. - Since you are working in local development environment and not deploying locally, your published resource will not automatically be available in the Catalog or the Data Hub pane. See [Data Hub without the Mendix Cloud](/data-hub/data-hub-without-mendix-cloud/) to understand how to work with Data Hub (external entities and the Catalog) for local deployments. + Since you are working in local development environment and not deploying locally, your published resource will not automatically be available in the Catalog or the Data Hub pane. See [Data Hub without Mendix Cloud](/data-hub/data-hub-without-mendix-cloud/) to understand how to work with Data Hub (external entities and the Catalog) for local deployments. #### Building the Client @@ -190,7 +190,7 @@ Set up a Twitter client module that allows users to input a Twitter ID and commu Double-click the entity, and in the **Persistable** field, choose **No**. The domain model for the Twitter client looks like this: - {{< figure src="/attachments/refguide9/modeling/integration/wrap-services-odata/twitter-client-domain-model.png" alt="Twitter client domain model with external entities and non-persistent entity." class="no-border" >}} + {{< figure src="/attachments/refguide9/modeling/integration/wrap-services-odata/twitter-client-domain-model.png" alt="Twitter client domain model with external entities and non-persistable entity." class="no-border" >}} {{< figure src="/attachments/refguide9/modeling/integration/wrap-services-odata/newtwitterinput-microflow.png" alt="Microflow that handles inputted usernames." class="no-border" >}} diff --git a/content/en/docs/refguide9/modeling/integration/rest-services/http-request-and-response-entities.md b/content/en/docs/refguide9/modeling/integration/rest-services/http-request-and-response-entities.md index 2b71f45d211..70c2465daef 100644 --- a/content/en/docs/refguide9/modeling/integration/rest-services/http-request-and-response-entities.md +++ b/content/en/docs/refguide9/modeling/integration/rest-services/http-request-and-response-entities.md @@ -36,7 +36,7 @@ The `HttpResponse` entity has the following attributes: For more information on HTTP status codes, see the [W3C Specification of Status Code Definitions](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html). {{% alert color="warning" %}} -If you deploy to the Mendix Cloud you cannot set a custom `ReasonPhrase` as it will be replaced by a standard reason phrase by the web server. For example, for StatusCode `200`, any custom ReasonPhrase you set will be replaced by `OK`. +If you deploy to Mendix Cloud you cannot set a custom `ReasonPhrase` as it will be replaced by a standard reason phrase by the web server. For example, for StatusCode `200`, any custom ReasonPhrase you set will be replaced by `OK`. {{% /alert %}} You can retrieve or create response headers via the `HttpHeaders` association. diff --git a/content/en/docs/refguide9/modeling/menus/app-menu/create-deployment-package-dialog.md b/content/en/docs/refguide9/modeling/menus/app-menu/create-deployment-package-dialog.md index a4ad8196c2f..b033e44dc33 100644 --- a/content/en/docs/refguide9/modeling/menus/app-menu/create-deployment-package-dialog.md +++ b/content/en/docs/refguide9/modeling/menus/app-menu/create-deployment-package-dialog.md @@ -5,7 +5,7 @@ url: /refguide9/create-deployment-package-dialog/ ## Introduction -A deployment package can be deployed to the Mendix Cloud, another cloud provider (for example SAP BTP), or on a server that is configured to run Mendix software. While developing you can deploy and run on your local machine, but once you are ready to deploy your app elsewhere you will need to create a deployment package. For some platforms, this is done automatically as part of the deploy process but, for others, you will need to explicitly create the deployment package. +A deployment package can be deployed to Mendix Cloud, another cloud provider (for example SAP BTP), or on a server that is configured to run Mendix software. While developing you can deploy and run on your local machine, but once you are ready to deploy your app elsewhere you will need to create a deployment package. For some platforms, this is done automatically as part of the deploy process but, for others, you will need to explicitly create the deployment package. {{< figure src="/attachments/refguide9/modeling/menus/app-menu/create-deployment-package-dialog/create-deployment-package.png" alt="Create Deployment Package dialog" class="no-border" >}} diff --git a/content/en/docs/refguide9/modeling/menus/app-menu/deploy-to-the-cloud-dialog.md b/content/en/docs/refguide9/modeling/menus/app-menu/deploy-to-the-cloud-dialog.md index 3f20e604541..4b0e6a0dd1f 100644 --- a/content/en/docs/refguide9/modeling/menus/app-menu/deploy-to-the-cloud-dialog.md +++ b/content/en/docs/refguide9/modeling/menus/app-menu/deploy-to-the-cloud-dialog.md @@ -5,7 +5,7 @@ url: /refguide9/deploy-to-the-cloud-dialog/ ## Introduction -This menu option dialog creates a versioned deployment package and deploys it to your environment in the Mendix Cloud. +This menu option dialog creates a versioned deployment package and deploys it to your environment in Mendix Cloud. {{< figure src="/attachments/refguide9/modeling/menus/app-menu/deploy-to-the-cloud-dialog/deploy-to-the-cloud.png" alt="Deploy to the Cloud dialog" class="no-border" >}} @@ -31,7 +31,7 @@ You can enter a custom **Description** for this deployment package. It is purely ## App -This shows the **App** in the Mendix Cloud where the deployment package will be deployed. This is for information only, you cannot change the destination here. +This shows the **App** in Mendix Cloud where the deployment package will be deployed. This is for information only, you cannot change the destination here. ## Licensee diff --git a/content/en/docs/refguide9/modeling/menus/view-menu/data-hub-pane.md b/content/en/docs/refguide9/modeling/menus/view-menu/data-hub-pane.md index 5d3637c543e..ab4325c98dd 100644 --- a/content/en/docs/refguide9/modeling/menus/view-menu/data-hub-pane.md +++ b/content/en/docs/refguide9/modeling/menus/view-menu/data-hub-pane.md @@ -117,7 +117,7 @@ If you right-click a consumed entity and **Go to entity**, it will take you to t The associations that are exposed in the services are listed before attributes in alphabetical order. You can click on the **+** to see the entity that the association is with. -**Mulitiple association**s between the same entities are shown before single associations. +**Multiple association**s between the same entities are shown before single associations. In the following example the entity **Customer** has multiple associations with the entity **Order** however, these associations are not supported and cannot be used in your app: diff --git a/content/en/docs/refguide9/modeling/pages/authentication-widgets/_index.md b/content/en/docs/refguide9/modeling/pages/authentication-widgets/_index.md index 9c3f6646a46..a6ee1faa665 100644 --- a/content/en/docs/refguide9/modeling/pages/authentication-widgets/_index.md +++ b/content/en/docs/refguide9/modeling/pages/authentication-widgets/_index.md @@ -23,7 +23,7 @@ The **Authentication** category contains the following widgets: * [Sign-in button](/refguide9/sign-in-button/) – sends a user’s login id and password to the server for authentication {{< figure src="/attachments/refguide9/modeling/pages/authentication-widgets/sign-in-button-example.png" alt="Sign-In Button Example" class="no-border" >}} -* **Sign-out button** – signs the currently signed-in user out. The sign-out button is a button with an on-click event set to **Sign out**. For more information on on-click events, see the [On Click Event and Events Section](/refguide9/on-click-event/). For details on button properties. see [Button Properties](/refguide9/button-properties/). +* **Sign-out button** – signs the currently signed-in user out. The sign-out button is a button with an on-click event set to **Sign out**. For more information on on-click events, see the [On Click Event and Events Section](/refguide9/on-click-event/). For details on button properties, see [Button Properties](/refguide9/button-properties/). * [Validation message](/refguide9/validation-message/) – informs a user about authentication failures if any diff --git a/content/en/docs/refguide9/modeling/resources/task-queue.md b/content/en/docs/refguide9/modeling/resources/task-queue.md index b777353a411..b6f344ea9c1 100644 --- a/content/en/docs/refguide9/modeling/resources/task-queue.md +++ b/content/en/docs/refguide9/modeling/resources/task-queue.md @@ -277,7 +277,7 @@ You can use the [Task Queue Helpers](https://marketplace.mendix.com/link/compone Task queues have the following limitations: * Microflows or Java actions that are executed in the background execute as soon as possible in the order they were created, but possibly in parallel. They are consumed in FIFO order, but then executed in parallel in case of multiple threads. There is no way to execute only a single microflow or Java action at any point in time (meaning, ensure tasks are run sequentially), unless the number of threads is set to 1 and there's only a single runtime node. -* Microflows or Java actions that are executed in the background can *only* use the following types of parameters: Boolean, Integer/Long, Decimal, String, Date and time, Enumeration, committed Persistent Entity. +* Microflows or Java actions that are executed in the background can *only* use the following types of parameters: Boolean, Integer/Long, Decimal, String, Date and time, Enumeration, committed Persistable Entity. * Background microflows or Java actions will start execution as soon as the transaction in which they are created is completed. This ensures that any data that is needed by the background microflow or Java action is committed as well. It is not possible to start a background microflow or Java action immediately, halfway during a transaction. Note that if the transaction is rolled back, the task is not executed at all. * In versions of Mendix below 9.9.0, the total amount of parallelism per node is limited to 40. This means that at most 40 queues with parallelism 1 can be defined, or a single queue with parallelism 40, or somewhere in between, as long as the total does not exceed 40. * Queued actions that have failed cannot be rescheduled out of the box in Mendix 9.8 and below. You can set up a scheduled microflow to re-attempt failed tasks. They can be queried from `System.ProcessedQueueTask` table. @@ -290,7 +290,7 @@ The tasks are then consumed by executors that perform a `SELECT FOR UPDATE SKIP After the task has been executed, it is moved to be an object of the `System.ProcessedQueueTask` entity with `Status` `Completed` or `Failed`. If the task failed with an exception, this is included in the `ErrorMessage` attribute. -Arguments are stored in the `Arguments` attribute as JSON values. Arguments can be any primitive type ([variable](/refguide9/variable-activities/))or a committed persistent object, which is included in the `Arguments` field by its Mendix identifier. Upon execution of the task, the corresponding object is retrieved from the database using the Mendix identifier. For this reason the persistent object must be committed before the task executes, because otherwise a runtime exception will occur. +Arguments are stored in the `Arguments` attribute as JSON values. Arguments can be any primitive type ([variable](/refguide9/variable-activities/))or a committed persistable object, which is included in the `Arguments` field by its Mendix identifier. Upon execution of the task, the corresponding object is retrieved from the database using the Mendix identifier. For this reason the persistable object must be committed before the task executes, because otherwise a runtime exception will occur. When a node crashes, this is eventually detected by another cluster node, because it no longer updates its heartbeat timestamp. At this point the other node will reset all tasks that were running on the crashed node. The reset performs the following actions: diff --git a/content/en/docs/refguide9/modeling/xpath/xpath-constraints/xpath-constraint-functions/xpath-weekday-from-datetime.md b/content/en/docs/refguide9/modeling/xpath/xpath-constraints/xpath-constraint-functions/xpath-weekday-from-datetime.md index 6c4fcbf369e..43cd9422252 100644 --- a/content/en/docs/refguide9/modeling/xpath/xpath-constraints/xpath-constraint-functions/xpath-weekday-from-datetime.md +++ b/content/en/docs/refguide9/modeling/xpath/xpath-constraints/xpath-constraint-functions/xpath-weekday-from-datetime.md @@ -5,7 +5,7 @@ url: /refguide9/xpath-weekday-from-datetime/ ## Overview -The `weekday-from-dateTime()` function extracts the day of the week (as a number) from a **Date and time** attribute so it can be used to compare to a value. For running locally and deployment using a PostgreSQL database, such as that used in the Mendix Cloud, the values range from 1 to 7 (1 = Sunday, 7 = Saturday). +The `weekday-from-dateTime()` function extracts the day of the week (as a number) from a **Date and time** attribute so it can be used to compare to a value. For running locally and deployment using a PostgreSQL database, such as that used in Mendix Cloud, the values range from 1 to 7 (1 = Sunday, 7 = Saturday). {{% alert color="warning" %}} The range of values returned, and the day of the week corresponding to the lowest value returned depend on which database you are using. diff --git a/content/en/docs/refguide9/runtime/custom-settings/_index.md b/content/en/docs/refguide9/runtime/custom-settings/_index.md index ee26191fbc8..683784e6153 100644 --- a/content/en/docs/refguide9/runtime/custom-settings/_index.md +++ b/content/en/docs/refguide9/runtime/custom-settings/_index.md @@ -16,9 +16,9 @@ Only use this functionality if you know exactly what you are doing. Incorrect va Each custom setting consists of a name and a value. For example, to set the hash algorithm to BCRYPT you add a custom setting with name `HashAlgorithm` and value `BCRYPT`. For a more detailed list of settings and example values, consult [full-documented-m2ee.yaml](https://github.com/mendix/m2ee-tools/blob/master/examples/full-documented-m2ee.yaml). -If you are running your app on the Mendix Cloud or SAP Business Technology Platform, you can access these settings in [Apps](https://sprintr.home.mendix.com/) via **Environments** > **Environment Details** > **Runtime** > **Custom Runtime Settings**. For more information see: +If you are running your app on Mendix Cloud or SAP Business Technology Platform, you can access these settings in [Apps](https://sprintr.home.mendix.com/) via **Environments** > **Environment Details** > **Runtime** > **Custom Runtime Settings**. For more information see: -* the [Runtime Tab](/developerportal/deploy/environments-details/#runtime-tab) section of *Environment Details* for information about the Mendix Cloud +* the [Runtime Tab](/developerportal/deploy/environments-details/#runtime-tab) section of *Environment Details* for information about Mendix Cloud * the [Runtime tab](/developerportal/deploy/sap-cloud-platform/#runtime-tab) section of *SAP Business Technology Platform* for information about the SAP BTP When you are running your app locally, you can set these values in a [Configuration](/refguide9/configuration/#custom). @@ -152,7 +152,7 @@ Before the data copying process starts, the main database structure will be gene 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. {{% alert color="warning" %}} -For deployments to the Mendix Cloud, SAP BTP, and Mendix for Private Cloud these settings are managed for you and cannot be overwritten. +For deployments to Mendix Cloud, SAP BTP, and Mendix for Private Cloud these settings are managed for you and cannot be overwritten. {{% /alert %}} | Name | Description | Default Value | @@ -179,7 +179,7 @@ For deployments to the Mendix Cloud, SAP BTP, and Mendix for Private Cloud these These settings can be changed to use a Microsoft Azure SQL database for your Mendix application. {{% alert color="warning" %}} -For deployments to the Mendix Cloud, SAP BTP, and Mendix for Private Cloud these settings are managed for you and cannot be overwritten. +For deployments to Mendix Cloud, SAP BTP, and Mendix for Private Cloud these settings are managed for you and cannot be overwritten. {{% /alert %}} First, you need to create an Azure SQL database (for information on how to do this, see this [SQL Database Tutorial](https://azure.microsoft.com/en-us/documentation/articles/sql-database-get-started/)). Make sure your Azure firewall settings allow your Mendix application to reach the Azure SQL database (by default, the Azure firewall does not allow external connections). @@ -197,7 +197,7 @@ First, you need to create an Azure SQL database (for information on how to do th These settings can be used to store files using the Microsoft Azure blob storage service. Server-side encryption can be configured through the Azure Portal (for more information, see [Azure Storage encryption for data at rest](https://azure.microsoft.com/en-us/documentation/articles/storage-service-encryption/)). {{% alert color="warning" %}} -For deployments to the Mendix Cloud, SAP BTP, and Mendix for Private Cloud these settings are managed for you and cannot be overwritten. +For deployments to Mendix Cloud, SAP BTP, and Mendix for Private Cloud these settings are managed for you and cannot be overwritten. {{% /alert %}} | Name | Description | Default Value | diff --git a/content/en/docs/refguide9/runtime/custom-settings/tricky-custom-runtime-settings.md b/content/en/docs/refguide9/runtime/custom-settings/tricky-custom-runtime-settings.md index f88753f83d8..398bde2a80f 100644 --- a/content/en/docs/refguide9/runtime/custom-settings/tricky-custom-runtime-settings.md +++ b/content/en/docs/refguide9/runtime/custom-settings/tricky-custom-runtime-settings.md @@ -58,7 +58,7 @@ So, make sure to keep in mind all of the above when changing these values. Also, `LogMinDurationQuery` can be a very helpful tool in detecting queries that are taking longer than expected. This is especially useful for queries that only take longer than expected after the data used in and by the app grows larger, because this might mean the queries will only become slower after a few months of usage and might not have turned up in pre-release performance tests. Determining that a query is slow depends on the type of app you are running. But in general, any query that directly affects a user using the app (meaning, not a background process) will have a lower threshold for determining it as slow than a query running in the background. For example, a drop-down menu that takes 5 seconds to load before anything can be selected is many times worse than a PDF generated in the background taking 8 instead of 4 seconds because of a “slow” query that takes 5 seconds instead of 1 second. -In the Mendix Cloud, we have chosen a default value of 10000 (meaning, 10 seconds). As any such query would be noticeable on the front end of the application. If your application has no background processes, this value might be too high. On the other hand, if your application is running many background processes with minimal user interaction, this value might be too low. In the end, the right value to set will depend on the functional requirements of your app and needs to be set accordingly. +In Mendix Cloud, we have chosen a default value of 10000 (meaning, 10 seconds). As any such query would be noticeable on the front end of the application. If your application has no background processes, this value might be too high. On the other hand, if your application is running many background processes with minimal user interaction, this value might be too low. In the end, the right value to set will depend on the functional requirements of your app and needs to be set accordingly. The most important part of this setting is to regularly check the application log for any queries exceeding this value and to resolve them if they are deemed problematic. Setting this value without following up on it is as useful as not setting the value at all. Queries running slowly can negatively affect the user experience, the throughput of any action affected by them, the memory usage of the application, the CPU usage of the application, and can even lead to outages in extreme cases. Given all that, Mendix strongly advises setting this value to a number that makes sense for your application and following up on any query that is logged. diff --git a/content/en/docs/refguide9/runtime/data-storage/_index.md b/content/en/docs/refguide9/runtime/data-storage/_index.md index 6984413b022..7684a7228c1 100644 --- a/content/en/docs/refguide9/runtime/data-storage/_index.md +++ b/content/en/docs/refguide9/runtime/data-storage/_index.md @@ -21,7 +21,7 @@ See [Databases and Apps](#databases), below, for an overview of this. ## Supported Databases -For apps deployed to the Mendix Cloud, Mendix uses a PostgreSQL database for storing the data defined in the app domain model(s). +For apps deployed to Mendix Cloud, Mendix uses a PostgreSQL database for storing the data defined in the app domain model(s). If you are deploying to a different infrastructure, you will need to provide your own database. See [System Requirements](/refguide9/system-requirements/#databases) for the list of supported databases. diff --git a/content/en/docs/refguide9/runtime/logging.md b/content/en/docs/refguide9/runtime/logging.md index 1856c72a515..f1d497e7160 100644 --- a/content/en/docs/refguide9/runtime/logging.md +++ b/content/en/docs/refguide9/runtime/logging.md @@ -9,7 +9,7 @@ description: "Describes what the various log levels of the runtime will show as Below we describe what the various log levels of the runtime will show as output. During development, these log levels can be set in the console (advanced -> set log levels), when deployed on a server, please refer to the [Deployment](/developerportal/deploy/mendix-cloud-deploy/) pages. -You can also set log levels to provide more or less information when testing locally using the console in Studio Pro. See [Configuring the Log Levels for Standard Log Messages](/howto9/monitoring-troubleshooting/log-levels/#standard-log-levels) in *How To Set Log Levels* for more information. +You can also set log levels to provide more or less information when testing locally using the console in Studio Pro. See [Configuring Log Levels Within Studio Pro](/howto/monitoring-troubleshooting/log-levels/#configure-log-levels-from-studio-pro) in *How To Set Log Levels* for more information. ## Log Levels {#log-levels} diff --git a/content/en/docs/refguide9/runtime/runtime-java/_index.md b/content/en/docs/refguide9/runtime/runtime-java/_index.md index 652b006a3f6..6f80f391c0a 100644 --- a/content/en/docs/refguide9/runtime/runtime-java/_index.md +++ b/content/en/docs/refguide9/runtime/runtime-java/_index.md @@ -18,7 +18,7 @@ When using Mendix you will use it together with Java (JDK) to deploy and run the {{< figure src="/attachments/refguide9/runtime/runtime-java/2.jpg" class="no-border" >}} -Or as shown in the Mendix Cloud: +Or as shown in Mendix Cloud: {{< figure src="/attachments/refguide9/runtime/runtime-java/4.jpg" class="no-border" >}} @@ -48,7 +48,7 @@ Back to the Heap. We can divide it into three parts: When the GC executes a minor garbage collection it will try to clean up all the objects in the young generation only. If it fails to clean up an Eden Space object it will move it to the Survivor Space. If it fails to clean up a Survivor Space object enough times, it will move it to the Tenured Generation. At some time, the GC will decide to clean the Tenured Generation and will execute a major garbage collection to try to clean up all the objects in both the young and the old generation. So a healthy JVM would have a Heap that goes up and down in relation to its memory usage in the various parts. -You can see this quite well in the following JVM Object Heap graph taken from the Mendix Cloud: +You can see this quite well in the following JVM Object Heap graph taken from Mendix Cloud: {{< figure src="/attachments/refguide9/runtime/runtime-java/5.jpg" class="no-border" >}} diff --git a/content/en/docs/refguide9/version-control/on-premises-git.md b/content/en/docs/refguide9/version-control/on-premises-git.md index 6305cb721e7..5aa31245a92 100644 --- a/content/en/docs/refguide9/version-control/on-premises-git.md +++ b/content/en/docs/refguide9/version-control/on-premises-git.md @@ -140,7 +140,7 @@ For the previous local disk method do the following: Once you have an unversioned app, you can upload it to your private team server. {{% alert color="warning" %}} -The repository has to be completely empty (including README.md and. gitignore files), or the upload will fail. +The repository has to be completely empty (including README.md and .gitignore files), or the upload will fail. {{% /alert %}} To upload your app, do the following: diff --git a/content/en/docs/refguide9/version-control/using-version-control-in-studio-pro/_index.md b/content/en/docs/refguide9/version-control/using-version-control-in-studio-pro/_index.md index 4fbb1e88739..4f697949cb5 100644 --- a/content/en/docs/refguide9/version-control/using-version-control-in-studio-pro/_index.md +++ b/content/en/docs/refguide9/version-control/using-version-control-in-studio-pro/_index.md @@ -353,7 +353,7 @@ When it creates the package, Studio Pro will also create a tag representing this #### Deploying a Specific Version to a Mendix Licensed Cloud Node -If you are using the Mendix Cloud you can choose **App** > **Deploy to Licensed Cloud Node** to deploy a specific version. +If you are using Mendix Cloud you can choose **App** > **Deploy to Licensed Cloud Node** to deploy a specific version. {{< figure src="/attachments/refguide9/version-control/using-version-control-in-studio-pro/deploy-to-cloud.png" class="no-border" >}} @@ -380,7 +380,7 @@ Always use the version of TortoiseSVN which matches your app model. If you open {{% /alert %}} {{% alert color="info" %}} -Studio Pro adds metadata on the Mendix version of your app to each revision when you commit or create a branch. Therefore, when committing or merging using third-party tools, it may no longer be possible to deploy to the Mendix Cloud. This can be fixed by making a commit using Studio Pro, so the correct metadata is present again. +Studio Pro adds metadata on the Mendix version of your app to each revision when you commit or create a branch. Therefore, when committing or merging using third-party tools, it may no longer be possible to deploy to Mendix Cloud. This can be fixed by making a commit using Studio Pro, so the correct metadata is present again. {{% /alert %}} {{% alert color="warning" %}} diff --git a/content/en/docs/releasenotes/catalog/_index.md b/content/en/docs/releasenotes/catalog/_index.md index f997544e2ea..e38406a7522 100644 --- a/content/en/docs/releasenotes/catalog/_index.md +++ b/content/en/docs/releasenotes/catalog/_index.md @@ -14,6 +14,12 @@ These release notes cover changes made to the [Catalog](/catalog/). ## 2024 +### September 26, 2024 + +#### Improvement + +* We made a few UI styling adjustments. + ### September 12, 2024 #### Improvement @@ -263,7 +269,7 @@ These release notes cover changes made to the [Catalog](/catalog/). #### Features -* We added [beta](/releasenotes/beta-features/) support for published REST services (OpenAPI) to the Catalog. REST services in your Mendix app are now automatically registered when you deploy to the Mendix Cloud. For more information, see [OpenAPI Automatic Registration](/catalog/register/openapi-automatic-registration/). Have a look and [let us know what you think](https://community.mendix.com/link/space/catalog). +* We added [beta](/releasenotes/beta-features/) support for published REST services (OpenAPI) to the Catalog. REST services in your Mendix app are now automatically registered when you deploy to Mendix Cloud. For more information, see [OpenAPI Automatic Registration](/catalog/register/openapi-automatic-registration/). Have a look and [let us know what you think](https://community.mendix.com/link/space/catalog). #### Improvements diff --git a/content/en/docs/releasenotes/control-center/_index.md b/content/en/docs/releasenotes/control-center/_index.md index 025b81df16c..08a21bbdc8a 100644 --- a/content/en/docs/releasenotes/control-center/_index.md +++ b/content/en/docs/releasenotes/control-center/_index.md @@ -14,6 +14,12 @@ To see the current status of the Mendix Control Center, see [Mendix Status](http ## 2024 +### September 29, 2024 + +#### New Features + +* We have centralized app team roles at the company level. This enhances your ability to govern access across all Mendix applications and also enables the programmatic assignment of app team roles via [the Mendix Projects API](/apidocs-mxsdk/apidocs/projects-api/). You can migrate the old app-level app team roles to centralized company-level app team roles on the [Roles & Permissions](/control-center/roles-and-permissions/#migrate-centralized-roles) page. + ### September 5, 2024 #### New Features diff --git a/content/en/docs/releasenotes/deployment/mendix-cloud.md b/content/en/docs/releasenotes/deployment/mendix-cloud.md index ca255a5d737..4300e149371 100644 --- a/content/en/docs/releasenotes/deployment/mendix-cloud.md +++ b/content/en/docs/releasenotes/deployment/mendix-cloud.md @@ -296,7 +296,7 @@ For information on the current status of deployment to Mendix Cloud and any plan #### Portal Enhancements -* The webhooks feature is now released for GA. Webhooks can trigger endpoints when changes are committed to a Team Server Git repository, or when a new deployment package is available for deployment to the Mendix Cloud. For more information, see [Webhooks](/developerportal/deploy/webhooks/). +* The webhooks feature is now released for GA. Webhooks can trigger endpoints when changes are committed to a Team Server Git repository, or when a new deployment package is available for deployment to Mendix Cloud. For more information, see [Webhooks](/developerportal/deploy/webhooks/). #### Improvements @@ -1249,7 +1249,7 @@ If you run services that connect to a `*.mendixcloud.com` endpoint AND use a sta * The Technical Contact can re-order the environments * As part of support for Flexible Environments, we have made the following changes: * When deploying your application via the Developer Portal, you can choose the destination environment - * When viewing metrics, logs, backups, etc. you will have to choose the environment using a drop-down rather than clicking directly on the environment you want + * When viewing metrics, logs, backups, etc., you will have to choose the environment using a drop-down rather than clicking directly on the environment you want #### Other Improvements diff --git a/content/en/docs/releasenotes/deployment/mendix-for-private-cloud.md b/content/en/docs/releasenotes/deployment/mendix-for-private-cloud.md index 50af86a33c4..861feca9678 100644 --- a/content/en/docs/releasenotes/deployment/mendix-for-private-cloud.md +++ b/content/en/docs/releasenotes/deployment/mendix-for-private-cloud.md @@ -25,7 +25,7 @@ For information on the current status of deployment to Mendix for Private Cloud * We have updated components to the latest dependency versions in order to improve security score ratings for container images. * You can now configure the Operator to trust the Private Cloud Licensing Manager using a self-signed CA certificate. * We have resolved an issue where the application couldn't be scaled up when the namespace was configured with PCLM but lacked licenses. -* The logs are now generated in JSON format so that most fields (such as log levels) are now automatically recognised. +* The logs are now generated in JSON format so that most fields (such as log levels) are now automatically recognized. ### September 5th, 2024 diff --git a/content/en/docs/releasenotes/developer-portal/_index.md b/content/en/docs/releasenotes/developer-portal/_index.md index e9faae9a20d..94ab1330d64 100644 --- a/content/en/docs/releasenotes/developer-portal/_index.md +++ b/content/en/docs/releasenotes/developer-portal/_index.md @@ -19,6 +19,23 @@ To see the current status of the Mendix Portal, see [Mendix Status](https://stat ## 2024 +### September 29, 2024 + +#### Improvements + +* We centralized the management of team app roles in [Control Center](/control-center/roles-and-permissions/#migrate-centralized-roles). This improves access governance across all Mendix applications and streamlines the setup process for app access. +* We made it possible for you to add external team members to your app via the [Projects API](https://docs.mendix.com/apidocs-mxsdk/apidocs/projects-api/). This mimics the functionality that is already in place through the user interface. + +#### Fixes + +* We fixed a bug where the commit dates for git-enabled apps on the [Team Server](https://docs.mendix.com/developerportal/general/team-server/#revision-history) page were not correctly localized in some cases. + +### September 26, 2024 + +#### Improvements + +* In [Portfolio Management](/developerportal/portfolio-management/initiatives-overview/), you can now assign multiple owners to an initiative. + ### August 25, 2024 #### Improvements diff --git a/content/en/docs/releasenotes/mobile/hybrid-app.md b/content/en/docs/releasenotes/mobile/hybrid-app.md index a04d787566c..9dc209c708f 100644 --- a/content/en/docs/releasenotes/mobile/hybrid-app.md +++ b/content/en/docs/releasenotes/mobile/hybrid-app.md @@ -365,7 +365,7 @@ For this update, Mendix recommends downloading a fresh hybrid app package from t **Release date: April 19, 2018** * We improved the styling of the loader screen. -* We added backwards compatibility with respect to quality vs. density properties (for Android only). +* We added backwards compatibility with respect to quality versus density properties (for Android only). ### Hybrid App Base 2.0.3 / Hybrid App Template 2.0.1 diff --git a/content/en/docs/releasenotes/sdk/metamodel/metamodel-10/metamodel-10.15.md b/content/en/docs/releasenotes/sdk/metamodel/metamodel-10/metamodel-10.15.md new file mode 100644 index 00000000000..d9b8fa7ab39 --- /dev/null +++ b/content/en/docs/releasenotes/sdk/metamodel/metamodel-10/metamodel-10.15.md @@ -0,0 +1,27 @@ +--- +title: "10.15" +url: /releasenotes/sdk/metamodel-10.15/ +weight: 85 +--- + +## 10.15.0 + +### Microflows + +#### SequenceFlow (Element) + +* We deleted the `caseValue` property. You can use the 'caseValues' property instead. +* We introduced the `caseValues` property. + +### Mappings + +#### MappingSource (Element) + +* We made the MappingSource element public, which means you can use (some of) its properties without first loading the unit. +* We introduced the `name` property. Info: "An identifier for mapping source." + +### CustomWidgets + +#### WidgetValueType (Element) + +* We introduced the `defaultType` property. diff --git a/content/en/docs/releasenotes/sdk/model-sdk/model-sdk-4.md b/content/en/docs/releasenotes/sdk/model-sdk/model-sdk-4.md index 6ec3ef2152f..b8575b5654f 100644 --- a/content/en/docs/releasenotes/sdk/model-sdk/model-sdk-4.md +++ b/content/en/docs/releasenotes/sdk/model-sdk/model-sdk-4.md @@ -4,6 +4,13 @@ url: /releasenotes/sdk/model-sdk-4/ weight: 97 --- +## 4.91.0 {#491} + +**Release date: September 18th, 2024** + +* We added support for Mendix [10.15.0](/releasenotes/studio-pro/10.15/). +* We added support for Mendix Metamodel [10.15.0](/releasenotes/sdk/metamodel-10.15/). + ## 4.90.0 {#490} **Release date: August 22nd, 2024** diff --git a/content/en/docs/releasenotes/studio-pro/10/10.11.md b/content/en/docs/releasenotes/studio-pro/10/10.11.md index 23f0e73c236..a5e2ed62ebf 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.11.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.11.md @@ -109,8 +109,9 @@ We recommend that you upgrade apps and Marketplace modules to Java 21. * Fixed in [10.12](/releasenotes/studio-pro/10.12/#fix-workflow-parameter) * Studio Pro on Mac loads user settings from the previous version of the application. * Fixed in [10.12.2](/releasenotes/studio-pro/10.12/#fix-user-settings-mac) and [10.13.0](/releasenotes/studio-pro/10.13/#fix-user-settings-mac). +* When importing Marketplace modules with Studio Pro, their version numbers do not represent the module's version. Instead they mention the current Studio Pro version. This does not affect previously imported Marketplace modules. + * Fixed in [10.14.0](/releasenotes/studio-pro/10.14/#fix-marketplace-modules). * Line endings in CSS files are not being handled properly, so when using [Revert All Changes](/refguide/using-version-control-in-studio-pro/) or performing other version-control operations, CSS files appear in the [Changes on Disk](/refguide/version-control-menu/#show-changes) dialog box. * Workaround: For details, see [this section](/refguide/troubleshoot-version-control-issues/#css-error) in *Troubleshooting Version Control*. * A finished parallel split path that is removed from a running workflow instance wrongly leads to a versioning conflict. Please note that "path" was called "branch" in earlier versions. * There is a positioning error in the logic editors when you are dragging a large element, such as a loop, into a sequence flow, it overlaps with the existing elements. -* When importing Marketplace modules with Studio Pro, their version numbers do not represent the module's version. Instead they mention the current Studio Pro version. This does not affect previously imported Marketplace modules. diff --git a/content/en/docs/releasenotes/studio-pro/10/10.12.md b/content/en/docs/releasenotes/studio-pro/10/10.12.md index b7956f4289b..94800db3e4b 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.12.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.12.md @@ -15,6 +15,38 @@ mts: true This is the [MTS](/releasenotes/studio-pro/lts-mts/#mts) version 10 release for apps in production. {{% /alert %}} +## 10.12.6 + +**Release date: September 30, 2024** + +{{% button color="info" href="https://marketplace.mendix.com/link/studiopro/10.12.6" text="Go to Marketplace" title="Download version 10.12.6 from the Marketplace" %}} + +### Improvements + +* We now throw a consistency error when a page or microflow without any roles has a URL configured. (Ticket 225241) +* We added support in the External Database Connector for using a hard-coded string containing JSON as a parameter value. (Tickets 223881 and 226381) +* We improved error handling for [delete object(s)](/refguide/deleting-objects/) actions in cases they try to delete a file which does not exist. +* We added the ability to create Studio Pro memory snapshots. +* We optimized the performance of the **Properties Tool Window** when editing pages, enhancing responsiveness. +* In **Import Mapping**, we now display the "Custom name" from JSON Structure in the "Call a microflow" dialog. +* You can now use Ctrl+Enter as a keyboard shortcut for "Ok" in the Query External database dialog. + +### Fixes + +* We fixed an issue in import mapping where creating a microflow for object handling would throw an exception when there were duplicate attribute names (Tickets 201905, 217287). +* We fixed an issue where the garbage collector could clean up objects being returned from a microflow before they could be returned, leading to an error. (Ticket 222075) +* We fixed an issue in Firefox where the change event triggered before input validations were complete. (Ticket 223757) +* We fixed an issue where Core.initializeSession(IUser, ..) was blocked by a database transaction lock in case of SQL Server with foreign keys enabled. (Ticket 226036) +* We fixed an issue where building fails when a project that was created with Studio Pro 9.24.0 or below containing *.jar* exclusions was opened with newer versions. (Ticket 227102) +* We fixed an issue where a client error dialog was shown when the override page title was used with an expression variable containing '$currentObject'. (Ticket 227475) +* We fixed Studio Pro crash that happened when editing Japanese characters in the expression editor. (Ticket 227556) +* We fixed an issue that when a pluggable widget with a text template property, which is [conditionally hidden](/apidocs-mxsdk/apidocs/pluggable-widgets-config-api/#customizing-the-widgets-properties) in Studio Pro, would show up in the ['Changes pane'](/refguide/changes-pane/) when you changed something else on the widget. For example, the **Load more caption** of data grid 2 would show up as changed when you changed something else on data grid 2. +* We fixed an issue with the extension cache clean up in Studio Pro that could result in issues with some extensions. +* We now correctly take into account the excluded *.jar*s of managed dependencies when compiling Java actions. +* We fixed an issue where in some LibGit2 was not fetching extra objects while in partial mode. +* We fixed an issue where an **Oops** dialog was shown when the [Data Widgets](https://marketplace.mendix.com/link/component/116540?_gl=1*jpe0m1*_gcl_au*MTg4MTk2NjAyMi4xNzIxODA1MDU2) module was updated to version 2.24.0 or above, when a data grid 2 was configured with a column using the `owner` or `changedBy` system association. + + ## 10.12.5 {#10125} **Release date: September 17, 2024** @@ -47,12 +79,13 @@ This is the [MTS](/releasenotes/studio-pro/lts-mts/#mts) version 10 release for ### Known Issues +* When importing Marketplace modules with Studio Pro, their version numbers do not represent the module's version. Instead they mention the current Studio Pro version. This does not affect previously imported Marketplace modules. + * Fixed in [10.14.0](/releasenotes/studio-pro/10.14/#fix-marketplace-modules). * Line endings in CSS files are not being handled properly, so when using [Revert All Changes](/refguide/using-version-control-in-studio-pro/) or performing other version-control operations, CSS files appear in the [Changes on Disk](/refguide/version-control-menu/#show-changes) dialog box. * Workaround: For details, see [this section](/refguide/troubleshoot-version-control-issues/#css-error) in *Troubleshooting Version Control*. * A finished parallel split path that is removed from a running workflow instance wrongly leads to a versioning conflict. Please note that "path" was called "branch" in earlier versions. * There is a positioning error in the logic editors when you are dragging a large element, such as a loop, into a sequence flow, it overlaps with the existing elements. * Studio Pro on Mac loads user settings from the previous version of the application. -* When importing Marketplace modules with Studio Pro, their version numbers do not represent the module's version. Instead they mention the current Studio Pro version. This does not affect previously imported Marketplace modules. ## 10.12.4 {#10124} @@ -83,12 +116,13 @@ This is the [MTS](/releasenotes/studio-pro/lts-mts/#mts) version 10 release for ### Known Issues +* When importing Marketplace modules with Studio Pro, their version numbers do not represent the module's version. Instead they mention the current Studio Pro version. This does not affect previously imported Marketplace modules. + * Fixed in [10.14.0](/releasenotes/studio-pro/10.14/#fix-marketplace-modules). * Line endings in CSS files are not being handled properly, so when using [Revert All Changes](/refguide/using-version-control-in-studio-pro/) or performing other version-control operations, CSS files appear in the [Changes on Disk](/refguide/version-control-menu/#show-changes) dialog box. * Workaround: For details, see [this section](/refguide/troubleshoot-version-control-issues/#css-error) in *Troubleshooting Version Control*. * A finished parallel split path that is removed from a running workflow instance wrongly leads to a versioning conflict. Please note that "path" was called "branch" in earlier versions. * There is a positioning error in the logic editors when you are dragging a large element, such as a loop, into a sequence flow, it overlaps with the existing elements. * Studio Pro on Mac loads user settings from the previous version of the application. -* When importing Marketplace modules with Studio Pro, their version numbers do not represent the module's version. Instead they mention the current Studio Pro version. This does not affect previously imported Marketplace modules. ## 10.12.3 {#10123} @@ -120,12 +154,13 @@ This is the [MTS](/releasenotes/studio-pro/lts-mts/#mts) version 10 release for ### Known Issues +* When importing Marketplace modules with Studio Pro, their version numbers do not represent the module's version. Instead they mention the current Studio Pro version. This does not affect previously imported Marketplace modules. + * Fixed in [10.14.0](/releasenotes/studio-pro/10.14/#fix-marketplace-modules). * Line endings in CSS files are not being handled properly, so when using [Revert All Changes](/refguide/using-version-control-in-studio-pro/) or performing other version-control operations, CSS files appear in the [Changes on Disk](/refguide/version-control-menu/#show-changes) dialog box. * Workaround: For details, see [this section](/refguide/troubleshoot-version-control-issues/#css-error) in *Troubleshooting Version Control*. * A finished parallel split path that is removed from a running workflow instance wrongly leads to a versioning conflict. Please note that "path" was called "branch" in earlier versions. * There is a positioning error in the logic editors when you are dragging a large element, such as a loop, into a sequence flow, it overlaps with the existing elements. * Studio Pro on Mac loads user settings from the previous version of the application. -* When importing Marketplace modules with Studio Pro, their version numbers do not represent the module's version. Instead they mention the current Studio Pro version. This does not affect previously imported Marketplace modules. ## 10.12.2 {#10122} @@ -151,19 +186,20 @@ This is the [MTS](/releasenotes/studio-pro/lts-mts/#mts) version 10 release for * We fixed an issue in the Dojo client where the `mx.data.callNanoflow` API did not return the result from the nanoflow. (Ticket 222682) * We fixed an issue when an error dialog box was displayed after opening an app in the Mendix Portal when the user was signed in and there was no Internet connection. * We fixed a memory leak related to running an app. -* We fixed an issue where changing an [event action](/refguide/text-box/#events) or a list view [on click](/refguide/list-view/#on-click) or [pull down](/refguide/list-view/#pull-down) action from a microflow to another type of action resulted in an **Oops** dialog boz. +* We fixed an issue where changing an [event action](/refguide/text-box/#events) or a list view [on click](/refguide/list-view/#on-click) or [pull down](/refguide/list-view/#pull-down) action from a microflow to another type of action resulted in an **Oops** dialog box. * We fixed an issue where the name of a `userlib` dependency in the SBOM was incorrect. * We fixed an issue in the React client where the page did not load when navigating back from a page that had been opened by a microflow that closed all pages. * We fixed an issue in the External Database Connector where the Date and Time parameter was not working for PostgreSQL. ### Known Issues +* When importing Marketplace modules with Studio Pro, their version numbers do not represent the module's version. Instead they mention the current Studio Pro version. This does not affect previously imported Marketplace modules. + * Fixed in [10.14.0](/releasenotes/studio-pro/10.14/#fix-marketplace-modules). * Line endings in CSS files are not being handled properly, so when using [Revert All Changes](/refguide/using-version-control-in-studio-pro/) or performing other version-control operations, CSS files appear in the [Changes on Disk](/refguide/version-control-menu/#show-changes) dialog box. * Workaround: For details, see [this section](/refguide/troubleshoot-version-control-issues/#css-error) in *Troubleshooting Version Control*. * A finished parallel split path that is removed from a running workflow instance wrongly leads to a versioning conflict. Please note that "path" was called "branch" in earlier versions. * There is a positioning error in the logic editors when you are dragging a large element, such as a loop, into a sequence flow, it overlaps with the existing elements. * Studio Pro on Mac loads user settings from the previous version of the application. -* When importing Marketplace modules with Studio Pro, their version numbers do not represent the module's version. Instead they mention the current Studio Pro version. This does not affect previously imported Marketplace modules. ## 10.12.1 {#10121} @@ -188,11 +224,12 @@ This is the [MTS](/releasenotes/studio-pro/lts-mts/#mts) version 10 release for * Studio Pro on Mac loads user settings from the previous version of the application. * Fixed in [10.12.2](#fix-user-settings-mac) and [10.13.0](/releasenotes/studio-pro/10.13/#fix-user-settings-mac). +* When importing Marketplace modules with Studio Pro, their version numbers do not represent the module's version. Instead they mention the current Studio Pro version. This does not affect previously imported Marketplace modules. + * Fixed in [10.14.0](/releasenotes/studio-pro/10.14/#fix-marketplace-modules). * Line endings in CSS files are not being handled properly, so when using [Revert All Changes](/refguide/using-version-control-in-studio-pro/) or performing other version-control operations, CSS files appear in the [Changes on Disk](/refguide/version-control-menu/#show-changes) dialog box. * Workaround: For details, see [this section](/refguide/troubleshoot-version-control-issues/#css-error) in *Troubleshooting Version Control*. * A finished parallel split path that is removed from a running workflow instance wrongly leads to a versioning conflict. Please note that "path" was called "branch" in earlier versions. * There is a positioning error in the logic editors when you are dragging a large element, such as a loop, into a sequence flow, it overlaps with the existing elements. -* When importing Marketplace modules with Studio Pro, their version numbers do not represent the module's version. Instead they mention the current Studio Pro version. This does not affect previously imported Marketplace modules. ## 10.12.0 {#10120} @@ -219,7 +256,7 @@ Below is a list of Maia features introduced in this release: It is now possible to pass primitive values from pages to microflows and nanoflows. You can now use [expressions](/refguide/expressions/) to set primitive values as arguments (like a string or Boolean), use functions, and even follow associations! This can be used on triggering call microflow and call nanoflow client [actions](/refguide/on-click-event/#call-microflow), and also as in data sources based on microflows or nanoflows. -The advantage is that microflows and nanoflows can now more easily be (re)used when they have primitive parameters, as they can be called directly from a page. Previously, multiple microflows or nanoflows had to be used, or a non-persistent entity had to be introduced in both the logic and UI. Not anymore! +The advantage is that microflows and nanoflows can now more easily be (re)used when they have primitive parameters, as they can be called directly from a page. Previously, multiple microflows or nanoflows had to be used, or a non-persistable entity had to be introduced in both the logic and UI. Not anymore! For example, picture a page allowing the user to approve or deny a request using two separate buttons. Before this feature, each button would require their own microflow. Now both buttons can call the same microflow passing the status as a primitive argument. Plain and simple. @@ -342,8 +379,9 @@ Moreover, your model is analyzed by Studio Pro to ensure that only entities with * Studio Pro on Mac loads user settings from the previous version of the application. * Fixed in [10.12.2](#fix-user-settings-mac) and [10.13.0](/releasenotes/studio-pro/10.13/#fix-user-settings-mac). +* When importing Marketplace modules with Studio Pro, their version numbers do not represent the module's version. Instead they mention the current Studio Pro version. This does not affect previously imported Marketplace modules. + * Fixed in [10.14.0](/releasenotes/studio-pro/10.14/#fix-marketplace-modules). * Line endings in CSS files are not being handled properly, so when using [Revert All Changes](/refguide/using-version-control-in-studio-pro/) or performing other version-control operations, CSS files appear in the [Changes on Disk](/refguide/version-control-menu/#show-changes) dialog box. * Workaround: For details, see [this section](/refguide/troubleshoot-version-control-issues/#css-error) in *Troubleshooting Version Control*. * A finished parallel split path that is removed from a running workflow instance wrongly leads to a versioning conflict. Please note that "path" was called "branch" in earlier versions. * There is a positioning error in the logic editors when you are dragging a large element, such as a loop, into a sequence flow, it overlaps with the existing elements. -* When importing Marketplace modules with Studio Pro, their version numbers do not represent the module's version. Instead they mention the current Studio Pro version. This does not affect previously imported Marketplace modules. diff --git a/content/en/docs/releasenotes/studio-pro/10/10.13.md b/content/en/docs/releasenotes/studio-pro/10/10.13.md index a4f6f1ae334..382404c9c56 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.13.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.13.md @@ -23,11 +23,12 @@ weight: 87 ### Known Issues +* When importing Marketplace modules with Studio Pro, their version numbers do not represent the module's version. Instead they mention the current Studio Pro version. This does not affect previously imported Marketplace modules. + * Fixed in [10.14.0](/releasenotes/studio-pro/10.14/#fix-marketplace-modules). * Line endings in CSS files are not being handled properly, so when using [Revert All Changes](/refguide/using-version-control-in-studio-pro/) or performing other version-control operations, CSS files appear in the [Changes on Disk](/refguide/version-control-menu/#show-changes) dialog box. * Workaround: For details, see [this section](/refguide/troubleshoot-version-control-issues/#css-error) in *Troubleshooting Version Control*. * A finished parallel split path that is removed from a running workflow instance wrongly leads to a versioning conflict. Please note that "path" was called "branch" in earlier versions. * There is a positioning error in the logic editors when you are dragging a large element, such as a loop, into a sequence flow, it overlaps with the existing elements. -* When importing Marketplace modules with Studio Pro, their version numbers do not represent the module's version. Instead they mention the current Studio Pro version. This does not affect previously imported Marketplace modules. ## 10.13.0 {#10130} @@ -100,8 +101,9 @@ For more information on this new Maia feature, see [Domain Model Generator](/ref ### Known Issues +* When importing Marketplace modules with Studio Pro, their version numbers do not represent the module's version. Instead they mention the current Studio Pro version. This does not affect previously imported Marketplace modules. + * Fixed in [10.14.0](/releasenotes/studio-pro/10.14/#fix-marketplace-modules). * Line endings in CSS files are not being handled properly, so when using [Revert All Changes](/refguide/using-version-control-in-studio-pro/) or performing other version-control operations, CSS files appear in the [Changes on Disk](/refguide/version-control-menu/#show-changes) dialog box. * Workaround: For details, see [this section](/refguide/troubleshoot-version-control-issues/#css-error) in *Troubleshooting Version Control*. * A finished parallel split path that is removed from a running workflow instance wrongly leads to a versioning conflict. Please note that "path" was called "branch" in earlier versions. * There is a positioning error in the logic editors when you are dragging a large element, such as a loop, into a sequence flow, it overlaps with the existing elements. -* When importing Marketplace modules with Studio Pro, their version numbers do not represent the module's version. Instead they mention the current Studio Pro version. This does not affect previously imported Marketplace modules. diff --git a/content/en/docs/releasenotes/studio-pro/10/10.14.md b/content/en/docs/releasenotes/studio-pro/10/10.14.md index f2eafbd5907..de8fbc067d6 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.14.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.14.md @@ -7,7 +7,6 @@ weight: 86 # KI: "Line endings": SOLP-1794 # KI: "A finished parallel split path": WOR-1623 # KI: "Positioning error": LFX-712 -# KI: "When importing Marketplace modules": APPEXT-796 --- ## 10.14.0 {#10140} @@ -58,6 +57,7 @@ We enabled the modernized version of **Toolbox** by default. The modernized **To ### Fixes * We fixed [CVE-2023-49069](/releasenotes/security-advisories/#49069). +* We fixed a [known issue](/releasenotes/studio-pro/10.11/#ki-marketplace-modules) where the version number of a Marketplace module imported via the **Marketplace** pane in Studio Pro did not represent the module's actual version, but used the current Studio Pro version number instead. * We fixed an issue where attribute updates were being triggered before any associations were updated. (Ticket 193881) * We fixed the issues in the **Open App** dialog box where a Team Server app was occasionally not be listed and where sometimes the application icon displayed the default image instead of the custom one. (Tickets 205781, 205798) * We fixed an issue in the mapping microflow argument selection, where scrolling up and down lost selected values and showed wrong values in the argument drop-down. (Tickets 205805, 213343, 220268) @@ -107,4 +107,3 @@ We enabled the modernized version of **Toolbox** by default. The modernized **To * Workaround: For details, see [this section](/refguide/troubleshoot-version-control-issues/#css-error) in *Troubleshooting Version Control*. * A finished parallel split path that is removed from a running workflow instance wrongly leads to a versioning conflict. Please note that "path" was called "branch" in earlier versions. * There is a positioning error in the logic editors when you are dragging a large element, such as a loop, into a sequence flow, it overlaps with the existing elements. -* When importing Marketplace modules with Studio Pro, their version numbers do not represent the module's version. Instead they mention the current Studio Pro version. This does not affect previously imported Marketplace modules. diff --git a/content/en/docs/releasenotes/studio-pro/10/10.15.md b/content/en/docs/releasenotes/studio-pro/10/10.15.md new file mode 100644 index 00000000000..52609fc1dde --- /dev/null +++ b/content/en/docs/releasenotes/studio-pro/10/10.15.md @@ -0,0 +1,120 @@ +--- +title: "10.15" +url: /releasenotes/studio-pro/10.15/ +description: "The release notes for Mendix Studio Pro 10.15 (including all patches) with details on new features, bug fixes, and known issues." +weight: 85 +# System requirements: Java updates for 10.10, and 10.17 +# KI: "Line endings": SOLP-1794 +# KI: "A finished parallel split path": WOR-1623 +# KI: "Positioning error": LFX-712 +# KI: "Boundary events targeting": WOR-2084 +# KI: "Boundary events failed activity": WOR-2094 +# KI: "Workflow jumps back": WOR-2171 +--- + +## 10.15.0 {#10150} + +**Release date: September 24, 2024** + +{{% button color="info" href="https://marketplace.mendix.com/link/studiopro/10.15.0" text="Go to Marketplace" title="Download version 10.15.0 from the Marketplace" %}} + +### New Features + +#### Non-Interrupting Timer Boundary Events + +We added non-interrupting timer boundary events as a beta feature. This feature triggers a boundary flow if an activity exceeds its expected duration, based on a timer that is defined on the boundary event. +A boundary flow runs in parallel to the workflow activity they are attached to, without interrupting the main process. +Boundary events can be set for key activities that can be suspended, such as user tasks (single and multi), **Call Microflow**, **Call Workflow**, and **Wait for Notification**, providing more flexibility in workflow management. + +For more information, see [Boundary Events](/refguide/workflow-boundary-events/). + +#### X-Ray Mode Becoming Generally Available + +X-Ray mode is generally available now for both Windows and macOS. X-Ray mode is a way to better visualize the structure of your page while in Design Mode. It adds a special border around certain widgets, like layout grids and containers, while keeping most of your apps styling the same. We also added data source information to data widgets in this release. For more information, see [X-Ray Mode](/refguide/page/#x-ray-mode). + +#### New Options under Help Menu > Support Tools + +We added the following new options to **Help** menu > **Support Tools** (for more information, see [Help](/refguide/help-menu/) menu): +* **Project Context** – This option shows a pane containing information about part of the background memory of Studio Pro. +* **Background** – This option shows a pane containing information about current and previous background tasks. +* **Collect version control data** – This option helps you collect basic version control data kept in the logs of Studio Pro. +* **Profiling** > **Capture Memory Snapshot** – This option captures a snapshot of memory consumed by Studio Pro. The snapshot is written to disk, which you can then send to the Mendix Support teams. For more information on this option, see [Profiling](/refguide/profiling/). + +### Improvements + +* We improved error messages for connection errors when an action or a data source is triggered. (Ticket 218338) +* We improved performance of the auto-completion pop-up window in the expression editor. +* Objects that are returned in the **Call External Action** activity are now uniquely identified using their remote key (if available). This allows you to associate local objects to external objects that are returned from OData actions. +* We upgraded bundled Node.js version from v16 to v20. +* We now throw a consistency error when a page or a microflow without any roles has a URL configured. +* Default values are now supported for action properties in pluggable widgets. An action property can have a defaultType and defaultValue. The defaultType can be set to call a microflow, call a nanoflow, or open a page. +* You can now use expressions for conditional visibility and dynamic classes without a surrounding data container. This simplifies modeling as you no longer need to add a wrapping data container when you are only using variables which are available at top level, e.g. page parameters, selections and constants. This feature is not available for data grid 1, template grid and is also not available for a list view under certain conditions. +{{% alert color="info" %}}This is based on a [question from Jean Gabeler](https://community.mendix.com/link/space/studio-pro/ideas/1548) asked in the Mendix Community. Thanks for bringing this to our attention, Jean!{{% /alert %}} +* The **Overview Pages Generation** dialog box now allows to overwrite previously generated folders. +* It is now possible to create Studio Pro memory snapshots. +* We optimized the performance of the **Properties** pane when editing pages, enhancing responsiveness. +* In the case of a foreign key constraint violation during a commit, a `ForeignKeyConstraintViolationException` is now thrown. The error message is now uniform for all supported database vendors and is easier to understand. +* We added support for MariaDB 11.4. +* We added support for MySQL 8.4. +* We added hyperlinks for collecting feedback on published-GraphQL services via survey. +* We now clean up anonymous users after a REST call finishes. +* The **Commit** dialog box now always displays all the tabs. The tab titles indicate the number of changes, and the default focus is set to the tab with more than zero changes. +* We updated the system to store log files for up to 30 days, compared to the previous duration of seven days. +* We added a support for keyboard navigation in App Explorer on macOS and also for the modernized App Explorer on Windows. +* We added keyboard support of using Ctrl/Command + mouse scroll wheel to zoom in or out in the workflow editor. +* We upgraded the JDBC driver for Microsoft SQL Server to version 12.8.1. + * If you connect to SQL Server using integrated security in a module such as [Database Connector](https://marketplace.mendix.com/link/component/2888), you may need to update the JDBC driver in `userlib` as well. +* We made the following updates to the External Database Connector: + * We added support for hard-coded strings containing JSON as a parameter value and the **Query External Database** activity. (Ticket 223881) + * We added Ctrl + Enter as a keyboard shortcut for **OK** in the **Query External Database** dialog box. (Ticket 223881) + * We updated Oracle Library to 23.5.1 to fix TAF mode of `FAILOVER_TYPE=SELECT` if configured on Oracle DB. (Tickets 225454, 226404) + * We added scroll to the parameters section of Query External Database. (Ticket 227464) + * We now support updating existing entities with new and/or deleted columns. + * When creating a new query, you can now reuse existing entities mapped to other queries of the same database connection document. + * We added connector identification as "Mendix-ExtDbconnector_SP-#Version_MPK_#Version" for Snowflake connections. +* We introduced the Untyped Model Access feature to Extensibility API. For more information, see [Extensibility API Release Notes](/apidocs-mxsdk/apidocs/extensibility-api/release-notes/). + +### Fixes + +* We fixed an issue where a data validation error triggered on a rollback or a delete. We now remove data validation errors for objects that are rolled back or deleted. Any validation errors that you generate manually using a [validation feedback](/refguide/validation-feedback/) action will also be removed when an object is rolled back or deleted. (Ticket 192090) +* We fixed an issue where roles assigned to a user are ignored momentarily during runtime. (Ticket 221900) +* We fixed an issue where the garbage collector cleaned up objects being returned from a microflow before they could be returned, leading to an error. (Ticket 222075) +* We fixed an issue in Mozilla Firefox where the change event was triggered before input validations were complete. (Ticket 223757) +* We fixed an issue which occurred when querying an entity published by an OData service when it was filtered by an attribute of an associated entity and the association was a self-referencing many-to-one. (Ticket 224145) +* We fixed an issue where a native app was stuck starting over and over again in case the authentication token was no longer valid. We now clear the authentication and session cookie in case they are no longer valid. (Ticket 225198) +* We fixed an issue where Studio Pro crashed when using Shift + Enter in the Expression editor. (Tickets 225645, 226153) +* We fixed an issue where Core.initializeSession(IUser, ..) was blocked by a database transaction lock in case of SQL Server with foreign keys enabled. (Ticket 226036) +* We fixed an issue where building failed when an app containing jar exclusions and created with Studio Pro version 9.24.0 or below was opened with a newer version of Studio Pro. (Ticket 227102) +* We fixed an issue that prevented **Native Bottom Bar** styles from being applied. +* We fixed an issue where an **Oops** dialog was shown when opening the **Edit Datasource** dialog box for data grid 2 after editing an expression, e.g. when editing the expression for the **Option caption** of the [association filter](/appstore/modules/data-grid-2/#association-filter). +* We fixed an issue where an **Oops** dialog was shown when a generated column filter in a Data grid 2 is moved to another column. +* We fixed an issue in the Data grid 2 widget where setting a reference data source for filtering over associations in a column, triggered an automatic content generation. +* We fixed an issue that showed an **Oops** dialog box when switching a template parameter from an attribute to an expression if the attribute no longer existed in the domain model. +* We fixed an issue that when a pluggable widget with a text template property, which is [conditionally hidden](/apidocs-mxsdk/apidocs/pluggable-widgets-config-api/#customizing-the-widgets-properties) in Studio Pro, showed up in the [Changes pane](/refguide/changes-pane/) when you changed something else on the widget. For example, the **Load more caption** of Data grid 2 showed up as changed when you changed something else on Data grid 2. +* We fixed an issue with the extension cache clean-up in Studio Pro that resulted in issues with some extensions. +* We fixed an issue where on Mac a custom value was not persisted when switching from XPath Builder to XPath Expression Editor or when pressing the **OK** button. +* We fixed an issue where importing a spreadsheet with a dollar sign in the data in certain scenarios prevented the application from running (locally). +* We fixed an issue in the published OData services editor, which sometimes gave an error about trying to show a published microflow when no published microflow was selected. +* We fixed an issue in consumed web services where selecting a WSDL from a network drive that required authentication but did not return a WWW-Authenticate header resulted in an error. +* We fixed an issue in the logic editors where adding an annotation sometimes broke displayed variable types. +* In the logic editors, we fixed an issue where a **Retrieve over association** did not show the correct data type when it involved a generalization of an entity instead of the entity itself. +* In the logic editors, we fixed the highlighting of parameter objects when selected. +* We disabled selecting text in places where users would not want that. +* We now correctly take into account the excluded jars of managed dependencies when compiling Java actions. +* We fixed an issue where in some LibGit2 was not fetching extra objects while in partial mode. +* We fixed an issue where the icons for access rules in the new access rule editor were not clearly visible in dark mode. + +### Deprecations + +* We dropped support for MariaDB 10.4, as it is no longer supported by the vendor. +* Starting with version 10.17, we will drop support for PostgreSQL 12, as the vendor has announced the end of support for that version. + +### Known Issues + +* Line endings in CSS files are not being handled properly, so when using [Revert All Changes](/refguide/using-version-control-in-studio-pro/) or performing other version-control operations, CSS files appear in the [Changes on Disk](/refguide/version-control-menu/#show-changes) dialog box. + * Workaround: For details, see [this section](/refguide/troubleshoot-version-control-issues/#css-error) in *Troubleshooting Version Control*. +* A finished parallel split path that is removed from a running workflow instance wrongly leads to a versioning conflict. Please note that "path" was called "branch" in earlier versions. +* There is a positioning error in the logic editors when you are dragging a large element, such as a loop, into a sequence flow, it overlaps with the existing elements. +* Currently, boundary events are scheduled when the workflow activity with the boundary event is started. For user tasks this means that scheduling will happen before the targeting microflow finished running. +* When a failed activity with boundary events is retried, only the first level of boundary events is aborted/restarted. Lower nested boundary events are not aborted correctly. +* Currently, when the workflow jumps back into an activity that already has a scheduled (timer) boundary event it will schedule another timer event. This is incorrect and will be fixed in a future release. diff --git a/content/en/docs/releasenotes/studio-pro/10/10.6.md b/content/en/docs/releasenotes/studio-pro/10/10.6.md index fec812f90ec..ccc63a52c01 100644 --- a/content/en/docs/releasenotes/studio-pro/10/10.6.md +++ b/content/en/docs/releasenotes/studio-pro/10/10.6.md @@ -14,6 +14,26 @@ mts: true This is the [MTS](/releasenotes/studio-pro/lts-mts/#mts) version 10 release for apps in production. {{% /alert %}} +## 10.6.15 {#10615} + +**Release date: September 30, 2024** + +{{% button color="info" href="https://marketplace.mendix.com/link/studiopro/10.6.15" text="Go to Marketplace" title="Download version 10.6.15 from the Marketplace" %}} + +### Improvements + +* We improved error handling on the **Delete Object** action where it tries to delete a file which does not exist. +* We now throw a consistency error when a page or microflow without any roles has a URL configured. (Ticket 225241) +* We now clear the session cookie when the session becomes invalid. + +### Fixes + +* We fixed an issue where the garbage collector could clean up objects being returned from a microflow before they could be returned, leading to an error. (Ticket 222075) +* We fixed an issue in Firefox where the change event triggered before input validations were complete. (Ticket 223757) +* We fixed an issue where **Core.initializeSession(IUser, ..)** was blocked by a database transaction lock in case of SQL Server with foreign keys enabled. (Ticket 226036) +* We made the unreferenced file cleanup mechanism more robust against null values. (Ticket 227234) +* We fixed an issue where iOS apps could crash when navigating after a user role switch, particularly after app restart. (Ticket 228008) + ## 10.6.14 {#10614} **Release date: September 17, 2024** @@ -641,7 +661,7 @@ We have also introduced an optimizing storage solution, which is triggered when * We have implemented a new expression editor that is enabled by default (with the option in **Preferences** > [New Features](/refguide/preferences-dialog/#new-features) to go back to the legacy expression editor). This new expression editor will also work on MacOS. * We added a new [Retrieve workflow activity records](/refguide/retrieve-workflow-activity-records/) microflow activity that enables retrieving a list of **System.WorkflowActivityRecord** objects for a given workflow instance. Each **System.WorkflowActivityRecord** object represents a snapshot of a workflow activity. * We added a feature that allows for switching between portrait and landscape rendering of the workflow editor. For more information, see the [Switching between Portrait and Landscape Editor Orientation](/refguide/perform-workflow-basic-functions/#orientation-modes) section in *Performing Workflow Basic Functions*. -* We added a [Wait for timer](/refguide/wait-for-timer/) activity for workflows that stops the process execution until the defined period of time has elapsed. +* We added a [Wait for timer](/refguide/timer/) activity for workflows that stops the process execution until the defined period of time has elapsed. * We now use database [foreign key constraint](/refguide/data-storage/#fkc) validation for new apps. ### Improvements diff --git a/content/en/docs/releasenotes/studio-pro/9/9.24.md b/content/en/docs/releasenotes/studio-pro/9/9.24.md index 4c768338493..30075f2afc7 100644 --- a/content/en/docs/releasenotes/studio-pro/9/9.24.md +++ b/content/en/docs/releasenotes/studio-pro/9/9.24.md @@ -11,6 +11,34 @@ lts: true This is the [LTS](/releasenotes/studio-pro/lts-mts/#lts) version 9 release for apps in production. {{% /alert %}} +## 9.24.28 + +**Release date: September 30, 2024** + +{{% button color="info" href="https://marketplace.mendix.com/link/studiopro/9.24.28" text="Go to Marketplace" title="Download version 9.24.28 from the Marketplace" %}} + +### Partial Application Clones + +We added an improvement (currently in public beta) which allows you to use partial application clones with Git instead of full clones. Partial clones download a minimum required set of data, making this method significantly faster than full clones when working with large repositories. + +Through Open app settings or version control preferences, you can choose which cloning strategy to use for future cloning operations, such as downloading a new app or branch. + +### Improvements + +* We improved error handling on the **Delete Object** action when it tries to delete a file which does not exist. +* We updated the system to store log files for up to 30 days, compared to the previous duration of 7 days. + +### Fixes + +* We added check for missing Git credentials in *.gitconfig*. The check performs while opening a version-controlled app and while uploading an app to Version Control system +* We fixed an issue where the garbage collector could clean up objects being returned from a microflow before they could be returned, leading to an error. (Ticket 222075) +* We made the unreferenced file cleanup mechanism more robust against null values. (Ticket 227234) +* We fixed an issue where the user got **Oops** dialog with No user is signed in while opening an app. + +### Deprecations + +* We will drop support for PostgreSQL 12 after November 14, 2024, as the vendor has announced the end of support for that version. + ## 9.24.27 {#92427} **Release date: September 5, 2024** diff --git a/content/en/docs/releasenotes/studio-pro/9/9.6.md b/content/en/docs/releasenotes/studio-pro/9/9.6.md index 8a449db6da3..9a53c605efa 100644 --- a/content/en/docs/releasenotes/studio-pro/9/9.6.md +++ b/content/en/docs/releasenotes/studio-pro/9/9.6.md @@ -543,7 +543,7 @@ Data for your custom metrics can be retrieved from [Micrometer](https://micromet ### Fixes * We fixed a [known issue](/releasenotes/studio-pro/9.0/#ki-2036) where you could not use Ctrl + Tab to switch between open tabs unless you had already selected a tab. -* We fixed a [known issue](/releasenotes/studio-pro/9.3/#ki-315) with the exporting of user metrics that resulted in the [User Accounts and Login Sessions](/developerportal/operate/metrics/#Trends-appmxruntimesessions) graph being empty for apps deployed to the Mendix Cloud. +* We fixed a [known issue](/releasenotes/studio-pro/9.3/#ki-315) with the exporting of user metrics that resulted in the [User Accounts and Login Sessions](/developerportal/operate/metrics/#Trends-appmxruntimesessions) graph being empty for apps deployed to Mendix Cloud. * We fixed an issue in the Marketplace where the **Show** filter setting was not taken into account when searching. (Ticket 93566) * We fixed a bug in native mobile where list views with on-click events required two taps to trigger the event when the keyboard was visible. (Ticket 120695) * We fixed a `NullPointerException` that occurred when the same project MDA was deployed with reduced permissions in SQL Server. (Ticket 122465) diff --git a/content/en/docs/support/security-findings-faq.md b/content/en/docs/support/security-findings-faq.md index f66038f74e7..6d2cf89de9c 100644 --- a/content/en/docs/support/security-findings-faq.md +++ b/content/en/docs/support/security-findings-faq.md @@ -158,7 +158,7 @@ For the static content, only the index.html and login.html files have the Cache- For the rest of the static content, the Cache-Control header is not set. See [Why Are Static Files Publicly Accessible in My App?](#static-content), below for a discussion around the availability of static content and why the cache control header is not relevant for this content. -For the Mendix Cloud, you cannot change the setting of this header. If you are running outside the Mendix Cloud, you may be able to change this within your own infrastructure. +For Mendix Cloud, you cannot change the setting of this header. If you are running outside Mendix Cloud, you may be able to change this within your own infrastructure. See [Cache Control – Directives](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control#directives) on the *mdn web docs* site for possible values for cache control directives. diff --git a/content/en/docs/support/submit-support-request.md b/content/en/docs/support/submit-support-request.md index 9c84507b6ab..e067aba903b 100644 --- a/content/en/docs/support/submit-support-request.md +++ b/content/en/docs/support/submit-support-request.md @@ -138,12 +138,12 @@ Attachments added to Mendix Support requests will be automatically deleted after If you are reporting a security finding or other security-related issue, for example a warning issued by a scanning tool, please follow these steps to ensure your ticket is dealt with as efficiently as possible. -1. Ensure you are using one of: - * the current major version of Mendix, preferably an [MTS](/releasenotes/studio-pro/lts-mts/#mts) minor version as these continue to get security updates. - * the [LTS](/releasenotes/studio-pro/lts-mts/#lts) version of a previous major version which has not reached end of support. -1. If the security finding is in a marketplace component - 1. check that it is platform supported — community-supported components are not supported by Mendix support. - 1. ensure the component is up to date. +1. Ensure you are using one of the following: + * The current major version of Mendix, preferably an [MTS](/releasenotes/studio-pro/lts-mts/#mts) minor version as these continue to get security updates. + * The [LTS](/releasenotes/studio-pro/lts-mts/#lts) version of a previous major version which has not reached end of support. +1. If the security finding is in a Marketplace component: + 1. Check that it is platform supported—community-supported components are not supported by Mendix support. + 1. Ensure the component is up to date. 1. Review the [Frequently Asked Questions - Security](/support/security-findings-faq/) document so see if your finding is described there. Follow instructions there for mitigating your finding, including updating and cleaning up Java libraries. If the finding is addressed there as not having any security implications for your app it is unlikely that raising a ticket will give you more information. 1. If the issue has been reported by a scanning tool, please check that the results are not caused by factors outside the Mendix app (for example, tool settings or network traffic routing issues). 1. Include the following information: diff --git a/layouts/partials/landingpage/community-resources.html b/layouts/partials/landingpage/community-resources.html index 8403bd0b670..c7f68476066 100644 --- a/layouts/partials/landingpage/community-resources.html +++ b/layouts/partials/landingpage/community-resources.html @@ -1,7 +1,7 @@

              Community Resources

              \ No newline at end of file diff --git a/layouts/partials/landingpage/latest-releases.html b/layouts/partials/landingpage/latest-releases.html index b56e8f9cc87..67a29bb4904 100644 --- a/layouts/partials/landingpage/latest-releases.html +++ b/layouts/partials/landingpage/latest-releases.html @@ -8,16 +8,15 @@

              Latest Releases

              Mx10 Feature Release Calendar
            • - Studio Pro 10.14.0 -

              Aug 27, 2024

              + Studio Pro 10.15.0 +

              Sep 24, 2024

            • Apps -

              Aug 25, 2024

              +

              Sep 29, 2024

            • Deployment

              Sep 19, 2024

            - diff --git a/layouts/partials/landingpage/note.html b/layouts/partials/landingpage/note.html index 27bad709d22..f9e2a13b251 100644 --- a/layouts/partials/landingpage/note.html +++ b/layouts/partials/landingpage/note.html @@ -1,5 +1,5 @@
            - To view the site in a different language, use the drop-down menu in the lower-right corner of the page. Translations are provided via a machine translation engine. Due to the tool's limitations, not all content is translated. + To view the site in a different language, use the drop-down menu in the lower-right corner of the page. Translations are provided via a machine translation engine. Due to the tool's limitations, not all content is translated.
            diff --git a/layouts/partials/landingpage/user-journey-cards.html b/layouts/partials/landingpage/user-journey-cards.html index cc67e774f5d..857ecb06734 100644 --- a/layouts/partials/landingpage/user-journey-cards.html +++ b/layouts/partials/landingpage/user-journey-cards.html @@ -17,9 +17,9 @@

            Get Started

            Develop

            @@ -42,6 +42,7 @@

            Extend

          • Marketplace
          • APIs
          • Catalog
          • +
          • Extend with AI
          • Strategic Partners
          diff --git a/static/attachments/appstore/use-content/modules/oidc/default_mapping.png b/static/attachments/appstore/use-content/modules/oidc/default_mapping.png new file mode 100644 index 00000000000..0cf31580d10 Binary files /dev/null and b/static/attachments/appstore/use-content/modules/oidc/default_mapping.png differ diff --git a/static/attachments/appstore/use-content/modules/oidc/select-refresh-modules.png b/static/attachments/appstore/use-content/modules/oidc/select-refresh-modules.png deleted file mode 100644 index 4b84e15fd26..00000000000 Binary files a/static/attachments/appstore/use-content/modules/oidc/select-refresh-modules.png and /dev/null differ diff --git a/static/attachments/appstore/use-content/modules/oidc/select_modules.png b/static/attachments/appstore/use-content/modules/oidc/select_modules.png new file mode 100644 index 00000000000..d8f726e496f Binary files /dev/null and b/static/attachments/appstore/use-content/modules/oidc/select_modules.png differ diff --git a/static/attachments/appstore/use-content/modules/opcua-connector/browse.png b/static/attachments/appstore/use-content/modules/opcua-connector/browse.png new file mode 100644 index 00000000000..704e19b31df Binary files /dev/null and b/static/attachments/appstore/use-content/modules/opcua-connector/browse.png differ diff --git a/static/attachments/appstore/use-content/modules/opcua-connector/create-monitored-item-microflow-configuration.png b/static/attachments/appstore/use-content/modules/opcua-connector/create-monitored-item-microflow-configuration.png new file mode 100644 index 00000000000..96e81f3f326 Binary files /dev/null and b/static/attachments/appstore/use-content/modules/opcua-connector/create-monitored-item-microflow-configuration.png differ diff --git a/static/attachments/appstore/use-content/modules/opcua-connector/create-monitored-item-microflow.png b/static/attachments/appstore/use-content/modules/opcua-connector/create-monitored-item-microflow.png new file mode 100644 index 00000000000..e6ebb61db93 Binary files /dev/null and b/static/attachments/appstore/use-content/modules/opcua-connector/create-monitored-item-microflow.png differ diff --git a/static/attachments/appstore/use-content/modules/opcua-connector/new-configuration-overview.png b/static/attachments/appstore/use-content/modules/opcua-connector/new-configuration-overview.png new file mode 100644 index 00000000000..40f60a92fb5 Binary files /dev/null and b/static/attachments/appstore/use-content/modules/opcua-connector/new-configuration-overview.png differ diff --git a/static/attachments/appstore/use-content/modules/opcua-connector/new-configuration-step-one.png b/static/attachments/appstore/use-content/modules/opcua-connector/new-configuration-step-one.png new file mode 100644 index 00000000000..a101dce7340 Binary files /dev/null and b/static/attachments/appstore/use-content/modules/opcua-connector/new-configuration-step-one.png differ diff --git a/static/attachments/appstore/use-content/modules/opcua-connector/read-access-rights.png b/static/attachments/appstore/use-content/modules/opcua-connector/read-access-rights.png new file mode 100644 index 00000000000..ef6d511fa24 Binary files /dev/null and b/static/attachments/appstore/use-content/modules/opcua-connector/read-access-rights.png differ diff --git a/static/attachments/appstore/use-content/services/oidc-provider/API_consumption.png b/static/attachments/appstore/use-content/services/oidc-provider/API_consumption.png new file mode 100644 index 00000000000..40ad892bfa4 Binary files /dev/null and b/static/attachments/appstore/use-content/services/oidc-provider/API_consumption.png differ diff --git a/static/attachments/appstore/use-content/services/oidc-provider/SSO_within_multiapp.png b/static/attachments/appstore/use-content/services/oidc-provider/SSO_within_multiapp.png new file mode 100644 index 00000000000..724e1753ffd Binary files /dev/null and b/static/attachments/appstore/use-content/services/oidc-provider/SSO_within_multiapp.png differ diff --git a/static/attachments/appstore/use-content/services/oidc-provider/brokering.png b/static/attachments/appstore/use-content/services/oidc-provider/brokering.png new file mode 100644 index 00000000000..8238f304feb Binary files /dev/null and b/static/attachments/appstore/use-content/services/oidc-provider/brokering.png differ diff --git a/static/attachments/control-center/roles-permissions/learn-more.png b/static/attachments/control-center/roles-permissions/learn-more.png new file mode 100644 index 00000000000..a08cf0a2d98 Binary files /dev/null and b/static/attachments/control-center/roles-permissions/learn-more.png differ diff --git a/static/attachments/control-center/roles-permissions/roles-permissions.png b/static/attachments/control-center/roles-permissions/roles-permissions.png index 188b4007817..6a92eb6c066 100644 Binary files a/static/attachments/control-center/roles-permissions/roles-permissions.png and b/static/attachments/control-center/roles-permissions/roles-permissions.png differ diff --git a/static/attachments/developerportal/portfolio-management/archived-initiatives.png b/static/attachments/developerportal/portfolio-management/archived-initiatives.png index f1b8bbb73ee..f1173e785a7 100644 Binary files a/static/attachments/developerportal/portfolio-management/archived-initiatives.png and b/static/attachments/developerportal/portfolio-management/archived-initiatives.png differ diff --git a/static/attachments/developerportal/portfolio-management/initiatives-overview.png b/static/attachments/developerportal/portfolio-management/initiatives-overview.png index 5873ef6c153..52c325ca858 100644 Binary files a/static/attachments/developerportal/portfolio-management/initiatives-overview.png and b/static/attachments/developerportal/portfolio-management/initiatives-overview.png differ diff --git a/static/attachments/developerportal/portfolio-management/list-view.png b/static/attachments/developerportal/portfolio-management/list-view.png index 5b7c8aa514d..a73b7925a3a 100644 Binary files a/static/attachments/developerportal/portfolio-management/list-view.png and b/static/attachments/developerportal/portfolio-management/list-view.png differ diff --git a/static/attachments/developerportal/portfolio-management/planning-view.png b/static/attachments/developerportal/portfolio-management/planning-view.png index a4b07b5bf33..6b81c58af24 100644 Binary files a/static/attachments/developerportal/portfolio-management/planning-view.png and b/static/attachments/developerportal/portfolio-management/planning-view.png differ diff --git a/static/attachments/howto/extensibility/build-javascript-actions/write-javascript-github/Thumbs.db b/static/attachments/howto/extensibility/build-javascript-actions/write-javascript-github/Thumbs.db new file mode 100644 index 00000000000..edfbbdc237e Binary files /dev/null and b/static/attachments/howto/extensibility/build-javascript-actions/write-javascript-github/Thumbs.db differ diff --git a/static/attachments/howto/extensibility/build-native-widget/Thumbs.db b/static/attachments/howto/extensibility/build-native-widget/Thumbs.db new file mode 100644 index 00000000000..12310f5b528 Binary files /dev/null and b/static/attachments/howto/extensibility/build-native-widget/Thumbs.db differ diff --git a/static/attachments/howto/integration/use-the-external-database-connector/5.png b/static/attachments/howto/integration/use-the-external-database-connector/5.png index cfd9965e453..23107d3980d 100644 Binary files a/static/attachments/howto/integration/use-the-external-database-connector/5.png and b/static/attachments/howto/integration/use-the-external-database-connector/5.png differ diff --git a/static/attachments/howto/integration/use-the-external-database-connector/5a.png b/static/attachments/howto/integration/use-the-external-database-connector/5a.png new file mode 100644 index 00000000000..7990c4e857e Binary files /dev/null and b/static/attachments/howto/integration/use-the-external-database-connector/5a.png differ diff --git a/static/attachments/howto/integration/use-the-external-database-connector/5b.png b/static/attachments/howto/integration/use-the-external-database-connector/5b.png new file mode 100644 index 00000000000..72937dbfeea Binary files /dev/null and b/static/attachments/howto/integration/use-the-external-database-connector/5b.png differ diff --git a/static/attachments/howto/mobile/native-mobile/ar-parent/how-to-ar-simple-cube/Thumbs.db b/static/attachments/howto/mobile/native-mobile/ar-parent/how-to-ar-simple-cube/Thumbs.db new file mode 100644 index 00000000000..7fb17433c7b Binary files /dev/null and b/static/attachments/howto/mobile/native-mobile/ar-parent/how-to-ar-simple-cube/Thumbs.db differ diff --git a/static/attachments/howto8/extensibility/build-javascript-actions/create-native-javascript-action/Thumbs.db b/static/attachments/howto8/extensibility/build-javascript-actions/create-native-javascript-action/Thumbs.db new file mode 100644 index 00000000000..b57cf435992 Binary files /dev/null and b/static/attachments/howto8/extensibility/build-javascript-actions/create-native-javascript-action/Thumbs.db differ diff --git a/static/attachments/howto8/extensibility/build-javascript-actions/write-javascript-github/Thumbs.db b/static/attachments/howto8/extensibility/build-javascript-actions/write-javascript-github/Thumbs.db new file mode 100644 index 00000000000..25c00548eeb Binary files /dev/null and b/static/attachments/howto8/extensibility/build-javascript-actions/write-javascript-github/Thumbs.db differ diff --git a/static/attachments/howto8/extensibility/build-native-widget/Thumbs.db b/static/attachments/howto8/extensibility/build-native-widget/Thumbs.db new file mode 100644 index 00000000000..a5859a5733a Binary files /dev/null and b/static/attachments/howto8/extensibility/build-native-widget/Thumbs.db differ diff --git a/static/attachments/howto8/mobile/native-mobile/build-native-apps/native-build-locally-manually/Thumbs.db b/static/attachments/howto8/mobile/native-mobile/build-native-apps/native-build-locally-manually/Thumbs.db new file mode 100644 index 00000000000..a29a979cc46 Binary files /dev/null and b/static/attachments/howto8/mobile/native-mobile/build-native-apps/native-build-locally-manually/Thumbs.db differ diff --git a/static/attachments/howto8/mobile/native-mobile/build-native-apps/use-cli-docs/deploying-native-app-cli/Thumbs.db b/static/attachments/howto8/mobile/native-mobile/build-native-apps/use-cli-docs/deploying-native-app-cli/Thumbs.db new file mode 100644 index 00000000000..a7a3a527c01 Binary files /dev/null and b/static/attachments/howto8/mobile/native-mobile/build-native-apps/use-cli-docs/deploying-native-app-cli/Thumbs.db differ diff --git a/static/attachments/howto8/mobile/native-mobile/build-native-apps/use-cli-docs/how-to-devapps-cli/Thumbs.db b/static/attachments/howto8/mobile/native-mobile/build-native-apps/use-cli-docs/how-to-devapps-cli/Thumbs.db new file mode 100644 index 00000000000..a9ccf9ae1a9 Binary files /dev/null and b/static/attachments/howto8/mobile/native-mobile/build-native-apps/use-cli-docs/how-to-devapps-cli/Thumbs.db differ diff --git a/static/attachments/howto9/extensibility/build-javascript-actions/create-native-javascript-action/Thumbs.db b/static/attachments/howto9/extensibility/build-javascript-actions/create-native-javascript-action/Thumbs.db new file mode 100644 index 00000000000..329ea29c7b4 Binary files /dev/null and b/static/attachments/howto9/extensibility/build-javascript-actions/create-native-javascript-action/Thumbs.db differ diff --git a/static/attachments/howto9/extensibility/build-javascript-actions/write-javascript-github/Thumbs.db b/static/attachments/howto9/extensibility/build-javascript-actions/write-javascript-github/Thumbs.db new file mode 100644 index 00000000000..0b53d516f99 Binary files /dev/null and b/static/attachments/howto9/extensibility/build-javascript-actions/write-javascript-github/Thumbs.db differ diff --git a/static/attachments/howto9/extensibility/build-native-widget/Thumbs.db b/static/attachments/howto9/extensibility/build-native-widget/Thumbs.db new file mode 100644 index 00000000000..f271d44d570 Binary files /dev/null and b/static/attachments/howto9/extensibility/build-native-widget/Thumbs.db differ diff --git a/static/attachments/howto9/mobile/native-mobile/ar-parent/how-to-ar-simple-cube/Thumbs.db b/static/attachments/howto9/mobile/native-mobile/ar-parent/how-to-ar-simple-cube/Thumbs.db new file mode 100644 index 00000000000..db80b193132 Binary files /dev/null and b/static/attachments/howto9/mobile/native-mobile/ar-parent/how-to-ar-simple-cube/Thumbs.db differ diff --git a/static/attachments/howto9/mobile/native-mobile/distribution/build-native-apps/how-to-devapps/Thumbs.db b/static/attachments/howto9/mobile/native-mobile/distribution/build-native-apps/how-to-devapps/Thumbs.db new file mode 100644 index 00000000000..2cb722b39d6 Binary files /dev/null and b/static/attachments/howto9/mobile/native-mobile/distribution/build-native-apps/how-to-devapps/Thumbs.db differ diff --git a/static/attachments/howto9/mobile/native-mobile/distribution/build-native-apps/native-build-locally-manually/Thumbs.db b/static/attachments/howto9/mobile/native-mobile/distribution/build-native-apps/native-build-locally-manually/Thumbs.db new file mode 100644 index 00000000000..7798a7af1c6 Binary files /dev/null and b/static/attachments/howto9/mobile/native-mobile/distribution/build-native-apps/native-build-locally-manually/Thumbs.db differ diff --git a/static/attachments/partners/siemens/mindsphere/mindsphere-development-considerations/Thumbs.db b/static/attachments/partners/siemens/mindsphere/mindsphere-development-considerations/Thumbs.db new file mode 100644 index 00000000000..366afb78a8f Binary files /dev/null and b/static/attachments/partners/siemens/mindsphere/mindsphere-development-considerations/Thumbs.db differ diff --git a/static/attachments/quickstarts/leading-mendix-implementation/Thumbs.db b/static/attachments/quickstarts/leading-mendix-implementation/Thumbs.db new file mode 100644 index 00000000000..4c4444aa0a7 Binary files /dev/null and b/static/attachments/quickstarts/leading-mendix-implementation/Thumbs.db differ diff --git a/static/attachments/refguide/modeling/application-logic/workflows/boundary-events/arrange-in-dialog.png b/static/attachments/refguide/modeling/application-logic/workflows/boundary-events/arrange-in-dialog.png new file mode 100644 index 00000000000..c61af4ec928 Binary files /dev/null and b/static/attachments/refguide/modeling/application-logic/workflows/boundary-events/arrange-in-dialog.png differ diff --git a/static/attachments/refguide/modeling/application-logic/workflows/boundary-events/arrange-in-editor.png b/static/attachments/refguide/modeling/application-logic/workflows/boundary-events/arrange-in-editor.png new file mode 100644 index 00000000000..f0708aa2831 Binary files /dev/null and b/static/attachments/refguide/modeling/application-logic/workflows/boundary-events/arrange-in-editor.png differ diff --git a/static/attachments/refguide/modeling/application-logic/workflows/boundary-events/drag-drop.png b/static/attachments/refguide/modeling/application-logic/workflows/boundary-events/drag-drop.png new file mode 100644 index 00000000000..b2d3b944cf7 Binary files /dev/null and b/static/attachments/refguide/modeling/application-logic/workflows/boundary-events/drag-drop.png differ diff --git a/static/attachments/refguide/modeling/application-logic/workflows/boundary-events/edit-dialog.png b/static/attachments/refguide/modeling/application-logic/workflows/boundary-events/edit-dialog.png new file mode 100644 index 00000000000..74f98f9db4c Binary files /dev/null and b/static/attachments/refguide/modeling/application-logic/workflows/boundary-events/edit-dialog.png differ diff --git a/static/attachments/refguide/modeling/application-logic/workflows/boundary-events/enable-boundary-events.png b/static/attachments/refguide/modeling/application-logic/workflows/boundary-events/enable-boundary-events.png new file mode 100644 index 00000000000..61a240bb88c Binary files /dev/null and b/static/attachments/refguide/modeling/application-logic/workflows/boundary-events/enable-boundary-events.png differ diff --git a/static/attachments/refguide/modeling/application-logic/workflows/workflow-elements/wait-for-timer.png b/static/attachments/refguide/modeling/application-logic/workflows/workflow-elements/timer.png similarity index 100% rename from static/attachments/refguide/modeling/application-logic/workflows/workflow-elements/wait-for-timer.png rename to static/attachments/refguide/modeling/application-logic/workflows/workflow-elements/timer.png diff --git a/static/attachments/refguide/modeling/application-logic/workflows/workflow-elements/wait-for-timer/wait-for-timer-example.png b/static/attachments/refguide/modeling/application-logic/workflows/workflow-elements/timer/standalone-timer-activity.png similarity index 100% rename from static/attachments/refguide/modeling/application-logic/workflows/workflow-elements/wait-for-timer/wait-for-timer-example.png rename to static/attachments/refguide/modeling/application-logic/workflows/workflow-elements/timer/standalone-timer-activity.png diff --git a/static/attachments/refguide/modeling/application-logic/workflows/workflow-elements/timer/timer-boundary-event.png b/static/attachments/refguide/modeling/application-logic/workflows/workflow-elements/timer/timer-boundary-event.png new file mode 100644 index 00000000000..2dbbe43ba40 Binary files /dev/null and b/static/attachments/refguide/modeling/application-logic/workflows/workflow-elements/timer/timer-boundary-event.png differ diff --git a/static/attachments/refguide/modeling/menus/help-menu/profiling/profiling-menu.png b/static/attachments/refguide/modeling/menus/help-menu/profiling/profiling-menu.png index fd0f24ed014..4a3b09ca46c 100644 Binary files a/static/attachments/refguide/modeling/menus/help-menu/profiling/profiling-menu.png and b/static/attachments/refguide/modeling/menus/help-menu/profiling/profiling-menu.png differ diff --git a/static/attachments/refguide/modeling/pages/chart-widgets/Thumbs.db b/static/attachments/refguide/modeling/pages/chart-widgets/Thumbs.db new file mode 100644 index 00000000000..3f270c6c928 Binary files /dev/null and b/static/attachments/refguide/modeling/pages/chart-widgets/Thumbs.db differ diff --git a/static/attachments/refguide/modeling/pages/page/design-mode-no-x-ray.png b/static/attachments/refguide/modeling/pages/page/design-mode-no-x-ray.png index cfe59454895..ff3b1587e29 100644 Binary files a/static/attachments/refguide/modeling/pages/page/design-mode-no-x-ray.png and b/static/attachments/refguide/modeling/pages/page/design-mode-no-x-ray.png differ diff --git a/static/attachments/refguide/modeling/pages/page/design-mode-x-ray.png b/static/attachments/refguide/modeling/pages/page/design-mode-x-ray.png index d7c42ea2efb..c944d99d48e 100644 Binary files a/static/attachments/refguide/modeling/pages/page/design-mode-x-ray.png and b/static/attachments/refguide/modeling/pages/page/design-mode-x-ray.png differ diff --git a/static/attachments/refguide8/modeling/pages/chart-widgets/Thumbs.db b/static/attachments/refguide8/modeling/pages/chart-widgets/Thumbs.db new file mode 100644 index 00000000000..1275cb13279 Binary files /dev/null and b/static/attachments/refguide8/modeling/pages/chart-widgets/Thumbs.db differ diff --git a/static/attachments/refguide9/modeling/pages/chart-widgets/Thumbs.db b/static/attachments/refguide9/modeling/pages/chart-widgets/Thumbs.db new file mode 100644 index 00000000000..fdb8debd122 Binary files /dev/null and b/static/attachments/refguide9/modeling/pages/chart-widgets/Thumbs.db differ diff --git a/static/openapi-spec/projects-v2.yaml b/static/openapi-spec/projects-v2.yaml index 6de642155aa..0e698de290d 100644 --- a/static/openapi-spec/projects-v2.yaml +++ b/static/openapi-spec/projects-v2.yaml @@ -102,7 +102,7 @@ paths: tags: - Projects summary: 'Add a project team member' - description: 'Adds a team member to the project with a specific role. The user must be an active member of the platform and belong to the same company as the user requesting the change. If the company is not yet using centralised platform roles, only the Scrum Master role can be assigned.
          Every request must be authenticated by a Personal Access Token containing the scope `mx:app:team:write`.' + description: 'Adds a team member to the project with a specific role or sends an invitation if the member is not from the same organization as the project. The user must be an active member of the platform. If the organization of the member is not yet using centralized project roles, only the Scrum Master role can be assigned.

          If the invited user is from the same organization as the project, the server responds with a `201`. If an invitation was sent, the server responds with a `202`. In the latter case the invited user must first accept the invitation before becoming a team member.

          Every request must be authenticated by a Personal Access Token containing the scope `mx:app:team:write`.' operationId: post-project-member parameters: - $ref: '#/components/parameters/app-id' @@ -110,6 +110,8 @@ paths: $ref: '#/components/requestBodies/ProjectMember' responses: '201': + description: Created + '202': description: Accepted '400': $ref: '#/components/responses/Http400'