Missing Advanced Roadmap custom fields

お困りですか?

アトラシアン コミュニティをご利用ください。

コミュニティに質問

プラットフォームについて: Server および Data Center のみ。この記事は、Server および Data Center プラットフォームのアトラシアン製品にのみ適用されます。

サーバー*製品のサポートは 2024 年 2 月 15 日に終了しました。サーバー製品を利用している場合は、アトラシアンのサーバー製品のサポート終了のお知らせページにて移行オプションをご確認ください。

*Fisheye および Crucible は除く

 

要約

Advanced Roadmap fields are missing from Jira. This makes the functionalities of the Advanced Roadmap for Jira to break. This can happen during migration from Server to Data Center installations.

This article instructs on adding the missing Advanced Roadmap fields to Jira through the Database.

診断

  • Run the below SQL query in Jira DB to identify the custom fields that are missing in the instance :
advanced roadmap fields
select * from customfield
where customfieldtypekey in
(
'com.atlassian.teams:rm-teams-custom-field-team',
'com.atlassian.jpo:jpo-custom-field-parent',
'com.atlassian.jpo:jpo-custom-field-baseline-start',
'com.atlassian.jpo:jpo-custom-field-baseline-end',
'com.atlassian.jpo:jpo-custom-field-original-story-points'
);
  • Normally, the customfield table should contain the following 5 fields, but in this case, some or all should be missing:

CUSTOMFIELDTYPEKEY

CUSTOMFIELDSEARCHERKEY

CFNAME

説明

com.atlassian.teams:rm-teams-custom-field-teamcom.atlassian.teams:rm-teams-custom-field-team-searcherチーム
com.atlassian.jpo:jpo-custom-field-parentcom.atlassian.jpo:jpo-custom-field-parent-searcherParent link
com.atlassian.jpo:jpo-custom-field-baseline-startcom.atlassian.jpo:jpo-custom-field-baseline-start-searcherTarget startThe targeted start date. This custom field is created and required by Portfolio for Jira.
com.atlassian.jpo:jpo-custom-field-baseline-endcom.atlassian.jpo:jpo-custom-field-baseline-end-searcherTarget endThe targeted end date. This custom field is created and required by Portfolio for Jira.
com.atlassian.jpo:jpo-custom-field-original-story-pointscom.atlassian.jpo:jpo-custom-field-original-story-points-searcher元のストーリー ポイント


原因

This type of issue is observed when migrating from the Server to Data Center.

ソリューション

Please make a native database backup before modifying the database.

Step 1: Identify the missing fields from the customfield table

Run the below SQL query to identify the fields that are missing in the instance. The rest of the article will apply to the fields that are missing.

advanced roadmap fields
select * from customfield
where customfieldtypekey in
(
'com.atlassian.teams:rm-teams-custom-field-team',
'com.atlassian.jpo:jpo-custom-field-parent',
'com.atlassian.jpo:jpo-custom-field-baseline-start',
'com.atlassian.jpo:jpo-custom-field-baseline-end',
'com.atlassian.jpo:jpo-custom-field-original-story-points'
);

Step 2: Insert the missing fields into the customfield table

  • Jira を停止します。
  • Execute the below query to add the fields to the CUSTOMFIELD table 

    • Insert query for Team field 

      INSERT INTO CUSTOMFIELD (ID,CUSTOMFIELDTYPEKEY, CUSTOMFIELDSEARCHERKEY, CFNAME, DESCRIPTION)
      VALUES ((SELECT max(id)+1 FROM CUSTOMFIELD),'com.atlassian.teams:rm-teams-custom-field-team', 'com.atlassian.teams:rm-teams-custom-field-team-searcher', 'Team',null);
    • Insert query for Parent field. 

      INSERT INTO CUSTOMFIELD (ID,CUSTOMFIELDTYPEKEY, CUSTOMFIELDSEARCHERKEY, CFNAME, DESCRIPTION)
      VALUES ((SELECT max(id)+1 FROM CUSTOMFIELD),'com.atlassian.jpo:jpo-custom-field-parent', 'com.atlassian.jpo:jpo-custom-field-parent-searcher', 'Parent Link',null);
    • Insert query for Target start field 

      INSERT INTO CUSTOMFIELD (ID,CUSTOMFIELDTYPEKEY, CUSTOMFIELDSEARCHERKEY, CFNAME, DESCRIPTION)
      VALUES ((SELECT max(id)+1 FROM CUSTOMFIELD),'com.atlassian.jpo:jpo-custom-field-baseline-start', 'com.atlassian.jpo:jpo-custom-field-baseline-start-searcher', 'Target start','The targeted start date. This custom field is created and required by Portfolio for Jira.');
    • Insert query for Target end field 

      INSERT INTO CUSTOMFIELD (ID,CUSTOMFIELDTYPEKEY, CUSTOMFIELDSEARCHERKEY, CFNAME, DESCRIPTION)
      VALUES ((SELECT max(id)+1 FROM CUSTOMFIELD),'com.atlassian.jpo:jpo-custom-field-baseline-end', 'com.atlassian.jpo:jpo-custom-field-baseline-end-searcher', 'Target end','The targeted end date. This custom field is created and required by Portfolio for Jira.');
    • Insert query for Original story points field 

      INSERT INTO CUSTOMFIELD (ID,CUSTOMFIELDTYPEKEY, CUSTOMFIELDSEARCHERKEY, CFNAME, DESCRIPTION)
      VALUES ((SELECT max(id)+1 FROM CUSTOMFIELD),'com.atlassian.jpo:jpo-custom-field-original-story-points', 'com.atlassian.jpo:jpo-custom-field-original-story-points-searcher', 'Original story points',null);
  • Alternatively, you can combine the queries in a single statement (remove the respective sub-queries for fields that are already present in Step 1)


    insert fields to table
    INSERT INTO CUSTOMFIELD (ID,CUSTOMFIELDTYPEKEY, CUSTOMFIELDSEARCHERKEY, CFNAME, DESCRIPTION)
    VALUES ((SELECT max(id)+1 FROM CUSTOMFIELD),'com.atlassian.teams:rm-teams-custom-field-team', 'com.atlassian.teams:rm-teams-custom-field-team-searcher', 'Team',null),
    ((SELECT max(id)+2 FROM CUSTOMFIELD),'com.atlassian.jpo:jpo-custom-field-parent', 'com.atlassian.jpo:jpo-custom-field-parent-searcher', 'Parent Link',null),
    ((SELECT max(id)+3 FROM CUSTOMFIELD),'com.atlassian.jpo:jpo-custom-field-baseline-start', 'com.atlassian.jpo:jpo-custom-field-baseline-start-searcher', 'Target start','The targeted start date. This custom field is created and required by Portfolio for Jira.'),
    ((SELECT max(id)+4 FROM CUSTOMFIELD),'com.atlassian.jpo:jpo-custom-field-baseline-end', 'com.atlassian.jpo:jpo-custom-field-baseline-end-searcher', 'Target end','The targeted end date. This custom field is created and required by Portfolio for Jira.'),
    ((SELECT max(id)+5 FROM CUSTOMFIELD),'com.atlassian.jpo:jpo-custom-field-original-story-points', 'com.atlassian.jpo:jpo-custom-field-original-story-points-searcher', 'Original story points',null);
    
    

Step 3: Check if the fields are inserted properly

Run the select query from Step 1 again, now there should be one field for each type.

Step 4: Check the available contexts

Start Jira and navigate to the Custom Fields menu in administration (/jira/secure/admin/ViewCustomFields.jspa).  Look at the Available Contexts column for the new fields (Parent Link, Team, Target Start, Target End, Original story points). It likely says 0 contexts.

Step 5: Add custom fields to Global Contexts

  • Click the cog next to the issue type, and go to configure

  • On the Configure Page, click on add new context.

  • On the Add Configuration Scheme context page, you need to provide a label. The labels for the built-in ARJ customfields follow this scheme: Default Configuration for (Custom Field Name).

  • Select Any Issue Type, and Global Context from the options below, and then click create.

Step 6: Test out the fields in Advanced Roadmaps

The custom fields should all be working now. Test out :

  • Assigning a parent to an Epic-level issue.

  • Assigning an Estimate from ARJ.

  • Assigning target start/end from ARJ.

  • Assigning a team in ARJ.

  • Committing all of those fields to Jira.

Step 7: Lock the Custom-fields

If everything is working, you should lock the custom-fields, to prevent you from changing the context anymore, as well as editing the field.

Locking of custom-fields is done in the MANAGEDCONFIRGURATIONITEM table. This can be verified by the below query:

SELECT * from MANAGEDCONFIGURATIONITEM

There should be no rows with ITEM_IDs that match the IDs of the customfields you just created. 

What you want is the following rows, where the number in the ITEM_ID fields corresponds to the customfield IDs you just created.

ID

ITEM_ID

ITEM_TYPE

MANAGED

ACCESS_LEVEL

SOURCE

DESCRIPTION_KEY

10014

customfield_10008

CUSTOM_FIELD

TRUE

LOCKED

com.atlassian.teams:field-locking-service

admin.managed.configuration.items.generic.description.locked

10015

customfield_10009

CUSTOM_FIELD

TRUE

LOCKED

com.atlassian.jpo:field-locking-service

admin.managed.configuration.items.generic.description.locked

10016

customfield_10010

CUSTOM_FIELD

TRUE

LOCKED

com.atlassian.jpo:field-locking-service

admin.managed.configuration.items.generic.description.locked

10017

customfield_10011

CUSTOM_FIELD

TRUE

LOCKED

com.atlassian.jpo:field-locking-service

admin.managed.configuration.items.generic.description.locked

10018

customfield_10012

CUSTOM_FIELD

TRUE

LOCKED

com.atlassian.jpo:field-locking-service

admin.managed.configuration.items.generic.description.locked

To create locks, use the below query for each of the fields inserted. Replace $ID$ with the actual ID of the custom field from customfield table for that field.

INSERT INTO MANAGEDCONFIGURATIONITEM (ID,ITEM_ID, ITEM_TYPE, MANAGED, ACCESS_LEVEL, SOURCE, DESCRIPTION_KEY)
VALUES ((SELECT max(id)+1 FROM MANAGEDCONFIGURATIONITEM),'customfield_$ID$', 'CUSTOM_FIELD', 'true', 'LOCKED','com.atlassian.teams:field-locking-service','admin.managed.configuration.items.generic.description.locked');


Post this, the MANAGEDCONFIGURATIONITEM should look correct.

Start Jira and validate that Advanced Roadmap is working as expected. For example:

  • Try to configure hierarchy levels.
  • Try to create/edit plans.

最終更新日 2023 年 6 月 2 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.