Welcome to Elamar

Select a dashboard or tool from the menu above to get started.

Dashboards

Select a dashboard to view

Tools

Automation and utility tools

Autotask
Bicom PBX & Teams

Room Status

Physical LED busy lights driven by PBX and Teams presence

Configuration

Live Status

Devices

Staff Name Device Name PBX Ext Teams User ID Status Last Seen Actions
Loading...

Database

Database management and queries

Management Dashboard

60s
Auto-Refresh Interval
⋮⋮
Active Tickets
-
New, In Progress, Awaiting
⋮⋮
New Tickets
-
Awaiting assignment
⋮⋮
Kill Rate (7 Days)
-
-
⋮⋮
Kill Rate (30 Days)
-
-
⋮⋮
Kill Rate (90 Days)
-
-
⋮⋮
Avg Resolution
-
Hours to close (30d)
⋮⋮

Open Tickets by Status

⋮⋮

Active Tickets by Queue

Tickets with status: New, In Progress, Awaiting

⋮⋮

Kill Rate - Last 7 Weekdays

Daily kill rate % (excluding weekends)

⋮⋮

SLA - First Response Summary

Loading...

⋮⋮

Stale Tickets

Loading...

⋮⋮

Top Ticket Creators - Last 30 Days

Click on a row to view tickets

Loading...

⋮⋮

Top Issue Types - Last 30 Days

Click on a row to view tickets

Loading...

⋮⋮

Tickets by Resource

Click on a row to view tickets

Loading...

⋮⋮

Open Tickets by Company

Click on a bar to view tickets

Reporting

Generate monthly client reports

Generate Report

Backup

MSP360 backup monitoring and status for managed clients

Select a Client

Choose a client from the dropdown above to view their backup status and history.

Finance Dashboard

Key financial metrics from Xero

Operations Dashboard

Unified view of Datto RMM, MSP360 Backup & Datto SaaS Protection

Tech Utilisation

Remote Technical Staff — capacity utilisation, time categories & planning

Custom range

Loading utilisation data…

Prepayment Tracker

Track purchase prepayments and reconcile against Xero account 620

Loading...

Cash Flow Forecast

Xero-powered cash flow projections

Current Balance
-
Loading...
Receivables
-
Outstanding invoices
Payables
-
Outstanding bills
Cash Runway
-
Calculating...
30 Days
-
1 month
60 Days
-
2 months
90 Days
-
3 months
180 Days
-
6 months
365 Days
-
1 year

Cash Flow Projection

CASH BALANCE
TRANSACTIONS
CASH IN CASH OUT
Company Invoice # Invoiced ADR Expected Date Amount Type
Loading transactions...
Loading forecasting rules...

These patterns were detected by analysing your historical bank transactions. Approve patterns to include them in your forecast.

Description Contact Avg Amount Type Day of Month Frequency Occurrences Status Actions
No patterns analysed yet. Click "Analyse Patterns" to scan your transaction history.

Create different scenarios to compare "what-if" forecasts. Each scenario can have its own set of manual entries.

Credit Cards

Xero transactions on each card since the last statement date are summed to calculate the statement balance. That amount is forecast as a cash outflow on the payment due date — matching how UK full-payment credit cards work.

Card / Account Name Statement Date Payment Due Statement Balance (est.) Next Payment Actions
Loading...

Billing Items – Pax8 Clients

Pax8 subscriptions matched against M365 Partner Center tenants

Client Subscription Summary

Subscription Details

Click a client row above to view their Pax8 subscriptions

Select a client to view subscription details.

Dashboard Overview

Database: msp_dash

Tables in Database

Loading tables...

Database Tables

Select a table to view its data

Table Data

Select a table to view its data

Database Query

Results

Run a query to see results

Integrations

Connect and configure external services

Autotask

PSA ticketing system integration for syncing companies, contacts, tickets, and more.

Checking...

UptimeRobot

Website and server monitoring with real-time uptime status and alerts.

Checking...

Datto RMM

Remote monitoring and management platform for device oversight and automation.

Checking...

Datto SaaS Protection

Cloud backup and protection for Microsoft 365 and Google Workspace data.

Checking...

MSP360 Backup

Managed backup solution with endpoint protection and cloud storage.

Checking...

ITQuoter

Cloud-based CPQ software for quotes, proposals, and order management.

Checking...

Pax8

Cloud commerce marketplace for ordering, subscriptions, and billing management.

Checking...

M365 Partner Center

Microsoft Partner Center for CSP customer management and license tracking.

Checking...

OpenAI

AI-powered assistant using GPT models for intelligent analysis and automation.

Checking...

Keap CRM

CRM and sales automation for managing contacts, companies, and pipelines.

Checking...

Xero

Cloud accounting for invoices, bank reconciliation, and financial reporting.

Checking...

SendGrid

Send transactional and notification emails from the platform.

Checking...

vPenTest

Automated penetration testing platform with vulnerability assessments and security reports.

Checking...

IT Glue

IT documentation platform for managing organizations, configurations, contacts, and passwords.

Checking...

Bicom PBXware

Phone system integration for real-time extension status, call presence, and busy light control.

Checking...

Microsoft Graph

Microsoft 365 integration for Teams presence, user status, and busy light control via the Graph API.

Checking...

More Coming Soon

Additional integrations will be added here as they become available.

Coming Soon

Autotask

Autotask API configuration and sync

Companies
-
Contacts
-
Tickets
-
Issue Types
-
Queues
-
Resources
-

Last Sync Times

Loading sync status...

API Usage

Autotask limits API calls to 10,000 per hour. Monitor your usage to prevent lockouts.

Loading API status...

Manual Sync

Trigger a manual sync from Autotask. This will fetch the latest data.

Tech Utilisation Sync

Sync data required for the Tech Utilisation dashboard: departments, billing codes, time entries, time off, and holidays.

Full Ticket Sync

Use this if you're missing tickets. Fetches ALL tickets from Autotask and marks deleted tickets.

Deletion Reconciliation

Check for tickets that have been deleted in Autotask and mark them as deleted locally. This helps clean up tickets that no longer exist.

Automatic Sync Schedule

Configure when syncs run. Changes apply immediately if scheduler is running.

Business Hours

to

Sync Jobs

Every
Every
At
At
At
At
At
At
At
Tech Utilisation
At
At
Every
At
At
Scheduler Status: Stopped

Autotask API Configuration

Update your Autotask API credentials. Changes take effect immediately.

Database Setup

First time? Click this button to create the required database tables.

Auto Ticket Canceller

Automatically cancel tickets based on configurable rules

Auto-Cancel Rules

Rules are checked against new tickets every 5 minutes. Matching tickets will be automatically cancelled in Autotask.

Last automatic run: Loading...
Name Status Match Logic Conditions Actions
Loading rules...

Manual Run

Manually trigger the auto-cancel process to check new tickets against all active rules.

Activity Log

Recent tickets that were automatically cancelled.

Date/Time Ticket # Title Rule Match Reason
Loading logs...

Ticket Routing Rules

Automatically route tickets to different companies or queues based on configurable rules

Routing Rules

Rules are checked against new tickets every 5 minutes. Matching tickets will be automatically routed to the specified company and/or queue in Autotask.

Last automatic run: Loading...
Name Status Match Logic Conditions Route To Actions
Loading rules...

Manual Run

Manually trigger the routing process to check new tickets against all active rules.

Routing Log

Recent tickets that were automatically routed.

Date/Time Ticket # Title Rule Changes
Loading logs...

Database & Deployment

Pull the latest updates from Git and deploy without SSH access.

Current Status

Branch loading
Current -
Remote -
Recent Commits
Loading...

Deploy Updates

Pull latest changes, promote to production, or rollback if needed.

Pull Latest Changes

Pull the latest code from GitHub and restart this server.

Promote to Production

Merge dev into main, install dependencies, and restart production.

Version History

Recent commits with deployment information. Use the rollback button to revert to a previous version.

Hash Message Author Date Deployed Actions
Loading...

Database Information

Host
-
Database
-
Tables
-
Connection
-

User Management

Manage dashboard users and permissions

Users

Username Display Name Email Role Status Last Login Actions
Loading users...

Change Your Password

Permissions

Review and manage user permissions and access

Permission reference

Each permission controls access to specific views or actions. Admins have all permissions.

Loading permissions...

Users & their permissions

User Role Permissions Actions
Loading...

TV Displays

Manage public dashboard URLs for TV screens

Public Dashboards

Create public URLs for dashboards to display on TV screens without login.

Name Type URL Refresh Alert Status Actions
Loading...

Alert Configuration

When alerts are enabled, a red pulsing border will appear on the TV display if:

  • New Tickets > 1 - More than 1 ticket in "New" status created today
  • Unassigned Tickets > 1 - More than 1 ticket with no assigned resource

UptimeRobot

Website and server monitoring integration

Account Information

Loading account info...

Monitors Overview

Loading monitors...

API Configuration

Enter your UptimeRobot API key to enable monitoring integration.

Found in UptimeRobot Dashboard > My Settings > API Settings

vPenTest

Automated penetration testing and vulnerability assessment

Connection Status

Checking connection...

Organizations

Loading organizations...

Scheduled Tests

Loading schedules...

Recent Assessments

Loading assessments...

API Configuration

Enter your vPenTest API key to enable penetration testing integration.

Generate from vPenTest: Profile dropdown > Generate API Key

IT Glue

IT documentation and knowledge management platform

Connection Status

Checking connection...

Quick Stats

Loading stats...

Flexible Asset Types

Loading flexible asset types...

Organizations

Loading organizations...

Configurations (Devices/Assets)

Loading configurations...

API Configuration

Enter your IT Glue API key to enable documentation integration.

Select your IT Glue data center region
Generate from IT Glue: Admin > Settings > API Keys > Custom API Keys

Datto RMM

Remote monitoring and management integration

Account Information

Loading account info...

Devices Overview

Loading devices...

API Usage

Datto RMM limits API calls to 600 requests per 60 seconds. Monitor your usage to prevent rate limiting.

Loading API status...

API Configuration

Enter your Datto RMM API credentials to enable device monitoring integration.

Found in Datto RMM under Setup > Users > API URL field
Generate in Setup > Users > Generate API Keys
Shown only once when generated - store securely

API Information

Token Expiry

Access tokens expire after 100 hours

Rate Limit

600 requests per 60 seconds

Authentication

OAuth 2.0 with API Key/Secret

Datto SaaS Protection

Microsoft 365 and Google Workspace backup protection

Protected Domains

Loading domains...

Backup Statistics

Loading statistics...

API Configuration

Enter your Datto SaaS Protection API credentials. Generate keys from the Datto Partner Portal under Admin > Integrations > API Keys.

Found in Datto Partner Portal > Admin > Integrations > View Keys
Keep this secure - it's only shown once when created

API Information

API URL

https://api.datto.com/v1/saas

Authentication

Basic Auth (Public/Secret Keys)

Key Endpoints

/domains, /seats, /bulkSeatChange

MSP360 Backup

Managed backup platform for endpoint protection

Backup Overview

Loading statistics...

Backup Status

Loading monitoring data...

Companies

Loading companies...

API Configuration

Enter your MSP360 API credentials. Generate them in the MSP360 console under Settings > General > API.

Generated in MSP360 Console > Settings > General > API
Keep this secure - shown only once when generated

API Information

API URL

https://api.mspbackups.com

Authentication

Bearer Token (via /api/Provider/Login)

Key Endpoints

/Users, /Companies, /Monitoring, /Computers

ITQuoter

Quoting and proposal management platform

Quoter Overview

Loading statistics...

Recent Quotes

Loading quotes...

Contacts

Loading contacts...

API Configuration

Enter your ITQuoter (Quoter) API credentials. Generate them in your Quoter account under Account > API Keys.

Found in Quoter > Account > API Keys
Keep this secure - shown only once when generated

API Information

API URL

https://api.quoter.com/v1

Authentication

OAuth 2.0 Client Credentials

Token Expiry

Access: 1 hour / Refresh: 24 hours

Rate Limit

5 requests per second

Pax8

Cloud commerce marketplace and subscription management

Pax8 Overview

Loading statistics...

Subscriptions

Loading subscriptions...

Recent Invoices

Loading invoices...

API Configuration

Enter your Pax8 API credentials. Generate them in the Pax8 app under Settings > Integrations > API Keys.

Found in Pax8 > Settings > Integrations > API Keys
Keep this secure - for internal use only, never share with third parties

API Information

API URL

https://api.pax8.com/v1

Authentication

OAuth 2.0 Client Credentials

Token Expiry

Access tokens valid for 24 hours

Rate Limit

1,000 calls per minute

M365 Partner Center

Microsoft Partner Center for CSP customer and license management

M365 Partner Center Overview

Loading statistics...

CSP Customers

Loading customers...

API Configuration

Enter your Azure AD app registration credentials. Create an app in Azure Portal > Azure Active Directory > App registrations.

Found in Azure Portal > Azure Active Directory > Overview
Found in Azure Portal > App registrations > Your App > Overview
Created in Azure Portal > App registrations > Certificates & secrets
Your Microsoft partner tenant domain

Setup Instructions

  1. Go to Azure Portal > App registrations
  2. Click "New registration" and name it (e.g., "MSC Portal Partner Center")
  3. Set "Supported account types" to "Accounts in any organizational directory"
  4. After creation, note the Application (client) ID and Directory (tenant) ID
  5. Go to "Certificates & secrets" > "New client secret" and save the value
  6. Go to "API permissions" > "Add permission" > "Microsoft Graph"
  7. Choose "Application permissions" and add: Contracts.Read.All (under Directory or Contracts)
  8. Click "Grant admin consent" for your organization
  9. Note: This uses Microsoft Graph (graph.microsoft.com/v1.0/contracts) to list CSP customer tenants. The app must be registered in your partner tenant (the tenant that holds the CSP relationship), not a customer tenant.

API Information

API URL

https://api.partnercenter.microsoft.com/v1

Authentication

OAuth 2.0 Client Credentials

Partner Type

CSP Indirect Reseller

MFA Requirement

App+User auth requires MFA from April 2026

OpenAI

AI-powered assistant and analysis engine

API Status

Loading API status...

Available Models

Loading models...

Quick Test

Send a test prompt to verify the API connection and model response.

API Configuration

Enter your OpenAI API key. Generate one from your OpenAI account at platform.openai.com/api-keys.

Found at platform.openai.com/api-keys
The model used for AI features across the app - populated from your account

API Information

API URL

https://api.openai.com/v1

Authentication

Bearer Token (API Key)

Rate Limits

Varies by model and tier

Billing

Pay-per-token usage based

Keap CRM

CRM, sales automation, and contact management

Keap Overview

Loading statistics...

Recent Contacts

Loading contacts...

Tags

Loading tags...

OAuth2 Configuration

Connect to Keap using OAuth2. Get your Client ID and Secret from the Keap Developer Portal.

Connection status: Checking...

API Information

API URL

https://api.infusionsoft.com/crm/rest/v1

Authentication

OAuth 2.0 with Bearer Token

Key Endpoints

/contacts, /companies, /tags, /opportunities

Xero

Cloud accounting and financial management

Xero Overview

Loading...

Recent Invoices

Loading invoices...

Contacts

Loading contacts...

API Configuration

Xero uses OAuth 2.0 authorization. Register an app at developer.xero.com, then enter your credentials below and connect your Xero organisation.

Found at developer.xero.com > My Apps
Generated when you create your Xero app

API Information

API URL

https://api.xero.com/api.xro/2.0

Authentication

OAuth 2.0 Authorization Code

Token Expiry

Access: 30 min / Refresh: 60 days

Key Endpoints

/Invoices, /Contacts, /Accounts, /Organisation

SendGrid

Send emails from the platform

Status

Loading...

Send test email

Send a test email to verify the integration (admin only).

Email Templates

Customise the emails sent automatically by the portal. Each template supports {{variable}} placeholders — available variables are shown per template.

Loading templates...

API Configuration

Enter your SendGrid API key and sender details. You can create an API key in SendGrid → Settings → API Keys. Leave API key blank to keep the current value.

Must be a verified sender in SendGrid

Bicom PBXware

Phone system integration for extension status and call presence

Connection Status

Loading...

Extensions

Loading extensions...

API Configuration

Enter your Bicom PBXware API credentials. Find your API key in PBXware Admin → Settings → API Keys.

Base URL of your PBXware installation
Found in PBXware Admin → Settings → API Keys
The server/tenant ID for multi-tenant PBXware installations (usually 1)

Microsoft Graph API

Microsoft 365 integration for Teams presence and user status

Connection Status

Loading...

Used By

The Microsoft Graph integration provides Teams presence data to the following features:

  • Room Status — Operations → Tools → Room Status (busy light presence)

Azure App Registration

Register an app in Azure Active Directory and grant it the Presence.Read.All application permission.

Azure AD → Overview → Tenant ID
Azure AD → App registrations → your app → Overview
Azure AD → App registrations → your app → Certificates & secrets
Azure setup steps:
1. Go to portal.azure.com → Azure Active Directory → App registrations → New registration
2. Add API permission: Microsoft Graph → Application → Presence.Read.All
3. Click Grant admin consent
4. Create a client secret under Certificates & secrets
5. Copy the Tenant ID, Client ID, and secret value above

Help & Documentation

Guides and reference for every area of the Elamar portal

Auto Ticket Canceller

Automatically cancels Autotask tickets that match configurable rules. Runs on a scheduled sync and can also be triggered manually.

How it works

On each run, the engine fetches all New (status = 1) and Awaiting MSC Response (status = 24) tickets. Each ticket is tested against every active rule. When a match is found the ticket status is set to Cancelled in Autotask and the event is written to the cancellation log.

If a previously cancelled ticket is reopened (e.g. by an Autotask auto-responder changing its status back to New or Awaiting MSC Response), the engine will automatically re-cancel it on the next run.

The run is skipped automatically if the Autotask API usage threshold exceeds 70%.

Auto-responder handling

Why "Awaiting MSC Response" tickets are also checked

Autotask auto-responders can reply to a ticket the moment it is created, which changes its status from New (1) to Awaiting MSC Response (24) before the canceller job runs. If only New tickets were checked, those tickets would be silently skipped and never cancelled.

To prevent this, the engine evaluates tickets in both the New and Awaiting MSC Response statuses.

Automatic re-cancellation of reopened tickets

If an auto-responder fires after the canceller has already cancelled a ticket, it can change the status back to Awaiting MSC Response. The engine detects this and will re-cancel the ticket on the next run.

Re-cancellations are recorded in the cancellation log with a [re-cancelled] tag in the match reason and an updated timestamp.

Rule fields

Field Description
Name Required. A descriptive label for the rule.
Active Toggle to enable or disable the rule without deleting it.
Match Logic OR (default) — cancel if any condition matches. AND — cancel only if all conditions match.
Sender Email Email address or pattern to match against the ticket sender.
Sender Email Match contains (default), exact, or ends_with.
Title Keywords Comma-separated keywords checked against the ticket title.
Title Match contains (default) or exact.
Description Keywords Comma-separated keywords checked against the ticket description body. Always uses contains matching.

Match logic in detail

OR mode (default)

The ticket is cancelled if at least one of the configured conditions matches. Blank fields are ignored.

Example: Sender email set to noreply@ — any ticket from an address containing that string is cancelled, regardless of title or description.

AND mode

The ticket is cancelled only when every configured condition matches. Blank fields are skipped but at least one condition must be set.

Example: Sender email noreply@ AND title keyword automated — both must be true.

Email matching detail

The engine checks two email sources per ticket:

  1. The contact email from the linked Autotask contact record.
  2. A sender email extracted from a From: line in the ticket description (used for email-to-ticket submissions where the contact may be the recipient, not the sender).

If either source matches the rule's email pattern, the email condition is satisfied.

Running rules

  • Scheduled: Runs automatically as part of the Autotask sync job.
  • Manual: Click Run Now in the Auto Ticket Canceller view. Requires the manage_tools permission.

Permissions

Action Required permission
View rules & logs view_tools
Manually run rules manage_tools
Create / edit / delete / toggle rules Admin only

Cancellation log

Every cancelled ticket is recorded in the Cancellation Log tab with the ticket number, title, matched rule name, and the reason the rule fired. This log is read-only and is used to prevent tickets being processed twice.

Ticket Routing

Automatically reassigns newly-created Autotask tickets to the correct company, queue, issue type, and/or sub-issue type — without anyone having to touch them manually.

How it works

On each run, the engine fetches all New (status = 1) tickets that have not previously been routed. Each ticket is tested against every active rule in order. When a match is found, the configured target fields are updated in Autotask via the API and the action is written to the routing log.

First-match-wins: once a ticket matches a rule, no further rules are evaluated for that ticket.

No re-routing: a ticket that already has a routing log entry is permanently excluded from future runs.

The run is skipped automatically if the Autotask API usage threshold exceeds 70%.

Rule fields — matching conditions

Field Description
Name Required. A descriptive label for the rule.
Active Toggle to enable or disable without deleting.
Match Logic OR (default) or AND — controls how conditions combine.
Sender Email Email pattern matched against the ticket sender.
Sender Email Match contains (default), exact, or ends_with.
Title Keywords Comma-separated keywords checked against the ticket title.
Title Match contains (default) or exact.
Description Keywords Comma-separated keywords checked against the ticket description (always contains).

Rule fields — routing actions

At least one target field must be set — a rule with no action is rejected.

Field What it changes
Target Company Reassigns the ticket to a different Autotask company (companyID).
Target Queue Moves the ticket to a specific queue (queueID).
Target Issue Type Sets the Autotask issue type (issueType).
Target Sub-Issue Type Sets the sub-issue type (subIssueType), filtered by the selected issue type in the UI.

Match logic in detail

OR mode (default)

The ticket is routed if any configured condition matches. Blank fields are ignored.

AND mode

The ticket is routed only when all configured conditions match. At least one condition must be set.

Email matching checks both the contact email (linked contact record) and a sender email extracted from a From: line in the description. A match on either is sufficient.

Running rules

  • Scheduled: Runs automatically every 5 minutes as part of the sync scheduler. Also fires once on server startup (after a 15-second delay).
  • Manual: Click Run Now in the Ticket Routing view. Requires the manage_tools permission.

Permissions

Action Required permission
View rules, logs, last-run status view_tools
Manually trigger a run manage_tools
Create / edit / delete / toggle rules Admin only

Routing log

Every routed ticket produces one log entry recording: ticket number, title, matched rule name, match reason, and a before/after snapshot of every field that changed (company, queue, issue type, sub-issue type). The log is read-only and prevents tickets from being re-processed.

Room Status (Busy Light)

Drives physical WS2812B LED rings connected to ESP32 microcontrollers on staff desks. Each device glows a colour reflecting that person's real-time availability, pulled from the Bicom PBX and/or Microsoft Teams.

Status colours

Colour Status Condition
🔴 Red Busy PBX: BUSY / INUSE / RINGING / ONHOLD, or Teams: Busy / DoNotDisturb / on a call
🟠 Orange Away Teams: BeRightBack / Away
🟢 Green Available Teams: Available
⚪ Grey Unknown No data, PBX: UNAVAILABLE / INVALID, or Teams: Offline
⚫ Off Disabled Device marked as inactive

Priority rule: PBX on-call state takes priority over Teams presence when both sources are available.

Data sources

Bicom PBXware

Provides real-time extension call state (BUSY, INUSE, RINGING, ONHOLD, etc.) via the PBXware API.

Configured in: Settings → Integrations → Bicom PBXware

Microsoft Graph (Teams)

Provides Teams presence (availability + activity) for up to 650 users per batch via the Graph API.

Configured in: Settings → Integrations → Microsoft Graph

Both integrations are optional — the system degrades gracefully if either is not configured.

How the hardware works

Each ESP32 device polls GET /api/busy-light/device/:token/colour every 15 seconds. This endpoint is public (no login required) — the unique 64-character device token in the URL is the only authentication.

The endpoint returns { r, g, b, status, brightness }. The firmware sets the LED ring to that colour immediately. If the device is inactive, it receives { r:0, g:0, b:0, brightness:0 } (LEDs off).

WiFi connection states on the device: pulsing blue = connecting, dim red = failed, dim blue = lost connection.

Device configuration

Field Description
Staff Name Display name shown in the portal UI.
Device Name Friendly label for the physical device.
PBX Extension Extension number to look up in Bicom PBXware.
Teams User ID Azure AD Object ID for Microsoft Graph presence lookup.
Active Inactive devices receive black/off RGB and are skipped by the poller.

Settings

Setting Default Description
Busy Light Enabled Off Master on/off switch for the server-side poller.
Poll Interval 15 seconds How often the server polls PBX and Teams (range: 5–300 seconds). Changing this restarts the poller immediately.

Firmware generation

The portal generates a ready-to-flash Arduino sketch per device via the Firmware button. The sketch has the device token and portal hostname pre-filled. Flash it to any ESP32 board with a WS2812B LED ring on GPIO 5.

Required Arduino libraries: FastLED and ArduinoJson.

Permissions

Action Required permission
View Room Status page and live status view_tools
Add / edit / delete devices Admin only
Save settings, force manual poll Admin only
ESP32 device polling the colour endpoint Token in URL only (no login)

Ops Dashboard

A unified real-time overview of three tool integrations — Datto RMM, MSP360 Backup, and Datto SaaS Protection — on a single screen. Auto-refreshes every 5 minutes.

Summary stat cards

Card What it shows
RMM Devices Total device count + online percentage.
Offline Devices Count of offline devices + total site count.
Backup Plans Total MSP360 monitoring plans + success rate % (green ≥95%, amber ≥80%, red <80%).
Backup Issues Combined error + warning count with breakdown label.
SaaS Domains Datto SaaS domain count + total licensed seats.
SaaS Storage Total storage used + active seat count.

Datto RMM detail

  • Device Types — breakdown of all devices by type/class, sorted by count.
  • Top Sites — top 10 sites by device count.
  • Offline Devices — up to 20 sites with up to 5 offline devices each, showing hostname, device class, and last-seen time.

MSP360 Backup detail

  • Failed Backups — up to 10 plans with Error status, showing computer name, company, plan name, and error message.
  • Warnings — up to 10 plans with Warning status.
  • Companies with Issues — up to 10 companies ranked by total issues, with error and warning badge counts.

Datto SaaS Protection detail

A full-width table of all protected domains showing seats used, seats licensed, and storage used.

Data sources & permissions

Data is fetched live from Datto RMM, MSP360, and Datto SaaS Protection APIs on each load. Each section is hidden if that integration is not connected. Requires the view_dashboards permission.

Reporting

Generates formatted monthly client reports from Autotask ticket data, with a PDF download option. All data is sourced from the local database — no live API calls are needed to generate a report.

Report builder inputs

Input Description
Client Dropdown of all active Autotask companies.
Month & Year Defaults to the previous month. Year range covers the current year and 2 previous years.
Include Sections 9 individually toggleable checkboxes — all enabled by default.
Exclude Contacts Searchable typeahead to exclude specific contacts from the "Top Ticket Creators" section. Exclusions are saved per-client.

Report sections

# Section Content
1 Tickets Opened & Closed Total opened, total closed, net change, daily activity chart.
2 Resolution Times Average, minimum, and maximum resolution hours; breakdown by priority.
3 Tickets by Priority Count per priority with chart.
4 Tickets by Status Count per status with chart.
5 Top Sub-Issue Types Top 10 sub-issue types with parent issue type.
6 Month-over-Month Comparison Current vs. previous month for opened and closed, with change %.
7 Top Ticket Creators Top 5 contacts by ticket count (respects the exclusion list).
8 Account Summary Active tickets, total all-time tickets, this month opened/closed.
9 Additional Notes Static boilerplate text appended to the report.

Export & permissions

Click Download PDF to export the rendered report. The file is named ClientName_Report_Month_Year.pdf.

Requires the view_reporting permission.

Backup

Monitors MSP360 backup plans across all clients. Select a client to see live plan statuses, historical run data, storage trends, and purge events per server.

Client summary cards

After selecting a client from the dropdown, four stat cards appear:

  • Computers — total computer count for the client.
  • Success — plans with a successful last run.
  • Warnings — plans with warning status.
  • Errors — plans with error or failed status.

Backup status table

Columns: Computer, Plan, Type, Last Run, Status, Files Copied, Files Failed, Data Copied, Duration.

Filterable by Plan name, Status (All / Success / Warning / Error), and Computer name (free text). A filter summary shows "Showing X of Y jobs".

Status values: Success (0), Warning (1), Error/Failed (2), Running (3), Interrupted (4).

Server detail modal (click any computer name)

Opens a three-tab modal for the selected computer:

Tab Content
History Historical backup runs from the local database: Date/Time, Plan, Status, Files Copied, Files Failed, Data Copied, Duration.
Storage Daily storage snapshots per destination. Rows where storage decreased (purge events) are highlighted in red. Includes a Sync Storage Data button to pull current sizes from MSP360 on demand.
Events Purge events only: Date, Destination, Change (size decrease), Previous Size, New Size.

Permissions

Requires the view_integrations permission. The MSP360 integration must be configured in Settings → Integrations → MSP360 Backup.

Tech Utilisation

Monitors the capacity utilisation of the Remote Technical Staff department — tracking whether engineers are working enough hours and whether those hours are being spent on the right activities. All data comes from Autotask time entries stored locally.

KPI cards

Card Description
Team Utilisation % Productive hours ÷ available hours for the selected period.
Billable % Billable hours as a percentage of productive hours. Target: 75–85%.
Avg Daily Hours Average hours worked per engineer per day. Target: 6.0–6.5 hrs.
Capacity Status Spare / Healthy / Closing In / At Capacity based on the 4-week rolling average.
Productive vs Available Hours Raw hour totals for the period.
Team Members Count of engineers in the configured department.

Charts & panels

  • Weekly Utilisation Trend — 8-week rolling chart showing capacity vs target line.
  • Time Category Breakdown — pie/bar chart of hours by category (Billable Support, Project Work, Operational / Internal, Service Improvement, Training, Presales, Other, Leave / Unavailable), filterable per engineer.
  • Per-Engineer Cards — individual utilisation card for each resource.
  • Capacity Planning Panel — 4-week rolling average on a gauge with zones: Spare (<75%), Healthy (75–80%), Closing In (80–85%), At Capacity (≥90%).
  • Time Entry Detail Table — full paginated list of individual time entries: Date, Resource, Hours, Billable Hrs, Category, Work Type, Notes.

Date range filters

Quick presets: This Week, Last Week, This Month, Last Month, Last 4 Weeks. Also supports a custom date range picker. The view auto-refreshes every 5 minutes while open.

Settings (gear icon)

Tab Description
Targets Global defaults (daily hours: 7.5h, utilisation: 83%, billable: 80%) plus per-resource overrides.
Category Mapping Maps each Autotask Work Type (Billing Code) to a utilisation category. Codes mapped to "Excluded" do not count toward utilisation.
Department Configures which Autotask department to filter resources by (default: "Remote Technical Staff").

Permissions

Requires the view_dashboards permission.

Finance Dashboard

A read-only snapshot of current financial metrics pulled live from Xero. Auto-refreshes every 5 minutes. Requires the Xero integration to be connected.

Summary cards

Card Description
Total Cash Sum of all Xero bank account balances.
Revenue This Month / Last Month From the Xero Profit & Loss report.
Expenses This Month / Last Month From the Xero Profit & Loss report.
Outstanding Receivables Total unpaid invoices, with overdue count/amount highlighted in red.
Outstanding Payables Total unpaid bills, with overdue highlighted.
Avg Days to Get Paid Calculated from paid invoices in the last 90 days.

Charts

  • Revenue vs Expenses — 12-month bar chart (income vs total expenses per month).
  • Cash Flow Trend — 12-month net profit line chart.
  • Profit Margin % — 12-month monthly trend line.
  • Receivables Aging — bar chart bucketed: Current, 30 days, 60 days, 90+ days.
  • Payables Aging — same for bills.

Tables & alerts

  • Top 5 Debtors — largest outstanding receivable balances with days overdue.
  • Top 5 Creditors — largest outstanding payable balances with next due date.
  • Cash Position by Account — current balance per Xero bank account.
  • Overdue Invoices / Bills — alert cards showing count and total value (red if any exist).
  • Next 30 Days Net — upcoming receivables minus upcoming payables.

Permissions

Requires the view_finance permission. Shows a "Xero Not Connected" state if the Xero integration is not configured.

Cash Flow Forecast

A forward-looking cash flow forecaster that projects the business's bank balance over time. Unlike the Finance Dashboard (which is historical), this is entirely about the future. Data comes from Xero (live) and locally stored rules and settings.

KPI cards

Card Description
Current Balance Live Xero bank balance across included accounts.
Receivables Total outstanding invoices (money coming in).
Payables Total outstanding bills (money going out).
Projected at 30 / 60 / 90 / 180 / 365 days Clickable — drill into the transactions making up each projection.

Tabs

Tab Description
Upcoming Transactions All forecast transactions with company, invoice number, expected date, amount, and type (inflow/outflow). Filterable by All / Cash In / Cash Out. Recalc ADR button recalculates payment timing from Xero history.
Forecasting Rules User-defined recurring entries (e.g. "Monthly AWS bill £500 on the 1st"). Supports name, category, amount, frequency (daily/weekly/monthly/quarterly/annual), start/end date, day of month, and scenario assignment.
Detected Patterns Automatically detected recurring transactions from Xero bank history (last 6 months). Approve to convert to a rule, or ignore.
Scenarios Named scenario cards (e.g. Base, Optimistic, Pessimistic). Toggle multiple scenarios on/off to overlay projections on the same chart.
Credit Cards Tracks credit card accounts with statement day, payment day, and payment basis. Projects the payment as a future outflow on the due date.

How the forecast is built

  1. Starts from the current Xero bank balance.
  2. Adds outstanding receivable invoices at their expected payment date (manual override → calculated contact ADR → original due date, in that priority order).
  3. Subtracts outstanding payable bills similarly.
  4. Applies active forecasting rules (recurring occurrences over the forecast window).
  5. Suppresses rule items when a matching actual Xero transaction exists (same contact + amount within 10% + date within 14 days) to avoid double-counting.
  6. Adds manual entries, scheduled transfers, and credit card payment projections.

Permissions

Action Required permission
View forecasts and transactions view_finance
Create/edit rules, scenarios, manual entries, settings manage_finance

Pax8 Billing Items

Cross-references Pax8 clients and their active subscriptions against Microsoft 365 Partner Center tenants. Quickly see which billing clients have a corresponding M365 tenant and how many licenses they hold.

Summary table

Each row shows a Pax8 client with:

  • Client Name — unmatched clients are greyed out with a warning icon.
  • Subscription Count — number of active Pax8 subscriptions.
  • Pax8 Licenses — total licensed seats across all subscriptions.
  • M365 Tenant — "Linked" (green tick + domain) or "Not matched" (grey).

Click any row to expand the subscription detail panel showing individual products, quantities, prices, and statuses.

Stats bar

Shows: Pax8 Clients count, M365 Tenants count, Matched count (green), Unmatched count.

How matching works

The system fetches all Pax8 companies and all Microsoft CSP customer tenants (via GET /v1.0/contracts from Partner Center), then attempts to match Pax8 company names to M365 tenant display names using fuzzy name matching.

If Microsoft Graph is not configured, all clients show "Not matched" — M365 matching is optional.

Required integrations & permissions

  • Pax8 — mandatory. Configure in Settings → Integrations → Pax8.
  • Microsoft Graph / Partner Center — optional. Configure in Settings → Integrations → M365 Partner Center.

Requires the view_finance permission.

Users

Manage portal user accounts — create, edit, deactivate, and reset passwords. Requires the manage_users permission.

User fields

Field Description
Username Unique login name. Set at creation and cannot be changed afterwards.
Display Name Friendly name shown in the UI. Defaults to the username if left blank.
Email Optional. Used to send a welcome email via SendGrid when the account is created.
Role admin, user, or viewer (see below).
Active Inactive users cannot log in. Editable only when editing an existing user.
Password Required on creation. Leave blank when editing to keep the current password. Minimum 6 characters for self-service changes.

Roles

Role Default permissions
admin All 20 permissions automatically. The "Edit permissions" button is hidden for admins.
user view_dashboards, view_reporting, view_backup, view_tools, view_finance, view_tables, view_sync, view_integrations, view_deployment.
viewer view_dashboards only.

Roles only set the default permissions at creation time. Permissions can be individually adjusted per user afterwards (see Permissions).

Creating a user

  1. Click + Add User and fill in the fields.
  2. On save, the permissions editor opens automatically so you can fine-tune the new user's access.
  3. If an email address was provided, a welcome email is sent containing the username and temporary password.

Password management

  • Admin reset: Edit a user and enter a new password. Leave blank to keep the existing password.
  • Self-service: The "Change Your Password" form at the bottom of the Users page lets any logged-in user change their own password by entering their current password and a new one (minimum 6 characters).

A user cannot delete their own account.

Permissions

Permissions are assigned per user (not per role). Roles only set the defaults at creation time. There are 20 permissions across 8 categories. Requires the manage_users permission to access.

All permissions

Permission Description
Dashboards
view_dashboards Access management, company, ops, and internal dashboards.
manage_dashboards Create, edit, and delete dashboards; configure widgets and settings.
Reporting
view_reporting Access the report builder and generated reports.
Backup
view_backup View backup status and monitoring (MSP360, Datto SaaS Protection).
Tools
view_tools View operations tools, automation rules, logs, and room status.
manage_tools Create, edit, and delete automation rules and devices; run rules manually.
Finance
view_finance View finance dashboard, cash flow forecasts, and billing items.
manage_finance Manage cash flow scenarios, forecasting rules, manual entries, and invoice settings.
Database
view_tables Browse and view database table structures and contents.
run_queries Execute custom SELECT queries against the database.
Sync
view_sync View Autotask sync logs, status, and scheduler configuration.
run_sync Manually trigger Autotask data synchronisation.
manage_scheduler Configure, start, stop, and reset the automated sync scheduler.
Administration
manage_users Create, edit, and delete user accounts and assign permissions.
view_integrations View integration overviews and data from connected services.
manage_integrations Configure API keys and connection settings for all integrations.
view_deployment View deployment status, version history, and environment information.
manage_deployment Deploy to production, pull latest changes, and perform rollbacks.
manage_tv_displays Configure TV display dashboards, public tokens, and alert settings.

Editing a user's permissions

  1. Go to Settings → Permissions (or Settings → Users).
  2. Click Edit permissions next to any non-admin user.
  3. Check or uncheck individual permissions.
  4. The Company Access section lets you restrict which company dashboard tabs the user can see.
  5. Click Save. Changes take effect on the user's next page load.

Admin users always have all permissions — their checkboxes are read-only.

Integrations

A filterable grid of all connected (and configurable) third-party services. Each tile shows a live connection status and links directly to that integration's configuration and data page.

Available integrations

Integration Category Purpose
Autotask Core MSP Tools PSA ticketing — companies, contacts, tickets, time entries.
Datto RMM Core MSP Tools Remote monitoring and management — devices, sites, alerts.
IT Glue Core MSP Tools IT documentation — organisations, configurations, contacts, passwords.
Datto SaaS Protection Backup & Security Cloud backup for M365 and Google Workspace.
MSP360 Backup Backup & Security Managed backup with endpoint protection.
vPenTest Backup & Security Automated penetration testing and vulnerability reports.
UptimeRobot Monitoring & Infrastructure Website/server uptime monitoring.
M365 Partner Center Monitoring & Infrastructure CSP customer management and license tracking.
Bicom PBXware Monitoring & Infrastructure Phone system — extension status, call presence, busy lights.
Microsoft Graph Monitoring & Infrastructure Teams presence, user status, busy lights via Graph API.
ITQuoter Finance & Sales CPQ — quotes, proposals, order management.
Pax8 Finance & Sales Cloud marketplace — subscriptions and billing.
Keap CRM Finance & Sales CRM and sales automation.
Xero Finance & Sales Cloud accounting — invoices, bank reconciliation.
SendGrid Platform & Notifications Transactional and notification emails (welcome emails, alerts).

Connection status badges

Each tile shows one of three states, checked live on page load:

  • Connected (green) — credentials are present and valid.
  • Not Configured (grey) — no credentials have been entered yet.
  • Auth Failed / Error (red) — credentials are present but the connection test failed.

Special cases: Xero shows "Not Authorised" when credentials exist but the OAuth handshake hasn't been completed. ITQuoter performs a live API test call (not just a credentials-present check).

Navigating to an integration

Click any tile to open that integration's full configuration and data page. Each integration page has a Back button that returns to the integrations grid and refreshes all tile statuses.

SendGrid, Bicom, and Microsoft Graph use tabbed layouts within their pages.

Xero requires an OAuth flow — after entering credentials, click Connect Xero to complete the handshake.

Permissions

Action Required permission
View integration status grid and data pages view_integrations
Configure API keys and connection settings manage_integrations

TV Displays

Public, login-free dashboard URLs designed to be shown on office TV screens. Each display is a token-protected page that mirrors one of the internal dashboards without requiring authentication.

Dashboard types

Type What it shows
Management The full "All Tickets" management dashboard.
Queue Dashboard filtered to one or more named Autotask queues (e.g. "Service Desk,Projects").
Company Dashboard filtered to a specific company.

All types show: active tickets, new tickets, unassigned tickets, average resolution time (30-day), kill rate (7-day and 30-day), and chart data.

Configuration fields

Field Description
Name A human-readable label for the display.
Dashboard Type Management, Queue, or Company.
Queue Names / Company Comma-separated queue names (Queue type) or company selection (Company type).
Refresh Interval How often the TV page auto-refreshes (default: 60 seconds).
Alert Enabled When on, a red pulsing border appears on the TV page if new tickets > 1 or unassigned tickets > 1.
Active Inactive displays return a 404 — the public URL stops working.

How it works

The public URL is <portal-url>/tv/<token> — no login required. The unique token in the URL is the only authentication. Stats are cached for 45 seconds to reduce database load.

Actions in the management UI: Copy URL, Open in new tab, Edit, Activate/Deactivate, Delete.

Permissions

Requires the manage_tv_displays permission (admin only by default). The public /tv/ URLs have no authentication — they are intentionally open for TV screens.

Deployment

Shows the current git status, version history, and database information. Admins can pull the latest code, promote dev to production, and roll back to previous commits — all with live progress streaming.

Cards

Card Description
Current Status Current branch, local commit hash, remote commit hash, up-to-date/behind badge, and the last 10 commits from the remote branch.
Deploy Actions Admin only. Pull & Restart and Promote Dev → Prod buttons (see below).
Version History Last 25 git commits merged with deployment records. Each non-current commit has a Rollback button.
Database Information DB host (partially masked), database name, table count, and connection status.

Deploy actions (admin only)

Pull & Restart

Pulls the latest code from the current branch (origin/dev on dev, origin/main on prod), runs npm install, logs to deploy history, then restarts via PM2.

Live step-by-step progress is streamed to the UI via Server-Sent Events.

Promote Dev → Prod

Only shown on the dev environment. Merges origin/dev into main, installs production dependencies, pushes to GitHub, and restarts the production PM2 process.

Health endpoint

The public GET /api/health endpoint (no auth required) returns:

  • build — commit hash, branch, version, build time.
  • uptime — seconds since server start.
  • environment — dev or prod.
  • database — host (masked), name, connected status.

Use this to verify a deployment succeeded by checking the commit hash after a pull.

Permissions

Action Required permission
View deployment status and version history view_deployment
Pull & Restart, Promote, Rollback manage_deployment (admin only)

Database Explorer

Browse the portal's MySQL database, inspect table structures, filter rows, and run custom SQL queries. Three sub-views are available via the tile navigation.

Overview

Shows three stat cards: Total Tables, Database Name (msp_dash), and Connection type (SSL). Lists all tables as clickable items — clicking one navigates directly to the Tables view with that table pre-selected.

Tables

Select any table from the dropdown to:

  • View the column structure — each column shown as a badge with field name and type.
  • Apply filters — text fields use LIKE %value%, numeric fields use exact match.
  • Browse paginated data — default 100 rows, maximum 1,000 rows per page.

Only validated column names from DESCRIBE are accepted in filters, preventing SQL injection.

Query

Two tabs:

Read (SELECT)

Free-text textarea for SELECT queries. Results rendered as a data table. If no LIMIT is specified, one is automatically appended (max 10,000 rows).

Requires: run_queries

Write (ALTER/UPDATE/INSERT)

Styled with a red danger border. Requires ticking a confirmation checkbox before executing. Changes are permanent and cannot be undone.

Requires: Admin only (superadmin)

Query restrictions

Read queries block these keywords: DROP, DELETE, UPDATE, INSERT, ALTER, CREATE, TRUNCATE, UNION, SLEEP, BENCHMARK, and many others. Multiple statements (semicolons) are also blocked.

Write queries (admin only) additionally block: DROP TABLE, DROP DATABASE, TRUNCATE, DROP SCHEMA. ALTER, UPDATE, INSERT, and similar operations are permitted.

Permissions

Permission What it unlocks
view_tables Overview and Tables sub-views — browse table structures and data.
run_queries Query view Read tab — execute SELECT queries.
Admin only Query view Write tab — execute ALTER/UPDATE/INSERT statements.