Jira Cloud data integration

After the integration is configured, CloudBees Engineering Efficiency stores Jira Cloud information in the System of Record for each instance that has installed the app.

Detailed information about the data collected is described below.

How CloudBees Engineering Efficiency handles data from Jira

CloudBees Engineering Efficiency stores the following data from a Jira integration:

  • Issue

  • Comment

  • Instance. CloudBees Engineering Efficiency stores server information for each Jira Cloud instance to get the time zone offset configured in Jira for the instance and apply it to timestamps on comment events that are missing it.

  • User, but only the following fields:

    • Display name - The public profile name

    • Key - The Jira handle

    • Account ID - The unique identifier for the profile, provided by Jira

    • URL - The URL for the user profile

    • Avatar - The URLs for the profile’s avatars

    • Time zone - The time zone for the profile

    • Active - The active/closed status for the profile

The private Jira user data associated with the Jira issues and comments, such as assignee, author, etc., is stored separately from the other Jira data. CloudBees complies with Jira’s User Privacy Guide for App Developers. This requires frequently reporting back to Jira Cloud with the data that is stored for each user. This allows for each user to know what data is stored in the System of Record for their profile, see when the data was last updated, and request the data to be modified or deleted.

After the Jira Cloud app is uninstalled, all user data associated with the Jira Cloud instance is deleted from the System of Record.

How the service works

The customer installs a Jira Cloud app developed by CloudBees into their Jira Cloud instance. Once installed, this app runs a sync operation to send CloudBees Engineering Efficiency data from the Jira Cloud instance, then sends updates as data is created, updated, and deleted. The sync operation also repeats periodically and resends all data created or updated since the last sync.

The app sends data that includes the following:

  • Issues

  • Issue comments

  • Sprints

  • Boards

  • Issue changelogs

User information is removed from issues and issue comments on ingestion and stored separately in the System of Record. Atlassian requires automated reporting on the consistency of user data stored by CloudBees. CloudBees Engineering Efficiency reports this data in compliance with Atlassian’s user privacy guide for app developers.

The data is sent to the CloudBees Engineering Efficiency backend service via the REST API. This service handles authentication and is responsible for verifying Atlassian is a source of data update and validating the plugin on the initial installation. The backend receives and stores your data where it can be retrieved and used by the System of Record GraphQL for your applications. This is the same methodology that is used with Jira Server.

Data syncs between Jira Cloud and System of Record

After the CloudBees Software Delivery Management app is installed for Jira Cloud and a new Jira Cloud integration is created, several installation scans are started simultaneously. The scans fetch data entities from Jira via the Jira Cloud REST API, including all of the data for Projects, Sprints, Boards, Issues, Issue Changelog History, Comments, and the Users associated with those entities.

These scans run concurrently, and retrieve and publish the data to the CloudBees Engineering Efficiency service as quickly as possible. The process continues until all the data has been retrieved and published. For large organizations, this can take a few hours.

Scans are run hourly to retrieve all of the Sprint and Board data. Also, once an hour, all of the Issues that were created or updated within the last hour are retrieved and sent to the CloudBees Engineering Efficiency service. This also includes extracting the Projects, Comments, Changelog history, and Users associated with these Issues. This data is retrieved through the Jira Cloud REST API.

Once an integration has been set up, the CloudBees Software Delivery Management app triggers webhook events to the CloudBees Engineering Efficiency any time an Issue, Field, Comment, Sprint, or Board is created, updated or deleted. These webhook events are processed directly and do not result in subsequent API calls back to Jira Cloud from CloudBees Engineering Efficiency.

How Jira Cloud differs from Jira Server integration

In contrast to the traditional plugin model used by Jira Server, the Jira Cloud integration utilizes Atlassian’s Connect App API to sync and retrieve your data directly from Atlassian.

Connecting Jira Cloud to CloudBees Engineering Efficiency

Integration with Jira Cloud is provided through the CloudBees SDM app. Once installed on your Jira Cloud, the app establishes a push-based connection that sends the latest Jira changes to the System of Record after an initial push of existing data. The Jira app connects directly to https://app.cloudbees.com.

Jira Cloud app REST APIs

The CloudBees Software Delivery Management app publishes data to app.cloudbees.com using a REST API. Invocations of the REST API are executed over HTTPS and authenticated using a shared secret that is associated with the Jira Cloud during setup.

The CloudBees Software Delivery Management app uses the following webhook events. Details about the webhook events are available in the Atlassian Developer documentation.

Issue webhooks

  • Created (jira:issue_created)

  • Updated (jira:issue_updated)

  • Deleted (jira:issue_deleted)

Comment webhooks

  • Created (comment_created)

  • Updated (comment_updated)

  • Deleted (comment_deleted)

Sprint webhooks

  • Created (sprint_created)

  • Deleted (sprint_deleted)

  • Updated (sprint_updated)

  • Started (sprint_started)

  • Closed (sprint_closed)

Board webhooks

  • Created (board_created)

  • Updated (board_updated)

  • Deleted (board_deleted)

  • Configuration changed (board_configuration_changed)

All Issues, Comments, Sprints, and Boards on the Jira Cloud are sent to CloudBees Engineering Efficiency upon app installation. Whenever one of those types is created, updated, or deleted a webhook event is generated by the app and sent to CloudBees Engineering Efficiency to update or remove the data for that entity in the System of Record. To ensure data consistency between the Jira Cloud and CloudBees Engineering Efficiency,sync events containing Issues, Comments, Sprints, and Boards are sent to CloudBees Engineering Efficiency hourly. These events contain all of the entities (of the aforementioned types) that were created or updated since the last sync event was sent, and these are sent to the respective endpoints documented above, based on the event type.

Data sent from the Jira Cloud app

The following data is synchronized to the CloudBees Engineering Efficiency SaaS on an ongoing basis and stored in the System of Record.

Data collected about Jira Cloud

CloudBees Engineering Efficiency stores the following Jira Cloud information in the System of Record for each instance that has installed the app:

Client key

The unique identifier for the Jira Cloud.

Shared secret

The secret used for JWT Authentication and Authorization for communication between CloudBees Engineering Efficiency and the Jira Cloud app.

Server version

The version of the Jira Cloud.

Plugins version

The version of Atlassian Connect running on the Jira Cloud server.

Base URL

The URL for the Jira Cloud.

Installed

The flag denoting if the plugin is currently installed on a Jira Cloud.

Public key

The public key for the Jira Cloud instance.

Product type

The category of Atlassian product (jira).

Description

The description for the Jira Cloud product.

Jira Cloud users

Display name

The user’s public display name.

Key

The Jira handle, for example, username.

Account ID

The unique identifier for the user, provided by Jira.

Self

The URL for the user profile.

Avatar

The URLs for the user’s avatars.

Time zone

The user’s time zone.

Active

The active/closed status for the user.

Jira Cloud issue comments

Jira Issue ID

The ID of the issue to which this comment belongs, for example, 10001.

Jira Issue Key

The key of the issue, for example, PROJECT-123.

CloudBees Jira Issue ID

The synthetic ID composed of the client key for the Jira Cloud instance associated with the comment and the Jira Issue ID for the comment.

Self

The URL of the comment.

Body

The text representation of the comment body.

Rendered Body

The sanitized, HTML representation of the comment body.

Author Account ID

The author’s unique account ID.

Update Account ID

The update author’s unique account ID.

Created

The comment created timestamp.

Updated

The comment updated timestamp.

Jira Cloud issues

Jira Issue Id

The ID of the issue, for example, 10001.

Jira Issue Key

The key of the issue, for example, PROJECT-123.

CloudBees Jira Issue ID

The synthetic ID composed of the client key for the Jira Cloud instance associated with the issue and the Jira Issue ID.

Self

The URL of the issue.

Features

Any features that this issue is associated with.

Policy results

The results of evaluating policies against this issue.

Assignee ID

The assignee’s unique account ID.

Creator ID

The creator’s unique account ID.

Reporter ID

The reporter’s unique account ID.

Epic Link

The link to the issue’s epic.

Sprint

The link to any current sprint the issue belongs to.

Jira Sprint Ids

A collection of the sprint IDs for all the sprints that included this issue.

Description

The sanitized, HTML representation of the issue’s description.

Issue fields:

  • Issue Type

  • Project

  • Summary

  • Status

  • Status Change Date

  • Description

  • Created

  • Updated

  • Last Viewed

  • Priority

  • Rank

  • Votes

  • Watches

  • Issue Links (to other related Issues)

  • Resolution

  • Resolution Date

  • Labels

  • Time Spent

  • Aggregate Time Spent

  • Time Estimate

  • Time Original Estimate

  • Aggregate Time Estimate

  • Work Ratio

  • Story Points

  • Progress

  • Aggregate Progress

  • Versions

  • Fix Versions

  • Attachments

  • Subtasks

Jira Cloud sprints

Jira Sprint ID

The ID of the sprint.

State

One of active, closed, or future.

Name

The name of the sprint.

Start date

The date the sprint started.

End date

The date the sprint ended.

Origin Board ID

The ID of the board from which the sprint was created.

Origin Jira Board

the board from which the sprint was created.

Goal

The sprint’s goal.

Self

The URL of the sprint.

Jira Cloud Issue IDs

A collection of IDs of the Jira Cloud issues that belong to this sprint.

Jira Cloud Issues

A collection of Jira Cloud issues that belong to this sprint.

CloudBees Jira Cloud Issue IDs

The synthetic IDs composed of the client key for the Jira Cloud instance. associated with the sprint and the Jira Issue IDs that belong to this sprint.

Policy results

The results of evaluating policies against this sprint.

Jira Cloud boards

Jira Board ID

The ID of the board.

Name

The board’s name.

Self

The URL of the board.

Type

The value can be scrum, kanban, or simple.

Location:

  • Project ID

  • Display Name

  • Project Name

  • Project Key

  • Project Type Key (software, business. or service_desk)

  • Avatar URI

    Jira Sprints

    A collection of sprints that are associated with this board.

    Jira Sprint Ids

    A collection of the sprint IDs for all the sprints that are associated with this board.

    Policy results

    The results of evaluating policies against this board.

Jira Cloud Issue changelog entries

Jira Cloud Issue Changelog Entry ID

The ID of the changelog entry.

Self

The URL of the changelog entry.

Jira Issue ID

The ID of the Jira Issue this changelog is associated with.

CloudBees Jira Issue ID

The synthetic ID composed of the client key for the Jira Cloud instance associated. with the changelog entry and the Jira Issue ID.

Author Account IDKey

The author’s unique account ID.

Created

A changelog entry created timestamp.

Items

The list of items changed.

Jira Issue

The Jira Issue associated with this changelog entry.

Policy results

The results of evaluating policies against this changelog entry.