# Epic JIM-63 - Jira Migrator imports custom fields

Project: Stream Jira to OpenProject data Migrator
Status: closed
URL: https://community.openproject.org/work_packages/JIM-63

## Detailed specification

### Motivation and background information

### Acceptance criteria

### Out of scope

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

## Planning

| Attribute | Value |
| --- | --- |
| Roadmap | 2026 Q2 |
| Date |  |
| Votes |  |
| List | RM Jira exit, RM Jira Migrator |
| Target versions | 17.4.0 |
| Sprint | Sprint 0 (17.4) |
| Backlog bucket |  |
| Relevance |  |

## Subitems

_No work packages_

## Bugs and other work packages

_No work packages_

## Details

| Attribute | Value |
| --- | --- |
| Module |  |
| Enterprise plan |  |
| Labels |  |

## People

| Attribute | Value |
| --- | --- |
| Assignee |  |
| Accountable | Wieland Lindenthal |
| Product manager | Kristine Jetzke |
| Designer |  |
| Developers | Andrej Sandorf |
| Requested by |  |
| Interest by | Home (224196000003952096) |

## Estimates and progress

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

## Description

**As** an admin migrating from Jira to OpenProject  
**I want to** migrate custom fields of my Jira Issues to custom fields in OpenProject  
**so that** I have a more complete work package description

**Acceptance criteria**

  - Custom fields for custom field types OpenProject has a corresponding field type are migrated

  - Support fields are (Jira UI type names):
    
      - Text Field (single line)
    
      - Text Field (multi-line)
    
      - Date Picker
    
      - Checkboxes  
        *as a multi-select list or single boolean custom field*
    
      - Radio Buttons  
        *as a single select list*
    
      - URL Field
    
      - Number Field
    
      - Select List (single choice)
    
      - Select List (multiple choice)
    
      - Select List (cascading)
    
      - User Picker (single user)  
        *project members only*
    
      - User Picker (multiple users)  
        *project members only*

  - For Jira custom fields with "Field context" (different content per projects/issuetypes), multiple custom fields will be created

**Technical notes and limitations**

<figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table">
<thead class="op-uc-table--head"><tr class="op-uc-table--row">
<th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Jira field type</p></th>
<th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Jira CF schema</p></th>
<th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">OP target</p></th>
<th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Notes</p></th>
</tr></thead>
<tbody>
<tr class="op-uc-table--row">
<td class="op-uc-table--cell"><p class="op-uc-p">Text Field (single line)</p></td>
<td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">"type": "string"</code><br><code class="op-uc-code">"custom": "com.atlassian.jira.plugin.system.customfieldtypes:textfield"</code></p></td>
<td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">string</code></p></td>
<td class="op-uc-table--cell"><p class="op-uc-p"><br data-cke-filler="true"></p></td>
</tr>
<tr class="op-uc-table--row">
<td class="op-uc-table--cell"><p class="op-uc-p">Date Picker</p></td>
<td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">"type": "date"</code><br><code class="op-uc-code">"custom": "com.atlassian.jira.plugin.system.customfieldtypes:datepicker"</code></p></td>
<td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">date</code></p></td>
<td class="op-uc-table--cell"><p class="op-uc-p"><br data-cke-filler="true"></p></td>
</tr>
<tr class="op-uc-table--row">
<td class="op-uc-table--cell"><p class="op-uc-p">Checkboxes</p></td>
<td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">"type": "array"</code><br><code class="op-uc-code">"items": "option"</code><br><code class="op-uc-code">"custom": "com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes"</code></p></td>
<td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">bool</code>/<code class="op-uc-code">list</code></p></td>
<td class="op-uc-table--cell"><p class="op-uc-p"><mention class="mention" data-id="73933" data-type="work_package" data-text="#73933"><mention class="mention" data-id="73933" data-type="work_package" data-text="#73933">#73933</mention></mention> <br>- if there is only one entry, <br>   one dedicated boolean custom field is created<br>- if there are multiple entries, <br>   a multiselect list field is created<br>- checkbox list entries can be "disabled" in Jira,<br>OP does not support this</p></td>
</tr>
<tr class="op-uc-table--row">
<td class="op-uc-table--cell"><p class="op-uc-p">Radio Buttons</p></td>
<td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">"type": "option"</code><br><code class="op-uc-code">"custom": "com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons"</code></p></td>
<td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">list</code></p></td>
<td class="op-uc-table--cell"><p class="op-uc-p"><mention class="mention" data-id="73956" data-type="work_package" data-text="#73956"><mention class="mention" data-id="73956" data-type="work_package" data-text="#73956">#73956</mention></mention> <br>- imported as a single select list</p></td>
</tr>
<tr class="op-uc-table--row">
<td class="op-uc-table--cell"><p class="op-uc-p">URL Field</p></td>
<td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">"type": "string"</code><br><code class="op-uc-code">"custom": "com.atlassian.jira.plugin.system.customfieldtypes:url"</code></p></td>
<td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">link</code></p></td>
<td class="op-uc-table--cell"><p class="op-uc-p"><br data-cke-filler="true"></p></td>
</tr>
<tr class="op-uc-table--row">
<td class="op-uc-table--cell"><p class="op-uc-p">Text Field (multi-line)</p></td>
<td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">"type": "string"</code><br><code class="op-uc-code">"custom": "com.atlassian.jira.plugin.system.customfieldtypes:textarea"</code></p></td>
<td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">longtext</code></p></td>
<td class="op-uc-table--cell"><p class="op-uc-p"><mention class="mention" data-id="73944" data-type="work_package" data-text="#73944"><mention class="mention" data-id="73944" data-type="work_package" data-text="#73944">#73944</mention></mention> <br>- Text is converted into Markdown as Wiki markup, <br>which may result in unexpected formatting.</p></td>
</tr>
<tr class="op-uc-table--row">
<td class="op-uc-table--cell"><p class="op-uc-p">Number Field</p></td>
<td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">"type": "number"</code><br><code class="op-uc-code">"custom": "com.atlassian.jira.plugin.system.customfieldtypes:float"</code></p></td>
<td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">float</code></p></td>
<td class="op-uc-table--cell"><p class="op-uc-p"><br data-cke-filler="true"></p></td>
</tr>
<tr class="op-uc-table--row">
<td class="op-uc-table--cell">
<p class="op-uc-p">Select List (single choice)</p>
<p class="op-uc-p">Select List (multiple choice)</p>
</td>
<td class="op-uc-table--cell">
<p class="op-uc-p"><code class="op-uc-code">"type": "option"</code><br><code class="op-uc-code">"custom": "com.atlassian.jira.plugin.system.customfieldtypes:select"</code>,</p>
<p class="op-uc-p">and</p>
<p class="op-uc-p"><code class="op-uc-code">"type": "array"</code><br><code class="op-uc-code">"items": "option"</code><br><code class="op-uc-code">"custom": "com.atlassian.jira.plugin.system.customfieldtypes:multiselect"</code></p>
</td>
<td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">list</code></p></td>
<td class="op-uc-table--cell"><p class="op-uc-p">- If a "Field context" is used on Jira side for <br>different list options per project and issue type, <br>multiple OP custom fields are created<br>As these contexts are not available via the API <br>their names cannot be used, the field names are<br>suffixed with <code class="op-uc-code">(project_identifier)</code><br>- List entries can be "disabled" in Jira, <br>OP does not support this</p></td>
</tr>
<tr class="op-uc-table--row">
<td class="op-uc-table--cell"><p class="op-uc-p">Select List (cascading)</p></td>
<td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">"type": "option-with-child"</code><br><code class="op-uc-code">"custom": "com.atlassian.jira.plugin.system.customfieldtypes:cascadingselect"</code></p></td>
<td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">hierarchy</code> (Enterprise)</p></td>
<td class="op-uc-table--cell"><p class="op-uc-p">- If a "Field context" is used on Jira side for <br>different list options per project and issue type, <br>multiple OP custom fields are created<br>As these contexts are not available via the API <br>their names cannot be used, the field names are<br>suffixed with <code class="op-uc-code">(project_identifier)</code></p></td>
</tr>
<tr class="op-uc-table--row">
<td class="op-uc-table--cell"><p class="op-uc-p">Select List (cascading)<br>on Community Edition</p></td>
<td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">"type": "option-with-child"</code><br><code class="op-uc-code">"custom": "com.atlassian.jira.plugin.system.customfieldtypes:cascadingselect"</code></p></td>
<td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">list</code></p></td>
<td class="op-uc-table--cell"><p class="op-uc-p">the tree elements are collapsed into each one element<br>e.g. "Animals", "Animals - Cat", "Animals - Dog"</p></td>
</tr>
<tr class="op-uc-table--row">
<td class="op-uc-table--cell"><p class="op-uc-p">User Picker (single user)</p></td>
<td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">"type": "user"</code><br><code class="op-uc-code">"custom": "com.atlassian.jira.plugin.system.customfieldtypes:userpicker"</code></p></td>
<td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">user</code></p></td>
<td class="op-uc-table--cell"><p class="op-uc-p">- OP requires users in the select to be members of the project<br>to not change visibility, non-member users are left out</p></td>
</tr>
<tr class="op-uc-table--row">
<td class="op-uc-table--cell" style="border-bottom:1px solid rgba(9, 30, 66, 0.14);padding:7px 10px;vertical-align:top;"><p class="op-uc-p">User Picker (multiple users)</p></td>
<td class="op-uc-table--cell" style="border-bottom:1px solid rgba(9, 30, 66, 0.14);padding:7px 10px;vertical-align:top;"><p class="op-uc-p"><code class="op-uc-code">"type": "array"</code><br><code class="op-uc-code">"items": "user"</code><br><code class="op-uc-code">"custom": "com.atlassian.jira.plugin.system.customfieldtypes:multiuserpicker"</code></p></td>
<td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">user</code></p></td>
<td class="op-uc-table--cell"><p class="op-uc-p">- OP requires users in the select to be members of the project<br>to not change visibility, non-member users are left out</p></td>
</tr>
</tbody>
</table></figure><br>

<br>
