Skip to content

Commit 98e2a11

Browse files
committed
docs(saas): Migration guide for orchestration arch
1 parent 3497a65 commit 98e2a11

File tree

10 files changed

+157
-13
lines changed

10 files changed

+157
-13
lines changed
Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
---
2+
id: saas-orchestration-architecture
3+
title: "SaaS orchestration architecture"
4+
description: "Learn about the new streamlined SaaS orchestration architecture in Camunda 8.9."
5+
---
6+
7+
import PageDescription from '@site/src/components/PageDescription';
8+
9+
<PageDescription />
10+
11+
## About
12+
13+
Camunda 8.9 introduces a streamlined SaaS orchestration architecture. The runtime for Operate, Tasklist, Identity (Admin), and the Zeebe REST API is unified into a single orchestration service. Zeebe brokers continue to run separately and execute workflows as before.
14+
15+
This is a topology change in SaaS only and does not affect Self-Managed deployments.
16+
17+
What's new:
18+
19+
- [Unified API domain for Orchestration Clusters](#unified-api-domain-for-orchestration-clusters). Legacy hostnames are deprecated.
20+
- [New client credentials use new API URLs.](#client-credentials-and-legacy-hostnames)
21+
- [`service` labels have changed on Orchestration Cluster metrics.](#service-label-changes)
22+
23+
What didn't change:
24+
25+
- The same UIs for Operate, Tasklist, and Admin/Identity and the REST API remain available as before.
26+
- The Zeebe gRPC endpoint is unchanged.
27+
28+
:::info
29+
30+
The new architecture has been validated against Camunda's documented sizing and performance expectations to prevent regressions when upgrading from 8.8.latest to 8.9.
31+
32+
:::
33+
34+
## Unified API domain for Orchestration Clusters
35+
36+
Camunda 8.9 introduces a unified API domain for Orchestration Clusters. All services are now accessible under a single base URL:
37+
38+
| Service | Unified URL (8.9) |
39+
| :------------------ | :----------------------------------------------------------- |
40+
| Base / REST API | `https://<region>.api.<camunda-domain>/<clusterId>` |
41+
| Operate UI | `https://<region>.api.<camunda-domain>/<clusterId>/operate` |
42+
| Tasklist UI | `https://<region>.api.<camunda-domain>/<clusterId>/tasklist` |
43+
| Admin (Identity) UI | `https://<region>.api.<camunda-domain>/<clusterId>/admin` |
44+
45+
Legacy hostnames (`*.zeebe.<camunda-domain>`, `*.operate.<camunda-domain>`, `*.tasklist.<camunda-domain>`, and `*.identity.<camunda-domain>`) continue to work in 8.9 and are internally routed to the unified service, but are deprecated and scheduled for removal in 8.10.
46+
47+
After the 8.10 release, only the Zeebe gRPC endpoint and the unified `*.api.*` ingress will remain.
48+
49+
### Deprecation
50+
51+
Legacy hostnames are deprecated as of 8.9 and will be removed in 8.10. Migrate any hard-coded URLs for Operate, Tasklist, or Identity to the new unified `*.api.*` URLs during the 8.9 lifecycle to ensure readiness before the 8.10 release.
52+
53+
## Client credentials and legacy hostnames
54+
55+
Existing client credentials downloaded from Console for pre-8.9 clusters may reference legacy hostnames. Because those hostnames remain available in 8.9, existing credentials continue to work after a cluster is upgraded to 8.9. No immediate action is required.
56+
57+
### Recommended action
58+
59+
For long-lived automation and CI/CD systems, Camunda recommends updating credentials to use the new unified `*.api.*` URLs and corresponding token audience values before 8.10. You have two options:
60+
61+
- **Update existing credentials manually:** Edit the hostnames and token audience values in your existing credential configuration to reference the new unified URLs.
62+
- **Create new credentials:** Create a fresh set of client credentials in Camunda Console, which will be generated with the unified API URLs and correct audience values by default.
63+
64+
## Service label changes
65+
66+
<span className="badge badge--breaking-change">Breaking change</span>
67+
68+
Due to the streamlined orchestration architecture introduced in 8.9, metrics previously emitted by the individual Operate, Tasklist, and Identity services are now emitted by the unified orchestration service. As a result, the `service` label on affected metrics will change to reflect the new source service.
69+
70+
This applies to Camunda 8 SaaS clusters using the [Cluster Metrics endpoint](/components/saas/monitoring/cluster-metrics-endpoint/set-up-cluster-metrics-endpoint.md).
71+
72+
### Impact
73+
74+
Monitoring dashboards, alerting rules, or queries that filter or group by the `service` label on Orchestration Cluster metrics may stop matching expected values after upgrading to 8.9, as some metrics will now be emitted by a different source service.
75+
76+
### Action required
77+
78+
After your cluster is upgraded to 8.9, review your dashboards and alerting rules and verify the `service` label values metrics are returning. Update any Prometheus queries or alert definitions that no longer match.
79+
80+
## Upgrade behavior and expected downtime
81+
82+
When a Camunda 8 SaaS Orchestration Cluster is upgraded from 8.8 to 8.9:
83+
84+
1. The existing Operate and Tasklist components are shut down.
85+
2. The unified orchestration service starts in their place.
86+
3. Ingress routes are updated so legacy hostnames continue to resolve while the new `*.api.*` endpoints become active.
87+
88+
### Impact during upgrade
89+
90+
- **Web UIs and REST API:** You should expect a short interruption while the old services are removed and the unified service becomes ready.
91+
- **Workflow execution (Zeebe brokers):** Designed to remain running throughout the upgrade. The primary impact is limited to UI and API availability, not to engine execution state.
92+
93+
To upgrade, initiate the cluster upgrade to 8.9 from Camunda Console. No additional steps are required beyond the URL and credential recommendations above.
94+
95+
## SaaS: Streamlined orchestration architecture
96+
97+
Camunda 8.9 introduces a streamlined SaaS orchestration architecture. The runtime for Operate, Tasklist, Identity (Admin), and the Zeebe REST API is unified into a single orchestration service. Zeebe brokers continue to run separately and execute workflows as before.
98+
99+
This is a topology change in SaaS only and does not affect Self-Managed deployments.
100+
101+
What changed:
102+
103+
- Unified API domain for Orchestration Clusters. Legacy hostnames are deprecated.
104+
- New client credentials use new API URLs.
105+
- Service labels have changed on Orchestration Cluster metrics.
106+
107+
What didn't change:
108+
109+
- The same UIs (Operate, Tasklist, Admin/Identity) and REST API remain available as before.
110+
- The Zeebe gRPC endpoint is unchanged.
111+
112+
:::info
113+
114+
The new architecture has been validated against Camunda's documented sizing and performance expectations to prevent regressions when upgrading from 8.8.latest to 8.9.
115+
116+
:::
117+
118+
### Unified API domain for Orchestration Clusters
119+
120+
Camunda 8.9 introduces a unified API domain for Orchestration Clusters. All services are now accessible under a single base URL:
121+
122+
| Service | Unified URL (8.9) |
123+
| :------------------ | :----------------------------------------------------------- |
124+
| Base / REST API | `https://<region>.api.<camunda-domain>/<clusterId>` |
125+
| Operate UI | `https://<region>.api.<camunda-domain>/<clusterId>/operate` |
126+
| Tasklist UI | `https://<region>.api.<camunda-domain>/<clusterId>/tasklist` |
127+
| Admin (Identity) UI | `https://<region>.api.<camunda-domain>/<clusterId>/admin` |
128+
129+
Legacy hostnames (`*.zeebe.<camunda-domain>`, `*.operate.<camunda-domain>`, `*.tasklist.<camunda-domain>`, and `*.identity.<camunda-domain>`) continue to work in 8.9 and are internally routed to the unified service, but are deprecated and scheduled for removal in 8.10.
130+
131+
After the 8.10 release, only the Zeebe gRPC endpoint and the unified `*.api.*` ingress will remain.
132+
133+
#### Deprecation
134+
135+
Legacy hostnames are deprecated as of 8.9 and will be removed in 8.10. Migrate any hard-coded URLs for Operate, Tasklist, or Identity to the new unified _.api._ URLs during the 8.9 lifecycle to ensure readiness before the 8.10 release.
136+
137+
#### Are you affected?
138+
139+
This change applies to you if you are using the Orchestration Cluster APIs with Camunda 8 Saas.
140+
141+
### Client credentials
142+
143+
Existing client credentials downloaded from Console for pre-8.9 clusters may reference legacy hostnames. Because those hostnames remain available in 8.9, existing credentials continue to work after a cluster is upgraded to 8.9. No immediate action is required.

docs/apis-tools/operate-api/overview.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ Work with this API in our [Postman collection](https://www.postman.com/camundate
2020

2121
## Context paths
2222

23-
For SaaS: `https://${REGION}.operate.camunda.io:443/${CLUSTER_ID}/v1/`, and for Self-Managed installations: `http://localhost:8080/v1/`.
23+
For SaaS: `https://${REGION}.api.camunda.io:443/${CLUSTER_ID}/operate/v1/`, and for Self-Managed installations: `http://localhost:8080/v1/`.
2424

2525
:::note
2626
Find your **region Id** and **cluster Id** under **Connection information** in your client credentials (revealed when you click on your client under the **API** tab within your cluster).
@@ -36,7 +36,7 @@ See [the interactive Operate API Explorer][operate-api-explorer] for specificati
3636

3737
A Swagger UI is also available within a running instance of Operate, at `https://${base-url}/swagger-ui/index.html`.
3838

39-
For SaaS: `https://${REGION}.operate.camunda.io/${CLUSTER_ID}/swagger-ui.html`, and for Self-Managed installations: `http://localhost:8080/swagger-ui.html`.
39+
For SaaS: `https://${REGION}.api.camunda.io/${CLUSTER_ID}/operate/swagger-ui.html`, and for Self-Managed installations: `http://localhost:8080/swagger-ui.html`.
4040

4141
:::note
4242
Find your **region Id** and **cluster Id** under **Connection information** in your client credentials (revealed when you click on your client under the **API** tab within your cluster).

docs/apis-tools/orchestration-cluster-api-mcp/orchestration-cluster-api-mcp-setup.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ The MCP server is served at `/mcp/cluster` on the Orchestration Cluster. The ful
8383
| :------------------------- | :------------------------------------------------------------------------------ |
8484
| Camunda 8 Run | `http://localhost:8080/mcp/cluster` |
8585
| Docker Compose | `http://localhost:8080/mcp/cluster` |
86-
| SaaS – public connectivity | `https://${REGION_ID}.zeebe.camunda.io/${CLUSTER_ID}/mcp/cluster` |
86+
| SaaS – public connectivity | `https://${REGION_ID}.api.camunda.io/${CLUSTER_ID}/mcp/cluster` |
8787
| SaaS – secure connectivity | `https://${CLUSTER_ID}.${REGION_ID}.privateconnectivity.camunda.io/mcp/cluster` |
8888
| Self-Managed (custom) | `https://<your-host>/mcp/cluster` |
8989

docs/apis-tools/orchestration-cluster-api-rest/orchestration-cluster-api-rest-overview.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ curl http://localhost:8080/v2/topology
8080
SaaS, public connectivity:
8181

8282
```bash
83-
curl https://${REGION_ID}.zeebe.camunda.io/${CLUSTER_ID}/v2/topology
83+
curl https://${REGION_ID}.api.camunda.io/${CLUSTER_ID}/v2/topology
8484
```
8585

8686
SaaS, secure connectivity (AWS PrivateLink):
@@ -123,7 +123,7 @@ This section covers the technical details and conventions you need to understand
123123

124124
In the Camunda Console, go to your cluster, and in the Cluster Details, find your **Region Id** and **Cluster Id**.
125125

126-
- For public connectivity (default), use this pattern as your `${BASE_URL}`: `https://${REGION_ID}.zeebe.camunda.io/${CLUSTER_ID}/v2/`
126+
- For public connectivity (default), use this pattern as your `${BASE_URL}`: `https://${REGION_ID}.api.camunda.io/${CLUSTER_ID}/v2/`
127127

128128
- For secure connectivity (AWS PrivateLink), use the private base URL shown in Console. For the Orchestration Cluster REST API, the pattern is:
129129

docs/apis-tools/orchestration-cluster-api-rest/orchestration-cluster-api-rest-swagger.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,15 @@ For SaaS clusters, Swagger UI is accessible through your cluster's dedicated end
3030

3131
1. In the Camunda Console, go to your cluster
3232
2. In **Cluster Details**, find your **Region ID** and **Cluster ID**
33-
3. Use this URL format: `https://${REGION_ID}.operate.camunda.io/${CLUSTER_ID}/swagger`
33+
3. Use this URL format: `https://${REGION_ID}.api.camunda.io/${CLUSTER_ID}/operate/swagger`
3434

3535
:::note
3636
Swagger UI is protected with CSRF. If you are logged into the Camunda Console, you can access Swagger UI directly. If not, you may need to log in first.
3737
:::
3838

39-
**Example:**
39+
**Example:**
4040
If your Region ID is `bru-2` and Cluster ID is `abc123-def456-ghi789`, your Swagger UI URL would be:
41-
`https://bru-2.operate.camunda.io/abc123-def456-ghi789/swagger`
41+
`https://bru-2.api.camunda.io/abc123-def456-ghi789/operate/swagger`
4242

4343
### Self-Managed
4444

docs/apis-tools/tasklist-api-rest/tasklist-api-rest-overview.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ Ensure you [authenticate](./tasklist-api-rest-authentication.md) before accessin
1717

1818
## Context paths
1919

20-
For SaaS: `https://${REGION}.tasklist.camunda.io:443/${CLUSTER_ID}/v1/`, and for Self-Managed installations: `http://localhost:8080/v1/`.
20+
For SaaS: `https://${REGION}.api.camunda.io:443/${CLUSTER_ID}/tasklist/v1/`, and for Self-Managed installations: `http://localhost:8080/v1/`.
2121

2222
:::note
2323
Find your **region Id** and **cluster Id** under **Connection information** in your client credentials (revealed when you click on your client under the **API** tab within your cluster).
@@ -33,7 +33,7 @@ See [the interactive Tasklist REST API Explorer][tasklist-api-explorer] for spec
3333

3434
A detailed API description is also available as a Swagger UI at `https://${base-url}/swagger-ui/index.html`.
3535

36-
For SaaS: `https://${REGION}.tasklist.camunda.io:443/${CLUSTER_ID}/swagger-ui/index.html`, and for Self-Managed installations: [`http://localhost:8080/swagger-ui/index.html`](http://localhost:8080/swagger-ui/index.html).
36+
For SaaS: `https://${REGION}.api.camunda.io:443/${CLUSTER_ID}/tasklist/swagger-ui/index.html`, and for Self-Managed installations: [`http://localhost:8080/swagger-ui/index.html`](http://localhost:8080/swagger-ui/index.html).
3737

3838
:::note
3939
Find your **region Id** and **cluster Id** under **Connection information** in your client credentials (revealed when you click on your client under the **API** tab within your cluster).

docs/apis-tools/zeebe-api-rest/zeebe-api-rest-overview.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ Ensure you [authenticate](./zeebe-api-rest-authentication.md) before accessing t
1818

1919
Find your **region Id** and **cluster Id** under **Connection information** in your client credentials (revealed when you click on your client under the **API** tab within your cluster).
2020

21-
Example path: `https://${REGION}.zeebe.camunda.io:443/${CLUSTER_ID}/v1/`
21+
Example path: `https://${REGION}.api.camunda.io:443/${CLUSTER_ID}/v1/`
2222

2323
### Self-Managed
2424

docs/components/connectors/custom-built-connectors/host-custom-connector.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ docker run --rm --name=CustomConnectorInSaaS \
3333
-e CAMUNDA_CLIENT_CLOUD_CLIENT-ID='<YOUR_CLIENT_ID>' \
3434
-e CAMUNDA_CLIENT_CLOUD_CLIENT-SECRET='<YOUR_CLIENT_SECRET>' \
3535
-e CAMUNDA_CLIENT_CLOUD_REGION='<YOUR_CLUSTER_REGION>' \
36-
-e CAMUNDA_OPERATE_CLIENT_URL='https://<region>.operate.camunda.io/<cluster-id>' \
36+
-e CAMUNDA_OPERATE_CLIENT_URL='https://<region>.api.camunda.io/<cluster-id>/operate' \
3737
camunda/connectors-bundle:<desired-version>
3838
```
3939

docs/components/modeler/web-modeler/modeling/advanced-modeling/publish-public-processes.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ Unfortunately, currently you can not define granular permissions for shared proc
102102

103103
Check the link URL. It should follow this pattern:
104104

105-
`https://<region-identifier>.tasklist.camunda.io/<cluster-uuid>/new/<process-ID>`
105+
`https://<region-identifier>.api.camunda.io/<cluster-uuid>/tasklist/new/<process-ID>`
106106

107107
### Are public links indexed by search engines?
108108

sidebars.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1406,6 +1406,7 @@ module.exports = {
14061406
"apis-tools/migration-manuals/migrate-to-camunda-spring-boot-starter",
14071407
"apis-tools/migration-manuals/migrate-to-camunda-process-test",
14081408
"apis-tools/migration-manuals/migrate-from-grpc-to-orchestration-cluster-api",
1409+
"apis-tools/migration-manuals/saas-orchestration-architecture",
14091410
],
14101411
},
14111412
],

0 commit comments

Comments
 (0)