Single and Multi-Tenant Configuration

In a single-tenant configuration, there is only one EdFi_Admin and EdFi_Security used by the API. ODS instances, API clients, and their associations are all managed within the EdFi_Admin databases. In a multi-tenant configuration, each tenant has its own EdFi_Admin and EdFi_Security databases and the API clients must include the well-known tenant identifier in the base route of their API requests.

MultiTenancy can be enabled in the appsettings "Features" section, as follows:

"ApiSettings": {
  ...
  "Features": [
    ...
    {
      "Name": "MultiTenancy",
      "IsEnabled": true
    }
  ],
}

Connection Strings

The connection strings for the EdFi_Admin and EdFi_Security databases are configured differently depending on whether the MultiTenancy feature is enabled or disabled.

Single-Tenant Configuration

In a single-tenant configuration (the default), the connection strings are located in the "ConnectionStrings" section, as follows:

"ConnectionStrings": {
    "EdFi_Admin": "Server=(local); Database=EdFi_Admin; Trusted_Connection=True; Application Name=EdFi.Ods.WebApi;",
    "EdFi_Security": "Server=(local); Database=EdFi_Security; Trusted_Connection=True; Persist Security Info=True; Application Name=EdFi.Ods.WebApi;",
    "EdFi_Master": "Server=(local); Database=master; Trusted_Connection=True; Application Name=EdFi.Ods.WebApi;"
},

Multi-Tenant Configuration

In a multi-tenant configuration, the connection strings are organized under distinct tenant entries in a "Tenants" section, as follows:

"Tenants": {
    "Tenant1": {
      "ConnectionStrings": {
        "EdFi_Admin": "Server=(local); Database=EdFi_Admin_Tenant1; Trusted_Connection=True; Application Name=EdFi.Ods.WebApi;",
        "EdFi_Security": "Server=(local); Database=EdFi_Security_Tenant1; Trusted_Connection=True; Persist Security Info=True; Application Name=EdFi.Ods.WebApi;"
      }
    },
    "Tenant2": {
      "ConnectionStrings": {
        "EdFi_Admin": "Server=(local); Database=EdFi_Admin_Tenant2; Trusted_Connection=True; Application Name=EdFi.Ods.WebApi;",
        "EdFi_Security": "Server=(local); Database=EdFi_Security_Tenant2; Trusted_Connection=True; Persist Security Info=True; Application Name=EdFi.Ods.WebApi;"
      }
    }
  }