Skip to content

Azure Monitor → ServiceNow Integration

A fully automated, repeatable solution connecting Azure Monitor alerts to ServiceNow.
Based on John Joyner's (Microsoft MVP) detailed guide — replaces the deprecated Azure Monitor ITSM Connector marketplace item.


Architecture

Auth Strategy: Managed Identity Only

ScenarioMethod
Logic App → Key VaultUser-Assigned MI (oauthMI API connection)
Logic App → Azure Monitor REST APIUser-Assigned MI bearer token
SNOW credentials in AzureStored in Key Vault only — never in code or templates

Quick Start

Prerequisites

  • Azure subscription with Contributor access
  • PowerShell 7+, Azure CLI (with Bicep), or Terraform ≥ 1.5
  • ServiceNow instance (or free PDI) with admin access

One-command deploy (Bicep)

powershell
# Clone repo
git clone https://github.com/Hybrid-Solutions-Cloud/azure-monitor-itsm
cd azure-monitor-itsm

# Full deployment (prompts for SNOW password)
.\deploy\scripts\Deploy-Solution.ps1 `
  -ResourceGroupName rg-azure-monitor-itsm `
  -Location eastus `
  -SnowInstanceUrl https://dev123456.service-now.com `
  -SnowUsername azure_monitor_svc `
  -DeploymentMethod Bicep

ServiceNow PDI (free dev instance)

powershell
# Sign up at https://developer.servicenow.com then:
.\deploy\scripts\New-SnowPdiSetup.ps1 `
  -SnowInstanceUrl https://dev123456.service-now.com `
  -AdminUsername admin

What Gets Deployed

ResourceNamePurpose
User-Assigned MIITSM-MIAll Azure-side auth (no SPN)
Key Vaultitsm-kvStores SNOW URL, username, password
KV API Connectionitsm-keyvault-connection-miLogic App → KV via oauthMI
Logic App (Alert)Azure-Monitor-Alert-ITSM-HTTP-APIAzure Monitor → SNOW incident
Logic App (Close)Azure-Monitor-Close-ITSM-HTTP-APISNOW close → Azure Monitor
Action Groupag-azure-monitor-itsmTriggers Alert Logic App

Deployment Scripts

ScriptPurposeJohn's Step
Deploy-Solution.ps1Full orchestrator (calls all scripts)All
New-Prerequisites.ps1ITSM-MI, RBAC, KV API connection1, 5
Set-KeyVaultSecrets.ps1Key Vault creation + SNOW secrets3, 4
Set-KeyVaultFirewall.ps1Restrict KV to Logic App outbound IPs7
New-ActionGroup.ps1Create Action Group10
Enable-LogicApps.ps1Enable both Logic Apps14
Test-Integration.ps1End-to-end smoke test
New-SnowPdiSetup.ps1SNOW PDI setup (user, roles, test API)

IaC Options

powershell
.\Deploy-Solution.ps1 -ResourceGroupName rg-azure-monitor-itsm `
  -SnowInstanceUrl https://... -SnowUsername azure_monitor_svc `
  -DeploymentMethod Bicep
powershell
.\Deploy-Solution.ps1 -ResourceGroupName rg-azure-monitor-itsm `
  -SnowInstanceUrl https://... -SnowUsername azure_monitor_svc `
  -DeploymentMethod Terraform
powershell
.\Deploy-Solution.ps1 -ResourceGroupName rg-azure-monitor-itsm `
  -SnowInstanceUrl https://... -SnowUsername azure_monitor_svc `
  -DeploymentMethod ARM

Severity Mapping

Azure MonitorSNOW ImpactSNOW UrgencySNOW Priority
Sev0 – Critical1 – High1 – High1 – Critical
Sev1 – Error1 – High2 – Medium2 – High
Sev2 – Warning2 – Medium2 – Medium3 – Moderate
Sev3 – Informational3 – Low3 – Low4 – Low
Sev4 – Verbose3 – Low3 – Low5 – Planning

References

Based on John Joyner's Logic App ITSM guide.