# Epic JIM-43 - Jira Migrator imports relationships between work items.

Project: Stream Jira to OpenProject data Migrator
Status: in development
URL: https://community.openproject.org/work_packages/JIM-43

## Detailed specification

### Motivation and background information

The relationships between work items hold a lot of valuable information. For exeample, parent-child relationships break down abstract EPICs into USER STORYs. Maintaining that information during the data migration is of great value.

### Acceptance criteria

*   Work item relations:
    
    *   Parent-Child
        
    *   Follow-Precedes
        
    *   Blocks / Is blocked by ==&gt; Blocks/Blocked-by
        
    *   Clones/Is cloned by ==&gt; Relates to
        
    *   Relates to &nbsp;==&gt; Relates to
        
    *   Custom link types
        
        *   &quot;required by&quot; ==&gt; &quot;requires&quot;
            
        *   Others we use &quot;relates to&quot; with a &quot;Description&quot; on the relation like
            
            *   &quot;implements&quot;
                
            *   &quot;causes&quot;
                
            *   &quot;required by&quot;
                
            *   &quot;causes&quot;
                
            *   ...

### Out of scope

*   Allowig admins to create new relation types.

| Attribute | Value |
| --- | --- |
| Mockups |  |

## Planning

| Attribute | Value |
| --- | --- |
| Roadmap | 2026 Q4 |
| Date |  |
| Votes |  |
| List | RM Jira exit, RM Jira Migrator |
| Target versions | 18.0.0 |
| Sprint |  |
| Backlog bucket |  |
| Relevance | Showstopper — Go-Live Blocker |

## Subitems

| ID | Type | Subject | Status | Assignee | Target versions | Project | Priority | Spent time |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| JIM-8 | Feature | Origin Key and Origin Internal ID for imported work packages  | review failed |  | 18.0.0 | Stream Jira to OpenProject data Migrator | Medium |  |
| JIM-75 | Feature | Jira Migrator  imports parent-child relationships (subtasks) | merged |  | 18.0.0 | Stream Jira to OpenProject data Migrator | Medium |  |
| JIM-76 | Feature | Jira Migrator imports issue links as relationships | review failed |  | 18.0.0 | Stream Jira to OpenProject data Migrator | Medium |  |
| JIM-273 | Feature | Migrate Epic Link field | new |  | 18.1.0 | Stream Jira to OpenProject data Migrator | Immediate |  |
| JIM-223 | Feature | Jira Migrator allows to map Jira relationship names to OpenProject build-in relations | new |  |  | Stream Jira to OpenProject data Migrator | High |  |

## Bugs and other work packages

_No work packages_

## Details

| Attribute | Value |
| --- | --- |
| Module | Integrations / Jira |
| Enterprise plan | Community (COM) |
| Labels |  |

## People

| Attribute | Value |
| --- | --- |
| Assignee | Pavel Balashou |
| Accountable | Wieland Lindenthal |
| Product manager | Kristine Jetzke |
| Designer | Marc Alcobé |
| Developers | OP Dev Pro Team |
| Requested by |  |
| Interest by | Home (224196000003952096) |

## Estimates and progress

| Attribute | Value |
| --- | --- |
| Work |  |

## Description

​Jira side:

*   Blocks / is blocked by
    
*   Clones / is cloned by
    
*   Duplicates / is duplicated by
    
*   Relates to / relates to
    
*   Plus arbitraty ones that can be added by admin
    

OpenProject side:

*   Relates to
    
*   Parent-Child
    
*   Predesessor-Successor
    
*   Duplicates
    
*   Blockes
    
*   Includes
    
*   Requires
    

## Mapping

*   Blocks / is blocked by =&gt; Blockes
    
*   Clones / is cloned by =&gt; Relates to with description
    
*   Duplicates / is duplicated by =&gt; Duplicates
    
*   Relates to / relates to =&gt; Relates to with description
    
*   Plus arbitraty ones that can be added by admin =&gt; Relates to with description
    

## General approach

*   Store a persistent mapping between JIRA issue and OpenProject work package in a separate table
    
*   Dedicated new step in import: migrate all relationships
    
*   This step also includes the task / sub-task relationships
    

### How do we deal with links to projects that are not part of import scope?

*   Ignore if the link points to an issue not yet imported to OpenProject and not part of same import run
    
*   Otherwise, create it. If the linked issue is not part of the import run but already exists in OpenProject: use persistent mapping table to look up OpenProject destination object
    
*   Log WARN if the destination object was not found
