Repository: camunda/camunda-modeler (2025-07-01T13:39:45Z)

Issue:
Allow deployment and starting instance for tenant when using "no auth" in SM
### Problem you would like to solve

Currently I can only deploy to a tenant or start an instance for a tenant when using basic auth or oauth. 
When switching to no auth, it does not display the tenant id field when using SM.

### Proposed solution

Display the tenant id field when using no auth in SM deploy/start instance

![Image](https://github.com/user-attachments/assets/4e4b55d7-76db-49e3-aab4-a6b75b872c24)
![Image](https://github.com/user-attachments/assets/7e4e777e-8410-4440-b944-e11fb8478581)

 dialog.

### Alternatives considered

No real alternatives

### Additional context

Related to https://github.com/camunda/camunda/issues/26854


Discussion:
@felix-mueller Could you share in which context the new feature got implemented? What versions of Camunda 8 do support tenant ID with self-managed? Desktop Modeler targets multiple versions of Camunda 8.
@nikku we do support Multi-Tenancy since 8.5 in the Orchestration Cluster. 
I would like to involve @koevskinikola to support answering detailed implementation questions here. 
Perhaps there is a difference how it should be handled from 8.5 vs. 8.8 (due to rearchitecture)
8.5 only shipped multi-tenancy with a sub-set of our stack, it was a partial implementation. What do we ship today and/or with 8.8? [The documentation](https://docs.camunda.io/docs/next/self-managed/concepts/multi-tenancy/#standalone-zeebe-usage) still mentions limitations.

My questions, regarding 8.8:

* Is multi-tenancy supported in both self-managed and SaaS
* Is it supported with and without authentication
* Is it supported in C8Run?

If we improve with 8.8, what is the epic that ships that improvement (please provide a link, or confirm it is https://github.com/camunda/camunda/issues/26854).

@koevskinikola @felix-mueller Please confirm or deny so we can drive this topic forward.
Hey @nikku, regarding the 8.8 changes:

- Multi-tenancy will be supported only on self-managed still. No SaaS support yet.
   - Details: technically MT will be usable in SaaS, we just won't expose the API yet as it is missing some SaaS-specific components (like billing). 
- With 8.8, multi-tenancy will be supported for both, with and without authentication.
   - Details: With 8.8, MT is decoupled from Identity, so we can enable it while authentication and authorizations are disabled.
- Yes, it is supported in C8Run.
   - Details: MT is fully implemented in Zeebe and the Service layer, so it's available in C8Run out-of-the-box.
- Yes, https://github.com/camunda/camunda/issues/26854 is the epic that ships the improvements.
   - Details: There were multiple epics, but this is the most recent one after several iterations of re-planning and refactoring.

cc: @felix-mueller 
Thanks @koevskinikola, this is what we need to proceed. ⭐ 



Patch:
diff --git a/client/src/plugins/zeebe-plugin/deployment-plugin/DeploymentConfigForm.js b/client/src/plugins/zeebe-plugin/deployment-plugin/DeploymentConfigForm.js
index ea58a32f3f..ff04511974 100644
--- a/client/src/plugins/zeebe-plugin/deployment-plugin/DeploymentConfigForm.js
+++ b/client/src/plugins/zeebe-plugin/deployment-plugin/DeploymentConfigForm.js
@@ -121,8 +121,7 @@ export default function DeploymentConfigForm(props) {
                               autoFocus
                             />
                             {
-                              props.values.endpoint.targetType === TARGET_TYPES.SELF_HOSTED &&
-                              [ AUTH_TYPES.BASIC, AUTH_TYPES.OAUTH ].includes(props.values.endpoint.authType)
+                              props.values.endpoint.targetType === TARGET_TYPES.SELF_HOSTED
                                 && (
                                   <Field
                                     name="deployment.tenantId"
diff --git a/client/src/remote/ZeebeAPI.js b/client/src/remote/ZeebeAPI.js
index 4255d21f8b..2a626c913c 100644
--- a/client/src/remote/ZeebeAPI.js
+++ b/client/src/remote/ZeebeAPI.js
@@ -51,7 +51,7 @@ export default class ZeebeAPI {
     return this._backend.send('zeebe:deploy', {
       endpoint,
       resourceConfigs,
-      tenantId: getTenantId(tenantId, endpoint)
+      tenantId
     });
   }
 
@@ -68,7 +68,7 @@ export default class ZeebeAPI {
     return this._backend.send('zeebe:startInstance', {
       endpoint,
       processId,
-      tenantId: getTenantId(tenantId, endpoint),
+      tenantId,
       variables
     });
   }
@@ -156,14 +156,6 @@ export function getEndpointForTargetType(endpoint) {
 
 }
 
-function getTenantId(tenantId, endpoint) {
-  if (endpoint.authType === AUTH_TYPES.NONE) {
-    return undefined;
-  }
-
-  return tenantId;
-}
-
 /**
  * Check if the URL is HTTP or HTTPS.
  *
@@ -191,4 +183,4 @@ function isHttpOrHttps(url) {
   } catch (error) {
     return false;
   }
-}
\ No newline at end of file
+}


Test patch:
diff --git a/client/src/plugins/zeebe-plugin/deployment-plugin/__tests__/DeploymentConfigValidatorSpec.js b/client/src/plugins/zeebe-plugin/deployment-plugin/__tests__/DeploymentConfigValidatorSpec.js
index d08e24e12d..4f004c63f2 100644
--- a/client/src/plugins/zeebe-plugin/deployment-plugin/__tests__/DeploymentConfigValidatorSpec.js
+++ b/client/src/plugins/zeebe-plugin/deployment-plugin/__tests__/DeploymentConfigValidatorSpec.js
@@ -302,6 +302,20 @@ describe('<DeploymentConfigValidator>', function() {
       });
 
 
+      it('Camunda 8 self-managed (no auth with tenant ID)', function() {
+        expectNoValidationErrors({
+          deployment: {
+            tenantId: 'test-tenant'
+          },
+          endpoint: {
+            targetType: TARGET_TYPES.SELF_HOSTED,
+            authType: AUTH_TYPES.NONE,
+            contactPoint: 'http://localhost:26500'
+          }
+        });
+      });
+
+
       it('Camunda 8 self-managed (basic auth)', function() {
         expectNoValidationErrors({
           deployment: {},
diff --git a/client/src/remote/__tests__/ZeebeAPISpec.js b/client/src/remote/__tests__/ZeebeAPISpec.js
index 07a1c96754..a5b0522ce9 100644
--- a/client/src/remote/__tests__/ZeebeAPISpec.js
+++ b/client/src/remote/__tests__/ZeebeAPISpec.js
@@ -810,7 +810,7 @@ describe('<ZeebeAPI>', function() {
     });
 
 
-    it('should deploy (self-managed, no auth, tenant ignored)', function() {
+    it('should deploy (self-managed, no auth, tenant passed)', function() {
 
       // given
       const backend = new MockBackend({
@@ -850,7 +850,7 @@ describe('<ZeebeAPI>', function() {
           url: endpoint.contactPoint
         },
         resourceConfigs,
-        tenantId: undefined
+        tenantId: 'my-tenant'
       });
     });