Scheduling and Dispatch
Plan and assign technician time — appointments, maintenance windows, on-call shifts and time off — across your own team and, for an MSP, across every client it services.
The problem
The schedule lives in one person’s head and a shared Outlook calendar nobody trusts. Two technicians get sent to the same site on Tuesday because the second booking went in by text message. A customer waits at 8am for an engineer whose day actually starts at 9. Somebody asks “who is free Thursday afternoon?” and the answer takes four messages and a guess.
What Solidlio does about it
Every scheduled block is an event with an owner, a type, attendees and a status, linked to the ticket, change, project or client it exists for. A drag-and-drop board puts technicians on rows and hours on columns, so reassigning a job is one gesture and the capacity bar beside each name is drawn to the length of that person’s real working day. Before a booking is made, Solidlio checks whether the people invited are actually free and can propose slots that fit all of them inside your configured business hours and around the holidays you observe. Technician calendars sync bidirectionally with Microsoft 365, in real time via Graph webhooks or on a schedule you choose.
Capabilities
| Capability | What it does |
|---|---|
| Dispatch board | Drag work between technicians and time slots; day and week views from 07:00 to 19:00 |
| Capacity at a glance | Each technician’s load bar is scaled to their real working day — a short Friday reads short, an unstaffed day reads closed |
| Conflict detection | Flags overlapping bookings in your calendar across the visible range |
| Availability check | Reports which invitees are already booked, with the conflicting titles and times |
| Meeting-time suggestions | Returns up to five ranked slots that fit everyone, 15 minutes to 8 hours long |
| Business-hours awareness | Free/busy and suggestions honour your working week, its timezone, and observed holidays |
| Recurring schedules | RFC 5545 recurrence — daily, weekly, weekdays, monthly, yearly — expanded on read |
| Attendee management | Invite staff or external email addresses, mark them optional, track accept/decline/tentative |
| Reminders | Per-event lead times delivered in-app or by email; a failed send is retried, never dropped |
| Microsoft 365 sync | Bidirectional per-user sync, real-time via Graph webhooks or on a 15/30/60/360-minute cadence |
| Work linkage | Attach an event to a ticket, change request, project, project task, client or contact |
Built for MSPs and their clients
An MSP and its clients are separate accounts. Each side keeps its own calendar; the MSP additionally gets a view across every client it services.
| Organization | MSP | |
|---|---|---|
| Calendar | Its own events | Its own plus every managed client’s |
| Dispatch board | Its own staff | Its own technicians |
| Staff availability | Team free/busy within the organization | One day’s schedule per technician, across clients |
| Business hours | Sets its own working week and holidays | Sets its own; a client’s calendar governs work booked into that client |
| Private events | Never visible to colleagues who are not attendees | Same rule — an MSP cannot read a client’s private events |
Scheduling into a managed client account is validated against the accounts the MSP actually services: an organization, ticket, project or contact outside that set is rejected, and rejected identically to one that does not exist.
How it works
- Create the event — title, type, start and end, in the event’s own timezone. The organizer is your session; it is not a field a caller can set.
- Invite who is needed — staff by name, anyone else by email address, each marked required or optional.
- Check before you commit — “Check this time” names the invitees who are already booked; “Suggest times” proposes slots that fit everyone inside business hours.
- Set reminders — one or more lead times, delivered in-app or by email. Invitees are notified the moment they are added.
- Dispatch it — on the board, drag the block to another technician or another hour. The change saves on drop and the affected attendees are told.
- Track it through —
SCHEDULED→CONFIRMED→IN_PROGRESS→COMPLETED, withCANCELLEDandNO_SHOWavailable throughout. Cancelling notifies everyone on the invite list. - Keep Outlook honest — with Microsoft 365 connected, the event flows both ways, and any single event can be pushed on demand.
Security and tenancy
- Visibility is ownership-based, not role-based: you see an event if you organize it, attend it, or it belongs to your account and is not private.
- Every client-supplied link on an event — organization, contact, ticket, change request, project, project task — is resolved inside your tenant before it is persisted. A foreign identifier and a non-existent one produce the same reply, so the API cannot be used to probe another tenant’s ids.
- Free/busy requests silently drop user ids outside your tenant. Colleagues’ event titles are never returned; their time reads as “Busy”.
- The Microsoft 365 OAuth
stateis signed and expires after 30 minutes, so a callback cannot be replayed or forged against another user’s connection. - OAuth tokens are stored encrypted.
Editions
Scheduling and Dispatch carries no plan gate. There is no entitlement or tier check anywhere in it; every paying tier gets the full feature. Differences in what a person sees come from portal and role:
| Capability | Customer | Organization | MSP |
|---|---|---|---|
| Calendar, create/edit | — | organization administrator / power user | ● |
| Dispatch board | — | organization administrator | ● |
| Cross-client calendar | — | — | ● |
| Staff availability view | — | — | ● |
| Microsoft 365 sync | — | organization administrator / power user | ● |
Integrations
Microsoft 365 / Outlook Calendar — per-user OAuth (offline_access, Calendars.ReadWrite), bidirectional sync with configurable direction and frequency, Microsoft Graph webhook subscriptions for real-time change notifications, a per-run history showing events created, updated and deleted, and on-demand push of a single event.
Scheduling is only useful when the board tells the truth about who is free.