Tutorials/Copilot Studio/Live ServiceNow Tickets and Knowledge in One Copilot Studio Agent
Copilot Studiointermediate

Live ServiceNow Tickets and Knowledge in One Copilot Studio Agent

Create an agent that pulls verified answers from your knowledge base and live ticket statuses, giving users a unified support experience.

NA
Narmer Abader
@narmer · Published June 3, 2026

Running a modern IT help desk means juggling multiple systems. A user might need a knowledge base article for a forgotten password, and immediately after want to check the status of a pending laptop request. A Copilot Studio agent connected directly to ServiceNow can bridge this gap, providing both proactive knowledge answers and reactive incident statuses in a single conversation.

Think of the scenario at a company like Woodgrove Bank. An employee, let us call her Sasha, needs to know the official policy for requesting a new monitor and wants to confirm her active ticket for a docking station is still being processed. Without leaving the chat, Sasha should be able to get both answers from the agent.

Before You Begin

A few prerequisites to check off first:

  • ServiceNow Admin role to create OAuth API endpoints.
  • A Copilot Studio license and an environment.
  • A ServiceNow instance with populated Knowledge articles and Incident records.

Step 1: Register the ServiceNow Application

To allow Copilot Studio to communicate with ServiceNow, you must create an OAuth application registration.

  1. Log into your ServiceNow instance as an admin.
  2. Navigate to Application Registry.
  3. Click New and select Create an OAuth API endpoint for external clients.
  4. Give it a descriptive name, for example Copilot_Support_Bridge.
  5. For the Redirect URL, enter the Azure APIM standard endpoint: https://global.consent.azure-apim.net/redirect (If you are outside the US, the consent screen may show a regional variant such as canada-001 or europe-001. We will cover this in the troubleshooting section.)
  6. Save the record and copy the Client ID and Client Secret.
  7. Your Instance Name is the first segment of your ServiceNow URL (e.g., dev12345).
Security Note

Protect the Client Secret as you would any service account credential. This token effectively acts as an API key for your instance.


Step 2: Connect the Knowledge Base

With the OAuth credentials in hand, we can now feed ServiceNow knowledge articles into the agent.

  1. In Copilot Studio, create a new agent or open an existing one.
  2. Navigate to the Knowledge tab and click Add knowledge.
  3. Choose the ServiceNow connector.
  4. Select OAuth2 as the authentication type and enter the Instance Name, Client ID, and Client Secret from Step 1.
  5. Consent to the connection. If you see an Invalid redirect URI error, check the browser's address bar in the consent pop-up — it often reveals the correct regional Azure APIM subdomain. Update the redirect URI in ServiceNow to match.
  6. After consent, a list of ServiceNow tables appears. Select the Knowledge table (often named kb_knowledge) and click Add to Agent.
  7. Wait for the indexing status to change to Ready. The time depends on the size of your knowledge base.

Once indexing is complete, you can ask the agent “What is the remote access policy?” or “How do I reset my password?” and it will answer using the verified ServiceNow articles, complete with citations.


Step 3: Add a Topic for Recent Incidents

Now we will build the transactional half of the agent — pulling live ticket data.

  1. Go to the Topics tab.
  2. Create a new topic. Name it Check My Tickets.
  3. Add trigger phrases such as “Show my tickets”, “What are my recent incidents”, or “Check ticket status”.

3.1 List Records from ServiceNow

Add a List Records action from the ServiceNow connector. Configure it with the same OAuth2 connection created earlier and choose Maker-provided credentials.

  • Entity / Table Name: Incident
  • Limit: 5 (we only want the most recent tickets)
  • Filter Query: We need to retrieve only incidents where the caller’s email matches the current user. Use the following Power Fx expression directly in the filter query property:
powerfxFilter Query for Current User's Incidents
"caller_id.email=" & system.User.Email & "^ORDERBYDESCopened_at"

This concatenates the static OData field with the dynamic user email variable and sorts the results from newest to oldest.

3.2 Display the List in a Message

After the List Records action, add a Send a message node. Use Power Fx to format the returned records as a readable list.

powerfxFormat the Tickets into a Message
Concat(
  Topic['CheckMyTickets'].value,
  "• " & number & " – " & short_description & " (Opened: " & Text(opened_at, DateTimeFormat.ShortDate) & ")",
  Char(10)
)

Topic['CheckMyTickets'].value — the standard output array from the connector (use the exact topic name you defined). • number — the incident number (e.g., INC0012345). • short_description — the ticket summary. • opened_at — the creation date, formatted for readability. • Char(10) — inserts a line break between items.


Step 4: Test the End-to-End Experience

To simulate a real user:

  1. Go to your ServiceNow Users table. Find the user record with the email that matches the Microsoft Entra ID (formerly Azure AD) account you are testing with in Copilot Studio.
  2. Create a few test Incident records assigned to that user's email in the caller_id field.
  3. Open the Test panel in Copilot Studio. Say “Show my recent tickets”.
  4. The agent should respond with a formatted list of your test incidents, sorted by the most recent first.

Try mixing a knowledge question: “How do I set up out-of-office replies?” followed immediately by “What are my open tickets?” The agent handles both in the same conversation flow.


Security, Permissions & Common Pitfalls

  • Invalid Redirect URI: If the consent pop-up shows an address like https://canada-001.consent.azure-apim.net/redirect, copy that exact address into the Redirect URL field of your ServiceNow app registration. Do not use the generic global endpoint if your region requires a specific one.
  • No Incidents Returned: Verify three things: (1) the email address in ServiceNow matches exactly, (2) the caller_id field is populated on the Incident records, and (3) the OAuth application user has the snc_platform_rest_api_access role and read permissions on the incident table.
  • Knowledge Fails to Index: Very large knowledge bases can time out. Try restricting the view or reduce the number of articles in the scope of the OAuth application.
  • Maker vs. User Credentials: Using Maker-provided credentials keeps the setup simple but runs the query under a service account. Ensure this service account has read-only ACLs on the Knowledge and Incident tables unless you specifically need write access.

Final Recommendation

This pattern transforms a static FAQ bot into a unified help desk concierge. Start with the knowledge base connection, then layer on the live incident lookup. Once this foundation is solid, extend it by adding topics for:

  • Creating a new incident directly from the chat.
  • Updating a ticket priority or status.
  • Proactive notifications when a ticket is resolved.

The goal is a single, conversational interface that reduces the notorious “swivel-chair” experience of jumping between portals. The framework you have built here is the first step toward a fully autonomous support agent powered by ServiceNow and Copilot Studio.


References