Content
View differences
Updated by Andrej Sandorf about 1 month ago
**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
**Technical notes**
Plan outline:
1. For the selected projects scan the issue payloads, collect only the \`customfield\_XXXXX\` IDs that have non-null values in the selected projects, store field definitions in \`jira\_fields\`
* Support 2. Map and create custom fields are (Jira UI
1. Re-use CFs which have the correct type names):
* Text Field (single line)
* Text Field (multi-line) 2. Create new CFs with the same name but mismatching type
* Date Picker 3. Create new CFs not found
* 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_ 4. Prepare special CFs like "Field context" lists
* For Jira custom fields 3. Associated the CFs with "Field context" (different content per projects/issuetypes), multiple custom fields will be created each work package type encountered during import, add to work package form
4. Set CF values on work packages at creation time, populate hierarchy items as needed
**Technical notes and limitations** Caveats:
As with other data, a flag is set so existing CFs are not deleted on revert.
<br>
**Supported custom field types**
<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-p"><code class="op-uc-code">string</code></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-p"><code class="op-uc-code">date</code></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-p"><code class="op-uc-code">checkboxes</code></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-code">bool</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">#73933</mention> <br>- if there is only one entry, <br> one for each option of a checkbox list, <br>one dedicated boolean custom field is created<br>- if there are multiple entries, <br> a multiselect list field is created<br>- checkbox list 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-code">string</code> with <code class="op-uc-code">url</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">#73956</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-p"><code class="op-uc-code">text</code></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">#73944</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-p"><code class="op-uc-code">number</code></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-p"><code class="op-uc-code">array</code> of <code class="op-uc-code">string</code></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-p"><code class="op-uc-code">cascadingselect</code></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-code">(project_identifier)</code></p></td></tr></tbody></table></figure>
**Partial data migration / To discuss**:
<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">Possible 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">User Picker (single user)</p></td><td class="op-uc-p"><code class="op-uc-code">datetime</code></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">"type": "datetime"</code><br><code class="op-uc-code">"custom": "com.atlassian.jira.plugin.system.customfieldtypes:datetime"</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">#32646 <br>- Time-of-day and timezone lost</p></td></tr><tr class="op-uc-table--row"><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"><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-table--cell"><p class="op-uc-p"><code class="op-uc-code">array</code> of <code class="op-uc-code">user</code></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": "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> out</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">array</code> of <code class="op-uc-code">label</code></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": "string"</code><br><code class="op-uc-code">"custom": "com.atlassian.jira.plugin.system.customfieldtypes:labels"</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">Currently imported as a list custom field</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">cascadingselect</code> 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">string</code></p></td><td class="op-uc-table--cell"><p class="op-uc-p">e.g. "Animals - Cat"</p></td></tr></tbody></table></figure>
**Out of scope:**
When creating CFs with different names as in the origin Jira, the names in the issue history are not changed.
<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">Example Jira CF</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"><code class="op-uc-code">array</code> of <code class="op-uc-code">options</code></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"><mention class="mention" data-id="73956" data-type="work_package" data-text="#73956">#73956</mention> </p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Customer Request Type</p><p class="op-uc-p"><br data-cke-filler="true"></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">"type": "sd-customerrequesttype"</code><br><code class="op-uc-code">"custom": "com.atlassian.servicedesk:vp-origin"</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">Template Type</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">"type": "any"</code><br><code class="op-uc-code">"custom": "com.intenso.jira.issue-templates:issue-templates-customfield"</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">Epic Link</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">"type": "any"</code><br><code class="op-uc-code">"custom": "com.pyxis.greenhopper.jira:gh-epic-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">Rank</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">"type": "any"</code><br><code class="op-uc-code">"custom": "com.pyxis.greenhopper.jira:gh-lexo-rank"</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"><code class="op-uc-code">array</code> of <code class="op-uc-code">component</code></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">coomponents</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"><code class="op-uc-code">array</code> of <code class="op-uc-code">string</code></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">multi-grouppicker</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"><code class="op-uc-code">version</code> single</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">version-picker</code></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Do we create versions? Those will be global</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">array</code> of <code class="op-uc-code">version</code></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">array</code> of <code class="op-uc-code">version</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"><code class="op-uc-code">array</code> of <code class="op-uc-code">issuelink</code></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">issuelinks</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"><code class="op-uc-code">any</code> — sprint</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">gh-sprint</code></p></td><td class="op-uc-table--cell"><p class="op-uc-p">State, board, date info</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">any</code> — epic link</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">gh-epic-link</code></p></td><td class="op-uc-table--cell"><p class="op-uc-p">(issue key, e.g. <code class="op-uc-code">PROJ-42</code>)</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">any</code> — unknown plugins</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Various Atlassian plugins</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Produces raw JSON string dump</p></td></tr></tbody></table></figure><br>
<br>
**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
**Technical notes**
Plan outline:
1. For the selected projects scan the issue payloads, collect only the \`customfield\_XXXXX\` IDs that have non-null values in the selected projects, store field definitions in \`jira\_fields\`
* Support
1. Re-use CFs which have the correct
* 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
4. Set CF values on work packages at creation time, populate hierarchy items as needed
**Technical notes and limitations**
As with other data, a flag is set so existing CFs are not deleted on revert.
**Supported custom field types**
**Partial data migration / To discuss**:
<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">Possible 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
**Out of scope:**
When creating CFs with different names as in the origin Jira, the names in the issue history are not changed.
<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">Example Jira CF</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"><code class="op-uc-code">array</code> of <code class="op-uc-code">options</code></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"><mention class="mention" data-id="73956" data-type="work_package" data-text="#73956">#73956</mention> </p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Customer Request Type</p><p class="op-uc-p"><br data-cke-filler="true"></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">"type": "sd-customerrequesttype"</code><br><code class="op-uc-code">"custom": "com.atlassian.servicedesk:vp-origin"</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">Template Type</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">"type": "any"</code><br><code class="op-uc-code">"custom": "com.intenso.jira.issue-templates:issue-templates-customfield"</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">Epic Link</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">"type": "any"</code><br><code class="op-uc-code">"custom": "com.pyxis.greenhopper.jira:gh-epic-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">Rank</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">"type": "any"</code><br><code class="op-uc-code">"custom": "com.pyxis.greenhopper.jira:gh-lexo-rank"</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"><code class="op-uc-code">array</code> of <code class="op-uc-code">component</code></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">coomponents</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"><code class="op-uc-code">array</code> of <code class="op-uc-code">string</code></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">multi-grouppicker</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"><code class="op-uc-code">version</code> single</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">version-picker</code></p></td><td class="op-uc-table--cell"><p class="op-uc-p">Do we create versions? Those will be global</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">array</code> of <code class="op-uc-code">version</code></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">array</code> of <code class="op-uc-code">version</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"><code class="op-uc-code">array</code> of <code class="op-uc-code">issuelink</code></p></td><td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">issuelinks</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"><code class="op-uc-code">any</code> — sprint</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">gh-sprint</code></p></td><td class="op-uc-table--cell"><p class="op-uc-p">State, board, date info</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">any</code> — epic link</p></td><td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">gh-epic-link</code></p></td><td class="op-uc-table--cell"><p class="op-uc-p">(issue key, e.g. <code class="op-uc-code">PROJ-42</code>)</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p"><code class="op-uc-code">any</code> — unknown plugins</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Various Atlassian plugins</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Produces raw JSON string dump</p></td></tr></tbody></table></figure><br>
<br>