After migrating from Jira Cloud to Data Center, default Request Type icons are missing

Platform Notice: Data Center Only - This article only applies to Atlassian products on the Data Center platform.

Note that this KB was created for the Data Center version of the product. Data Center KBs for non-Data-Center-specific features may also work for Server versions of the product, however they have not been tested. Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.

*Except Fisheye and Crucible

Summary

After migrating from Jira Cloud to Jira Data Center, when user tries to select an Icon for a Request Type in JSM Project, some of the Default/Out-of-box RequestType icon images are missing as shown in the screenshot. The issue is observed when user tries to set an icon to a 'Request Type' from Project Settings.

Diagnosis

User (with Project administrator permission) tries to set the icon for a Request Type by following the steps mentioned below:

  • Login to Jira and navigate to Project Settings → Request Type

  • Hover over the icon under the Icon section to get the Edit Option

  • Click on the 'Edit' symbol, which opens a Wizard showing all Default/Out-of-box Request Type icons along with saved Custom icons.

Some of the icon's images are missing, as shown in the screenshot above.

The below errors are observed in the $JIRA_HOME/log/atlassian-jira.log -

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 2024-02-17 19:55:37,088+0000 http-nio-8080-exec-12 url: /jira/secure/viewavatar; user: admin ERROR admin 1195x434x1 1bhz6az 172.29.177.136,172.50.0.3 /secure/viewavatar [o.a.c.c.C.[Catalina].[localhost].[/jira]] Unhandled exception occurred whilst decorating page java.lang.NullPointerException at com.atlassian.jira.avatar.AvatarManagerImpl.hasImage(AvatarManagerImpl.java:622) at com.atlassian.jira.web.servlet.ViewUniversalAvatarServletImpl.getAvatar(ViewUniversalAvatarServletImpl.java:76) at com.atlassian.jira.web.servlet.ViewUniversalAvatarServletImpl.doGet(ViewUniversalAvatarServletImpl.java:47) at com.atlassian.jira.web.servlet.ViewUniversalAvatarServlet.doGet(ViewUniversalAvatarServlet.java:20) at javax.servlet.http.HttpServlet.service(HttpServlet.java:529) at javax.servlet.http.HttpServlet.service(HttpServlet.java:623) ... 44 filtered ... ... 2024-02-17 19:55:37,093+0000 http-nio-8080-exec-12 ERROR [o.a.c.c.C.[.[localhost].[/jira].[viewUniversalAvatarServlet]] Servlet.service() for servlet [viewUniversalAvatarServlet] in context with path [/jira] threw exception java.lang.NullPointerException at com.atlassian.jira.avatar.AvatarManagerImpl.hasImage(AvatarManagerImpl.java:622) at com.atlassian.jira.web.servlet.ViewUniversalAvatarServletImpl.getAvatar(ViewUniversalAvatarServletImpl.java:76) at com.atlassian.jira.web.servlet.ViewUniversalAvatarServletImpl.doGet(ViewUniversalAvatarServletImpl.java:47) at com.atlassian.jira.web.servlet.ViewUniversalAvatarServlet.doGet(ViewUniversalAvatarServlet.java:20) at javax.servlet.http.HttpServlet.service(HttpServlet.java:529) at javax.servlet.http.HttpServlet.service(HttpServlet.java:623) ... 44 filtered ... ... 2024-02-17 19:55:37,128+0000 http-nio-8080-exec-12 url: /jira/internal-error ERROR [c.a.j.web.servlet.InternalServerErrorServlet] {errorId=36f525b7-c159-44d6-ab5a-1483028cbb11, interpretedMsg=, cause=java.lang.NullPointerException, stacktrace=java.lang.NullPointerException at com.atlassian.jira.avatar.AvatarManagerImpl.hasImage(AvatarManagerImpl.java:622) [classes/:?] at com.atlassian.jira.web.servlet.ViewUniversalAvatarServletImpl.getAvatar(ViewUniversalAvatarServletImpl.java:76) [classes/:?] at com.atlassian.jira.web.servlet.ViewUniversalAvatarServletImpl.doGet(ViewUniversalAvatarServletImpl.java:47) [classes/:?] at com.atlassian.jira.web.servlet.ViewUniversalAvatarServlet.doGet(ViewUniversalAvatarServlet.java:20) [classes/:?] at javax.servlet.http.HttpServlet.service(HttpServlet.java:529) [servlet-api.jar:4.0.FR] at javax.servlet.http.HttpServlet.service(HttpServlet.java:623) [servlet-api.jar:4.0.FR] ... ...

Cause

The default Request Type icon images are present inside: <JIRA_HOME>/plugins/installed-plugins/jira-servicedesk-5.12.2-REL-0001.jar. When extracted using command:

1 jar xf jira-servicedesk-5.12.2-REL-0001.jar

the default Request Type icon images can be found at the location: //jar_extract/img/request-type-icons

1 2 3 4 5 6 7 8 9 10 11 ubuntu@ip-XX-XX-XX-XX:~/jar_extract/img$ tree -d . ├── automation ├── chaperone ├── easteregg ├── issue-type-icons ├── onboarding │   └── renaissance ├── project-template ├── request-type-icons └── upm

There are 40 default Request Type icon images stored in request-type-icons folder.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 ubuntu@ip-10-140-18-57:~/jar_extract/img/request-type-icons$ tree . ├── RT_ICONS_add_person.svg ├── RT_ICONS_aeroplane.svg ├── RT_ICONS_calendar.svg ├── RT_ICONS_camera.svg ├── RT_ICONS_car.svg ├── RT_ICONS_cd.svg ├── RT_ICONS_chair.svg ├── RT_ICONS_code.svg ├── RT_ICONS_database.svg ├── RT_ICONS_dollar.svg ├── RT_ICONS_down_cloud.svg ├── RT_ICONS_envelope.svg ├── RT_ICONS_gears.svg ├── RT_ICONS_headset.svg ├── RT_ICONS_heart.svg ├── RT_ICONS_house.svg ├── RT_ICONS_keyboard.svg ├── RT_ICONS_light_bulb.svg ├── RT_ICONS_loop.svg ├── RT_ICONS_marker.svg ├── RT_ICONS_monitor.svg ├── RT_ICONS_open_book.svg ├── RT_ICONS_padlock.svg ├── RT_ICONS_plus.svg ├── RT_ICONS_power_button.svg ├── RT_ICONS_present.svg ├── RT_ICONS_printer.svg ├── RT_ICONS_question.svg ├── RT_ICONS_robot.svg ├── RT_ICONS_share.svg ├── RT_ICONS_signal_tower.svg ├── RT_ICONS_smartphone.svg ├── RT_ICONS_swipe_card.svg ├── RT_ICONS_thunder.svg ├── RT_ICONS_two_people.svg ├── RT_ICONS_up_cloud.svg ├── RT_ICONS_volume.svg ├── RT_ICONS_warning.svg ├── RT_ICONS_workflow.svg └── RT_ICONS_wrench.svg

Details of Default Request Type icons are stored in Database in avatar table as well.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 SELECT * FROM avatar WHERE avatartype = 'SD_REQTYPE'; id | filename | contenttype | avatartype | owner | systemavatar -------+---------------------------+---------------+------------+-------+-------------- 10700 | RT_ICONS_plus.svg | image/svg+xml | SD_REQTYPE | | 1 10701 | RT_ICONS_present.svg | image/svg+xml | SD_REQTYPE | | 1 10702 | RT_ICONS_calendar.svg | image/svg+xml | SD_REQTYPE | | 1 10703 | RT_ICONS_open_book.svg | image/svg+xml | SD_REQTYPE | | 1 10704 | RT_ICONS_two_people.svg | image/svg+xml | SD_REQTYPE | | 1 10705 | RT_ICONS_camera.svg | image/svg+xml | SD_REQTYPE | | 1 10706 | RT_ICONS_heart.svg | image/svg+xml | SD_REQTYPE | | 1 10707 | RT_ICONS_light_bulb.svg | image/svg+xml | SD_REQTYPE | | 1 10708 | RT_ICONS_house.svg | image/svg+xml | SD_REQTYPE | | 1 10709 | RT_ICONS_chair.svg | image/svg+xml | SD_REQTYPE | | 1 10710 | RT_ICONS_robot.svg | image/svg+xml | SD_REQTYPE | | 1 10711 | RT_ICONS_swipe_card.svg | image/svg+xml | SD_REQTYPE | | 1 10712 | RT_ICONS_dollar.svg | image/svg+xml | SD_REQTYPE | | 1 10713 | RT_ICONS_marker.svg | image/svg+xml | SD_REQTYPE | | 1 10714 | RT_ICONS_car.svg | image/svg+xml | SD_REQTYPE | | 1 10715 | RT_ICONS_aeroplane.svg | image/svg+xml | SD_REQTYPE | | 1 10716 | RT_ICONS_database.svg | image/svg+xml | SD_REQTYPE | | 1 10717 | RT_ICONS_volume.svg | image/svg+xml | SD_REQTYPE | | 1 10718 | RT_ICONS_smartphone.svg | image/svg+xml | SD_REQTYPE | | 1 10719 | RT_ICONS_keyboard.svg | image/svg+xml | SD_REQTYPE | | 1 10720 | RT_ICONS_code.svg | image/svg+xml | SD_REQTYPE | | 1 10721 | RT_ICONS_workflow.svg | image/svg+xml | SD_REQTYPE | | 1 10722 | RT_ICONS_up_cloud.svg | image/svg+xml | SD_REQTYPE | | 1 10723 | RT_ICONS_power_button.svg | image/svg+xml | SD_REQTYPE | | 1 10724 | RT_ICONS_headset.svg | image/svg+xml | SD_REQTYPE | | 1 10725 | RT_ICONS_gears.svg | image/svg+xml | SD_REQTYPE | | 1 10726 | RT_ICONS_loop.svg | image/svg+xml | SD_REQTYPE | | 1 10727 | RT_ICONS_question.svg | image/svg+xml | SD_REQTYPE | | 1 10728 | RT_ICONS_signal_tower.svg | image/svg+xml | SD_REQTYPE | | 1 10729 | RT_ICONS_down_cloud.svg | image/svg+xml | SD_REQTYPE | | 1 10730 | RT_ICONS_wrench.svg | image/svg+xml | SD_REQTYPE | | 1 10731 | RT_ICONS_add_person.svg | image/svg+xml | SD_REQTYPE | | 1 10732 | RT_ICONS_monitor.svg | image/svg+xml | SD_REQTYPE | | 1 10733 | RT_ICONS_envelope.svg | image/svg+xml | SD_REQTYPE | | 1 10734 | RT_ICONS_padlock.svg | image/svg+xml | SD_REQTYPE | | 1 10735 | RT_ICONS_printer.svg | image/svg+xml | SD_REQTYPE | | 1 10736 | RT_ICONS_share.svg | image/svg+xml | SD_REQTYPE | | 1 10737 | RT_ICONS_cd.svg | image/svg+xml | SD_REQTYPE | | 1 10738 | RT_ICONS_warning.svg | image/svg+xml | SD_REQTYPE | | 1 10739 | RT_ICONS_thunder.svg | image/svg+xml | SD_REQTYPE | | 1 (40 rows)

Some Request Type icons present in Jira Cloud are not available in Jira Data Center. During restore of Jira Cloud backup, entries related to Request Type icons (which are not present in Jira Data Center) are added to avatar table. Since, the respective icons image is not present in jira-servicedesk-5.12.2-REL-0001.jar , Jira could not display the icons in Jira UI.

Solution

  • Find the entries (which are invalid) in avatar table which are added after the XML Restore.

    DB Query to find the invalid entries in avatar table

    1 SELECT * FROM avatar WHERE avatartype = 'SD_REQTYPE' AND filename not in ('RT_ICONS_plus.svg','RT_ICONS_present.svg','RT_ICONS_calendar.svg','RT_ICONS_open_book.svg','RT_ICONS_two_people.svg', 'RT_ICONS_camera.svg', 'RT_ICONS_heart.svg', 'RT_ICONS_light_bulb.svg','RT_ICONS_house.svg','RT_ICONS_chair.svg','RT_ICONS_robot.svg','RT_ICONS_swipe_card.svg','RT_ICONS_marker.svg','RT_ICONS_car.svg','RT_ICONS_aeroplane.svg','RT_ICONS_database.svg','RT_ICONS_volume.svg','RT_ICONS_smartphone.svg','RT_ICONS_keyboard.svg','RT_ICONS_code.svg','RT_ICONS_workflow.svg','RT_ICONS_up_cloud.svg','RT_ICONS_power_button.svg','RT_ICONS_headset.svg','RT_ICONS_gears.svg','RT_ICONS_loop.svg','RT_ICONS_question.svg','RT_ICONS_signal_tower.svg','RT_ICONS_down_cloud.svg','RT_ICONS_wrench.svg','RT_ICONS_add_person.svg','RT_ICONS_monitor.svg','RT_ICONS_envelope.svg','RT_ICONS_padlock.svg','RT_ICONS_printer.svg','RT_ICONS_share.svg','RT_ICONS_cd.svg','RT_ICONS_warning.svg','RT_ICONS_thunder.svg','RT_ICONS_dollar.svg');
  • Stop Jira service

  • Take a backup of Jira database

     Always back up your data before performing any modification to the database. If possible, try your modifications on a test server.

  • Delete the identified row

    DB query to delete the invalid entries in avatar table

    1 DELETE FROM avatar WHERE avatartype = 'SD_REQTYPE' AND filename not in ('RT_ICONS_plus.svg','RT_ICONS_present.svg','RT_ICONS_calendar.svg','RT_ICONS_open_book.svg','RT_ICONS_two_people.svg', 'RT_ICONS_camera.svg', 'RT_ICONS_heart.svg', 'RT_ICONS_light_bulb.svg','RT_ICONS_house.svg','RT_ICONS_chair.svg','RT_ICONS_robot.svg','RT_ICONS_swipe_card.svg','RT_ICONS_marker.svg','RT_ICONS_car.svg','RT_ICONS_aeroplane.svg','RT_ICONS_database.svg','RT_ICONS_volume.svg','RT_ICONS_smartphone.svg','RT_ICONS_keyboard.svg','RT_ICONS_code.svg','RT_ICONS_workflow.svg','RT_ICONS_up_cloud.svg','RT_ICONS_power_button.svg','RT_ICONS_headset.svg','RT_ICONS_gears.svg','RT_ICONS_loop.svg','RT_ICONS_question.svg','RT_ICONS_signal_tower.svg','RT_ICONS_down_cloud.svg','RT_ICONS_wrench.svg','RT_ICONS_add_person.svg','RT_ICONS_monitor.svg','RT_ICONS_envelope.svg','RT_ICONS_padlock.svg','RT_ICONS_printer.svg','RT_ICONS_share.svg','RT_ICONS_cd.svg','RT_ICONS_warning.svg','RT_ICONS_thunder.svg','RT_ICONS_dollar.svg');
  • Start Jira Service

Updated on March 14, 2025

Still need help?

The Atlassian Community is here for you.