Managing Tenants
Tenants live inside a project and represent customer organizations (accounts) — each with isolated data, configuration, and a set of enabled applications. Since the Wave 3 re-architecture a tenant is not an environment: the dev/qas/run dimension is carried by the first-class Environment entity, and applications are defined once at the project level and enabled per tenant.
What is a Tenant?
A tenant represents a customer organization with:
- Complete data isolation - Each tenant's data is separated
- Independent configuration - Tenants can have unique settings, and per-(tenant, application) overrides on the enablement leaf
- Enabled applications - Project applications are enabled per tenant via
Tenant2Application; a tenant sees only the applications enabled for it - User access control - Members hold configurable tenant roles over the fixed permission vocabulary
Tenant is a customer organization, not an environment
The old tenant.type (local | dev | qas | run) enum is gone. If you previously used tenants as environments, see the Wave 3 Migration Guide for the tenant-as-environment → Environment mapping.
Creating a Tenant
Step 1: Navigate to Tenants
Open a project and go to its Tenants page.
Step 2: Click Create
Click the Create Tenant button.
Step 3: Fill in Details
Enter the tenant information:
- Name (required) - Customer organization display name
- Slug (required) - Short identifier (auto-filled from the name, max 10 characters)
Step 4: Save
Click Create to save the new tenant. Then enable the applications this customer should have (see Enabling Applications).
Viewing Tenants
The tenants page shows:
- # - Tenant slug
- Name - Tenant display name
- Created at / Created by - Creation metadata
- Updated at / Updated by - Last modification metadata
Filtering
Use the search box to filter tenants by name.
Sorting
Click column headers to sort by any column.
Editing a Tenant
Option 1: From List
- Find the tenant in the list
- Click the Edit icon
- Update the information
- Click Save
Option 2: From Detail Page
- Click the tenant name to open details
- Click Edit button
- Modify fields
- Click Save Changes
Tenant Details
Click a tenant to open its detail page and sub-pages:
Details
- Tenant information (name, slug)
- Creation and modification metadata
- User access management (add/remove members, assign tenant roles)
Applications
The project applications enabled for this tenant:
- Enable/disable a project application for the tenant
- Per-(tenant, application) configuration overrides (the config-cascade leaf)
Settings
Tenant-level configuration:
- Backend settings
- Frontend settings
- Defaults inherited by this tenant's enabled applications
Enabling Applications for a Tenant
Applications are defined once at the project level; a tenant gains access by enablement:
- Open the tenant's Applications tab (or the Application → Tenants tab).
- Enable the application, or run
pfy application enable --tenant <slug>. - Optionally add per-(tenant, application) configuration overrides.
An application not enabled for a tenant is invisible to its users — in the tenant selector, in configuration (a 404), and on the ESB. Machine users are scoped to (project, environment), not to tenants — see Machine Users.
Deleting a Tenant
Warning
Deleting a tenant will permanently remove all associated applications and data. This cannot be undone.
Steps to Delete
- Navigate to tenant details
- Click Delete
- Confirm the deletion
What Gets Deleted
- The tenant record
- All application enablements (
Tenant2Application) and their per-(tenant, application) settings - All tenant-level settings and configurations
- All member associations
Project applications themselves are not deleted — they live at the project level and may be enabled for other tenants.
Best Practices
Naming
- Use clear, descriptive names
- Include customer or organization name
- Avoid special characters in identifiers
Organization
- Create one tenant per customer organization (account)
- Enable only the applications each customer should have
- Set tenant-level defaults for organization-wide settings; use the tenant2application leaf for per-customer overrides
- Carry dev/qas/run on Environments, never on tenants
Access Control
- Assign users to tenants based on need
- Use roles to control permissions
- Regularly review user access
Monitoring
- Check tenant activity in audit logs
- Monitor application health per tenant
- Track resource usage
Common Tasks
Enable an Application for a Customer
Onboarding a customer to an application is two Manager rows, not a deployment:
- Create the tenant (customer organization) if it does not exist.
- Enable the project application for it (
pfy application enable --tenant <slug>). - Optionally add per-(tenant, application) config overrides.
The cross-tenant application promote flow is removed — with one project-level application row there is nothing to promote between tenants. Copying configuration between environments replaces it. See the Migration Guide.
Clone Tenant Configuration
- View source tenant settings
- Copy settings (JSON editor mode)
- Create new tenant
- Paste settings in new tenant
Member Assignment
- Open the tenant's detail page
- Click Add Member
- Search for the user
- Assign a tenant role
- Save
Troubleshooting
Cannot Delete Tenant
Reason: the tenant still has active enablements or members
Solution: disable its applications and remove members, then delete the tenant
Settings Not Applying
Reason: Application-level settings override tenant settings
Solution: Check configuration inheritance in settings editor
User Cannot Access Tenant
Reason: user is not a member of the tenant, or the application is not enabled for it
Solution: add the user as a member with an appropriate role, and confirm the application is enabled for the tenant
See Also
- Multi-tenancy - The Project → Applications + Environments + Tenants model
- Managing Projects - Organize applications
- Configuration Layers - Understand settings inheritance
- Access Model - Roles and permissions
- User Management - Manage user access