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:
Start a free trial directly from the Jira Product Discovery pricing page if you’re a new customer
Add Jira Product Discovery through admin.atlassian.com if you’re already on Cloud
Upgrade to a Premium plan through admin.atlassian.com or by contacting your Atlassian account manager if you’re already a Jira Product Discovery customer
はじめる前に
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
(Optional) Follow the steps to connect to Data Center instances with application tunnels if your instance is behind a firewall.
Install the Jira Product Discovery integration for Jira Data Center app on the Jira Data Center instance.
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_ISSUESpermission 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:
In Jira Product Discovery, go to the target space and select the idea for which you want to create a new work item.
On the right panel, select Delivery.
Select + Create work item.
From the dropdowns, select the target site, space, work type, and modify the name if needed.
(Optional) Check Embed the idea description and fields into the work item.
[作成] を選択します。
To link a Jira Data Center work item to a Jira Product Discovery idea:
In Jira Product Discovery, go to the target space and select the idea to which you want to link a work item.
On the right panel, select Delivery.
Select Link a Jira work item.
From the dropdowns, select the target site, space, and work item.
追加 を選択します 。
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.
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
},
...
]Data residency for work item links
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.
Work item link 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=10Load 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.
Audit logs are stored under:
Category:
JPD ConnectorSummary:
Delivery Issue Details Request
The following image displays an 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}}}メトリック | 説明 |
|---|---|
| Calculated time of search operation in milliseconds. |
| Distribution of search times by response size. |
| Calculated time of mapping all errors for issues. |
| Count of issue IDs used in request. |
| Count of issues found in search. |
| Count of child issues found in search. |
| Count of issues with errors found in search. |
| JVM memory used in megabytes. |
| Count of how many times the delivery progress endpoint was |
| Distribution of bucket capacity usage in % |
Additionally, these metrics are distributed into buckets by count:
By issue count in the request
for:
requestedIssuesCountbuckets: 10, 100, 1000, >1000
By the delivery ticket count in the response
for:
searchMillisDistribution,foundIssuesCount,childIssuesCountbuckets: 100, 500, 1000, 10000, 60000, >60000
By error delivery ticket count in the response
for:
errorIssuesCountbuckets: 10, 100, 1000, >1000
By percentage
for
rateLimitUsedCapacitybuckets: 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
この内容はお役に立ちましたか?