Setup Required — CW Manage Tagging + Azure Proxy Configuration ▼ Show setup steps
Step 01 — ConnectWise Manage Create AI_Agent Custom Field Navigate to Setup Tables → Custom Fields → Service Ticket. Add a new Text field (100 chars) with the exact caption: AI_Agent When an AI agent handles or initiates a ticket, write the agent name to this field. Examples: IVR-Triage, NOC-Summarizer, Ticket-Classifier.
Step 02 — ConnectWise Manage Define Resolution vs Escalation Resolved by AI: Ticket closed/completed with no resource reassignment after AI_Agent stamp.
Escalated: Ticket assigned to a human resource after AI_Agent stamp. The API compares assignedTo history against the stamp timestamp.
Step 03 — Azure Function Proxy Configure Proxy Endpoints Add four routes to your existing Azure Function app. Each route accepts a GET from this dashboard and forwards to the vendor API with credentials from Key Vault. See proxy wiring table below. PROXY_BASE = 'https://<your-function>.azurewebsites.net/api'
Step 04 — Microsoft Graph Add Graph Scope to Managed Identity Grant your Function's Managed Identity the Reports.Read.All application permission in Azure AD. The proxy acquires a Graph token using the Managed Identity — no secret needed in Key Vault. az ad app permission add --id <func-client-id> --api 00000003-0000-0000-c000-000000000000 --api-permissions 230c1aed-a721-4c5d-9cb4-a90514e508ef=Role
Azure Function Proxy Endpoints — wire these four routes in your Function app
GET
/api/cw-tickets
→ https://{cw-server}/v4_6_release/apis/3.0/service/tickets
Auth: Basic (CompanyId+PublicKey:PrivateKey)
Pass-through: conditions, fields, pageSize, page
GET
/api/cw-count
→ https://{cw-server}/v4_6_release/apis/3.0/service/tickets/count
Auth: Basic
Pass-through: conditions query param
GET
/api/graph-copilot
→ https://graph.microsoft.com/v1.0/reports/getMicrosoft365CopilotUsageSummary(period='D30')
Auth: Bearer via Managed Identity
Scope: Reports.Read.All
GET
/api/graph-users
→ https://graph.microsoft.com/v1.0/reports/getMicrosoft365CopilotUsageUserDetail(period='D30')
Auth: Bearer via Managed Identity
Returns: CSV — parse activeUsers by feature
Agent Metrics
// CW Manage + M365 Copilot · Live performance data · Sync to benchmark log
Demo Mode
Refreshed just now Auto-refresh in
30s
Resolution Rate
%
Source: CW Manage API
Escalation Rate
%
Source: CW Manage API
Avg Time Saved / Ticket
hr
Source: CW ticket timestamps
Cost / Interaction
$
Source: Copilot seats ÷ interactions
AI Tickets (30d)
Source: CW Manage API
ConnectWise Manage — Ticket Metrics
Last 30 days
Resolution Rate
Escalation Rate
Avg AI Close Time
Avg Human Close Time
Time Saved / Ticket
Total Volume (30d)
Accuracy
Spot-check required — manual entry
User Satisfaction
Survey pending — manual entry
Microsoft Copilot — Usage via Graph API
D30 report · getMicrosoft365CopilotUsageSummary
Active Users (30d)
of — licensed
Total Interactions
across all features
Seat Cost (est.)
@ $30/seat/month
Cost / Interaction
calculated from above
Usage by Feature (active users)
Cost/interaction = ( licensed seats × $30 ) ÷ total interactions
Time saved/week = ( human avg – AI avg ) × weekly volume
Source: Graph API getMicrosoft365CopilotUsageSummary(period='D30')
Live Ticket Feed — AI-Tagged Tickets
CW Manage · customFields/caption="AI_Agent"
ID Summary AI Agent Status AI Close Time Date
Sync to Benchmark Log
Packages the current agent metrics (resolution, escalation, time saved, cost) into the benchmark log entry format. Opens the benchmark log with fields pre-filled — add accuracy and satisfaction manually, then save.
Not synced yet