Integrate Jira Product Discovery with 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.

Obtain a Jira Product Discovery Premium license

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

To obtain a Jira Product Discovery Premium license:

Before you begin

  • You must be on Jira Data Center 10.3 or newer to use this app. However, Jira Data Center 10.3.10 is required for the Jira Product Discovery idea panel integration to work correctly.

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

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

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

  • The Jira Product Discovery site must be on a Premium license.

  • Users working with this app need access to both the Jira Data Center instance and the Jira Product Discovery site.

  • 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 doesn’t apply if you’re using application links.

Install the integration

  1. (Optional) Follow the steps in 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 in Use AppLinks to link to Atlassian apps to create an application link between Jira Data Center and Jira Product Discovery. Note that if you use application tunnels, you can only setup application links from the Jira Product Discovery side.

Authenticate as a user

Before they can use 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. See Use AppLinks to link to Atlassian apps for more information.

Use the integration

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

Before you begin

  • 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 doesn’t apply if you’re using application links.

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

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

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

  • You can create Jira Data Center work items from Jira Product Discovery only if the authorized Jira Data Center account has the necessary permissions for the target space. Specifically:

    • The account has to have the CREATE_ISSUES permission

    • Only the following fields can be set as required: Project, Issue type, Summary, 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 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. Select Create.

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. Select Add.

Once the work item is created or linked, you can see the Delivery progress bar and a list with 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.

Idea panel

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

When the app is uninstalled or disabled, linked ideas are displayed in the work item links panel as if they were 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.

Autofill dates

You can autofill dates based on data from a linked Data Center instance. To do so, enable the Autofill dates setting.

The following fields are supported:

Jira Product Discovery fieldJira Data Center field
Due dateDue date
Actual startTarget start (Advanced Roadmaps for Jira)
Actual endTarget end (Advanced Roadmaps for Jira)
Start dateNot supported

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. Learn more about delivery progress here: 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 JSON snippet below:

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

The same considerations apply as for app links. See Configure work item linking and Configuring issue linking.

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. See the Performance implications section for more information.

Security

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 (see Use AppLinks to link to Atlassian apps). 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 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:

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

Environment

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 (Improving instance stability with 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.

Monitoring

Audit logs

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 Connector

  • Summary: Delivery Issue Details Request

Here’s what an example audit log looks like:

App logs

By default, the app uses the INFO 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.minutes variable 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}}}

Metric

Description

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 percent.

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

Troubleshooting

Application tunnel isn't available or connected

If the app tunnel is unavailable, make sure that Jira Data Center has a properly set-up connector, installed tunnels plugin, and that an app tunnel is created from Jira Product Discovery to Jira Data Center.

Inconsistency between Jira Product Discovery and Jira Data Center

Make sure you don’t see any error codes in responses from the Jira Data Center API. Also ensure the user reporting the problem has permission for all tickets in Jira Data Center and that the app link from Jira Product Discovery to Jira Data Center is working fine.

Error code

Message

Description

1

Unexpected error during issue details retrieval.

Not used.

2

Issue does not exist or user lacks permissions to view it.

Returned when work item search for a given user and work item ID yields no results. This could be caused either by lack of permissions or the work item not existing.

Work item deletion in Jira Data Center not reflected in Jira Product Discovery

If the user has completed the cross-authorization of their Jira Product Discovery and Jira Data Center accounts, deleting work items won’t cause an issue, since all changes will be reflected both in Jira Product Discovery and Jira Data Center.

If the user hasn’t done so, or if they don’t have the required permissions, they will see a placeholder prompting them to peform cross-authorization.

Link between Jira Product Discovery idea and Jira Data Center work item deleted

Once a link is deleted, you can only recreate it from the Jira Product Discovery side.

If the link was deleted from the Jira Product Discovery side, the Jira Data Center work item will no longer count towards delivery progress.

If the link was deleted from the Jira Data Center side, the Jira Data Center work item will continue to count towards delivery progress.

Idea panel in Jira Data Center shows more work items than the Jira Product Discovery board

The idea panel only shows Jira Product Discovery ideas that have an "implements" relationship with Jira Data Center work items or that were linked to from the delivery panel. This means that you might see more work items in Jira Data Center than in Jira Product Discovery. Only work items shown in Jira Product Discovery count toward delivery progress.

Can't create issue from Jira Product discovery

Make sure your users have permission to create work items. In addition, make sure that it’s possible to create an issue using the default values and that there aren’t any additional restrictions.

The Jira Product Discovery integration for Jira Data Center app inherits native work item link behavior. If a Jira Product Discovery idea is removed, you may encounter dangling Jira Data Center work item links that weren’t removed automatically. You can safely remove them yourself.

Jira Data Center work items created from Jira Product Discovery contain strange characters

By design, the integration support plain text only. This is because Jira Product Discovery and Jira Data Center use different sets of Markdown for text formatting. To avoid this issue, create Jira Data Center work items from Jira Product Discovery using plain text only.

Other known issues

IssueDescription
Remote links aren't supported when cloning or splitting issues.We're working to fix this in future releases.
The Linked items field doesn’t reflect the number of remotely linked items. We're working to fix this in future releases.

When linking local work items, it's possible to link the same item multiple times with a different relation type (blocks, relates, etc). Remote issues, may only be linked once.

Working as intended.

When unlinking an issue, it disappears only on the site where the operation was performed. 

Working as intended.

The following project dropdown behaviors:

  • For Cloud remote sites - all projects containing the given string will be returned
  • For DC remote sites - only projects that start with the given string will be returned
Working as intended.

Deleting an idea in Jira Product Discovery isn’t reflected in the Jira Data Center ideas panel.

Working as intended.

In Jira Product Discovery, the items displayed as "children" for Jira Data Center issues are based on the "parent link" relationship, not the standard "parent" relationship. For epics, this means we show "issues in epic" rather than "subtasks".

Working as intended.



Last modified on Nov 14, 2025

Was this helpful?

Yes
No
Provide feedback about this article
Powered by Confluence and Scroll Viewport.