User guide
Microsoft 365 and Google Workspace
Looking for what it does rather than how to use it? Read the Microsoft 365 and Google overview .
Audience: MSP and organization administrators connecting Microsoft 365, Microsoft Teams or Google Workspace. Scope: identity and sign-in, directory sync, email-to-ticket, calendar, SharePoint, and Teams notifications.
What it is
Solidlio connects to Microsoft Graph with an application (app-only) credential granted by your tenant’s Global Administrator, and to Google Workspace with a service account using domain-wide delegation. What you get depends heavily on which platform you are on — Microsoft is the deeper integration by a wide margin.
What actually ships, per platform
| Capability | Microsoft 365 | Google Workspace |
|---|---|---|
| Single sign-on | ● Entra ID | ● Google single sign-on |
| Directory / identity sync | ● | ● |
| Email → ticket | ● | — |
| Mailbox ingestion for AP invoices | ● | ● |
| Sending email | ● | — |
| Calendar sync | ● (see §7) | — |
| Document linking | ● SharePoint | — no Drive |
| Chat notifications | ● Teams | — |
Slack is not implemented. There is no Slack sender anywhere in Solidlio. It appears on the roadmap only.
Google Calendar, Gmail sending and Google Drive do not exist. If you need calendar sync or document linking, you need Microsoft 365.
Concepts
| Concept | What it is |
|---|---|
M365TenantConfig | Per-integration Microsoft settings: feature toggles, granted scopes, per-feature status. |
| Feature status | DISABLED, PENDING_CONSENT or ACTIVE. A feature only works when ACTIVE. |
M365SharedMailbox | One monitored mailbox, its routing rules, default queue and auto-reply template. |
| Graph subscription | A change notification registration. Expires and is renewed hourly. |
| Delta token | The cursor for incremental directory and calendar sync. |
TeamsChannel | One Teams incoming webhook, tagged with a purpose that decides which events reach it. |
| Directory mapping | An Entra group → a Solidlio role, with optional auto-provision and auto-deprovision. |
Roles and permissions
Every Microsoft 365 and Teams administration route requires organization administrator or above. That includes reading Teams channels — those responses used to include the channel’s webhook URL, which is a bearer credential, so they are now floored and the URL is masked.
| Action | Minimum role |
|---|---|
| Connect M365, grant admin consent | organization administrator |
| Configure mailboxes and routing | organization administrator |
| Configure directory sync + mappings | organization administrator |
| Register and edit Teams channels | organization administrator |
| View Teams channels or messages | organization administrator |
| Check calendar free/busy | power user |
Walkthrough — connecting Microsoft 365
- Start the connection —
Integrations → Microsoft 365. This requires a plan that includes Microsoft 365 (see §8). - Grant admin consent — a Global Administrator approves Solidlio’s application permissions for your tenant. This is the credential the integration actually runs on.
- Enable features — email, calendar, directory, SharePoint. Enabling a feature triggers a scope check against the token your tenant issued.
- Resolve any scope gaps — a feature shows Awaiting consent with the exact missing permissions listed. It stays blocked until consent is granted, rather than failing later with an opaque Graph error.
- Add a shared mailbox — for email-to-ticket, name the mailbox (
support@yourcompany.com), pick the default queue, and set routing rules. - Verify delivery — the M365 status page reports webhook subscription health: how many subscriptions exist, how many are expiring, and how many are failing renewal.
Email → ticket
Mail arrives one of two ways:
- Without it, Solidlio silently uses polling only.
- Polling (about once a minute) — always available. It follows pagination, so a burst larger than one page is not lost, and it records a per-mailbox error if a poll fails.
Replies from technicians send from the same mailbox.
Directory sync
Entra users and groups sync incrementally. Map an Entra group to a Solidlio role and optionally enable auto-provision and auto-deprovision. Role grants are confined to the connected organization — a sync can never alter a person’s roles in another organization or another account.
If Microsoft expires the delta cursor, Solidlio detects it, clears the cursor and replays one full sync automatically.
Walkthrough — Microsoft Teams
- In Teams, create an incoming webhook on the channel you want notified.
- In Solidlio,
Integrations → Teams → Add channel— paste the webhook URL and choose a purpose: tickets, urgent tickets, changes, assets or billing. - Send a test card to confirm delivery.
- Real events now post adaptive cards to the channel whose purpose matches. Each message is recorded, and a failed message can be retried individually.
Note: change-management events do not yet reach Teams. Tickets, assets and invoices do post.
Walkthrough — Google Workspace
Single sign-on — configure Google as an single sign-on provider for your organization. Users sign in with their Google account.
Directory sync — a platform administrator connects Google Admin Directory and maps groups to roles, from the platform console.
Mailbox ingestion (AP invoices) — add a mailbox of type Google Workspace under Settings → Email → Mailboxes. You need a service account JSON key with domain-wide delegation, and the mailbox address to impersonate. This is the only supported Google connection type; OAuth and app passwords are not implemented for Google.
Limits and known behaviour
- Calendar sync was repaired in this release but has not been verified against a live tenant. Two Graph paths in use were not valid Graph routes — the delta pull and the change-notification resource. Both are now correct per Graph v1.0 and covered by unit tests. Treat it as working-but-unproven until you have connected a real mailbox.
- Teams change-management notifications do not fire (see §5).
- Google Calendar, Gmail sending and Google Drive are not implemented.
- Slack is not implemented.
- Graph subscriptions are renewed hourly; a subscription that fails renewal three times is retired and its mailbox falls back to polling. Subscription health is visible on the M365 status page.
Plan tiers
| Capability | Free | Starter | Growth | Scale | Enterprise |
|---|---|---|---|---|---|
| Microsoft 365 integration | — | — | ● | ● | ● |
| Email-to-ticket mailbox | — | — | ● | ● | ● |
| Microsoft Teams notifications | — | — | — | ● | ● |
| Google Workspace mailbox | — | — | — | ● | ● |
| Entra ID / Google single sign-on | — | — | — | — | ● |
Customer-plan equivalents: Essentials, Professional, Business, Enterprise.
Troubleshooting
| What you see | Cause |
|---|---|
| A feature shows “Awaiting consent” | The application permissions it needs were not granted. The missing scopes are listed — grant them, then re-check. |
| Connecting M365 returns an upgrade prompt | Your plan does not include Microsoft 365. See §8. |
| A mailbox stopped ingesting | Check the mailbox’s error state on the status page — poll failures are now recorded per mailbox. |
| Directory sync stopped and never resumed | Fixed. An expired delta cursor is now detected and replayed automatically. |
| Teams test card works but real events never arrive | Expected for change requests only. Tickets, assets and invoices post. |
| A Teams channel’s webhook URL is no longer shown | Intended. It is a bearer credential; the API returns whether one is configured and its host. |
| Google Workspace mailbox accepted but never polls | Fixed. The service-account key and delegated user are now saved; re-save the mailbox. |
| Slack settings disappeared | Intended — they never did anything. There is no Slack sender. |