How a Zitadel multi-tenant B2B setup fits your customer model
If you run a product or platform for multiple business customers, you need each customer's users, administrators and identity provider kept apart, and you need that separation to hold as you add customers. In Zitadel, the answer is a tenant model built from three levels: instances, organizations and projects. Instances are virtual tenants with full data isolation, organizations sit inside an instance and hold the users and projects for one customer, and projects group the applications, roles and grants that your products use. Choosing how many instances you run and how you map customers to organizations is the decision that shapes everything after it, and it is hard to reverse once customers, applications and integrations depend on it.
The model looks simple on a diagram and becomes harder in practice. Your products often need to let a user from one organization access an application owned by another, which Zitadel handles through project grants, and each grant is a deliberate decision about who can see and use what. Delegated administration is the second difficulty: a customer's own administrators should manage their users, login settings and identity provider without gaining reach into other customers or into your platform configuration. Get either boundary wrong and you may find that a single customer can view or change more than intended, which is a security finding rather than a configuration tidy-up.
A weak tenant model also leaks into every application you connect. Each OIDC or SAML client, each token claim and each role check will assume a particular organization and project structure, so changing that structure later means re-registering clients and revisiting authorization logic across your products. Before the build starts, confirm with your product and security teams which tenant boundaries must be enforced by Zitadel, which must be enforced in your own application code, and how many instances, organizations and projects you expect over the next several years. Write those answers down, because they become the input to the design.
This page covers the design and build of the multi-tenant setup: instance and organization structure, project and grant design, delegated administration and the checks that prove the boundaries work. It does not cover SSO protocol configuration, passkey rollout, security hardening or migration from another identity platform. Those topics have their own pages, and the tenant design described here should be settled first so that those later decisions have a stable structure to build on.
Which Zitadel building blocks carry tenant boundaries
A multi-tenant B2B design in Zitadel rests on four building blocks: instances, organizations, projects and per-organization identity provider settings. Each one isolates something different, is administered by a different party, and is costly to change once customers and applications depend on it.
Instances as virtual tenants
An instance is Zitadel's top-level virtual tenant with full data isolation, so users, organizations and configuration in one instance are not visible to another. Decide early whether separate customer groups, regulated populations or environments such as test and production need their own instance. Check with your Zitadel team how instance-level settings such as domains and default policies will be shared, and confirm the cost of running more than one instance on your database and cluster before you commit.
Organizations inside an instance
Organizations sit inside an instance and hold the projects and users for one customer or partner. This is the boundary most B2B designs rely on, so the number of organizations and how they map to your customer accounts should be settled before onboarding begins. Confirm with your platform team who may create organizations, since that role typically sits with the instance administrators and moving users between organizations later is not a simple operation.
Projects that group applications
Projects group the applications, roles and grants that a set of users can use. A project usually belongs to the organization that owns it, and project grants are what let another organization use that project's applications and roles. Map each product or application family to one project, and check which organization will own each project, because changing ownership or restructuring roles after clients are registered forces coordinated updates in every application.
Roles and grants
Roles define what a user may do inside a project, and grants assign those roles to users or to other organizations. Grants are the mechanism that lets a customer organization access a shared application without owning it, which makes them central to delegated administration. Agree a naming scheme for roles early and document which administrator may create grants, since role names embedded in application code are difficult to rename without a release.
Per-organization identity provider configuration
Zitadel lets each customer organization connect its own identity provider, so one organization can use Entra ID while another uses Okta or LDAP. This setting determines which corporate directory authenticates a customer's users, so it is a trust decision as well as a configuration choice. Federation details are covered on the SSO federation page, and this card only highlights that the provider chosen per organization must be reviewed by the team that owns that customer relationship.
Which tenant model decisions are hard to reverse
This table compares the four tenant model choices that set data isolation, admin scope and upgrade effort in Zitadel, with the conditions under which each option fits and the operating cost it carries. Read each row as a decision you make once at design time, because changing it later usually means moving users, grants or whole instances. The main takeaway is that instance boundaries are the hardest to undo, so settle them first and treat the other three as refinements.
| Decision | Option | When it fits | Operational cost to plan for |
|---|---|---|---|
| Instance boundary | One instance for all customers | Customers accept shared infrastructure and a common branding and policy baseline, and you need one upgrade path for everyone | Shared admin surface, so policy changes and incidents affect every tenant; per-customer isolation depends on organization and project design |
| Instance boundary | Separate instance per customer or per environment | Contractual or regulatory requirements call for full data isolation, or customers need independent release timing | Each instance is its own deployment, database and upgrade target; expect repeated rollout, monitoring and backup work |
| Organization model | One organization per customer | Each customer needs its own users, login policies and identity provider, and customer admins should see only their own people | Moving a user to another customer means recreating or migrating the account; many organizations increase policy and grant review work |
| Organization model | Shared organization for all customers | A small number of tenants share one user base, or you are running a workforce or partner directory | Customer separation depends on roles and grants, so a grant mistake exposes more than one customer; fewer objects to govern |
| Project model | One shared project for all products | You run one product or a closely related set of applications with the same roles | Roles and grants are easier to review centrally, but a change to one application's roles touches every consumer |
| Project model | One project per product | Products have different role sets, release cycles or owners | Cross-organization project grants must be reviewed per product; more grant objects to track during upgrades |
| Admin model | Central administration by your team | You need one audit point, consistent policy, and no customer-side access to the console | Your team carries every user, grant and login change, which can become the bottleneck as tenant count grows |
| Admin model | Delegated customer admins | Large customers want to manage their own users and identity providers within agreed limits | Requires clear role boundaries and periodic review of customer admin grants; confirm exactly which actions a delegated admin can perform in your Zitadel version |
Build sequence for a Zitadel multi-tenant B2B setup
This sequence takes a team from the tenant model decision to a working multi-customer Zitadel setup in which each customer organization is isolated, delegated administration is scoped, and cross-organization access is granted deliberately. Each step closes with a check you can run before moving on.
Confirm the instance strategy
Decide whether all customers and products share one Zitadel instance or whether regulated or high-separation customers need their own instance. An instance is the strongest isolation boundary in Zitadel, with its own data, so this choice is hard to reverse and should be made with your security and compliance leads before any configuration starts. Record the decision, the reason for it and the number of instances you expect, and confirm the instance and organization concepts against the current Zitadel organizations documentation for your release. Done when the decision is signed off in writing and the naming of the instance is agreed.
Create the organization model and naming convention
Map each customer, partner and internal business unit to a Zitadel organization inside the chosen instance, and agree a naming convention for organizations, domains and users that stays readable as the list grows. Decide which organization hosts your own staff and which hosts shared services, because the owner of each organization controls its users and projects. Create two or three pilot organizations with the console or API, using the menus and calls listed in the current documentation for your release. Check: a user created in pilot organization A does not appear in the user list of pilot organization B when you sign in as an administrator scoped to B.
Define projects and roles per product
Create one project per product or application family, and define the roles each product needs, such as viewer, editor or billing admin. Keep roles product-specific so a role in one project cannot be confused with a role in another, and keep the list short enough for customer administrators to understand. Register the applications inside each project and confirm the token claims that carry roles to your relying applications. Check: a test user with a role in project X receives that role in the token for project X and no role claim for project Y.
Set up grants for cross-organization access
Where a product owned in one organization must be used by another, such as a partner or a shared service, create a project grant or user grant to the target organization and select only the roles that organization needs. Grants are the mechanism that lets one organization use a project it does not own, so document each grant with its owner, purpose and approver. Check: after granting project X to organization B, a user in B can receive the granted roles for X, while a user in organization C that has no grant cannot obtain a token for X. Repeat the check for each grant before the grant is accepted.
Configure delegated admin roles
Assign organization-scoped administrator roles so each customer's own administrators can manage their users, applications and login settings without access to other organizations. Keep instance-level administration to a small platform team, and review which roles a delegated administrator can grant to others. Confirm the exact role names and assignment steps in the current Zitadel documentation for your release, because role sets change between versions. Check: a delegated administrator for organization A can create a user in A but receives an authorization error when trying to view or change organization B, and cannot change instance-level settings.
Connect one test identity provider per organization
For each pilot organization, configure one test identity provider, such as an OIDC or SAML provider from a customer's directory, and set it as the login option for that organization only. Zitadel allows each customer organization to use a different identity provider, so confirm that the provider settings, redirect URLs and attribute mappings are scoped to the organization. Test sign-in with a user from each provider and confirm which organization they land in. Check: a user who signs in through the provider configured for organization A is created or matched only in organization A, and the login page for organization B does not offer provider A.
Run the end-to-end isolation test before onboarding
With all pilot organizations, projects, grants and identity providers in place, run a written test script that covers every boundary: user visibility, application visibility, role claims, grant behavior and delegated admin limits. Ask a second person to repeat the tests from a different account so results are not based on one administrator's view. Record each result, fix the gaps, and repeat the failed tests until every check passes. Done when the signed test record is stored with your configuration and ready for review by your security and compliance leads, who decide whether to proceed to customer onboarding.
How project grants let one organization use another's application
A project grant lets users in one Zitadel organization use an application and its roles that are defined in a different organization. The project itself stays where it was created. The grant is a separate record that points at that project, names the organization receiving access, and selects which of the project's roles those users may receive. For multi-tenant B2B design, this is the mechanism that lets a shared application serve many customers without copying the application into each customer's organization.
Consider an illustrative example. A platform vendor runs an invoicing application as a project in its own organization. A partner organization wants its staff to use that application. The vendor creates a grant from its project to the partner's organization and selects the roles the partner may assign, such as an invoice viewer and an invoice approver. Partner administrators then assign those granted roles to their own users. The vendor keeps control of the application definition, the role catalogue and the client configuration, while the partner controls who on their side holds each role.
Confirm who is allowed to create grants before you design around them. In Zitadel, grant creation is governed by the permissions held by the instance and organization administrators involved, and those permissions differ by how the organization and project are set up. Check which roles can create, edit and revoke grants, whether a project owner in one organization can grant to another without involvement from an instance administrator, and whether the receiving organization can refuse or limit what it receives. Write these answers into your access policy so that a delegated administrator in a customer organization cannot widen access on their own.
Map the granted roles to the receiving organization's users carefully. A granted role is only a permission set on the project. Users in the receiving organization do not become members of the granting organization, and their identities, credentials and authentication policies remain in their own organization. Test a user from each receiving organization end to end, confirming that the token they receive contains the expected roles and that roles outside the grant are absent. Also decide what happens when a role is renamed or removed in the source project, because existing grants and user assignments may need updating.
Plan for departure. When a customer leaves, revoking the grant should remove that organization's access to the shared project, but it does not by itself delete the users, role assignments or audit records created in the customer's organization. Decide whether those users are disabled, moved or deleted, and whether tokens already issued remain valid until they expire. Confirm the revocation behavior, the token lifetime and the data retention rules against the Zitadel organizations documentation and your target release, and rehearse the offboarding procedure in a non-production instance before relying on it.
What drives effort and cost in a multi-tenant Zitadel build
This table lists the drivers that change scope in a multi-tenant Zitadel build with organizations, who typically carries each cost, whether it is one-time or recurring, and how to keep it contained. Read it before requesting a quote so the written scope reflects how many organizations, projects, identity providers and environments you actually need. The main takeaway is that organization count, identity provider count and migration volume shape most of the effort, and templating them early keeps later changes cheap.
| Driver | Why it changes effort or cost | Who pays and one-time or recurring | How to keep it down |
|---|---|---|---|
| Number of customer organizations | Each organization needs its own setup, branding choices, admin assignments and tests. Zitadel organizations hold projects and users, so the count multiplies provisioning work. | Build effort is usually one-time for the template. Creating each new organization afterward is recurring, paid by your team or by a retainer. | Script organization creation through the Zitadel APIs from one template so new customers follow the same steps. |
| Number of products and projects | Projects group applications, roles and grants. More projects mean more role models, more project grants across organizations and more integration testing. | Mostly one-time design and build. Each added project adds recurring review when roles change. | Limit projects to real product boundaries and reuse one role model where products share permissions. |
| Identity providers to federate | Each customer organization can use a different identity provider over OIDC, SAML, LDAP or other supported protocols. Each one needs configuration, claim mapping and login testing. | Integration is largely one-time per provider. Your identity team usually owns the upstream tenant settings, which can change over time. | Standardize on one protocol per provider type and document the claim mapping so each new federation follows a known pattern. |
| Delegated admin roles | Customer administrators need scoped rights inside their own organization. Role design, testing that customers cannot reach other organizations and documentation all add work. | One-time design, then recurring review whenever access requests or staff change. | Define a small set of delegated roles up front and review them on a fixed schedule instead of granting ad hoc rights. |
| SCIM provisioning | Zitadel provides a SCIM v2 interface for standardized user provisioning and lifecycle management. Each connected source system needs mapping, testing of create, update and deactivate events, and error handling. | Integration is one-time per source. Operating the sync and handling failed events is recurring, usually owned by your operations team. | Confirm the source system's SCIM behavior early and limit the first release to the attributes you need. |
| Migration of existing users | Moving users from Auth0, Keycloak, Firebase or another Zitadel instance requires choosing between importing users up front and just-in-time migration. Password handling, client re-registration and cutover testing drive the work. | One-time, paid per migration path. Parallel running during cutover is temporary but can extend. | Pick one migration approach per user population, measure the user count from the source system first, and schedule a fixed cutover window. |
| Environments (development, staging, production) | Each environment needs its own instance configuration, federation settings, secrets and test data. Keeping them aligned is ongoing work. | Setup is one-time. Keeping environments in sync and promoting changes is recurring, paid by your platform team or a support retainer. | Manage instance and organization configuration as code and promote changes through the same pipeline in every environment. |
| Compliance evidence | Assessors often ask for records of access reviews, admin actions, configuration history and backup tests. Collecting this evidence is extra work on top of the build. DeployOpen prepares evidence but does not issue audit reports or certifications. | Evidence design is one-time. Ongoing collection and review is recurring. Independent auditors and certification bodies perform the assessment. | Agree the evidence list with your auditor before build starts and enable audit logging from the first environment. |
How the tenant design changes by deployment model
Zitadel documents self-hosting on Linux and macOS binaries and with Docker Compose, which suits testing how tenants map to instances, organizations and projects. At this stage the goal is to prove the design, not to run a durable tenant estate. Treat the single-node setup as disposable so that decisions can be tested and discarded without affecting customers.
- Instance creation: Create a throwaway instance for each design question, such as a shared-instance model and a dedicated-instance model, and record the settings used for each.
- Separation: Use separate instances only when you need to test full data isolation. Within one instance, test organization boundaries, project grants and delegated administration.
- Promotion: Do not move evaluation data forward. Capture the decisions (organization names, project structure, roles and identity provider mappings) as files or code so the production build starts from a clear record.
- Backups: Back up the PostgreSQL database only if you plan to keep test data. Confirm in the vendor documentation which settings and secrets a restore requires on another host.
Before you move on, confirm that your evaluation database runs a PostgreSQL version from 14 through 18 and that your production target uses the same version.
Zitadel recommends a Kubernetes cluster with the official Helm chart for high availability, so most production tenant designs will be built on Kubernetes. Here, the instance is a deployment decision made per environment, and promotion is a release process. Replica counts, database resilience and backup testing are covered on the high availability page, so this tab focuses on how the tenant model is created and moved.
- Instance creation: Decide whether each environment (development, test and production) gets its own instance. Define instances in Helm values and infrastructure code so every environment is built from the same template.
- Separation: Separate environments at the instance level, and keep customer organizations inside the production instance. A separate PostgreSQL database per environment reduces the risk of data moving between environments by accident.
- Promotion: Move organization, project and role configuration through version-controlled automation, such as the Terraform configurations Zitadel publishes, and test each change in a lower environment before it reaches production.
- Backups: For each production instance, schedule PostgreSQL backups that you have restored successfully, and record the Helm values and secrets needed to rebuild the deployment in a second cluster.
Before you choose a chart version, check that your PostgreSQL service falls within the supported range of versions 14 through 18.
In an air-gapped or restricted network, the instance cannot depend on public package registries, hosted services or outbound internet calls. Binaries, container images and Helm charts must enter through your approved transfer process, and each step of that process becomes part of the tenant design. Confirm early which identity providers your customers can reach from inside the boundary.
- Instance creation: Build instances from artifacts mirrored inside the network, such as binaries, container images and chart packages, and check each artifact against your own records. Confirm the complete artifact list with the vendor documentation for your chosen install method.
- Separation: Keep tenant data in instances hosted inside the restricted boundary. Federation with external identity providers may need an approved outbound route or may not be possible, so confirm this before you design organization-level identity providers.
- Promotion: Export configuration as reviewed files, record each approval, and import the files into the restricted environment through the transfer path your security team has approved.
- Backups: Keep backup copies inside the boundary or in an approved location. Store the encryption keys and secrets needed for a restore separately from the database dump, and test restores on an isolated host.
Before go-live, confirm with your security team which transfer and approval steps apply, and which PostgreSQL version from 14 through 18 your database platform supports under those constraints.
How to keep one customer's admins out of another's tenant
Multi-tenant access control depends on boundaries that Zitadel enforces only when they are configured and checked. The six areas below cover role scope, who can create tenants, administrator separation, grant reviews, identity provider trust and audit review. Together they answer one question: can a customer's administrator reach another customer's data?
Scope admin roles to one organization
Zitadel organizations hold the projects and users for a customer, so the first control is making sure each customer's administrators receive roles only inside their own organization. Review every role assignment that reaches beyond that boundary, including roles granted on shared projects. Confirm with your Zitadel version how manager roles on organizations and projects are assigned and inherited, then test the boundary by signing in as a customer admin before go-live. Keep that test as a script you can rerun after each upgrade.
Restrict who can create instances and organizations
Creating an organization or instance is a platform-level action that changes tenancy itself, so limit it to a small, named group of operators. Identify which roles can create organizations and which can create instances in your deployment, and remove those rights from any customer-facing role. Ask your team to confirm whether self-service organization creation is enabled in your configuration, and disable it if your onboarding process does not need it. Link each approved creation to a ticket that references the customer contract.
Separate operator and customer admin accounts
The platform operator who runs the Zitadel instance and the administrators of each customer organization should use separate accounts, sign-in paths and recovery contacts. Keep operator accounts outside every customer organization, require MFA for them, and give customer admins accounts that exist only in their own organization. Document which account can reach instance-level administration, since that account can see across tenants. Verify by signing in as a customer admin and attempting to open another organization's projects and users.
Review grants on a fixed schedule
Grants accumulate as projects change hands, customers leave and staff rotate, so access drifts unless someone checks it on a set cadence. Agree the review frequency with your security team, export the current project grants and role memberships for each organization, and compare them with the list of approved administrators. Remove grants for departed customers and for projects that no longer exist. Confirm which listing or export methods your Zitadel release provides for this check.
Trust each identity provider only in its own organization
When each customer connects its own Entra ID, Okta, Google or LDAP directory, that provider should authenticate users only for the organization that configured it. Check that every identity provider is registered at the organization level, that login hints and domain routing cannot send users from one customer to another customer's provider, and that no provider is shared across organizations unless you intend it. Ask each customer to confirm the tenant or issuer identifier it registered. Test by attempting a sign-in from one customer's user through a different customer's provider.
Audit tenant-level changes and harden the base
Changes to instances, organizations, grants and identity providers are the events most likely to cross tenant lines, so keep them in the audit trail and review them on a schedule. Confirm what Zitadel records for each change type in your release, and confirm where those records are forwarded and how long they are retained. Protect the platform foundations that secure every tenant, including the master key, TLS, database credentials and MFA policies, using the steps in the Zitadel security hardening guide. Run this audit review in the same cycle as the grant review.
How to test tenant isolation before customers go live
Before any customer organization signs in, run a documented isolation test that tries to break the boundaries you designed. The goal is to prove that an account in one organization cannot see or change anything that belongs to another, and that a fault in one customer's identity setup stays contained. Treat this as a release gate for the Zitadel multi-tenant design, not a one-time demo. Keep the test scripts and results in the same repository as your instance and organization design so they can be rerun.
Start with cross-organization reads. Create at least two test organizations inside the same instance, each with a user, a project and an application. From an account in organization A, attempt to read users, projects and applications belonging to organization B, both in the Console and through the management API using a token issued to the A account. Repeat the attempts with a user who holds an organization-level administrator role in A. Every attempt should return a denial or an empty result. Also check that the instance-level administrator behavior matches what your operating model says it should be, since that account sits above the organizations.
Next, test grants. A project grant should make a project visible to exactly the organization it was granted to, and nobody else. Grant a project from organization A to organization B, confirm that a B user can see the granted project and its roles, then confirm that a third organization cannot. Then revoke the grant and verify that B users lose access to the project and its applications on their next token request. Check existing sessions and refresh tokens as well, because a revoked grant that still works through a cached token is a finding. Record the exact time of revocation and the time access stopped.
Test delegated administration separately. Create a user in organization A with the role you intend to delegate to customer administrators, then try to change organization B: rename it, add users, edit its identity provider, alter its login policies, or create projects in it. Each of these should fail. Repeat the same checks after you have changed role assignments, because a role granted at the wrong level is the most common way tenant boundaries erode. Confirm the delegated role appears only in the scope you intended.
Finally, test failure and change. Break the identity provider for one organization, for example by pointing its configured upstream provider at an invalid endpoint or disabling its client, then confirm that users in every other organization can still sign in. After any configuration change, rerun the full set of cross-organization reads, grant and revoke checks, and delegated admin attempts, not only the tests for the area you changed. A wrong design usually shows up as a successful read or write across the boundary, a revoked grant that keeps working, or one organization's outage blocking logins elsewhere. Save every result, including timestamps, test accounts, commands and screenshots, as test evidence for your compliance file, and ask your auditor which format they expect before you start.
What buyers ask before building a Zitadel tenant model
How much does a multi-tenant Zitadel setup cost to build?
DeployOpen does not publish a price list. A quote follows from a written scope, and the main cost drivers are the tenant structure you choose, the number of applications to integrate, and the identity providers each customer will use. One-time work usually includes design, PostgreSQL and Kubernetes or Docker deployment, application integration and testing. Recurring costs include the infrastructure you run, database backups, upgrades and any support retainer. For comparison, the Zitadel pricing page lists a Free plan at US$0 per month for 100 daily active users, a Pro plan at US$100 per month including 25,000 daily active users, and an Enterprise plan with custom pricing. Ask any partner to split its quote into design, build, integration, testing and run costs, and to state which items you pay directly to cloud providers or other vendors.
How long does a Zitadel tenant model take to build?
No fixed duration applies to every environment, so treat any timeline as a function of the written scope. Duration tracks the number of instances and organizations to design, how many applications and identity providers need integration, whether migration from another identity system is included, and how quickly your teams decide on roles, naming and admin delegation. Design decisions come first and gate the rest, so a scope that leaves them open tends to stretch. Ask for milestones with clear deliverables, the dependencies on your side, and the review points where your security and identity owners sign off. If a proposal gives a duration without listing these inputs, ask what assumptions sit behind it.
What does our identity, platform and product team need to provide?
Identity team: decisions on login policy, MFA and passkey rules, which customer identity providers are allowed, and how SCIM provisioning should behave. Platform team: cloud accounts or data center capacity, Kubernetes or Docker hosting, PostgreSQL with a supported version, network paths, TLS certificates, backup targets and monitoring. Product owners: the list of applications, their OIDC or SAML needs, the roles and permissions each customer requires, and who approves changes to the tenant structure. Expect a named contact in each team with time for workshops and reviews. Your side also supplies test users and a staging environment. Confirm these responsibilities in the written scope so that no gap appears after the build starts.
Can an internal team design a multi-tenant Zitadel setup alone?
Often yes, if the team already runs OIDC and SAML integrations, operates PostgreSQL and has Kubernetes or Docker experience. The harder part is usually the tenant model itself, because instance boundaries, organization structure, project grants and delegated administration are difficult to change once customers are live. Teams without that background tend to learn through the first customer, which costs more later. A practical split is to have your own staff own identity policy and day-to-day operations, while an outside team reviews the design, builds a reference setup and documents it. Check whether your team has done a similar design before, who will maintain it after go-live, and how upgrades will be tested.
What changes when the number of customer organizations grows?
Growth mostly affects administration, provisioning and operations, not the basic model. Each customer organization adds its own users, admins, identity provider settings and project grants, so the effort of onboarding a customer depends on how much of it you automate. Use SCIM v2 for standardized user provisioning where the customer's identity provider supports it, and script organization setup through the API, keeping manual console steps for exceptions. Decide early whether a new customer needs its own instance. Instances give full data isolation but add infrastructure and upgrade effort for each one. Also check user volume: the Zitadel pricing page ties its Cloud plans to daily active users, so a growing user base can change the plan you need on that platform.
Should each customer get its own instance or its own organization?
Organizations often suit most customers, with a separate instance reserved for customers who need strict isolation or independent operation. Zitadel describes instances as virtual tenants with full data isolation, while organizations sit inside an instance and hold the projects and users. Organizations are usually simpler to create and administer, and they let you delegate admin rights to a customer's own team. An instance adds isolation at the cost of separate configuration, separate upgrade and monitoring effort, and more operational overhead. Settle this decision with your security and compliance owners before building. Confirm current limits, such as how many organizations an instance supports, in the Zitadel documentation for the version you deploy.
How do project grants work across customer organizations?
A project groups applications, roles and grants. A project grant lets another organization use a project's roles, which is how one shared application can serve several customers. Your design should decide which organization owns each project, who may create grants, and which roles a customer admin can assign. Keep the role catalogue small and owned by one team, because roles spread across customers quickly when no one controls them. Test each grant with a user from every customer organization, including a user who should be denied access. Confirm the exact grant behavior, token claims and role handling in the Zitadel organizations documentation for your version, since those details determine what your applications receive.
What usually breaks in a multi-tenant identity design?
Most failures come from boundaries drawn without a plan for growth. Common problems include shared applications that cannot tell customers apart in tokens, roles defined by whichever team builds first, identity provider settings that differ between customers without a documented owner, and admin delegation granted wider than the customer needs. Migration from another identity system can also bring duplicate users or email conflicts. Prevent these with a written tenant model, naming rules, a test matrix that covers at least two organizations, and a review step for every new grant. Operations matter too: back up the database, test upgrades in staging and keep the audit trail for admin actions. Confirm each point against your own applications before go-live.
What to monitor, document and review after a multi-tenant go-live
The go-live of a multi-tenant Zitadel setup is the start of the operating work, not the end of it. Within the first weeks, the platform team should hold a current register that answers three questions at any time: which instances exist, which organizations sit inside each instance, and which projects and grants connect them. Each entry needs a named owner, a purpose and the date it was last reviewed. Record the instance and organization identifiers, the project names, the roles defined on each project, and every project grant that lets one organization use another organization's project. Without this register, a later question such as "who can still reach this customer's applications?" becomes an investigation rather than a lookup.
Delegated administration needs its own review cadence because it is the control most likely to drift. Customer organizations are often given administrative roles inside their own organization so they can manage their users and applications. Review those accounts and their role assignments on a fixed schedule, and remove access that no longer matches a contract or a named contact. Review project grants with the same rigor. A grant that was useful during onboarding can outlive the reason for it. Confirm the review interval with your security and compliance owners, and keep the output of each review in the register so the decision and its date are traceable. The Zitadel audit and event views are the starting point for evidence, but confirm in your own version which events are retained and for how long.
Onboarding and offboarding of customer organizations should be a written procedure with checks at each step, not an informal set of console actions. Onboarding normally covers creating the organization, assigning its administrators, attaching its identity provider where one applies, creating project grants, and recording the change in the register. Offboarding must do the reverse in a defined order: disable sign-in for the organization's users, revoke grants and delegated administrator roles, remove or archive applications, and then confirm that the organization's identity provider and client registrations no longer accept logins. Decide in advance what happens to the organization's user data, and who approves deletion. Test the procedure in a non-production instance before the first real offboarding.
Upgrades across the v4 line must be treated as changes that can affect tenant isolation, not only as package updates. Zitadel v4.19.5 was published on 15 October 2026 and can serve as a reference point, but check the GitHub releases page for the release you actually plan to run, and read its notes before every change. For each upgrade, rerun a fixed set of isolation tests: a user in one organization cannot read or authenticate into another, a grant does not expose more roles than intended, and each customer's identity provider still routes only its own users. Record the test results alongside the change ticket. Support, upgrade paths and database migration testing are covered on the upgrades page, so this section only sets the controls that trigger those activities.
How DeployOpen scopes and hands over a Zitadel tenant design
DeployOpen designs Zitadel multi-tenant B2B setup with organizations as a written, fixed-scope piece of work inside your own infrastructure. The design covers how instances, organizations and projects map to your customers, partners and internal teams, and how delegated administration and project grants are set up and verified before handover.
How we scope
- Agree in writing which instances, organizations and projects the design must cover before work starts.
- Map each customer or partner to an organization and list the users, roles and grants each one needs.
- Confirm which identity providers each customer organization will use, such as Entra ID, Okta or LDAP.
- Ask for the scope, deliverables and timeline in writing so the quote can be compared against your own team's effort.
How we build
- Build the tenant structure in a non-production Zitadel environment that matches your target deployment.
- Configure delegated administration so customer administrators manage their own organization without reaching others.
- Set up project grants across organizations and test that each grant exposes only the roles it should.
- Test isolation between organizations, including login, user visibility and token claims, before any production use.
How we hand over
- Document the instance, organization and project model, with a diagram and an explanation of each naming convention.
- Provide the runbook for creating new customer organizations, delegated admins and project grants.
- Walk your identity and platform engineers through the design and the test evidence in a handover session.
- Record configuration decisions and open questions so your team can change the design later with clear context.
How we support
- Ongoing support, upgrades and continuous testing are available as a retainer after handover.
- Plan upgrades on the Zitadel v4 line with tests of the tenant design before each rollout to production.
- Review new customer organizations and project grants against the agreed design when your business adds them.
- Confirm with DeployOpen what support, response and escalation terms a retainer would include before you sign.

