-
Notifications
You must be signed in to change notification settings - Fork 15
Multi Tenancy Users and Self Service
Part of the Multi-tenancy section. Planned / in design.
End users are where multi-tenancy gets genuinely interesting, because it touches identity β who someone is when they log in or email in.
A requester is a single global person, identified by their verified email address β one account across the whole install. But each ticket they raise belongs to one company, chosen at the moment the ticket is created (automatically if the person has only ever dealt with one client; otherwise with a simple "which company is this for?" prompt).
When they sign in to the self-service portal, they see every ticket they've raised, across all the companies they deal with, each clearly badged with the client it belongs to.
It can feel alarming β a person seeing tickets across companies! β but it isn't a breach, because the isolation boundary is "Company A must not see Company B's data", never "a person can't see their own data". Someone viewing their own tickets across the clients they personally work with is just seeing their own stuff. (It also neatly handles the consultant who genuinely supports three of your clients β see Worked Examples.)
- The cross-company view is private to that person. It exists only in their own portal session. From inside a company, your analysts never see that a requester also has tickets with another client (which would leak that, say, an Acme contact also works with a competitor).
- "Raised by me" only. It does not become a company-wide view across clients; any company-wide visibility stays within a single company.
- Verified email is the identity β email verification is required for a self-service account.
Because a requester is one global person, "log in with your email" is unambiguous again. That means you do not need a separate portal web address per client just to make login work. Per-company branded portals and per-company single sign-on remain perfectly possible as future niceties β but they're optional, not a prerequisite.
Knowledge articles need two independent dials, and getting the combination right is what keeps content from leaking:
- Scope β this company only vs global (shared across all clients, e.g. your MSP's universal how-tos).
- Audience β internal (staff only) vs published (visible to end users).
A requester should see their company's published articles plus any global published ones β and nothing belonging to another company.
If end users can self-register, accounts are bound to a company by their verified email domain β so email verification is essential, and people on free-email or unrecognised domains can't be placed automatically (they'd be invited by your team instead).
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)