Jira Product Discovery integration for Jira Data Center

The Jira Product Discovery integration for Jira Data Center app connects Jira Data Center work items with Jira Product Discovery ideas. This integration allows you to view work tracked in a Jira Data Center instance from a discovery space, ensuring a seamless transition to development while maintaining a clear link between discovery and delivery.

Get a Jira Product Discovery Premium plan

The Jira Product Discovery integration for Jira Data Center app is free to use with Jira Data Center. However, you need a Jira Product Discovery Premium plan to link Jira Data Center with Jira Product Discovery.

To get a Jira Product Discovery Premium plan, you can:

はじめる前に

  • You must use Jira Data Center 10.3 or newer to use the app. Jira Data Center 10.3.10 is required for the idea panel integration to work correctly.

  • You must be a site admin for both the Jira Data Center instance and the Jira Product Discovery site.

  • You must enable work item linking in your Jira Data Center.

  • (Optional) You need org admin access for the cloud site to set up application tunnels if your instance is behind a firewall.

  • If you’re using application tunnels, a single Jira Data Center instance can link to only one Jira Product Discovery site, and vice versa. This limitation doesn’t apply to application links.

  • Your Jira Product Discovery site must be on a Premium plan.

  • Users working with this integration app need access to both Jira Data Center and Jira Product Discovery sites.

Install the integration app

  1. (Optional) Follow the steps to connect to Data Center instances with application tunnels if your instance is behind a firewall.

  2. Install the Jira Product Discovery integration for Jira Data Center app on the Jira Data Center instance.

  3. Follow the steps to create an application link between Jira Data Center and Jira Product Discovery. Note that if you use application tunnels, you can only set up application links from the Jira Product Discovery side.

Authenticate as a user

Before using the Jira Product Discovery integration for Jira Data Center app, your users must perform OAuth cross-authentication between their Jira Data Center and Jira Product Discovery accounts. Explore more information about OAuth authentication.

Use the integration

Once an admin has configured the integration app, users can easily create or link existing Jira Data Center work items from Jira Product Discovery.

はじめる前に

  • If you’re using application tunnels, a single Jira Data Center instance can link to only one Jira Product Discovery site, and vice versa. This limitation doesn’t apply to application links.

  • You must have permission to view Jira Data Center work items.

  • You can see ideas linked to Jira Data Center work items only if your authorized Jira Product Discovery account has the necessary permissions.

  • You can see Jira Data Center work items linked to Jira Product Discovery ideas only if your authorized Jira Data Center account has the necessary permissions.

  • You can create Jira Data Center work items from Jira Product Discovery only if your authorized Jira Data Center account has the CREATE_ISSUES permission for the target space and only the following fields are set as required: Project, Issue type, Summary, and Assignee.

  • Delivery progress is calculated based on work items accessible to the viewing user’s authorized Jira Data Center account. Therefore, delivery progress may vary depending on the user’s Jira Data Center permissions.

Creating work items from Jira Product Discovery won’t work if there are any required fields. See Specifying field behavior | Administering Jira applications Data Center 11.1 | Atlassian Documentation for information on how to change your field settings.

To create a Jira Data Center work item from Jira Product Discovery:

  1. In Jira Product Discovery, go to the target space and select the idea for which you want to create a new work item.

  2. On the right panel, select Delivery.

  3. Select + Create work item.

  4. From the dropdowns, select the target site, space, work type, and modify the name if needed.

  5. (Optional) Check Embed the idea description and fields into the work item.

  6. [作成] を選択します。

To link a Jira Data Center work item to a Jira Product Discovery idea:

  1. In Jira Product Discovery, go to the target space and select the idea to which you want to link a work item.

  2. On the right panel, select Delivery.

  3. Select Link a Jira work item.

  4. From the dropdowns, select the target site, space, and work item.

  5. 追加 を選択します 。

Once the work item is created or linked, you can see the Delivery progress bar and a list of linked Jira work items. You can now track the progress directly in Jira Product Discovery and see the linked ideas inside the Jira work items.

Ideas panel

When the Jira Product Discovery integration for Jira Data Center app is installed and enabled, linked ideas are displayed in the idea panel within the work item view.

Ideas panel from the work item in Jira Data Center

When the app is uninstalled or disabled, linked ideas are displayed in the work item links panel as regular links.

If your Jira Data Center has a custom work item (issue) link of the type “implements”, these links will always appear in the ideas panel in Jira Product Discovery, even if they don’t correspond to ideas.

Data residency and security

Data shared with Jira Product Discovery

The Jira Product Discovery integration for Jira Data Center app shares data required to display application links in Jira Product Discovery and calculate the delivery progress of work items.
Explore how to configure the delivery progress field

In particular, the Jira Product Discovery integration for Jira Data Center app shares the following data with Jira Product Discovery:

  • Standard issue link metadata, such as app icon, status, work item key, and work item summary

  • Delivery progress details as shown in the following JSON snippet:

[ { "id": 10003, "parentId": 10004, "key": "SCRUM-4", "status": "new", "dueDate": 1754092800000, "storyPoints": 1.25, "actualStart": 1754006400000, "actualEnd": 1754092800000 }, ... ]

The same considerations apply as for the app links. Check out how to configure work item linking for Cloud and Data Center

Data residency for delivery progress

Delivery progress data isn’t permanently stored in Jira Product Discovery. Instead, it’s fetched on demand whenever it needs to be displayed to the user. This might have memory and performance implications for your instance. Check the Performance implications section for more information.

セキュリティ

For the Jira Product Discovery integration for Jira Data Center app to work, your users need to have both Jira Data Center and Jira Product Discovery accounts which will authorize each other through the application links platform. This has the following implications:

  • Jira Data Center users will only see Jira Product Discovery ideas linked to Data Center work items if their authorized Jira Product Discovery account has the permissions required to view these ideas.

  • Jira Product Discovery users will only see Jira Data Center work items linked to Jira Product Discovery ideas if their authorized Jira Data Center account has the permissions required to view these work items.

  • Jira Product Discovery users can only create Jira Data Center work items from Jira Product Discovery if their authorized Jira Data Center account has the permissions required for the target project.

  • Delivery progress in Jira Product Discovery is calculated based only on work items that the viewing user’s authorized Jira Data Center account has access to. As a result, the value of delivery progress may vary depending on the user’s Jira Data Center permissions.

Only users who have the link work items permission can create and remove links between work items and ideas. When a user removes a link to an idea from Jira Data Center, this action won’t remove the idea itself from Jira Product Discovery. The converse is also true - removing a link to a work item won't remove the work item itself.

Performance implications

We tested the Jira Product Discovery integration for Jira Data Center app with three different environment Jira Data Center configurations to determine the maximum load that a single node can handle. Our tests were designed based on metrics gathered from production Jira Product Discovery. As a result, we decided on a maximum load of 500 requests per minute, a P50 response size of 500 items, a P95 response size of 5,000 items, and a maximum response size of 60,000 items. Note that handling 60,000 items in a single response consumes around 40 MB of heap.

The expected average network traffic for different response sizes at 500 requests per minute is presented in the following table.

Items in response

Data received

500

547 KB/s

5,000

5470 KB/s

60,000

65 MB/s

The following table shows the performance metrics for different environment types and response sizes. The tests were performed with the test client and the Jira Data Center node located in the same AWS region and with no other user traffic. The values shown are P99 times in milliseconds.

Response size

500 items

5,000 items

60,000 items

環境

 

 

 

32 GB RAM, 4 CPU, 20 GB heap

500/min: 206 ms

1000/min: 538 ms

500/s: 643 ms

 

100/min: 3443 ms (max reasonable)

500/min: 467141 ms

64 GB RAM, 32 CPU, 32 GB heap

500/min: 155 ms

2000/min: 271 ms

500/s: 243 ms

2000/min: 358 ms

500/min: 1196 ms

1000/min: 1401 ms

128 GB RAM, 32 CPU, 100 GB heap

500/min: 170 ms

2000/min: 384 ms

500/min: 258 ms

2000/min: 445 ms

500/min: 1110 ms

2000/min: 2002 ms

Rate limiting

Jira Data Center includes built-in rate limiting that lets admins prevent users from overloading the system with requests. Testing this integration revealed that a large Jira Product Discovery board with many linked Jira Data Center work items uses far more node resources than multiple smaller boards, increasing load nonlinearly. To address this, we added a rate-limiting layer based on the number of requested work delivery items to the app.

Implementation details

The algorithm we implemented uses a standard token-based method with a fixed refill window, making it simple to understand and use. However, its fixed window size can cause spikes and bursts.

Moreover, the solution isn’t clustered. Instead, each Jira Data Center node runs in a separate environment. Combined with sticky sessions and custom rules (like read-only nodes), each cluster node may have different load characteristics. This design lets admins apply per-node settings.

The token system reflects the number of work items requested by the Jira Product Discovery board. For example, a board with 10 Jira Data Center work items consumes 10 tokens.

Configure and enable rate limiting

Rate limiting is disabled by default. You can enable it by passing the -Djpdc.feature.rate.limiting.enabled=true Java environment variable.

By default, the window time is set to 1 minute and the number of tokens is set to 12 million (2,000 requests times 60,000 items - see table above). To change these values, edit the following properties:

// Below property changes fixed window size to 1 min. // Hence bucket will be refilled every 1 minute for its max capacity. -Dcom.atlassian.jpdc.connector.rate.limiting.window.time.in.milliseconds=60000 // Below property changes bucket size to 10 tokens. Hence all users can only // request 10 work items metadata per window. -Dcom.atlassian.jpdc.connector.rate.limiting.bucket.capacity=10

Load balancing

If you plan to distribute the Jira Product Discovery load across multiple Jira Data Center nodes, note that some nodes may reach capacity faster than others. Adjust your load balancing rules and sticky sessions to redirect calls to other nodes as needed.

監視

Rate limiting characteristics are included with Jira Stats and the Open Telemetry endpoint. Examples you can find it below.
To debug rate limit change DEBUG log level for the following packet: com.atlassian.jpdc.connector.

監視

監査ログ

To enable audit logs for this app, you must set the coverage level to Full for external apps.

Setting full coverage in audit log

Audit logs are stored under:

  • Category: JPD Connector

  • Summary: Delivery Issue Details Request

The following image displays an audit log example.

Audit log example

App logs

By default, the app uses theINFO log level. You can change this in the Jira Data Center logging configuration for the following packet: com.atlassian.jpdc.connector.

Each log line starts with the app’s prefix for easy filtering: [JPDConnector].

To log issueIds from requests and responses, set the log level to TRACE.

This app supports JIRA-STATS logs (both total and snapshot). The com.atlassian.jpdc.stats.logging.interval.minutesvariable defines the stat logging interval in minutes, with a default value of 30. If not defined, com.atlassian.jira.stats.logging.interval is the fallback.

JIRA-STATS logs follow this format:

[JIRA-STATS] [JPDConnector] snapshot stats: {"searchMillis":{"count":0,"min":0,"max":0,"sum":0,"avg":0,"distributionCounter":{}},"searchMillisDistribution":{"100":{"count":0,"min":0,"max":0,"sum":0,"avg":0,"distributionCounter":{}},"500":{"count":0,"min":0,"max":0,"sum":0,"avg":0,"distributionCounter":{}},"1000":{"count":0,"min":0,"max":0,"sum":0,"avg":0,"distributionCounter":{}},"10000":{"count":0,"min":0,"max":0,"sum":0,"avg":0,"distributionCounter":{}},"60000":{"count":0,"min":0,"max":0,"sum":0,"avg":0,"distributionCounter":{}},"9223372036854775807":{"count":0,"min":0,"max":0,"sum":0,"avg":0,"distributionCounter":{}}},"mapErrorsMillis":{"count":0,"min":0,"max":0,"sum":0,"avg":0,"distributionCounter":{}},"requestedIssueCount":{"count":0,"min":0,"max":0,"sum":0,"avg":0,"distributionCounter":{"10":0,"100":0,"1000":0}},"foundIssueCount":{"count":0,"min":0,"max":0,"sum":0,"avg":0,"distributionCounter":{"100":0,"500":0,"1000":0,"10000":0,"60000":0}},"childIssueCount":{"count":0,"min":0,"max":0,"sum":0,"avg":0,"distributionCounter":{"100":0,"500":0,"1000":0,"10000":0,"60000":0}},"errorIssueCount":{"count":0,"min":0,"max":0,"sum":0,"avg":0,"distributionCounter":{"10":0,"100":0,"1000":0}},"usedMemoryMb":{"count":1,"min":933,"max":933,"sum":933,"avg":933,"distributionCounter":{}}, "rateLimitCount":{"count":0,"min":0,"max":0,"sum":0,"avg":0,"distributionCounter":{}},"rateLimitUsedCapacity":{"count":0,"min":0,"max":0,"sum":0,"avg":0,"distributionCounter":{"10":0,"20":0,"30":0,"40":0,"50":0,"60":0,"70":0,"80":0,"90":0,"100":0}}}

メトリック

説明

searchMillis

Calculated time of search operation in milliseconds.

searchMillisDistribution

Distribution of search times by response size.

mapErrorsMillis

Calculated time of mapping all errors for issues.

requestedIssuesCount

Count of issue IDs used in request.

foundIssuesCount

Count of issues found in search.

childIssuesCount

Count of child issues found in search.

errorIssuesCount

Count of issues with errors found in search.

usedMemoryMb

JVM memory used in megabytes.

rateLimitCount

Count of how many times the delivery progress endpoint was
rate-limited

rateLimitUsedCapacity

Distribution of bucket capacity usage in %

Additionally, these metrics are distributed into buckets by count:

  • By issue count in the request

    • for: requestedIssuesCount

    • buckets: 10, 100, 1000, >1000

  • By the delivery ticket count in the response

    • for: searchMillisDistribution, foundIssuesCount, childIssuesCount

    • buckets: 100, 500, 1000, 10000, 60000, >60000

  • By error delivery ticket count in the response

    • for: errorIssuesCount

    • buckets: 10, 100, 1000, >1000

  • By percentage

    • for rateLimitUsedCapacity

    • buckets: 10, 20, 30, 40, 50, 60, 70, 80, 90, 100


OpenTelemetry REST endpoint

Metrics in the OpenMetrics text format are available via the /rest/jpdc/1.0/metrics endpoint if the com.atlassian.jpdc.feature.openmetrics.enabled flag is enabled. Authorization is required to access this resource.

The OpenTelemetry data consists of JVM metrics, request and response counters and histograms, and delivery issue details. The data is assigned to buckets for easier visualization. See each metric’s "le" (lower-equal) value for bucketing details.

# TYPE jvm_threads_current gauge # HELP jvm_threads_current Current thread count of a JVM jvm_threads_current 231.0 # TYPE jpdc_found_issues_count histogram # HELP jpdc_found_issues_count Count of issues found for delivery issue details jpdc_found_issues_count_bucket{le="100.0"} 1.0 jpdc_found_issues_count_bucket{le="500.0"} 2.0 jpdc_found_issues_count_bucket{le="1000.0"} 2.0 jpdc_found_issues_count_bucket{le="10000.0"} 2.0 jpdc_found_issues_count_bucket{le="60000.0"} 2.0 jpdc_found_issues_count_bucket{le="+Inf"} 2.0 jpdc_found_issues_count_count 2.0 jpdc_found_issues_count_sum 529.0 jpdc_found_issues_count_created 1.757496936605E9 # TYPE jpoc_rate_limiting_count counter # HELP jpdc_rate_limiting_count Count of requests that was rate limited for delivery issue details jpdc_rate_limiting_count_total{bucket_size="10"} 7.0 jpdc_rate_limiting_count_created{bucket_size="10"} # TYPE jpdc_rate_limiting_near_limit_count counter # HELP jpdc_rate_limiting_near_limit_count Count of requests that was near limit of bucket jpdc_rate_limiting_near_limit_count_total{is_near_limit="true",near_limit_threshold="8"} 11.0 jpdc_rate_limiting_near_limit_count_created{is_near_limit="true",near_limit_threshold="8"} 1.760084409218E9 jpdc_rate_limiting_near_limit_count_totalfis_near_limit="false",near_limit_threshold="8"} 16.0 jpdc_rate_limiting_near_limit_count_created{is_near_limit="false",near_limit_threshold="8"} 1.760084404258E9

 

さらにヘルプが必要ですか?

アトラシアン コミュニティをご利用ください。