ServiceNow and Microsoft 365 integration connects your IT service management platform with your identity and productivity suite through the Microsoft Graph API, enabling automated IT operations like user provisioning, license management, password resets, and mailbox permission changes — triggered directly from ServiceNow incidents or service catalog requests.
ServiceNow is where your tickets live. Microsoft 365 is where your users live. Connecting the two means your ITSM platform can actually do things — not just track requests, but resolve them. This guide covers the practical integration patterns that IT teams use to automate operations across both platforms.
We will start with the fundamentals (authentication, API access) and work up to production patterns for the most common use cases: user management, license operations, mailbox permissions, and on-premises hybrid scenarios.
Microsoft Graph is the single API endpoint for all Microsoft 365 services. Instead of separate APIs for Azure AD, Exchange, Teams, and SharePoint, Graph provides a unified interface at https://graph.microsoft.com. Nearly every M365 operation you want to automate from ServiceNow goes through Graph.
ServiceNow needs to authenticate to Microsoft Graph using OAuth 2.0 client credentials flow. This is a service-to-service authentication — no user interaction required.
Add Microsoft Graph application permissions based on what you plan to automate:
Follow the principle of least privilege. Only grant permissions for operations you are actually automating. User.ReadWrite.All is powerful — if you only need to reset passwords, consider using UserAuthenticationMethod.ReadWrite.All instead.
Under Certificates & secrets, create a new client secret. Copy the value immediately — you will not see it again. Set a reminder to rotate this secret before it expires (Microsoft allows up to 24 months, but 12 months is recommended).
Application permissions require admin consent. A Global Administrator must click "Grant admin consent" on the API permissions page. Without this step, the API calls will return 403 Forbidden.
ServiceNow connects to external APIs using Outbound REST Messages. You will need two: one for authentication (token endpoint) and one for Graph API calls.
POST https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/token
Content-Type: application/x-www-form-urlencoded
client_id={app-id}
&client_secret={secret}
&scope=https://graph.microsoft.com/.default
&grant_type=client_credentialsGET https://graph.microsoft.com/v1.0/users/{userId}
Authorization: Bearer {access_token}
Content-Type: application/jsonIn ServiceNow, store the client secret in a sys_properties record or a credential record — never hardcode it in a script. Cache the access token for its lifetime (typically 3600 seconds) to avoid hitting the token endpoint on every request.
When an incident is created, automatically enrich it with the affected user's Azure AD data — their department, manager, license assignments, group memberships, and last sign-in date. This gives the analyst immediate context without switching to the Azure portal.
Create a Service Catalog item for software license requests. When a user requests "Microsoft Visio," the fulfillment workflow calls Graph API to check license availability, assigns the license, confirms success, and closes the request — all without analyst involvement.
Detect password reset incidents (by category, short description pattern, or AI classification). Verify the requester's identity. Call Graph API to set a temporary password with forceChangePasswordNextSignIn. Notify the user through a secure channel and close the ticket.
For on-premises operations that Graph API cannot reach — Exchange on-premises mailbox permissions, Windows service restarts, Active Directory operations in environments not fully synced to Azure AD — use Azure Automation with Hybrid Runbook Workers. ServiceNow triggers a runbook via the Azure Automation REST API, and the Hybrid Worker executes the PowerShell script on your local infrastructure.
Building this integration yourself gives you full control, but the maintenance burden is real. Each automation pattern needs error handling, retry logic, token management, and monitoring. As you add more patterns, the custom code grows — and so does the risk surface and maintenance cost.
The alternative is a purpose-built integration that handles all of this out of the box. Support Team, for example, connects to your ServiceNow instance and Microsoft 365 tenant, uses AI to classify incoming tickets, and executes the appropriate Graph API or Azure Automation operation — with built-in audit trail, security tiers, and token management. No custom ServiceNow development required.
The right choice depends on your team. If you have a dedicated ServiceNow platform team and want full customization, building makes sense. If you want to automate quickly without maintaining integration code, a managed solution gets you there faster.
Graph API manages cloud-native Azure AD objects. For on-premises AD operations (like resetting passwords for users not synced to the cloud), you need Azure Automation with a Hybrid Runbook Worker that executes PowerShell commands on your local domain controller.
Microsoft Graph enforces per-app throttling and returns HTTP 429 when limits are hit. ServiceNow REST Messages do not handle 429 natively. You need a custom Script Include that detects 429 responses, reads the Retry-After header, and requeues the request with exponential backoff.
All automations using that app registration stop immediately. There is no grace period. Set a calendar reminder 30 days before expiration, and ideally automate rotation using Azure Key Vault with a rotation policy.
Support Team provides a production-ready integration between ServiceNow and Microsoft 365. AI-powered ticket resolution, Graph API operations, Hybrid Worker support, and full audit trail — no Flow Designer or custom scripting required.
See How It Works