Skip to main content
Schoolyi
School librarian arranging books and planning cards in a bright library

Browse docs

Platform & access

Multi-school and campus switching

What one deployment can and cannot do for a group of schools - separate branding and settings, but a shared academic and financial spine, one school per user, and no consolidated reporting.

Platform & access guide for day and boarding schools.

Last updated August 29, 2026

One deployment can hold several schools. Each gets its own record with its own name, branding, settings, careers pages, and public website, and the activity log records which school an action belonged to once more than one is active. That is the whole of what separation means here, and it is worth reading the next paragraph before planning a group rollout on this basis.

The academic and financial spine is not school-scoped. Class, AcademicYear, fee structures, payroll, and boarding records carry no schoolId at all, so two schools sharing a deployment share those tables. For a trust whose campuses genuinely run their own calendars and fee books, the honest recommendation today is a separate deployment per school; sharing one is appropriate where the schools are administratively a single institution on more than one site.

What holds true today

  • A user record has one optional schoolId. There is no way for an account to belong to two schools.
  • Only the Platform Admin role may switch. POST /api/schools/switch returns 403 for every other role, and switching changes that administrator own schoolId.
  • Branding, school information, careers, and the /myschool website are per school.
  • The activity log stores a schoolId and scopes entries once more than one school is active.
  • While only one active school exists, users with no schoolId are treated as belonging to it. Add a second and that leniency stops, which is what surfaces unassigned accounts.

Limits to plan around

  • No row-level separation of classes, academic years, fee structures, payroll, or boarding.
  • No campus switcher for ordinary staff, and no group role that reads across schools.
  • No consolidated reporting. Every report answers for one school.
  • A screen that needs a school context will refuse rather than guess when several are active and the signed-in user has none.

Common questions

Quick answers in plain language.

Can a bursar work across two schools in the group?+

No. A user record carries a single optional schoolId and there is no membership join table, so an account belongs to at most one school. Somebody who genuinely works across two campuses needs two accounts, or the Platform Admin role, which is the only role permitted to switch.

Are two schools on one deployment isolated from each other?+

Only partly. School branding, settings, careers, the website CMS, and activity-log entries carry a schoolId. Class, AcademicYear, fee structures, payroll, and boarding records do not, so those tables are shared across every school on the deployment. Treat that as the deciding factor before putting two unrelated schools together.

Is there a group report that adds up both campuses?+

No. No report aggregates across schools, and each one is reported on separately. Consolidating collections or enrolment for a trust board means exporting each school and combining the figures outside the product.

What does SCHOOLYI_TENANT_MODE=strict_multi_school do?+

It fails closed on purpose. The mode is reserved for a future release in which AcademicYear, Class, Subject, and the downstream models are school-scoped; setting it today raises UnsupportedSchoolTenantModeError rather than pretending to isolate data it cannot isolate.

Related searches

School leaders and IT teams often search for: school group ERP, and multi school SaaS.