Skip to content

Commit 13bd396

Browse files
Update faq.md
1 parent e5658be commit 13bd396

File tree

1 file changed

+93
-18
lines changed

1 file changed

+93
-18
lines changed

docs/faq.md

Lines changed: 93 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -81,13 +81,88 @@ If your custom field is not imported correctly into Azure DevOps, please go thro
8181

8282
This error is usually indicative of incorrect configuration on the user's side. Please follow the checklist [here](https://github.com/solidify/jira-azuredevops-migrator/blob/master/docs/faq.md#troubleshooting-my-custom-field-is-not-migrated-correctlynot-migrated-at-all) (the section above this one, in the same document) to ensure that you do not have any issues with your `config.json` file.
8383

84-
## 4. I need to obtain a field reference name/link type in Azure DevOps
84+
## 4. (In depth) How does Link Mapping work?
85+
86+
The Jira Azure DevOps Migration Tool uses the **link-map** property in the `config.json` file to map link types between Jira and Azure DevOps (ADO).
87+
88+
The `link-map` property in your `config.json` file should look like this:
89+
90+
```json
91+
"link-map": {
92+
"link": [
93+
{
94+
"source": "Epic",
95+
"target": "System.LinkTypes.Hierarchy-Reverse"
96+
},
97+
{
98+
"source": "Parent",
99+
"target": "System.LinkTypes.Hierarchy-Reverse"
100+
},
101+
{
102+
"source": "Child",
103+
"target": "System.LinkTypes.Hierarchy-Forward"
104+
},
105+
{
106+
"source": "Relates",
107+
"target": "System.LinkTypes.Related"
108+
},
109+
{
110+
"source": "Cloners",
111+
"target": "System.LinkTypes.Related"
112+
},
113+
{
114+
"source": "Duplicate",
115+
"target": "System.LinkTypes.Duplicate-Forward"
116+
}
117+
]
118+
}
119+
```
120+
121+
### **How to Configure Link Mapping**
122+
123+
1. **Identify Jira Link Types:**
124+
- Go to **Settings > Jira Settings > Issues > Issue Types > Issue Types** in Jira Cloud.
125+
- Locate the **Name**, **Outward Description**, and **Inward Description** for each link type.
126+
127+
2. **Map Jira Link Types to ADO:**
128+
- The **source** property in the mapping should match the **Name** of the link type in Jira.
129+
- The **target** property should be the corresponding ADO link type.
130+
131+
#### **Example: Standard Jira Link Types**
132+
133+
| Name | Outward Description | Inward Description |
134+
|---------|---------------------|---------------------|
135+
| Blocks | blocks | is blocked by |
136+
| Cloners | clones | is cloned by |
137+
| Defect | created | created by |
138+
| Duplicate | duplicates | is duplicated by |
139+
| Related | relates to | relates to |
140+
| Relates | relates to | relates to |
141+
| Test | tests | is tested by |
142+
143+
---
144+
145+
### **Direction Handling**
146+
147+
The tool automatically considers the direction of links. By default, links are assumed to be **outward**. If the link's description matches the **inward description** from Jira, the tool automatically **reverses the direction**:
148+
149+
- **Forward:** Represents downward or child relationships (e.g., `Hierarchy-Forward`).
150+
- **Reverse:** Represents upward or parent relationships (e.g., `Hierarchy-Reverse`).
151+
152+
#### **Example:**
153+
- If the **inwardDescription** of a link is "is blocked by" (from the "Blocks" link type), the tool will map it as `System.LinkTypes.Hierarchy-Reverse`.
154+
- Conversely, if the **outwardDescription** is "blocks", it will map as `System.LinkTypes.Hierarchy-Forward`.
155+
156+
The tool retrieves the outward and inward descriptions from Jira's project metadata API. In directional or hierarchical link types, **"-Forward"** indicates a downward or child relationship, while **"Reverse-"** indicates an upward or parent relationship. The tool will adjust the link direction accordingly if the description matches the inward description of a given link type.
157+
158+
159+
## 5. I need to obtain a field reference name/link type in Azure DevOps
85160

86161
Here is a reference sheet with all of the default fields in Azure DevOps: <https://learn.microsoft.com/en-us/azure/devops/boards/work-items/guidance/work-item-field?view=azure-devops> (click each field to open up the documentation page and view the field reference name).
87162

88163
Here is a reference sheet with all of the default link types in Azure DevOps: <https://learn.microsoft.com/en-us/azure/devops/boards/queries/link-type-reference?view=azure-devops>.
89164

90-
## 5. Guideline for migrating multiple projects
165+
## 6. Guideline for migrating multiple projects
91166

92167
### Scenario 1: Single project
93168

@@ -132,7 +207,7 @@ For example, let us say you are migrating the Jira projects A, B and C in sequen
132207
7. Export project C into **workspaceC**
133208
8. Import project C1
134209

135-
## 6. What is the purpose of the --force flag?
210+
## 7. What is the purpose of the --force flag?
136211

137212
Here you will find a description on what the `--force` flag does under various circumstances.
138213

@@ -141,7 +216,7 @@ Here you will find a description on what the `--force` flag does under various c
141216
| Jira Exporter | Items in the migration workspace (local) will be overwritten. | Items already downloaded in the workspace will be skipped. Items in the workspace will remain intact. | [jira-export.md](https://github.com/solidify/jira-azuredevops-migrator/blob/master/docs/jira-export.md) |
142217
| Work Item Importer | Work Items in ADO will remain intact. New duplicate work items may be created. | Revisions which already have been imported will be skipped. Existing Work Items may be updated with new data if the incoming revisions have not already been imported. | [wi-import.md](https://github.com/solidify/jira-azuredevops-migrator/blob/master/docs/wi-import.md)|
143218

144-
## 7. How to migrate custom fields having dropdown lists?
219+
## 8. How to migrate custom fields having dropdown lists?
145220

146221
- To map a custom field which is an dropdown list you can use MapArray mapper to get in a better way.
147222
Also take a look at the other possible [Mappers](config.md#mappers) to use.
@@ -158,7 +233,7 @@ Example:
158233
}
159234
```
160235

161-
## 8. How to migrate correct user from Jira to Azure DevOps and assign to the new work items?
236+
## 9. How to migrate correct user from Jira to Azure DevOps and assign to the new work items?
162237

163238
- User mapping differs between Jira Cloud and Jira Server. To migrate users and assign the new work items in Azure DevOps to the same user as the original task had in Jira, we need to add a text file in the root that would look something like this:
164239

@@ -200,7 +275,7 @@ Example:
200275
Jira.User3@some.domain=AzureDevOps.User3@some.domain
201276
```
202277
203-
## 9. How to migrate the Work Log (Time Spent, Remaining Estimate fields)?
278+
## 10. How to migrate the Work Log (Time Spent, Remaining Estimate fields)?
204279
205280
You can migrate the logged and remaining time using the following field mappings.
206281
@@ -225,7 +300,7 @@ The history of the **logged time** and **remaining time** will be preserved on e
225300
}
226301
```
227302

228-
## 10. How to map custom user picker fields
303+
## 11. How to map custom user picker fields
229304

230305
Here is how we have successfully mapped user picker fields in the past. `source` should be the field name:
231306

@@ -238,7 +313,7 @@ Here is how we have successfully mapped user picker fields in the past. `source`
238313
},
239314
```
240315

241-
## 11. How to map datetime fields
316+
## 12. How to map datetime fields
242317

243318
Here is how we can map datetime fields like ResolvedDate:
244319

@@ -250,7 +325,7 @@ Here is how we can map datetime fields like ResolvedDate:
250325
}
251326
```
252327

253-
## 12. How to migrate an issue fields to a comment
328+
## 13. How to migrate an issue fields to a comment
254329

255330
Through some manual intervention, we can migrate every historical value of an **issue field** to a **Work Item Comments**. Simply do the following:
256331

@@ -274,7 +349,7 @@ Through some manual intervention, we can migrate every historical value of an **
274349
- `e0cd3eb0-d8b7-4e62-ba35-c24d06d7f667` > `System.History`
275350
1. Run `WiImport` as usual.
276351

277-
## 13. How to omit the Jira issue ID/key in the work item title
352+
## 14. How to omit the Jira issue ID/key in the work item title
278353

279354
By default, the field mapping for `System.Title` will be set up so that the title is prefixed with the Issue key. This can be prevented by omitting the **MapTitle mapper** from the field map in the configuration:
280355

@@ -295,7 +370,7 @@ Instead of the default:
295370
}
296371
```
297372

298-
## 14. What are the base-area-path and base-iteration-path properties in the config.json file?
373+
## 15. What are the base-area-path and base-iteration-path properties in the config.json file?
299374

300375
**`base-area-path`:**
301376
The `base-area-path` property in the migrator configuration specifies the root area path under which all migrated work items will be placed. This path organizes work items into different functional or project areas within Azure DevOps.
@@ -312,7 +387,7 @@ The `base-iteration-path` property defines the root iteration path for the migra
312387

313388
In such cases, you may need to create a mapping strategy to translate Jira project components to Azure DevOps area and iteration paths. This might involve some manual configuration and planning to ensure that the migrated work items fit into the desired structure. See the next section in this FAQ for a guide on how to map sprints, iteration paths and area paths.
314389

315-
## 15. How to map sprints, iteration paths and area paths
390+
## 16. How to map sprints, iteration paths and area paths
316391

317392
It is possible to do custom mappings of the **Jira Sprints** as **Iteration Paths**, and vice versa for **Area Paths**.
318393

@@ -371,7 +446,7 @@ This will set the Iteration path correctly. The final path will be like the foll
371446
- `<project name>\<base-iteration-path>\<mapped value>`
372447
- `<project name>\<base-area-path>\<mapped value>`
373448

374-
## 16. How to migrate Development Links (commit, PR, branch)
449+
## 17. How to migrate Development Links (commit, PR, branch)
375450

376451
If you have previously migrated your BitBucket git repositories to your Azure DevOps Server/organization, you can also migrate the development links of the Jira Issues to the corresponding ADO Work Items.
377452

@@ -393,7 +468,7 @@ In your configuration file, you must specify the following properties:
393468

394469
The **repository-map** must contain a key-value lookup table with the names of the Bitbucket git repositories and their translations in ADO.
395470

396-
## 17. How to limit the number of issues to be exported during JIRA export (pagination)
471+
## 18. How to limit the number of issues to be exported during JIRA export (pagination)
397472

398473
If you export or the whole migration takes too long, you can achieve something similar to pagination by limiting the export to batches of issues through the `query` property of your `config.json` file. Simply enter a JQL query that filters issues on the `ìd` property, for example:
399474

@@ -407,7 +482,7 @@ And so on.
407482

408483
You can always use the **issues** view in your Jira project to experiment with different JQL queries.
409484

410-
## 18. I get https response code 400 and a System.Aggregate Exception with the warning "Failed to get item count using query ...", and no items are exported
485+
## 19. I get https response code 400 and a System.Aggregate Exception with the warning "Failed to get item count using query ...", and no items are exported
411486

412487
The issue is usually a malformed query. Make sure that you have tried all of the following solutions:
413488

@@ -430,7 +505,7 @@ curl -D-
430505
"http://johnie:8081/rest/api/2/search"
431506
```
432507

433-
## 19. I get the warning message "VS402625: Dates must be increasing with each revision."
508+
## 20. I get the warning message "VS402625: Dates must be increasing with each revision."
434509

435510
This warning message will show up if the tool attempts to import a subsequent revision with a changedDate that is less than the current changedDate of the current state of the Work Item.
436511

@@ -454,7 +529,7 @@ Example `config.json`:
454529
"changeddate-bump-ms": 5,
455530
```
456531

457-
## 20. Sprint names are corrupted. ADO Iteration paths are named "[ synced = false ]"
532+
## 21. Sprint names are corrupted. ADO Iteration paths are named "[ synced = false ]"
458533

459534
The issue is usually that a custom field has been defined in Jira which is also named "Sprint", and the tool is picking up this field instead of the default Srpint field.
460535

@@ -482,7 +557,7 @@ It could be worth trying this mapping when running against Jira Cloud too:
482557

483558
It seems that for jira server, the field IDs can different between different developer instances. You can use the Get Fields endpoint to find out which field ID (customfield_xxxxx) is used by Sprint in your instance: https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#about
484559

485-
## 21. Azure DevOps Rate and usage limits (ADO Cloud only)
560+
## 22. Azure DevOps Rate and usage limits (ADO Cloud only)
486561

487562
In the unlikely event that you experience issues with being rate limited by Azure DevOps, we always recommend the following procedure:
488563

0 commit comments

Comments
 (0)