LogoLogo
Getting StartedDevelopersDeployment GuideGet Help
  • Quick Links
  • Welcome to Form.io
    • Getting Started With Form.io
    • Launch a Form
    • Overview of Form.io
  • Developer Tool Ecosystem
    • PDF Solution
    • Enterprise Form Builder
    • Form View Pro
    • The Security Module
    • Accessibility Compliance Module
    • Developer License
    • SQL Connector - Deprecated
    • Integration Libraries
    • Form.io CLI Tool
  • User Guide
    • Introduction
    • Form.io Developer Portal
    • Teams
    • Projects
      • Project UI
      • Project Settings
      • Stages
      • Multi-Tenancy
    • Resources
      • ResourceJS
    • Forms
      • Form Creation
      • Form Types
      • PDF Forms
      • Embedding a Form
      • Form Revisions
      • Form Settings
    • Form Building
      • Form Builder UI
      • Form Components
        • Component Settings
        • Basic Components
          • Resource as Select Component Data Source
        • Advanced Components
        • Layout Components
        • Data Components
        • Premium Components
          • Nested Forms
        • Custom Components
      • Logic & Conditions
      • Existing Resource Fields
      • Actions
    • Submissions
      • Accessing Submissions
      • Importing Submissions
    • Form.io eSignature - Coming Soon
    • Form.io Reporting Module
    • PDF Template Designer
    • Form View Pro
    • Form Manager
    • Enterprise Form Builder Module
  • Developer Guide
    • Introduction
      • Application Development
      • API Documentation
    • Form Development
      • Form Renderer
      • Form Builder
      • Form Embedding
      • Form Evaluations
      • Form Templates
      • Custom Components
      • Translations
    • JavaScript Development
      • JavaScript SDK
      • JavaScript Frameworks
      • JavaScript Utilities
    • Authentication and Authorization
      • SAML
      • OAuth
      • LDAP
      • Resource Based Authentication
      • Email Authentication
      • Two-Factor Authentication
    • Roles and Permissions
      • Field Match-Based Access
      • Field-Based Resource Access
      • Group Permissions
    • Integrations
      • Email Integrations
      • File Storage
      • Google Developer Console
      • eSign Integrations
      • Relational Databases
    • Modules
    • Fetch Plugin API
    • CSS Frameworks
    • Offline Mode
    • Audit Logging
  • Deployments
    • Self-Hosted Deployment
      • Local Deployment
        • Local File Storage
      • Kubernetes
      • Cloud Deployment
        • AWS Deployment
          • AWS Lambda
          • Form.io/AWS Elastic Beanstalk End-To-End Encrypted Deployment
        • Azure Deployment
          • Azure App Service
            • Azure MSSQL Connector - Deprecated
          • Azure Virtual Machine
          • Azure Kubernetes Service
          • Set up the DB
        • GCP Deployment
          • GCP Cloud Run
      • On-Premise Deployment
      • Enterprise Server
      • PDF Server
    • Deployment Configurations
      • DNS Configuration
      • Load Balancer Configuration
    • Licenses
      • License Management
      • Library Licenses
    • Portal Base Project
      • Portal SSO
      • Portal Translations
    • Maintenance and Migration
      • Changes to Premium Libraries
  • FAQ
    • FAQ
    • Tutorials & Workflows
      • Password Reset
      • Dynamic Select Filtering
      • Approval Workflow
      • SSO Email Token
      • Embedding A Video
      • Data Source Validation
      • Select Data Source Options
      • Nested Form Workflows
        • Nested Wizard Forms
      • Save as Draft
      • Role-Based Conditions
      • Custom Component
      • Dynamic Radio and Select Box Values
      • Override CKEDITOR
    • Errors
    • Examples
    • License Utilization Checks
  • Contact Us
Powered by GitBook
On this page
  • How does Form.io Multi-Tanancy work?
  • Managing Tenants
  • Tenant Creation
  • Tenant Configurations
  • Tenant Navigation
  • Active Tenant
  • Tenant Usage
  • Tenant Settings
  • Tenant On-Premise Connections
  • Tenant Authentication

Was this helpful?

  1. User Guide
  2. Projects

Multi-Tenancy

Describes how Form.io works with Multi-Tenant deployments

PreviousStagesNextResources

Last updated 2 months ago

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.

How does Form.io Multi-Tanancy work?

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

Managing Tenants

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.

Tenant Creation

  1. To create a new Tenant, click the Tenants button in the left-hand navigation bar within the Parent Project

  2. Click the + Create Tenant button within the Tenant Manager UI.

  1. 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.

  1. Give the Tenant a Name and click Submit to finalize the Tenant creation.

Tenant Configurations

  1. Within the Parent Project, create a new Form that will serve as the configuration template.

  2. Add Fields that will map to the configuration settings

  3. Remove the Submit button from the form

  4. Save your form.

In the example below, a Logo and CSS field are added to define the global configuration for all newly created tenants.

  1. Navigate to the Tenant Manager and click the Settings tab

  2. Click the Configuration Form dropdown and select the Form created in the previous steps.

  1. 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.

  1. 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.

Tenant Navigation

Navigate between Tenants within the Tenant Manager UI.

  1. Click the Tenant button within the left-have navigation bar

  2. To access an individual Tenant, click the Open button within the row.

  1. 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...

Active Tenant

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.

  1. 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.

  1. 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

Tenant Usage

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.

Tenant Settings

Each Tenant can maintain unique configurations, API connections, and permissions. This ensures flexibility in enterprise applications with integrations and configurations such as:

  • Email Transports

  • Authentication Providers

  • Role Based Access

  • File Storage

Tenant On-Premise Connections

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.

Tenant Authentication

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

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 . 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.

Staging On-Premise Connection
Global Form Settings
detailed here