How to Sync Time Tracking Data between ServiceNow and Jira

Published: Feb 24, 2020 | Last updated: Feb 20, 2026

time-related info between Jira and ServiceNow
Table of Contents

When your IT operations team works in ServiceNow, and your development team tracks work in Jira, keeping time tracking data in sync between the two platforms becomes critical for budget visibility and resource planning. Here’s how to set up automated time tracking synchronization between ServiceNow and Jira using Exalate.

The Question

We have the following workflow:

  • An incident is raised on ServiceNow.
  • This incident escalates towards Jira, where an Epic is created.
  • The Epic is broken down into stories. Every story has a time estimate and the actual time spent information.

The question is: Is it possible to synchronize this time-related information back to the incident, so that we can keep track of the budget consumed by the development activities?

The Answer

Overview

This use case is an advanced synchronization scenario and needs some explanation. The overall flow is as follows:

  • The incident is escalated to Jira using an Exalate trigger.
  • Exalate creates an epic in Jira.
  • This epic is broken down into stories.
  • Whenever a story is created or modified, sync is triggered on the parent epic.
  • During the sync from the Epic to the incident, the time tracking information is tallied and included in the message to the incident.
  • This information is included in custom fields on the incident.

The Details

Step 1: The Incident is Escalated to Jira

In Exalate for ServiceNow, you can define a trigger that regularly checks if an incident should be synchronized. Triggers use platform-native filter queries, so you can target specific assignment groups, urgency levels, or any condition available in ServiceNow’s advanced search syntax.

In this case, an additional state has been added so the user has an easy way to send over the incident. The incident gets wrapped into a message, and the message is sent over to Jira.

Step 2: Exalate Creates an Epic in Jira

Exalate receives the message, determines if this is the first time the incident is being synced, and processes the incoming script to:

  • Create the epic
  • Fill in the epic name custom field (which is mandatory for Epics)
  • Create a synchronization relationship between the incident and the epic

A link is also added to the incident.

Step 3: The Epic is Broken Down into Stories

This is something the development team does manually, resulting in a detailed mini project plan with time estimates on each story.

Step 4: Story Changes Trigger a Sync on the Parent Epic

Using a script listener, update events on stories are escalated into the sync of the parent epic. This ensures that any time logged on a child story automatically triggers an update back to ServiceNow.

Step 5: Time Tracking Information is Tallied and Sent to ServiceNow

Whenever an epic is synced, all the relevant time tracking information is collected from the underlying stories (and optionally subtasks). This includes:

  • Total time spent across all stories
  • Total original estimates
  • Total remaining estimates

The outgoing script on the Jira side handles this aggregation using externalized logic, then includes the tallied values in the replica sent to ServiceNow.

Step 6: Custom Fields on the Incident are Updated

The incoming script on the ServiceNow side maps the aggregated time data to custom fields on the incident. 

This gives IT operations and project managers full visibility into the budget consumed by development activities, without anyone having to manually update ServiceNow.

Why This Matters for Budget Tracking

This approach solves a common pain point for organizations running ServiceNow for IT operations and Jira for development. Without this kind of integration, tracking how much development time an incident consumes requires manual updates or separate reporting tools.

With Exalate syncing time data automatically, you get:

  • Real-time visibility into development efforts directly within ServiceNow
  • Accurate budget tracking per incident without duplicate data entry
  • Aggregated time from multiple Jira stories rolled up into one ServiceNow view
  • Historical data for capacity planning and cost allocation

How Exalate Handles This 

Exalate uses a Groovy scripting engine that gives you full control over what data flows between Jira and ServiceNow and how it’s transformed. For this use case, the key capabilities are:

  • Triggers: Define conditions using JQL on the Jira side and filter queries on the ServiceNow side to control which work items enter the sync.
  • Custom field mapping: Sync any field available via REST API, including time tracking fields, custom fields, and computed values.
  • Aida (AI-assisted configuration): Describe what you want to sync in plain language, and Aida generates the Groovy scripts for you. For example, you could tell Aida “aggregate time spent from all child stories of an epic and send it to ServiceNow.”
  • Test Run: Before deploying your time tracking sync to production, test the scripts against real data to verify the field mappings are correct.
  • Script versioning: Every time you publish a configuration change, a new version is created. If something breaks, roll back to the previous working version.

Setting Up This Integration

To get started with syncing time tracking data between Jira and ServiceNow:

  1. Go to exalate.app and create an account (or log in if you already have one).
  2. Create a workspace and add your Jira and ServiceNow instances by entering their URLs and authenticating.
  3. Create a connection between Jira and ServiceNow.
  4. Configure your sync rules. You can use the “Edit & Test” option to open the draft editor and customize the outgoing and incoming scripts for time tracking fields.
  5. Use Aida to help generate the time aggregation logic, or write the Groovy scripts yourself.
  6. Run a Test Run to verify that the time data flows correctly before publishing.
  7. Add triggers to automate the sync based on your conditions (for example, sync all incidents with a specific assignment group or urgency level).
  8. Publish and monitor. 

For the detailed configuration scripts used in this use case or any other help, reach out through our community channel.

Recommended Reading:

Subscribe to the Newsletter

Join +5.000 companies and get monthly integration content straight into your inbox

Shopping Basket