Issue Linking
Introduction
A common feature of many applications, such as Jira, VersionOne, ALM-QC, and Azure DevOps, is the ability to have links or relationships between various issues, entities, or objects in the application. An example is the parent-child relationships between stories and subtasks. By default, ConnectALL replicates such relationship links between applications (as Issue Linking is enabled by default). For this to work, both the objects (from both sides of the link or relationship) must be sync'd between both the applications. For example, to replicate relationships between Requirement and Defect in one system, to Requirements and Defects in another system, you will need to create an app-link to sync requirements to requirements, and another app-link to sync defects to defects. If you need information on linking Jira's epics to stories using the epic link field, read the Epic Linking topic.
In ConnectALL, issue linking is enabled by default. You can disable issue linking while creating or modifying an application link. Note that, the issue links will be established only when the links are in the same project. To enable or disable issue linking, follow this procedure:
- Go to the Entity Mapping tab in an application link.
- Expand the Flow PROPERTIES option. The below screen is displayed.
Note: By default, the 'Issue Linking Enabled?' option is selected. If required, you can disable it. - Click Save. The below screen appears and confirms that you have chosen to proceed with the issue linking option enabled.
Applications Supported for Issue Linking
ConnectALL’s Issue Linking feature is available for the following applications:
- Atlassian Confluence (For Epics)
- Atlassian Jira
- Cherwell (For Tasks only)
- Digital.ai Agility (Formerly VersionOne)
- IBM Doors (Only External links is supported)
- IBM DoorsNG
- IBM Rational Team Concert (RTC)
- Jama
- MicroFocus ALM/Quality Center
- MicroFocus ALM Octane
- MS Project Server (Subtasks)
- Perforce Helix ALM
- QMetry
- Rally
- Salesforce
- ServiceNow
- Tricentis Tosca
- VSTS / TFS / Azure DevOps
Syncing Links For a Single Issue Type per Application
Assume that in Jira, you have Stories linked to other Stories. Further, in QC you have Requirements linked to other Requirements.
If you have created an application link between the issue types–Requirement (QC) and Story (Jira), and if you have selected the option, ‘Issue Linking Enabled’ under both the applications, ConnectALL will synchronize the Stories and Requirements between the two applications along with their respective relationships/links to other Stories or Requirements.
Syncing Links Between Different Entity Types
Assume that you have Sub-Tasks linked to Stories in Jira. Similarly, assume you have Tasks linked to Requirements in QC. Given below is an example that shows an issue structure in JIRA and QC.
Jira | QC | |
Issue Type | Story | Requirement |
Issue Type | Sub-Task | Task |
In order for ConnectALL to synchronize these parent-child relationships between Jira and QC:
- Create an application link in ConnectALL between Jira Stories and QC Requirements.
- Create another application link between Jira Sub-Tasks and QC Tasks.
- Ensure that Issue Linking is enabled for both application links.
If you have created an application link between the issue types–Requirement (QC) and Story (Jira), and if you have selected the option, ‘Issue Linking Enabled’ under both the applications, ConnectALL will synchronize the Stories and Requirements between the two applications along with their respective relationships/links to other Stories or Requirements.
Syncing Links Between Multiple Entity Types on one side to a Single Entity Type on the other
For this example, assume you have in Jira, Requirement as parent of User Story, and User Story as parent of Risk. Further, assume all these three links of different issue types from Jira will be pointing to the same QC project Requirement issue type. To achieve this, the following property needs to be enabled:
- Open ConnectAll.properties from MULE_HOME/conf directory
- Enable the jira.parent.child.enable key from N to Y.
- Restart the ConnectALL core and Tomcat services.
Here are the application links you will need:
- Create one app-link for the parent Jira issue type, ‘Requirement’.
- Create another app-link for the child Jira issue type, ‘User Story’.
- Create a third app-link for the child Jira issue type, ‘Risk’.
All these three links of different issue types from Jira will be pointing to the same QC project Requirement issue type.
In the two app-links that have been created for the ‘child’ issue types (Story and Risk), do the field mapping as illustrated below:
Below are some screenshots that explain the parent Jira issue type, child Jira issue type and how it is represented in QC.
Image 1 - Jira – A parent issue linked with child issues
Image 2 - Jira – A child issue type linked with Parent
Image 3 – The Jira Parent-Child relationship represented in QC
Syncing of Issue Links Between Jira and TFS
ConnectALL automatically synchronizes the ‘Related’ link type between Jira and TFS. ConnectALL will also automatically synchronize parent-child relationships between Jira and TFS when these conditions are met:
- You must have one application link for the parent issue types, and another application link for the child issue types.
- In TFS, you must use the "Child" and "Parent" link types.
- In Jira, you must use a parent-child relationship such as Sub-Tasks and Stories.
Salesforce Entity Linking
ConnectALL supports the ‘Issue Linking’ feature in Salesforce. This allows you to sync entity hierarchies to the corresponding application, like Jira or QC. Entity linking only works if the entity supports the parent-child relationship. Example: A Case created in Salesforce with a mapping to parent case. No special configuration is needed to sync these hierarchies.
Entity linking only works if the entity supports parent-child relationships. Example: A 'Case' created in Salesforce with a mapping to parent case.
DoorsNG Linking
The linking created in the issue would get synchronized by ConnectALL, only when the issue has been modified.
Following are the types of linking which is supported when added to the issue.
- Link To
- Extracted
- Child Of
- Embeds
- Synonym
If the other issue types listed below are added to the issue, then the links will be synchronized when the linked issue is updated.
- Link From
- Extracted From
- Parent Of
- Embedded In
Mapping Issue Link Field in Jira – Rally app-links
The issue linking method discussed above is an approach where you are enabling the ‘Issue Linking Enabled’ option and default relationship sync is achieved.
Starting from version 2.10.26.3, ConnectALL allows you to use another approach/method to do issue linking. The new approach allows you to map the ’Issue Link’ fields that will be available in the Field Mapping section in Atlassian Jira and Rally (Currently this field will be available only for Atlassian Jira and Rally). To accomplish issue linking in this method, you need to choose the Issue Link field on both sides of the Jira-Rally app-link and create value mapping if you have specific values to sync for the Issue Link fields. If you don’t do field mapping and value mapping, the default linked issue types will be synchronized.
To configure issue linking using this method,
- Select the Issue Linking Enabled option in the Entity Mapping screen
- Select the Issue Link field in both the applications (below image)
- Map the values of the Issue Link fields in both the applications
Note that value mapping is done to link specific values of the mapped Issue Link types. In the Rally adapter, the list of values in the Value Mapping screen will be populated based on the issue type and its relationship.
The ConnectALL supported issue types for the issue linking relationship in the Rally are,
- Defect
- HierarchicalRequirement (UserStory)
- TestCase
- Task
- PortfolioItem/Feature
- PortfolioItem/Initiative
Note: In the old approach, the default issue linking relationship in Jira is ‘relates to’.
If you experience any false updates, it may be due to the reason that you have selected the ‘Issue Linking Enabled’ option, but you have not mapped the issue links. To avoid this false update, clear the ‘issue Linking Enabled’ option (by default it is selected) in the entity mapping screen of the application link or simply map the Issue Link fields without value mapping. A Hybrid approach is not recommended.
Let's discuss a couple of scenarios in this approach where you will do value mapping to link specific values.
Scenario 1
If you are using issue linking to link 'Defect' issue type, you need to ensure that the relationship you are linking through issue linking should have an independent application link available.
Note: Do not map the value 'Null' for the Issue Link field as it is invalid in the Advanced Value Mapping screen.
Scenario 2
In Rally, the issue type 'Test Case' can be linked to a 'Defect/UserStory' through the Work Product field. To do this,
- Click Connections from the top navigation bar. The Manage Connections screen will be displayed.
- Click the cogwheel icon against the Rally connection. The Connection Advanced Properties screen will be displayed.
- Add the Property Key and its Property Value. Adding this Property Key is required as ConnectALL does not support this type. Note that 'SchedulableArtifact' is a type of a work product. The ISSUE_LINKTYPE is the property key and multiple property values can be provided separated by a comma.
- Map the value 'Work Product' using value mapping of Issue Link field as shown below.