Multi-Tenancy
Describes how Form.io works with Multi-Tenant deployments
Last updated
Was this helpful?
Describes how Form.io works with Multi-Tenant deployments
Last updated
Was this helpful?
The Form.io platform seamlessly supports advanced multi-tenant configurations for SaaS, cloud-based, or On-Premise applications. With Form.io Multi-Tenancy, each tenant functions as a self-contained entity within a single Parent Project. This Parent Project serves as the central hub for managing all Tenants within the Project. All Tenant configurations are seamlessly controlled within a dedicated domain through the user-friendly Form.io Developer Portal.
Paired with the Enterprise Form Builder, SaaS / PaaS providers can leverage Form.io as a white-labeled, scalable form-building engine, enabling them to serve unlimited customers from a single, centralized deployment. The following diagram illustrates this concept.
In Form.io, tenants are structured as individual sub-projects, each with its own independent API endpoints. These unique APIs allow the Tenant to maintain full control over its Forms, Resources, Data, Authentication, File Storage, Access Permissions, etc. While these sub-projects function as full projects, they inherit certain restrictions—primarily related to CORS (Cross-Origin Resource Sharing).
All tenant projects must share the same CORS settings as the Parent project, ensuring they operate within a unified domain. This design enforces that tenants remain part of a single application deployment, rather than functioning as separate, standalone projects. To simplify this process, the Tenant will inherit the CORS setting from the Parent Project.
Form.io Multi-Tenancy requires this feature enabled within your License.
Contact sales@form.io for more info about enabling Multi-Tenancy in your environment
All Tenants are created and managed within their respective Parent Project. Click the Tenant button in the left-hand navigation bar of the Parent Project to access the Tenant Manager UI. This interface allows administrators to create, manage, and configure Tenants.
To create a new Tenant, click the Tenants button in the left-hand navigation bar within the Parent Project
Click the + Create Tenant button within the Tenant Manager UI.
Click the Copy From dropdown to select which Stage within the Project the Tenant will be copied from.
All forms and resources from the copied stage will be duplicated in the Tenant, allowing users to use a specific stage as a template for each new tenant. This streamlines the customer onboarding process by ensuring new customers quickly receive their API endpoint along with any necessary forms and resources from the copied Stage.
Give the Tenant a Name and click Submit to finalize the Tenant creation.
Let's suppose you are developing an application that accepts a CSS file or logo parameter. These settings can be configured independently on a per-tenant basis using Public Configuration settings detailed here. However, with Tenant Configuration, you can streamline the process by creating a Tenant Configuration Form within your Parent Project. This allows you to define configuration parameters upfront when a new Tenant is created, eliminating the need to manually add them later in the Tenant's Public Configuration settings.
Within the Parent Project, create a new Form that will serve as the configuration template.
Add Fields that will map to the configuration settings
Remove the Submit button from the form
Save your form.
In the example below, a Logo and CSS field are added to define the global configuration for all newly created tenants.
Navigate to the Tenant Manager and click the Settings tab
Click the Configuration Form dropdown and select the Form created in the previous steps.
Create a new Tenant and input the configuration Values you would like this Tenant to carry. After creating the Tenant, the values from this form will automatically populate the Tenant's public configuration, making them available for use by the connected application.
To verify or update the configurations, click the Settings button in the left-hand navigation bar of the Tenant and select Public Configurations. Within this UI, users can add, modify, or remove Tenant configurations as needed.
Navigate between Tenants within the Tenant Manager UI.
Click the Tenant button within the left-have navigation bar
To access an individual Tenant, click the Open button within the row.
Once opened, the Developer Portal will dynamically update to that Tenant’s context, including all Tenant-specific API endpoints required to communicate with an application. Notice the Stage endpoint has been updated for Tenant B in the screenshot below...
When making changes to a Tenant, it's important to verify which Tenant is currently active, especially when multiple Tenants exist within a Project. The Active tenant can be verified in several ways.
Navigate to the Tenant Manager in the left-hand navigation bar. The Active tenant will be marked with an Active tag next to its name.
Review the Header of the Form.io Portal. The Tenant Name will appear next to the Project Name, along with a Tenant tag when a
Each Tenant should be treated as an independent, unique Project. Use the Portal exactly how you would any other project or stage by creating and managing forms, resources, data, and configurations for the given Tenant.
Ensure you have opened the Tenant you intend to update before making any changes.
Each Tenant can maintain unique configurations, API connections, and permissions. This ensures flexibility in enterprise applications with integrations and configurations such as:
Each Tenant is individually connected to a deployed environment through its Staging settings. This operates in the same way as connecting a Stage to a deployed environment, as outlined in the documentation below. Leveraging the Form.io Staging system alongside Tenants, organizations can enhance stability and control over the full development lifecycle of their Tenant applications.
Form.io supports independent authentication providers for each Tenant, allowing organizations to configure unique authentication methods per Tenant. With this approach, each Tenant can integrate with its preferred authentication system, enabling seamless SSO, role-based access control, and secure identity management without affecting other Tenants. This isolation enhances security, reduces cross-tenant risks, and provides a customizable authentication experience tailored to each Tenant’s needs.
The setup and integration process follows the same steps as configuring authentication for a standard Form.io Project. For more details about Authentication, refer to the documentation below.
Form.io Authentication Integration