-
Notifications
You must be signed in to change notification settings - Fork 15
Multi Tenancy
π οΈ Status: in active development β not yet in a release. The tickets module is now solid for real multi-company use: the foundation, ticket scoping, email routing (pinned/shared mailboxes, domain and individual-sender routing, triage, diagnostics), the first per-company settings (ticket types & origins), full ticket-layer data isolation, and per-analyst company access are all built. Still to come: per-company departments/SLAs, the self-service portal, and rolling scoping through the other modules. See the progress tracker for the live state, and the pinned roadmap issue (#24) for discussion.
π’ If you run FreeITSM for a single company, none of this will affect you. Multi-tenancy is opt-in and invisible unless you deliberately add a second company (see below).
Multi-tenancy lets a single FreeITSM install support multiple, separate client companies β each company's data walled off from the others β so one deployment can serve many clients at once. The main audience is MSPs and IT providers who today need a separate install per client.
The single most important design principle here is that organisations are not all the same, and FreeITSM should bend to how you work β not force you into one rigid shape. A solo IT team, an MSP funnelling every client through one inbox, and an MSP that dedicates a mailbox per client are all valid, and all supported by the same system.
The way we achieve that, again and again, is a simple rule:
Flexibility lives in the entity, not in a global "mode" switch.
Rather than a single setting that says "this install works like X", each mailbox, each analyst, each piece of config carries its own behaviour β and the different ways of working simply emerge from how you set them up. There is no "MSP mode" to flip. You compose the behaviour you want. The Worked Examples page shows several very different organisations all running happily on the same design.
Every install starts with a single, silent Default company that quietly owns everything. With one company there is no company switcher, no email-domain mapping, no triage queue, and no split settings β the app looks and behaves exactly as it does today. All of the multi-tenant machinery only wakes up the moment you create a second company. Existing installs upgrade cleanly: your current data simply belongs to the Default company, and nothing changes unless you choose to grow.
| Page | What it covers |
|---|---|
| Concepts & vocabulary | Tenant vs department, analyst vs requester, what a "mailbox" really is |
| Email routing & mailboxes | The two mailbox types, company domains, how an email finds its company, the triage safety net |
| Settings: global vs per-company | Which settings are shared, which are per-company, and the "no mode switches" principle |
| Users & self-service | One login that spans companies, who sees what, knowledge-base visibility |
| Staff cross-company access | The company switcher, "all companies" search, and assigning staff to clients |
| Worked examples | Real-world organisations, from a one-person IT team to a multi-client MSP |
| Pitfalls & gotchas | The traps to avoid and how the design protects you |
| Data isolation & the audit | How one company's data is walled off from another β the mechanism, and the three-sweep audit that hardened it |
| Scope: what it's for (and isn't) | Where FreeITSM fits, and the enterprise needs we deliberately don't chase |
A note on terminology: "tenant" is the technical word for a separate client company. In the interface you'll mostly see friendlier words like company or client. This wiki uses them interchangeably.
FreeITSM β an open-source IT Service Management platform Β· github.com/edmozley/freeitsm Β· MIT licence
- Installation
- β° Scheduled tasks (cron jobs)
- Architecture
- AI Providers
- Internationalisation (i18n)
- Timezones & Time Handling
- Theming & Dark Mode
- β¨οΈ Command palette (βK)
- π Searching inside tickets
- π Attached documents
- MobileβFriendly
-
Security
- Layer 1 β which modules you can enter
- β³ π§© Module Access Control
- β³ π οΈ Module Access β Developer Guide
- Layer 2 β what you can administer
- β³ π Roles & Permissions
- β³ π οΈ Roles β Developer Guide
- β³ π€ Why capabilities are constants
- Layer 3 β the System module
- β³ π Admin Access Control
- Hardening
- β³ π Security review response 2026-08
- β³ π‘οΈ Security hardening 2026-08
- β³ π οΈ Security hardening 2026-08 β Developer Guide
- β³ π‘οΈ Round three β plain English
- β³ π οΈ Round three β Developer Guide
- Single Sign-On (SSO)
- ποΈ LDAP & Active Directory
- Browser Extension
- API Reference
-
π REST API β how it works
- β³ π« REST API: Tickets
- β³ π» REST API: Assets
- β³ π΄ REST API: Problems
- β³ π REST API: Changes
- β³ π REST API: Knowledge
- β³ β REST API: Tasks
- β³ ποΈ REST API: CMDB
- β³ π REST API: Contracts
- β³ ποΈ REST API: Calendar
- β³ πΏ REST API: Software
- β³ π¦ REST API: Service Status
- β³ βοΈ REST API: Morning Checks
- β³ π REST API: Forms
- β³ βοΈ REST API: Workflow
- β³ πΊοΈ REST API: Network Mapper
- β³ π§ Using the API docs page
- β³ π OpenAPI specification
- β³ β OpenAPI: kept correct
- β³ π οΈ Maintaining the catalogue
- Watchtower
-
Tickets
- β³ Mailbox Authentication
- β³ π€ Email send log
- β³ Basic IMAP mailboxes
- β³ Email rendering & images
- β³ SLA Management
- β³ WhatsApp channel
- β³ π¬ Web chat channel
- β³ π£ Slack channel
- β³ π Linking tickets
- β³ ποΈ Canned responses
- β³ βοΈ Limiting replies to particular senders
- β³ βοΈ Email signatures
- β³ π The public web address
- β³ π Raising a ticket for someone else
- β³ π Merging tickets
- β³ β Splitting tickets
- β³ β Selecting several tickets
- β³ π οΈ Snoozing tickets β Developer Guide
- β³ π₯ Collision detection
- β³ β±οΈ Time tracking
- Problem Management
- Tasks
- Assets
- Knowledge
- Change Management
- Calendar
- Morning Checks
- Reporting
- Software
- Forms
- Contracts
- Service Status
- π Notifications
- π¨ War Room
- Self-Service Portal
- LMS
- Process Mapper
- CMDB
- Network Mapper
- Workflows
- Issue trackers (Jira, Azure DevOps)
- System
-
Overview
- β³ π Progress tracker
- β³ Concepts & vocabulary
- β³ Email routing & mailboxes
- β³ Settings: global vs per-company
- β³ Users & self-service
- β³ Staff cross-company access
- β³ Worked examples
- β³ Pitfalls & gotchas
- β³ Scope: what it's for
- β³ π οΈ Developer Guide (make a module multi-company)
- β³ ποΈ Case study: CMDB (a linked graph)
- β³ π§ͺ Test harness (prove it's isolated)