古いデータを失うことなく既存のカスタム フィールドのコンテキストを変更する
プラットフォームについて: Data Center - この記事は、Data Center プラットフォームのアトラシアン製品に適用されます。
このナレッジベース記事は製品の Data Center バージョン用に作成されています。Data Center 固有ではない機能の Data Center ナレッジベースは、製品のサーバー バージョンでも動作する可能性はありますが、テストは行われていません。サーバー*製品のサポートは 2024 年 2 月 15 日に終了しました。サーバー製品を利用している場合は、アトラシアンのサーバー製品のサポート終了のお知らせページにて移行オプションをご確認ください。
*Fisheye および Crucible は除く
説明
データを入力済みの既存のカスタム フィールドのコンテキストを変更する必要がある場合があります。この操作では、コンテキストの変更後にこれまでのすべての課題を更新することが必要になる場合があり、データが失われる可能性があります。この操作により、カスタム フィールドを新しいバックエンド データで強制的に更新することで、Jira インターフェイスには変化が見られませんが、履歴データの整合性を確保することができます。
There is a related bug currently tracked in JRASERVER-62455 - Getting issue details... STATUS
例
シナリオ
"Example List" という名前の "選択リスト" カスタム フィールドが存在し、次の値が入力されています。
- Value One
- Value Two
- Value Three
- Value Four
既定値を持たない既存のコンテキストがあります。
The "Example List" field is used in the projects "Example Project 1 - No Default" and "Example Project 2 - Default." This field has been in use on both projects for some time, so both projects have issues with this field populated.
目標
Change the context for the "Example List" without losing the data previously entered into the custom field for "Example Project 2 - Default."
完了すると次のようになっているはずです。
プロジェクト | カスタム フィールド | 既定値 |
---|---|---|
Example Project 1 - No Default | Example List (古いコンテキスト) | (なし) |
Example Project 2 - Default | Example List (新しいコンテキスト) | "Value Three" |
In other words, the "Example List" custom field will stay the same, including the existing values from those issues that have already been created, but new issues in the "Example Project 2 - Default" project will have a default value for "Example List."
"Example Project 1 - No Default" will not undergo a change of context for the "Example List" custom field, so no further action will be necessary.
注意
If you have a test environment, please utilize it for your own testing before making any changes on your live instance of JIRA. Either way, we highly recommend backing up your data before proceeding.
Solution 1 - From custom context to custom context
This solution applies when you are moving between two custom contexts:
- Assign your new context (with a default value) to "Example Project 2 - Default"
Issues >> Search issues
に移動します。- "Example List" カスタム フィールドに入力されたそれぞれの値について、次の手順を実行します。
- JQL Search: Project = "Example Project 2 - Default" AND "Example List" = someValue
- [ツール] > [一括変更]
- すべての課題を選択して [次へ] をクリック
- [課題を編集] を選択して [次へ] をクリック
- "Example List" ボックスを選択して任意の値を選択し、[次へ] をクリック
- 変更を確認して [確認]
Solution 2 - From custom context to default (global) context
This solution applies when you want to change back into the default context:
- First, we have to identify the ID of the Custom field we want to modify. Go to Issues > Custom Fields > Affected Custom Field > Configure and take note of its ID from the URL (e.g., /secure/admin/ConfigureCustomField!default.jspa?customFieldId=10701)
- Then we will have to identify the IDs of the current context and the default scheme context, you can also verify and note this information from the URL, when configuring the context (e.g. /secure/admin/ManageConfigurationScheme!default.jspa?fieldConfigSchemeId=11001&customFieldId=10701)
Now on the database you have to retrieve each individual option ID, that is associated with the custom field project-specific context and also from the default context:
SELECT id,customvalue FROM customfieldoption where customfield = customFieldId AND customfieldconfig = fieldConfigSchemeId;
- Note down all the IDs and values. Then remove the project-specific Context.
- Jira を停止します。
- When you delete the context the customOption IDs still remain, however they no longer link to any context, therefore it’s empty on the UI.
- If you recreate the context, a new set of IDs will be generated, which do not match the previously existing ones, still resulting in "data loss"
What we aim do to now is to replace the IDs from the custom values of the delete context with equivalent ones from the default context. To achieve this, for EACH customvalue, perform the following:
update customfieldvalue set stringvalue='DefaultContextcustomvalueID' where stringvalue ='CustomContextcustomvalueID';
- Start Jira, verify that the values are now displayed in the customfield
Note: If you set a global context for the field, you can still create project-specific contexts for the same field and add existing projects to those. In this case, project-specific contexts will override the global one in selected projects. (from Configuring Custom Field Contexts)