diff --git a/content/en/docs/deployment/private-cloud/private-cloud-deploy/_index.md b/content/en/docs/deployment/private-cloud/private-cloud-deploy/_index.md index 595a9a282d0..bbd216dbbb4 100644 --- a/content/en/docs/deployment/private-cloud/private-cloud-deploy/_index.md +++ b/content/en/docs/deployment/private-cloud/private-cloud-deploy/_index.md @@ -426,6 +426,16 @@ Changing the Technical Contact does not automatically revoke the previous Techni Only the current Technical Contact can change the assignment, by transferring the role to another member of the application team. If the current Technical Contact is unavailable or unreachable, contact [Mendix Support](https://support.mendix.com/) to update the assignment. +##### Technical Contact FAQ + +Click the help icon or the **What is a Technical Contact (FAQ)?** link to access frequently asked questions about the Technical Contact role. + +{{< figure src="/attachments/releasenotes/deployment/mendix-cloud/technical-contact-help-link.png" alt="Technical Contact section with FAQ help link" class="no-border" >}} + +The FAQ popup provides answers to common questions such as permissions, assignment guidelines, and how to change the Technical Contact. + +{{< figure src="/attachments/releasenotes/deployment/mendix-cloud/technical-contact-faq.png" alt="Technical Contact FAQ popup with expandable questions" class="no-border" >}} + For more information about the Technical Contact role and its permissions, see [Technical Contact Role and Permissions](/developerportal/deploy/private-cloud/private-cloud-technical-contact/). #### Environment Purpose {#environment-purpose} @@ -434,6 +444,32 @@ This section allows you to edit the Environment Purpose for the environments wit When creating a new environment, the Technical Contact can set the environment purpose. The field is not visible when some one else other than the Technical Contact is creating the environment. It is also possible to change the purpose in **Application Settings** after environment creation. However, the purpose can only be edited by the Technical Contact. +## Portal Features {#portal-features} + +The Mendix on Kubernetes Portal provides several features to help you manage your deployments effectively. + +### Notifications {#notifications} + +The Portal includes a unified notifications system that keeps you informed about important deployment and build events. You receive notifications when: + +* Deployment packages are successfully built +* Deployment packages fail to build +* Deployments complete successfully +* Deployments fail + +To view your notifications, click the bell icon in the top navigation bar. The notifications panel shows: + +* Recent notifications with timestamps +* Unread notification count +* Quick access to mark all notifications as read +* Notification history for the last 30 days + +{{< figure src="/attachments/releasenotes/deployment/mendix-cloud/notifications.png" alt="Notifications panel showing deployment and build status updates" class="no-border" >}} + +{{% alert color="info" %}} +The notifications feature is aligned with the Mendix Platform notification system, providing a consistent experience across all Mendix Portal features. +{{% /alert %}} + ## Managing Your Environments from the Environment Details Page {#environment-details} Each environment you create has an **Environment Details** page which allows you to monitor and manage your environments. You can reach this by clicking the **Details** button next to the environment you want to manage. @@ -609,9 +645,33 @@ The **Model Options** tab allows you to change the configuration of scheduled ev {{< figure src="/attachments/deployment/private-cloud/private-cloud-deploy/image24.png" class="no-border" >}} -To toggle any scheduled events, select the scheduled event you want to enable or disable and click **Toggle**. You can also export the scheduled events to an Excel file by selecting **Export Constants to Excel**. +#### Constants + +View and manage all application constants. To change any constants, select the constant you want to edit and then click **Edit**. You also have the option to export the app constants to an Excel file by selecting **Export Constants to Excel**. + +Use **Compare and Edit** to compare constant values across multiple environments side-by-side. + +{{< figure src="/attachments/releasenotes/deployment/mendix-cloud/constants-tab.png" alt="Constants tab with search, filter, and compare options" class="no-border" >}} + +Click **Compare and Edit** to view and modify constant values across environments: + +{{< figure src="/attachments/releasenotes/deployment/mendix-cloud/constants-compare.png" alt="Compare constants across multiple environments" class="no-border" >}} + +Features include search by name, filter by data type, and import/export to CSV. -To change any constants, select the constant you want to edit and then click **Edit**. You also have the option to export the app constants to an Excel file by selecting **Export Scheduled Events to Excel**. +#### Scheduled Events + +Manage scheduled events and compare their status across environments. To toggle any scheduled events, select the scheduled event you want to enable or disable and click **Toggle**. You can also export the scheduled events to an Excel file by selecting **Export Scheduled Events to Excel**. + +{{< figure src="/attachments/releasenotes/deployment/mendix-cloud/scheduled-events-tab.png" alt="Scheduled Events tab with compare and export options" class="no-border" >}} + +Click **Compare and Edit** to view which events are enabled or disabled in each environment: + +{{< figure src="/attachments/releasenotes/deployment/mendix-cloud/scheduled-events-compare.png" alt="Compare scheduled events status across environments" class="no-border" >}} + +{{% alert color="warning" %}} +Changes to constants and scheduled events take effect only after applying changes and restarting the application. +{{% /alert %}} {{% alert color="info" %}} If the MxApp constants are configured in both the CSI Secrets Storage and another location (such as the Mendix Portal or MendixApp CR), the secret storage configuration has a higher priority and overrides the value specified elsewhere. diff --git a/content/en/docs/deployment/private-cloud/reduced-downtime-deployment.md b/content/en/docs/deployment/private-cloud/reduced-downtime-deployment.md index dd2c3cc09b8..f56a3545c9b 100644 --- a/content/en/docs/deployment/private-cloud/reduced-downtime-deployment.md +++ b/content/en/docs/deployment/private-cloud/reduced-downtime-deployment.md @@ -126,6 +126,10 @@ You can specify the following options: Kubernetes can stop an app's pods if needed to stop a node (to scale down and consolidate apps to run on fewer nodes), or perform a node update (for example, install CVE patches on the host OS). Starting from Mendix Operator version 2.24.0, you can specify parameters for a [PodDisruptionBudget](https://kubernetes.io/docs/tasks/run-application/configure-pdb/) of an app to ensure that Kubernetes only stops a limited number of an app's pods, and if necessary waits for replacement pods to become available. +{{% alert color="info" %}} +You can configure Pod Disruption Budget parameters through the [Mendix on Kubernetes Deploy API](/apidocs-mxsdk/apidocs/private-cloud-deploy-api/) by setting `podDisruptionMinAvailable` and `podDisruptionMaxUnavailable` in the environment's `deploymentStrategy` section. +{{% /alert %}} + To manually configure parameters for a PodDisruptionBudget, add the `podDisruptionBudget` section to your `MendixApp` CR, as in the following example: ```yaml 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 767a3da2746..9ea56291900 100644 --- a/content/en/docs/releasenotes/deployment/mendix-for-private-cloud.md +++ b/content/en/docs/releasenotes/deployment/mendix-for-private-cloud.md @@ -12,6 +12,28 @@ For information on the current status of deployment to Mendix on Kubernetes and ## 2026 +### September 3, 2026 + +#### Portal Improvements + +* Deployment and build notifications are now aligned with the Mendix Platform. Users receive notifications when deployments or package builds complete or fail. +* The **Constants Compare** functionality is now available, providing Public Cloud parity. Users can compare constant values across environments and packages directly in the Portal. +* The **Environment Overview** and **Deployment Package** pages now auto-refresh when their state changes. +* We have added a **Technical Contact FAQ** popup, and improved the **Change Technical Contact** warning message. +* The scheduled event descriptions now update correctly when a new .mda file is uploaded. (Ticket 282641) +* We have fixed an issue where navigating from the environment link on the **Projects** home page to the **Environment Overview** page was broken. +* Deletion is no longer blocked for environments that are marked as the **Default Studio Target**. Users are prompted to set another environment as the default before deletion. +* **Pod Disruption Budget** settings no longer reset to default due to a missing field in the Private Cloud Portal REST API. (Ticket 284436) +* You can now remove storage plans when they are not in use. (Ticket 285125) +* We have fixed an issue where the apps displayed in the UI differed from the list retrieved via the Export Grid to CSV option. (Ticket 285443) +* We have corrected the database status icon display. +* We have fixed a layout issue where the **Deployment packages version** column appeared distorted on 1080p displays. + +#### Deploy API + +* It is now possible to force-delete an orphaned app environment (when Agent is disconnected) or an environment marked as the Default Studio Target via Deploy API. +* We have added support for configuring Pod Disruption Budget parameters (`podDisruptionMinAvailable` and `podDisruptionMaxUnavailable`) in the environment deployment strategy through the Deploy API. + ### August 14, 2026 #### Mendix Operator v2.28.0 {#2.28.0} diff --git a/static/attachments/releasenotes/deployment/mendix-cloud/constants-compare.png b/static/attachments/releasenotes/deployment/mendix-cloud/constants-compare.png new file mode 100644 index 00000000000..df3c69e7097 Binary files /dev/null and b/static/attachments/releasenotes/deployment/mendix-cloud/constants-compare.png differ diff --git a/static/attachments/releasenotes/deployment/mendix-cloud/constants-tab.png b/static/attachments/releasenotes/deployment/mendix-cloud/constants-tab.png new file mode 100644 index 00000000000..121c3b5ffd8 Binary files /dev/null and b/static/attachments/releasenotes/deployment/mendix-cloud/constants-tab.png differ diff --git a/static/attachments/releasenotes/deployment/mendix-cloud/notifications.png b/static/attachments/releasenotes/deployment/mendix-cloud/notifications.png new file mode 100644 index 00000000000..e1cbb63868d Binary files /dev/null and b/static/attachments/releasenotes/deployment/mendix-cloud/notifications.png differ diff --git a/static/attachments/releasenotes/deployment/mendix-cloud/scheduled-events-compare.png b/static/attachments/releasenotes/deployment/mendix-cloud/scheduled-events-compare.png new file mode 100644 index 00000000000..7ed408978d8 Binary files /dev/null and b/static/attachments/releasenotes/deployment/mendix-cloud/scheduled-events-compare.png differ diff --git a/static/attachments/releasenotes/deployment/mendix-cloud/scheduled-events-tab.png b/static/attachments/releasenotes/deployment/mendix-cloud/scheduled-events-tab.png new file mode 100644 index 00000000000..061474f04a2 Binary files /dev/null and b/static/attachments/releasenotes/deployment/mendix-cloud/scheduled-events-tab.png differ diff --git a/static/attachments/releasenotes/deployment/mendix-cloud/technical-contact-faq.png b/static/attachments/releasenotes/deployment/mendix-cloud/technical-contact-faq.png new file mode 100644 index 00000000000..75eafceac14 Binary files /dev/null and b/static/attachments/releasenotes/deployment/mendix-cloud/technical-contact-faq.png differ diff --git a/static/attachments/releasenotes/deployment/mendix-cloud/technical-contact-help-link.png b/static/attachments/releasenotes/deployment/mendix-cloud/technical-contact-help-link.png new file mode 100644 index 00000000000..d3e381a07d9 Binary files /dev/null and b/static/attachments/releasenotes/deployment/mendix-cloud/technical-contact-help-link.png differ diff --git a/static/openapi-spec/privatecloud-deploy-v4.yaml b/static/openapi-spec/privatecloud-deploy-v4.yaml index 0f2596e8e9f..2655d0adadb 100644 --- a/static/openapi-spec/privatecloud-deploy-v4.yaml +++ b/static/openapi-spec/privatecloud-deploy-v4.yaml @@ -1,7 +1,7 @@ openapi: 3.0.0 info: title: Mendix for Private Cloud Deploy API - version: 4.13.0 + version: 4.14.0 contact: name: Mendix Support url: 'https://support.mendix.com' @@ -207,6 +207,7 @@ paths: tags: - namespaces description: Deletes a specific namespace. + parameters: [] put: summary: Update Namespace operationId: update_namespace_manifest @@ -355,6 +356,12 @@ paths: tags: - environments deprecated: true + parameters: + - schema: + type: boolean + in: query + name: force + description: 'Used to bypass the Default Studio Target validation and any errors received from the cluster while deleting the object from the portal. If the deleted environment was set as Default Studio Target, a new one must be selected from the UI or via API .' put: summary: Update Environment operationId: update_environment_for_namespace @@ -449,6 +456,12 @@ paths: description: Deletes an environment for a specified namespace. tags: - environments + parameters: + - schema: + type: boolean + in: query + name: force + description: 'Used to bypass the Default Studio Target validation and any errors received from the cluster while deleting the object from the portal. If the deleted environment was set as Default Studio Target, a new one must be selected from the UI or via API .' put: summary: Update Environment for a specified Namespace operationId: update_environment_for_namespace @@ -847,10 +860,19 @@ components: x-stoplight: id: zn13vlv5opnxw description: Maximum percentage of Pods that can be offline during updates. + podDisruptionMinAvailable: + type: integer + x-stoplight: + id: 99i5xldc8glcz + description: 'Pod Disruption Min Available defines the minimum number or percentage of Pods that must remain available during voluntary disruptions. This setting ensures a baseline level of running Pods is maintained; for example, if set to 50%, Kubernetes will only allow evictions that keep at least 50% of the Pods available.' + podDisruptionMaxUnavailable: + type: integer + x-stoplight: + id: b4bf76evwb3pu + description: 'Pod Disruption Max Unavailable defines the maximum number or percentage of Pods that can be unavailable during voluntary disruptions (evictions or node drains). This setting controls how many existing Pods can be taken offline at once without affecting overall availability. For example, if set to 20%, Kubernetes can allow up to 20% of the Pods to be unavailable during voluntary disruptions.' required: - manifestVersion - environment - title: '' getEnvironmentManifest: type: object x-examples: @@ -1061,6 +1083,16 @@ components: x-stoplight: id: 1jiigc3wgjc3r description: Maximum percentage of Pods that can be offline during updates. + podDisruptionMinAvailable: + type: integer + x-stoplight: + id: l6gl3aovn6c3g + description: 'Pod Disruption Min Available defines the minimum number or percentage of Pods that must remain available during voluntary disruptions. This setting ensures a baseline level of running Pods is maintained; for example, if set to 50%, Kubernetes will only allow evictions that keep at least 50% of the Pods available.' + podDisruptionMaxUnavailable: + type: integer + x-stoplight: + id: xqms1dq6go2wn + description: 'Pod Disruption Max Unavailable defines the maximum number or percentage of Pods that can be unavailable during voluntary disruptions (evictions or node drains). This setting controls how many existing Pods can be taken offline at once without affecting overall availability. For example, if set to 20%, Kubernetes can allow up to 20% of the Pods to be unavailable during voluntary disruptions.' required: - manifestVersion - environment @@ -1657,7 +1689,6 @@ components: required: - manifestVersion - namespace - title: '' updateNamespaceManifest: type: object x-examples: