Skip to main content

Integrations

ServiceNow Bi-Directional Integration Guide

This guide walks you through setting up a secure, two-way connection between Zenduty and ServiceNow. Once connected, incidents in either platform will stay in sync, ensuring your teams have real-time visibility and control.

Before You Begin

You’ll need access to both:

  • GitHub (to download the integration code)
  • ServiceNow (admin permissions required)

We’ll set up a few things in GitHub first, then in ServiceNow, and finally connect them inside Zenduty.

Prepare GitHub

1.1 Create a Personal Access Token

  1. Sign in to GitHub.
  2. Go to Profile (top right) → Settings → Developer settings → Personal access tokens → Tokens (classic).
  3. Click Generate new token → Generate new token (classic).
  4. Name it something clear (e.g., ServiceNow Integration).
  5. Select the following permissions:
    • repo
    • admin:repo_hook (optional but recommended)
  6. Click Generate token.
  7. Copy the token somewhere safe — you won’t see it again.

1.2 Fork the Integration Repository

  1. In GitHub, search for: Zenduty/zenduty-servicenow.
  2. Open the repository.
  3. Click Fork (top right).
  4. You’ll now have your own copy at:
    https://github.com/<your_username>/zenduty-servicenow

Prepare ServiceNow

2.1 Switch to the Global Scope

  1. Log in to your ServiceNow instance as an admin.
  2. Open: https://<your_instance>.service-now.com/now/nav/ui/classic
  3. Click the sphere icon in the top-right → Application Scope → Global.

2.2 Add GitHub Credentials to ServiceNow

  1. Go to: https://<your_instance>.service-now.com/discovery_credentials_list.do
  2. Click NewBasic Auth Credentials.
  3. Fill in:
    • Name: GitHub Integration Credential
    • User Name: Your GitHub username
    • Password: The GitHub token you created in Step 1.1
  4. Save.

2.3 Allow Access to Required Tables

For each of these tables:

  • incident
  • sys_user_group
  • cmdb_ci
  • sys_journal_field

Do this:

  1. Open the table (via https://<your_instance>.service-now.com/sys_db_object_list.do).
  2. Under Application Access:
    • ✅ Can read
    • ✅ Can create
    • ✅ Can update
    • ✅ Allow access via web services
    • ✅ Allow configuration
  3. Under Controls:
    • ✅ Extensible
  4. Click Update.

2.4 Enable OAuth Client Credentials

  1. Go to: https://<your_instance>.service-now.com/sys_properties_list.do
  2. Search for:
    glide.oauth.inbound.client.credential.grant_type.enabled
  3. If it exists → set Value to true.
  4. If it doesn’t exist → create it:
    • Name: glide.oauth.inbound.client.credential.grant_type.enabled
    • Type: true/false
    • Value: true
    • Ignore cache: checked
    • Save.

2.5 Add Custom Fields

Incident Table:

  • Column label: Originated From Type: Choice, Default: servicenow

  • Column label: Zenduty Incident, Type: URL

sys_user_group Table:

  • Column label: Zenduty Escalation Policy, Type: URL

cmdb_ci Table:

  • Column label: Zenduty Integration , Type: URL

Install the Integration in ServiceNow

3.1 Open ServiceNow Studio

Visit:
https://<your_instance>.service-now.com/$studio.do?sysparm_transaction_scope=global&sysparm_use_polaris=true

3.2 Import the App from GitHub

  1. Click Import from Source Control.
  2. Fill in:
    • Network Protocol: http
    • URL: https://github.com/<your_username>/zenduty-servicenow
    • Credential: GitHub Integration Credential (from 2.2)
    • Branch: main
  3. Click Import.

3.3 Configure OAuth

  1. In ServiceNow Studio, open the Zenduty application.
  2. Go to Application Registries → Zenduty OAuth.
  3. Add the field OAuth Application User to the form layout.

After clicking this you might see this

Click edit this section in Global
Add OAuth Application User to selected fields and save.
Now you will be able to see OAuth Application User in Zenduty OAuth file

  1. Assign this user the following roles:
    • oauth_admin
    • web_service_admin
    • rest_service
    • itil
  2. Copy the Client ID and Client Secret — you’ll need them shortly.
  3. Copy the Scope by navigating to App details.

Copy only your ServiceNow instance name from the URL. It will be something like https://<ServiceNow_Instance>.service-now.com/

Connect ServiceNow to Zenduty

  1. In Zenduty, go to Profile → Account → Connections → ServiceNow.
  2. Click Configure.
  3. Fill in:
    • Client ID
    • Client Secret
    • Scope
    • ServiceNow instance name
  4. Click Add.

Your ServiceNow tenant is now connected to Zenduty.

Add Escalation Policy Mapping to a ServiceNow Assignment Group

  1. In Zenduty, go to the ServiceNow Connections.
  2. Click Add Mapping.
  3. From the Assignment Group dropdown, select the ServiceNow group you want to map.
  4. From the Escalation Policy dropdown, choose the Zenduty escalation policy you want linked to that group.
  5. Click Add Mapping to save your changes.
💡
When a ServiceNow incident is assigned to a mapped Assignment Group, Zenduty will automatically create a corresponding incident using the linked Escalation Policy. If the mapped Escalation Policy belongs to a different team and that team is private, Zenduty will instead use the service’s default Escalation Policy.

Set Up Mappings & Outgoing Integration

  1. In Zenduty, map Escalation Policies to ServiceNow Assignment Groups.
  2. Go to: Teams → [Your Team] → Services → [Service] → Add Outgoing Integration.
  3. Search for ServiceNowAdd Integration.

Configure:

Mapping Type: OR (either condition triggers) or AND (both required)

Assignment Group and/or Configuration Item

Direction (one-way or two-way)

Status mapping

Urgency mapping

Note & Priority syncing

Mandatory fields for acknowledge/resolve actions

Click Save.

✅ Done — Zenduty and ServiceNow now exchange incidents in real time.

Zenduty SignUp