# Resolving Error 500 in Jira ServiceNow Integration

### Introduction

Integrating Jira and ServiceNow connects software development and IT service management teams so they can work from a shared source of truth. An **Error 500** is a server-side error, and in this integration, it almost always points to non-authorized access or a connection problem rather than a fault inside Getint. This guide walks through the checks and ServiceNow configuration needed to clear it.

Most Error 500 cases come down to one of two things: the ServiceNow user is missing an ACL on one of the system tables Getint reads, or the user's password is flagged for reset. Work through the steps below in order, and you will rule out both.

<figure><img src="/files/VtaboBNofFuM1w6NFgJd" alt=""><figcaption></figcaption></figure>

### Before You Begin <a href="#before-you-begin" id="before-you-begin"></a>

To edit Access Control List (ACL) rules, you need to elevate your own ServiceNow session to **security\_admin**. Without this, the ACL records described below cannot be created or modified.

1. Click your profile image and select **Elevate Role**.
2. In the pop-up, choose **security\_admin** and click **Update**.

<figure><img src="/files/AuvXOxj1PqmG6DT9m5fy" alt=""><figcaption></figcaption></figure>

For the full account setup that these steps build on, see [Creating a ServiceNow User for Getint Integration](https://docs.getint.io/guides/integration-synchronization/jira-servicenow-integration/creating-a-servicenow-user-for-getint-integration).

### Troubleshooting Steps <a href="#troubleshooting-steps" id="troubleshooting-steps"></a>

#### 1. Verify the ServiceNow Instance URL <a href="#id-1.-verify-the-servicenow-instance-url" id="id-1.-verify-the-servicenow-instance-url"></a>

An incorrect or outdated URL is the simplest cause of a connection failure.

* Open the Getint integration setup and confirm the configured URLs match your live Jira and ServiceNow instances exactly, including the protocol (`https://`) and any instance subdomain.
* Watch for trailing slashes, copied-in whitespace, and developer or sandbox instances that have since been retired.

<figure><img src="/files/6O2JRJ8BpDsg96FNDckM" alt=""><figcaption></figcaption></figure>

#### 2. Clear the "Password needs reset" Flag <a href="#id-2.-clear-the-password-needs-reset-flag" id="id-2.-clear-the-password-needs-reset-flag"></a>

This is the most common cause of a misleading authorization error. When the integration user's password is flagged for reset, ServiceNow blocks the connection and reports a permissions error, even though the permissions themselves are correct.

1. Go to **User Administration > Users** and open the integration user.
2. Make sure **Password needs reset** is unticked.
3. If it was ticked, click **Set Password**, save the new password, and update the credentials stored in Getint.

<figure><img src="/files/h7jW8zAVmYmrQPwUTJXj" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
The error message in this situation says the user lacks sufficient permissions. That message is misleading. The real cause is the password reset flag, not the user's roles or ACLs.
{% endhint %}

#### 3. Confirm the ITIL Role and Integration Role <a href="#id-3.-confirm-the-itil-role-and-integration-role" id="id-3.-confirm-the-itil-role-and-integration-role"></a>

The integration user needs the right roles to read and write the records being synchronized.

1. Go to **User Administration > Users** and select the integration user account.
2. Open the **Roles** tab and click **Edit**.
3. In the Collections list, add the **itil** role.
4. Add the dedicated Getint role you created for this user.
5. Click **Save**, then **Update**.

<figure><img src="/files/2Aok0sQzFh3RLQnRNLqg" alt=""><figcaption></figcaption></figure>

#### 4. Create the Required Table ACLs <a href="#id-4.-create-the-required-table-acls" id="id-4.-create-the-required-table-acls"></a>

This is the step most often missing when Error 500 persists after the password and roles are correct. Getint reads several ServiceNow system tables to understand your schema and to move comments back and forth. Each one needs a read ACL tied to the Getint role, and the journal table also needs write access.

| Table            | Internal name       | Why Getint needs it                                                                                                                                                                         | Access         |
| ---------------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- |
| Dictionary Entry | `sys_dictionary`    | Defines the structure and attributes of every field on every table, so Getint can read field types and properties (reference, string, length, required status) and map data correctly.      | Read           |
| Field Class      | `sys_glide_object`  | Stores the low-level definitions of the fundamental data types used by fields, helping Getint interpret each field's native type.                                                           | Read           |
| Choice           | `sys_choice`        | Holds the drop-down options for choice fields (for example Incident State or Priority), with both the internal value and the display label, which Getint uses for status and value mapping. | Read           |
| Journal Entry    | `sys_journal_field` | Stores journal-type entries such as Additional comments and Work notes. Getint reads these to sync comments out and writes them back to keep a full history.                                | Read and Write |

To create the rules, go to **System Security > Access Control (ACL)** and add the following six records. For every record, set the **Operation**, choose the table in the first **Name** dropdown and the field scope in the second dropdown, add a short **Description**, and add the **Getint role** under **Requires role**.

1. **Read** on `sys_dictionary`, second dropdown set to **\*** (all fields).
2. **Read** on `sys_dictionary`, second dropdown set to **None** (the table record itself).
3. **Read** on `sys_glide_object`, second dropdown set to **\***.
4. **Read** on `sys_glide_object`, second dropdown set to **None**.
5. **Read** on `sys_choice`, second dropdown set to **\***.
6. **Read** on `sys_journal_field`, second dropdown set to **None**.

For the full screenshots of each ACL record, follow the dedicated walkthrough in [Creating a ServiceNow User for Getint Integration](https://docs.getint.io/guides/integration-synchronization/jira-servicenow-integration/creating-a-servicenow-user-for-getint-integration).

{% hint style="warning" %}
Add the **Getint role** to the **Requires role** section of all six records. An ACL with no required role, or the wrong role, will not grant the access Getint needs, and the Error 500 will continue.
{% endhint %}

#### 5. Re-test the Connection <a href="#id-5.-re-test-the-connection" id="id-5.-re-test-the-connection"></a>

After the password flag, roles, and ACLs are in place:

1. Save the credentials in the Getint integration settings.
2. Test the connection.
3. If it still fails, confirm your session was elevated to **security\_admin** when you created the ACLs, since records created without elevation may not save correctly.

<figure><img src="/files/IicY28PrSZHtMc35dW9K" alt=""><figcaption><p>If all the permissions were created correctly, the new connection will go through and be available for selection.</p></figcaption></figure>

### Conclusion <a href="#conclusion" id="conclusion"></a>

Working through these checks resolves the large majority of Error 500 cases between Jira and ServiceNow. In short: confirm the instance URL, clear the password reset flag, assign the **itil** and Getint roles, and create the read and write ACLs on `sys_dictionary`, `sys_glide_object`, `sys_choice`, and `sys_journal_field`.

{% hint style="info" %}
If you need more personalized help, or if you hit something this guide does not cover, contact our support team [here](https://getint.io/help-center).
{% endhint %}

<figure><img src="/files/Q5fSId0qIKWmhFCLF2Pq" alt=""><figcaption><p><a href="https://calendly.com/d/cpws-jb2-8xx/demo-call-all-team
">Start your integration journey. Schedule a free consultation with our Getint Integration Expert today!</a></p></figcaption></figure>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.getint.io/support-legal-and-others/troubleshooting-guide-for-getint-users/resolving-error-500-in-jira-servicenow-integration.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
