solidify / jira-azuredevops-migrator

Tool to migrate work items from Atlassian Jira to Microsoft Azure DevOps/VSTS/TFS.
MIT License
261 stars 223 forks source link

Links not being added to work items #163

Closed kmuthukumar-rp closed 4 years ago

kmuthukumar-rp commented 4 years ago

I experience the same issue specified in #52, but for the basic Epic and Child link. When I export an item, it exports the Epic parent JSON file along with that item's JSON fine. But when importing, receiving the error "[System.LinkTypes.Hierarchy-Reverse]' - target work item for Jira 'XXX-###' is not yet created in Azure DevOps/TFS" What @MOlausson said about bi-directional link makes sense. But when I analyze the JSON file for the parent Epic, it does not have the link to the child, the links collection/array is empty. So at the end, lot of the child items are missing its link back to Epic parent. Do I need to fix something in the Configuration JSON file so that the Epic parent items will have link back to the child?? Also curious, what is the order in which the importer imports items. Whatever the ORDER BY clause that we specify in JQL seems to work only for the exporter. Thank you to all contributors for all the help and contribution.

kmuthukumar-rp commented 4 years ago

Any insight on this by @MOlausson, @madkoo or any other experts would be greatly appreciated. Outstanding questions are: 1) Do I need to change anything in configuration json file to make sure the parent epic exported has a link to the child item as well or the application only has the parent epic link mentioned in the child item only? 2) What is the order in which the importer imports items and where in code is this handled. Is there anyway to change the order through config json file. 3) When child item is getting imported first and missing to add link to parent item as it does not exist in Azure yet, but when the parent epic is getting imported, the link to child is not getting added as its JSON itself does not contain this link. How can I resolve this? Thank you in advance for any or all answers.

madkoo commented 4 years ago

@kmuthukumar-rp sorry for the late response but are you still stuck with this issue ? If yes can you provide more information eg. how does your configuration look like ?

kmuthukumar-rp commented 4 years ago

@madkoo Thanks for your reply. Yes, I am still stuck with the issue. Here is my config file that is relevant to 'Is Related To' link that has not made it through.

"link-map": { "link": [ { "source": "Epic", "target": "System.LinkTypes.Hierarchy-Reverse" }, { "source": "Parent", "target": "System.LinkTypes.Hierarchy-Reverse" }, { "source": "Is Related To", "target": "System.LinkTypes.Related" },

A Jira ticket PONG-8701 has a 'Is Related To' link to 'PONG-9696'. While the linked item PONG-9807 made it to Azure with link, but PONG-9696 didnt make it/missed the link. Can you please let me know what could be the reason. I have attachments from Jira tickets to show, but couldnt attach it here.

BTW, we are supposed to use 'Outward Description' and 'Inward Description' from jira issue linking page for the links, is that right. Can you please confirm this for me.

And one more outstanding question is: What is the order in which the importer imports items and where in code is this handled. Is there anyway to change the order through config json file.

madkoo commented 4 years ago

@kmuthukumar-rp is the "Is Related To" added by your self-link type? The source value you are using is that the value from the "Name" field of the link type? Because you should use the "Name" of the Link type.

We read all the files in the defined export path. The files are read in based on the filenames eg. File-1, File-2 would be the order then. And the execution plan is built on the file content. In the code follow the BuildExecutionPlan method in the ExecutionPlanBuilder.cs.

calvinmichel commented 4 years ago

I am experiencing the same issue mentioned above. We have over 4000 items in JIRA we need to import and the links are not being created consistently.

"When child item is getting imported first and missing to add link to parent item as it does not exist in Azure yet, but when the parent epic is getting imported, the link to child is not getting added as its JSON itself does not contain this link."

We cannot successfully use the extension without the link relationships being created as they should. With so many items in one project, we cannot review each one to make sure the links were created properly.

madkoo commented 4 years ago

@kmuthukumar-rp are you still stuck with this? And forgot to answer to your question

BTW, we are supposed to use 'Outward Description' and 'Inward Description' from Jira issue linking page for the links, is that right. Can you please confirm this for me. Then yes you are supposed to use 'Outward Description'.

@calvinmichel, thank you for your question, as mentioned before the link, is bi-directional. So if the child does not have the link and the parent does it will be added in AzureDevops. But if it is missing from your exported item that means some configuration must be incorrect that the link is not being picked up. Please check the config documentation and/or the FAQ

madkoo commented 4 years ago

Closing this issue in lack of further response. @kmuthukumar-rp , @calvinmichel feel free to reopen if you still experience problems

calvinmichel commented 4 years ago

@madkoo Sorry about not responding, I did not get notifications of your comments. I have updated the link map to include all link types. "link-map": { "link": [ { "source": "Epic", "target": "System.LinkTypes.Hierarchy-Reverse" }, { "source": "Relates", "target": "System.LinkTypes.Related" }, { "source": "Duplicate", "target": "System.LinkTypes.Duplicate-Reverse" }, { "source": "Blocks", "target": "System.LinkTypes.Dependency" }, { "source": "Predecessor", "target": "System.LinkTypes.Dependency" } ] }

I tried the export again and here is what I see. CBE-1 is a subtask and is linked to an Epic, CBE-27. In the export, CBE-1 shows the Epic link below "Links": [ { "Change": 0, "TargetOriginId": "CBE-27", "TargetWiId": 0, "WiType": "System.LinkTypes.Hierarchy-Reverse" } ]

CBE-27 does NOT show CBE-1 (or any of the other subtasks) as linked to it in any of the Indexes "Links": [],

I have looked through the documentation again. I've also searched to see if the sub-task has a unique link type like the Epic, but it is not a "link" necessarily. So I'm not sure how it identifies that the sub-task is linked the Epic. Is there something I am missing?

TMHLS-Ultron commented 4 years ago

I have faced the same problem. Some items will have a comment but no actual link.

In my case there's child items what where created before the parent, so I get the "not yet created" error. When I checked the exported .json files I saw that the child items have a link, but the parent does not.

Re-running the importer does nothing and will not fix the links and running with the --force option will create duplicate items instead of fixing the missing links.

How should we handle these cases?

madkoo commented 4 years ago

@TMHLS-Ultron I reopened the issue, we will take a look at it.

madkoo commented 4 years ago

@TMHLS-Ultron I know that some time has passed when this issue was created, but could you provide additional information about your problem. I tried to reproduce the issue and create a child item before the parent and added a test link "relates to" between then. I had no problems getting the links between items after importing.

TMHLS-Ultron commented 4 years ago

@madkoo I have some configs, logs and images that I can share and hopefully illustrate the issue. Some of the information below has been redacted (URL's, names, accounts etc.).

====================================================================
Azure DevOps Work Item Import Log
====================================================================
Tool version         : 2.3.44
Start time           : 2020-03-20 10:33:27
Telemetry            : Enabled
...
System               : Microsoft Windows 10.0.16299
...
Azure DevOps version : n/a
Azure DevOps type    : Cloud
====================================================================
[I][10:33:25] Connecting to Azure DevOps/TFS...
[I][10:33:26] Retreiving project info from Azure DevOps/TFS...
[I][10:33:26] Building iteration cache...
[I][10:33:26] Building area cache...
[I][10:33:26] Building execution plan...
[I][10:33:27] Import started. Importing 278 items with 2791 revisions.
[I][10:33:28] Processing 1/2791 - wi 'Initial revision', jira 'DEV-3066, rev 0'.
[W][10:33:28] '[Added] DEV-3066/-1->DEV-3062/-1 [System.LinkTypes.Hierarchy-Reverse]' - target work item for Jira 'DEV-3062' is not yet created in Azure DevOps/TFS.
[W][10:33:28] ''DEV-3066', rev 0' - not all changes were saved.
[I][10:33:29] Processing 2/2791 - wi 'Initial revision', jira 'DEV-3067, rev 0'.
[W][10:33:29] '[Added] DEV-3067/-1->DEV-3062/-1 [System.LinkTypes.Hierarchy-Reverse]' - target work item for Jira 'DEV-3062' is not yet created in Azure DevOps/TFS.
[W][10:33:29] ''DEV-3067', rev 0' - not all changes were saved.
[I][10:33:29] Processing 3/2791 - wi '41840', jira 'DEV-3067, rev 1'.
[I][10:33:29] Processing 4/2791 - wi '41840', jira 'DEV-3067, rev 2'.
[I][10:33:30] Processing 5/2791 - wi '41839', jira 'DEV-3066, rev 1'.
[I][10:33:30] Processing 6/2791 - wi '41839', jira 'DEV-3066, rev 2'.
[I][10:33:30] Processing 7/2791 - wi '41840', jira 'DEV-3067, rev 3'.
[I][10:33:31] Processing 8/2791 - wi 'Initial revision', jira 'DEV-3062, rev 0'.
[I][10:33:31] Processing 9/2791 - wi '41841', jira 'DEV-3062, rev 1'.
...

41839 / DEV-3066 (comment but no link) jira-migrated-issue_1


41841 / DEV-3062 (no link, comment for link to other WI) jira-migrated-issue_2


Configuration file used

{
  "source-project": "DEV",
  "target-project": "I_Site",
  "query": "(project = DEV AND status not in (Closed,Delivered,Done,Finished) AND labels in (team_HouseLannister,team_houselannister) AND type != 'Epic') ORDER BY Rank ASC",
  "workspace": "C:\\tmp\\jira2devops\\ISiteExport-houselannister\\",
  "epic-link-field": "Epic Link",
  "sprint-field": "Sprint",
  "download-options": 7,
  "batch-size": 20,
  "log-level": "Info",
  "attachment-folder": "Attachments",
  "user-mapping-file": "users.txt",
  "base-area-path": "House Lannister",
  "base-iteration-path": "Migrated",
  "ignore-failed-links": true,
  "process-template": "Agile",
  "link-map": {
    "link": [
      {
        "source": "Epic",
        "target": "System.LinkTypes.Hierarchy-Reverse"
      },
      {
        "source": "Parent",
        "target": "System.LinkTypes.Hierarchy-Reverse"
      },
      {
        "source": "Relates",
        "target": "System.LinkTypes.Related"
      },
      {
        "source": "Duplicate",
        "target": "System.LinkTypes.Duplicate-Forward"
      }
    ]
  },
  "type-map": {
    "type": [
      {
        "source": "Epic",
        "target": "Epic"
      },
      {
        "source": "Story",
        "target": "User Story"
      },
      {
        "source": "Story Bug",
        "target": "Bug"
      },
      {
        "source": "Bug",
        "target": "Bug"
      },
      {
        "source": "Task",
        "target": "User Story"
      },
      {
        "source": "Sub-task",
        "target": "Task"
      },
      {
        "source": "Team Task",
        "target": "Task"
      },
      {
        "source": "Test",
        "target": "User Story"
      },
      {
        "source": "Support",
        "target": "User Story"
      },
      {
        "source": "Enhancement",
        "target": "User Story"
      }
    ]
  },
  "field-map": {
    "field": [
      {
        "source": "summary",
        "target": "System.Title",
        "mapper": "MapTitle"
      },
      {
        "source": "assignee",
        "target": "System.AssignedTo",
        "mapper": "MapUser"
      },
      {
        "source": "description",
        "target": "System.Description",
        "mapper": "MapRendered"
      },
      {
        "source": "fixVersion",
        "target": "System.FixVersion",
        "for": "User Story,Bug,Task"
      },
      {
        "source": "priority",
        "target": "Microsoft.VSTS.Common.Priority",
        "for": "Feature,User Story,Task",
        "mapping": {
          "values": [
            {
              "source": "Highest",
              "target": "1"
            },
            {
              "source": "High",
              "target": "2"
            },
            {
              "source": "Medium",
              "target": "3"
            },
            {
              "source": "Low",
              "target": "3"
            },
            {
              "source": "Lowest",
              "target": "4"
            }
          ]
        }
      },
      {
        "source": "priority",
        "target": "Microsoft.VSTS.Common.Severity",
        "for": "Bug",
        "mapping": {
          "values": [
            {
              "source": "Severity A",
              "target": "1 - Critical"
            },
            {
              "source": "Severity B",
              "target": "2 - High"
            },
            {
              "source": "Severity C",
              "target": "3 - Medium"
            },
            {
              "source": "Severity D",
              "target": "4 - Low"
            },
            {
              "source": "Severity E",
              "target": "4 - Low"
            },
            {
              "source": "Highest",
              "target": "1 - Critical"
            },
            {
              "source": "High",
              "target": "2 - High"
            },
            {
              "source": "Medium",
              "target": "3 - Medium"
            },
            {
              "source": "Low",
              "target": "4 - Low"
            },
            {
              "source": "Lowest",
              "target": "4 - Low"
            }
          ]
        }
      },
      {
        "source": "labels",
        "target": "System.Tags",
        "mapper": "MapTags"
      },
      {
        "source": "comment",
        "target": "System.History",
        "mapper": "MapRendered"
      },
      {
        "source": "status",
        "target": "System.State",
        "for": "Feature,User Story,Bug",
        "mapping": {
          "values": [
            {
              "source": "To Do",
              "target": "New"
            },
            {
              "source": "In Progress",
              "target": "Active"
            },
            {
              "source": "Done",
              "target": "Resolved"
            },
            {
              "source": "Done",
              "target": "Closed"
            },
            {
              "source": "Removed",
              "target": "Removed"
            },
            {
              "source": "Blocked",
              "target": "Active"
            },
            {
              "source": "Code Review",
              "target": "Active"
            },
            {
              "source": "Ready for Test",
              "target": "Active"
            },
            {
              "source": "Testing",
              "target": "Active"
            },
            {
              "source": "IceBox",
              "target": "Removed"
            },
            {
              "source": "Sprint 1",
              "target": "Active"
            },
            {
              "source": "Sprint 2",
              "target": "Active"
            },
            {
              "source": "Sprint 3",
              "target": "Active"
            },
            {
              "source": "Sprint 4",
              "target": "Active"
            },
            {
              "source": "Sprint 5",
              "target": "Active"
            },
            {
              "source": "Sprint 6",
              "target": "Active"
            }
          ]
        }
      },
      {
        "source": "status",
        "target": "System.State",
        "for": "Task",
        "mapping": {
          "values": [
            {
              "source": "To Do",
              "target": "New"
            },
            {
              "source": "In Progress",
              "target": "Active"
            },
            {
              "source": "Done",
              "target": "Closed"
            },
            {
              "source": "Blocked",
              "target": "Active"
            },
            {
              "source": "Code Review",
              "target": "Active"
            },
            {
              "source": "Ready for Test",
              "target": "Active"
            },
            {
              "source": "Testing",
              "target": "Active"
            }
          ]
        }
      },
      {
        "source": "status",
        "target": "System.State",
        "for": "Epic",
        "mapping": {
          "values": [
            {
              "source": "To Do",
              "target": "New"
            },
            {
              "source": "Sprint 1",
              "target": "Active"
            },
            {
              "source": "Sprint 2",
              "target": "Active"
            },
            {
              "source": "Sprint 3",
              "target": "Active"
            },
            {
              "source": "Sprint 4",
              "target": "Active"
            },
            {
              "source": "Sprint 5",
              "target": "Active"
            },
            {
              "source": "Sprint 6",
              "target": "Active"
            },
            {
              "source": "Done",
              "target": "Closed"
            },
            {
              "source": "Removed",
              "target": "Removed"
            },
            {
              "source": "Rejected",
              "target": "Removed"
            }
          ]
        }
      },
      {
        "source": "Story Points",
        "source-type": "name",
        "target": "Microsoft.VSTS.Scheduling.StoryPoints",
        "not-for": "Task"
      },
      {
        "source": "timeestimate",
        "target": "Microsoft.VSTS.Scheduling.RemainingWork",
        "mapper": "MapRemainingWork",
        "for": "Bug,Task"
      },
      {
        "source": "description",
        "target": "Microsoft.VSTS.TCM.ReproSteps",
        "for": "Bug"
      },
      {
        "source": "environment",
        "source-type": "name",
        "target": "Microsoft.VSTS.TCM.SystemInfo",
        "for": "Bug,Epic"
      }
    ]
  }
}
madkoo commented 4 years ago

@TMHLS-Ultron thanks for the info. I did not specify enough. What I would like to see is how does your configuration look like and how is your mapping done on Jira side between those items(issues).

TMHLS-Ultron commented 4 years ago

@TMHLS-Ultron thanks for the info. I did not specify enough. What would like to see is how does your configuration look like and how is your mapping done on Jira side between those items(issues).

Ah, sorry. Of course you want to see the config as well. Please see my updated reply above.

madkoo commented 4 years ago

@TMHLS-Ultron can you specify what are the types for the parent and child item? I understand after exporting the parent does not have a link to the child item in the JSON but the child does. Also, the child item is created before the parent and then linked in Jira, what is the link type added between them?

ghost commented 4 years ago

I've been trying to map this but somehow it's not being recognize. Is there an specific way to use the Inward and Outward for mapping? the problem is with for example "is depended on by" or "depends on".

"link-map": { "link": [ { "source": "Epic", "target": "System.LinkTypes.Hierarchy-Reverse" }, { "source": "Parent", "target": "System.LinkTypes.Hierarchy-Reverse" }, { "source": "Relates", "target": "System.LinkTypes.Related" }, { "source": "Duplicate", "target": "System.LinkTypes.Duplicate-Forward" }, { "source": "Dependency", "target": "System.LinkTypes.Dependency" }, { "source": "Problem/Incident", "target": "System.LinkTypes.Related" }, { "source": "depends on", "target": "System.LinkTypes.Dependency" }, { "source": "duplicates", "target": "System.LinkTypes.Duplicate-Forward" }, { "source": "causes", "target": "System.LinkTypes.Related" }, { "source": "relates to", "target": "System.LinkTypes.Related" }, { "source": "is depended on by", "target": "System.LinkTypes.Dependency" }, { "source": "is duplicated by", "target": "System.LinkTypes.Duplicate-Forward" }, { "source": "is caused by", "target": "System.LinkTypes.Related" } ] },

ghost commented 4 years ago

I've been trying to map this but somehow it's not being recognize. Is there an specific way to use the Inward and Outward for mapping? the problem is with for example "is depended on by" or "depends on".

"link-map": { "link": [ { "source": "Epic", "target": "System.LinkTypes.Hierarchy-Reverse" }, { "source": "Parent", "target": "System.LinkTypes.Hierarchy-Reverse" }, { "source": "Relates", "target": "System.LinkTypes.Related" }, { "source": "Duplicate", "target": "System.LinkTypes.Duplicate-Forward" }, { "source": "Dependency", "target": "System.LinkTypes.Dependency" }, { "source": "Problem/Incident", "target": "System.LinkTypes.Related" }, { "source": "depends on", "target": "System.LinkTypes.Dependency" }, { "source": "duplicates", "target": "System.LinkTypes.Duplicate-Forward" }, { "source": "causes", "target": "System.LinkTypes.Related" }, { "source": "relates to", "target": "System.LinkTypes.Related" }, { "source": "is depended on by", "target": "System.LinkTypes.Dependency" }, { "source": "is duplicated by", "target": "System.LinkTypes.Duplicate-Forward" }, { "source": "is caused by", "target": "System.LinkTypes.Related" } ] },

I found a solution.

By adding -Forward or -Reverse to the "target" links I couldn't map before, for example to "is duplicated by" I added -Forward at the end of the target ("System.LinkTypes.Duplicate-Forward") or "is depended on by" I added -Reverse so the target would be "System.LinkTypes.Dependency-Reverse". Would be nice to update the docs as well.

New Implementation:

"link-map": { "link": [ { "source": "Epic", "target": "System.LinkTypes.Hierarchy-Reverse" }, { "source": "Parent", "target": "System.LinkTypes.Hierarchy-Reverse" }, { "source": "Relates", "target": "System.LinkTypes.Related" }, { "source": "Duplicate", "target": "System.LinkTypes.Duplicate-Forward" }, { "source": "Dependency", "target": "System.LinkTypes.Dependency-Forward" }, { "source": "Dependency", "target": "System.LinkTypes.Dependency-Reverse" }, { "source": "Problem/Incident", "target": "System.LinkTypes.Related" }, { "source": "depends on", "target": "System.LinkTypes.Dependency-Forward" }, { "source": "duplicates", "target": "System.LinkTypes.Duplicate-Forward" }, { "source": "causes", "target": "System.LinkTypes.Related-Forward" }, { "source": "relates to", "target": "System.LinkTypes.Related" }, { "source": "is depended on by", "target": "System.LinkTypes.Dependency-Reverse" }, { "source": "is duplicated by", "target": "System.LinkTypes.Duplicate-Reverse" }, { "source": "is caused by", "target": "System.LinkTypes.Related-Reverse" } ] },

madkoo commented 4 years ago

@kmuthukumar-rp @calvinmichel @TMHLS-Ultron This should be fixed by using the latest version of the tool. Closing this issue for now

junejaalok commented 3 years ago

@madkoo @calvinmichel @TMHLS-Ultron Do we have any solution to this issue. We are having the latest version of the tool and still encountering the problem

yogitechsolution commented 3 years ago

@madkoo: I am still facing the same problem as on 2nd July 2021. "target work item for Jira 'XXX-143' is not yet created in Azure DevOps/TFS."

Experts, please try to resolve this, so that many of us get benefitted from this.

ccheyyyyyyy commented 2 years ago

@madkoo @MOlausson @Alexander-Hjelm,

I am facing this same issue described as of 12/06/2021. Any insight is would be appreciated.

@madkoo: To answer your question referenced at the bottom of my comment here; in my case, the Parent type in Jira is always an Epic and the Child item type in Jira is either a Task, Experience Task, Bug, or Documentation Task.

Further, in Jira, the "Epic Link" field on the Child item links back to the "Epic Name" field on the Epic.

Please let me know if I can provide more information. Thank you!

Error from my Jira Export: [I][18:36:33] Processing epic parent 'AC-3863'. [W][18:36:34] Cannot add 'Child' AC-3716 link to 'Parent' AC-3863, 'Child' link-map configuration missing. [W][18:36:34] Cannot add 'Child' AC-3712 link to 'Parent' AC-3863, 'Child' link-map configuration missing. [W][18:36:34] Cannot add 'Child' AC-3703 link to 'Parent' AC-3863, 'Child' link-map configuration missing. [W][18:36:34] Cannot add 'Child' AC-3813 link to 'Parent' AC-3863, 'Child' link-map configuration missing.

Configuration Used: { "source-project": "AC", "target-project": "Web2Demo", "query": "project=XOP ORDER BY Rank ASC", "using-jira-cloud": true, "workspace": "C:\Temp\JiraExport_AC\", "epic-link-field": "Epic Link", "sprint-field": "Sprint", "download-options": 7, "batch-size": 20, "log-level": "Info", "attachment-folder": "Attachments", "user-mapping-file": "users.txt", "base-area-path": "Migrated", "base-iteration-path": "Migrated", "ignore-failed-links": true, "process-template": "Agile", "link-map": { "link": [ { "source": "Epic", "target": "System.LinkTypes.Hierarchy-Reverse" }, { "source": "Parent", "target": "System.LinkTypes.Hierarchy-Reverse" }, { "source": "Relates", "target": "System.LinkTypes.Related" }, { "source": "relates to", "target": "System.LinkTypes.Related" }, { "source": "duplicates", "target": "System.LinkTypes.Related" }, { "source": "blocks", "target": "System.LinkTypes.Related" }, { "source": "is blocked by", "target": "System.LinkTypes.Related" }, { "source": "clones", "target": "System.LinkTypes.Related" }, { "source": "is cloned by", "target": "System.LinkTypes.Related" }, { "source": "is duplicated by", "target": "System.LinkTypes.Related" }, { "source": "split to", "target": "System.LinkTypes.Related" }, { "source": "split from", "target": "System.LinkTypes.Related" }, { "source": "causes", "target": "System.LinkTypes.Related" }, { "source": "is caused by", "target": "System.LinkTypes.Related" }, { "source": "Duplicate", "target": "System.LinkTypes.Duplicate-Reverse" }, { "source": "Task", "target": "System.LinkTypes.Hierarchy-Forward" }, { "source": "Bug", "target": "System.LinkTypes.Hierarchy-Reverse" }, { "source": "Bug Sub-Task", "target": "System.LinkTypes.Hierarchy-Forward" }, { "source": "New Feature", "target": "System.LinkTypes.Hierarchy-Reverse" }, { "source": "Sub-task", "target": "System.LinkTypes.Hierarchy-Forward" }, { "source": "Collaboration Sub-Task", "target": "System.LinkTypes.Hierarchy-Forward" }, { "source": "Documentation Task", "target": "System.LinkTypes.Hierarchy-Forward" }, { "source": "Documentation Sub-Task", "target": "System.LinkTypes.Hierarchy-Forward" }, { "source": "Experience Task", "target": "System.LinkTypes.Hierarchy-Forward" }, { "source": "Experience Sub-Task", "target": "System.LinkTypes.Hierarchy-Forward" }, { "source": "New Feature Sub-Task", "target": "System.LinkTypes.Hierarchy-Forward" } ] }, "type-map": { "type": [ { "source": "New Feature", "target": "Feature" }, { "source": "Epic", "target": "Epic" }, { "source": "Task", "target": "User Story" }, { "source": "Bug", "target": "Bug" }, { "source": "Sub-task", "target": "Task" }, { "source": "Bug Sub-Task", "target": "Task" }, { "source": "Bug Sub-Task - ", "target": "Task" }, { "source": "New Feature Sub-Task", "target": "Task" }, { "source": "Collaboration", "target": "User Story" }, { "source": "Collaboration Sub-Task", "target": "Task" }, { "source": "Improvement", "target": "Epic" }, { "source": "Improvement Sub-Task", "target": "Task" }, { "source": "Strategy Task", "target": "Bug" }, { "source": "Strategy Sub-Task", "target": "Task" }, { "source": "Help Desk", "target": "Bug" }, { "source": "Help Desk Sub-Task", "target": "Task" } ] }, "field-map": { "field": [ { "source": "summary", "target": "System.Title", "mapper": "MapTitle" }, { "source": "assignee", "target": "System.AssignedTo", "mapper": "MapUser" }, { "source": "description", "target": "System.Description", "mapper": "MapRendered" }, { "source": "priority", "target": "Microsoft.VSTS.Common.Priority", "mapping": { "values": [ { "source": "Blocker", "target": "1" }, { "source": "Critical", "target": "1" }, { "source": "Highest", "target": "1" }, { "source": "Major", "target": "2" }, { "source": "High", "target": "2" }, { "source": "Medium", "target": "3" }, { "source": "Low", "target": "3" }, { "source": "Lowest", "target": "4" }, { "source": "Minor", "target": "4" }, { "source": "Trivial", "target": "4" }, { "source": "Unassigned", "target": "0" }, { "source": "Not set", "target": "0" } ] } }, { "source": "labels", "target": "System.Tags", "mapper": "MapTags" }, { "source": "comment", "target": "System.History", "mapper": "MapRendered" }, { "source": "status", "target": "System.State", "for": "Feature,Epic,User Story,Bug", "mapping": { "values": [ { "source": "To Do", "target": "Proposed" }, { "source": "Done", "target": "Closed" }, { "source": "In Progress", "target": "Active" }, { "source": "Investigating - Needs Estimate", "target": "Active" }, { "source": "Blocked", "target": "Active" }, { "source": "Ready for UAT", "target": "Active" }, { "source": "Ready for QA", "target": "Active" }, { "source": "Ready for Production", "target": "Active" }, { "source": "Open", "target": "Proposed" }, { "source": "Handoff", "target": "Active" }, { "source": "Code Review", "target": "Active" }, { "source": "QA", "target": "Active" }, { "source": "Reopened", "target": "Active" }, { "source": "Design Review", "target": "Active" }, { "source": "Awaiting Estimate Approval", "target": "Active" } ] } }, { "source": "status", "target": "System.State", "for": "Task", "mapping": { "values": [ { "source": "To Do", "target": "Proposed" }, { "source": "Done", "target": "Closed" }, { "source": "In Progress", "target": "Active" }, { "source": "Investigating - Needs Estimate", "target": "Active" }, { "source": "Blocked", "target": "Active" }, { "source": "Ready for UAT", "target": "Active" }, { "source": "Ready for QA", "target": "Active" }, { "source": "Ready for Production", "target": "Active" }, { "source": "Open", "target": "Proposed" }, { "source": "Code Review", "target": "Active" }, { "source": "Awaiting Estimate Approval", "target": "Active" }, { "source": "QA", "target": "Active" }, { "source": "Reopened", "target": "Active" }, { "source": "Handoff", "target": "Active" }, { "source": "Design Review", "target": "Active" }, { "source": "Ready for Staging", "target": "Active" }, { "source": "Client Verification", "target": "Active" }, { "source": "UAT", "target": "Active" }, { "source": "Ready for Deployment", "target": "Active" } ] } }, { "source": "Story Points", "source-type": "name", "target": "Microsoft.VSTS.Scheduling.StoryPoints", "not-for": "Task" }, { "source": "timeestimate", "target": "Microsoft.VSTS.Scheduling.RemainingWork", "mapper": "MapRemainingWork", "for": "Feature,Epic,User Story,Bug,Task" }, { "source": "description", "target": "Microsoft.VSTS.TCM.ReproSteps", "for": "Bug" }, { "source": "environment", "source-type": "name", "target": "Microsoft.VSTS.TCM.SystemInfo", "for": "Bug,Epic" } ] } }

@TMHLS-Ultron can you specify what are the types for the parent and child item? I understand after exporting the parent does not have a link to the child item in the JSON but the child does. Also, the child item is created before the parent and then linked in Jira, what is the link type added between them?

qby-jowie commented 1 year ago

Could it be that you can't link issues if the project name changed at some point? The name of the project changed from FNTA to FNTAIOS and when I do the export, I get the following error. The old project name is still in the activity history of the Jira issue.

[I][17:19:31] Processing 7/210 - 'FNTAIOS-145'. [I][17:19:31] Processing epic parent 'FNTAIOS-30'. [W][17:19:31] Cannot add 'Child' FNTA-8 link to 'Parent' FNTAIOS-30, 'Child' link-map configuration missing.

dhananjaykumar-pathak commented 7 months ago

I'm getting the same warnings/errors about bi-directional linking with the latest build. Why it has not been resolved yet, though it is marked as closed. Besides going through the comments here, i did not find any solutions here by the contributors. How can an issue take 3-4 years to fix is beyond me. Any updates?