Guido Bernuetz
Giga Guru

Overview

The Roadmap widget helps a lot to visualize all kind of planned tasks on a schedule.

It supports:

  • Grouping the rows by max. 2 levels
  • Coloring by data values (eg. status)
  • View panel for details
  • Milestones
  • Data items direct on the bar
  • Fexibel side panel
  • Editing by drag and drop
  • ... and more

See: https://developer.servicenow.com/dev.do#!/reference/next-experience/utah/shared-components/sn-roadma...

Challenges:

  • To know how JSON structures looks like
  • It displays nothing if the configuration is wrong. (That may be frustrating)

RM example page.png

 

 

In next section I describe step by step the configuration.

Step-by-step

Roadmap Items

Example of Roadmap items (as JSON):

 

 

 

 

 

[
    {
        "details": [	// collection of details to be displayed in details panel
            {
                "label": "Name",
                "value": {
                    "type": "string",
                    "value": "SD-X 0.9 Development"
                }
            },
            {
                "label": "Release",
                "value": {
                    "type": "string",
                    "value": "SDX 0.9"
                }
            },
            {
                "label": "Release Type",
                "value": {
                    "type": "string",
                    "value": "2 - High"
                }
            },
            {
                "label": "Priority",
                "value": {
                    "type": "string",
                    "value": "Major"
                }
            },
            {
                "label": "Product",
                "value": {
                    "type": "string",
                    "value": "SD-X"
                }
            }
        ],
        "id": {				// mandatory element!
            "displayValue": "RLSE0010010",
            "value": "RLSE0010010"
        },
        "planned_end": {               // to be mapped in meta data as end date
            "displayValue": "2022-06-13 12:45:09",
            "value": "2022-06-13 12:45:09"
        },
        "planned_start": {            // to be mapped in meta data as start date
            "displayValue": "2022-09-28 06:44:16",  // display values of start and end date must be in the internal format
            "value": "2022-09-28 06:44:16"
        },
        "product": {
            "displayValue": "SD-X",
            "value": "PDCT0010001"
        },
        "rel_phase": {
            "displayValue": "Development",
            "value": "development"
        },
        "release": {
            "displayValue": "SDX 0.9",
            "value": "RLSE0010007"
        },
        "server": {
            "displayValue": "Sn dev 1",
            "value": "9251029747d721102bb36241e36d43f9"
        },
        "short_description": {
            "displayValue": "SD-X 0.9 Development",
            "value": "SD-X 0.9 Development"
        }
    }
]

 

 

 

 

Additional data can included in an item. The id element and date elements for start and end are mandatory

It contains comments by //. Of course comments are not valid in JSON .

Next the roadmap items meta data example:

 

 

 

 

{
    "colorableFields": [
        {
            "label": "Release Phase",
            "name": "rel_phase"      // must match to an element in field color mappings!
        }
    ],
    "endDateField": {
        "label": "Planned end date",
        "name": "planned_end_date"
    },
    "groupableFields": [
        {
            "label": "Project manager",
            "name": "project_manager"
        },
        {
            "label": "State",
            "name": "state"
        },
        {
            "label": "priority",
            "name": "priority"
        }
    ],
    "itemNameField": {
        "label": "Project name",
        "name": "short_description"
    },
    "itemOwnerField": {
        "label": "Project manager",
        "name": "project_manager"
    },
    "startDateField": {
        "label": "Planned start date",
        "name": "planned_start_date"
    }
}

 

 

 

 

 

Coloring 

Next an example of Field color mapping:

 

 

 

 

 

{
    "rel_phase": {
        "deployment": {
            "background": "rgb(201,224,202)",
            "border": "rgb(22,79,26)",
            "pillColor": "positive",
            "progress": "rgb(119,178,123)"
        },
        "development": {
            "background": "rgb(244,240,191)",
            "border": "rgb(149,139,17)",
            "pillColor": "warning",
            "progress": "rgb(227,218,96)"
        },
        "QA": {
            "background": "rgb(241,206,205)",
            "border": "rgb(120,36,32)",
            "pillColor": "critical",
            "progress": "rgb(221,133,129)"
        }
    }
}

 

 

 

 

 

Milestones

If you want to display milestones here an example how the structure of data must look like:

 

 

 

 

 

{
    "roadmapItemMilestones": [
        {
            "RLSE0010010": [           // the ID aof an Roadmap Item
                {
                    "dueDate": {
                        "displayValue": "01.04.2023",
                        "value": "2023-04-01"
                    },
                    "id": {
                        "displayValue": "97f8699547a361102bb36241e36d4398",
                        "value": "97f8699547a361102bb36241e36d4398"
                    },
                    "name": {
                        "displayValue": "Customer Ref Item Milestone",
                        "value": "Customer Ref Item Milestone"
                    },
                    "state": {
                        "displayValue": "Achieved",
                        "value": "achieved"
                    },
                    "type": {
                        "displayValue": "Launch Date",
                        "value": "launch_date"
                    }
                }
            ]
        }
    ],
    "roadmapMilestones": [
        {
            "dueDate": {
                "displayValue": "2023-07-01 09:00:00",
                "value": "2023-07-01 09:00:00"
            },
            "id": {
                "displayValue": "M1",
                "value": "M1"
            },
            "name": {
                "displayValue": "Milestone 1",
                "value": "Milestone1"
            },
            "state": {
                "displayValue": "upcoming",
                "value": "upcoming"
            },
            "type": {
                "displayValue": "key_event",
                "value": "key_event"
            }
        }
    ]
}

 

 

 

 

Example of Milestone meta data:

 

 

 

{
    "type": {
        "important_date": {        // must match to milestone type values
            "icon": "calendar-clock-fill"
        },
        "key_event": {
            "icon": "flag-fill"
        },
        "launch_date": {
            "icon": "rocket-fill"
        }
    }
}

 

 

 

Extend the component UI

The roadmap component can be extended by additional components.

UIB_widget.png

Details display

 specially to display details additional components must be configured. I have used the "Label Value Tabbed" component to display additional details when a road map item is selected. The data for details display can be included directly in the roadmap items data (see the example above).

To display the details the "roadmap item selected" event must be implemented

UIB_event_item_selected.png

Sidebar

The sidebar can be extended with additional buttons(icons)

Here an example for 2 buttons:

 

 

[
    {
        "icon": "filter-outline",
		"order": 100,
        "name": "Filter"
    },
	    {
        "icon": "bookmark-outline",
		"order": 200,
        "name": "Bookmark"
    }
]

 

 

To process the click on these buttons the "Roadmap sidebar button clicked" event must be implemented.

Comments
Andy Smith2
Tera Contributor

I'm having a good look at this component - it looks very interesting and your content is very helpful, Guido.

 

I'm having some difficulty editing the roadmap items metadata - looks like there are 9 fixed properties that I can add to - but that's not documented anywhere.

 

Oh, and I agree that it's rather alarming when the page goes blank whenever there's an error, anywhere!

 

Thanks for your detailed post !

emirmirou
Tera Contributor

Hi, 

I'm also having the same Problem with the roadmap items metada!
I suppose that's why nothing is showing! 
I hope you can help Guido!

 

Thanks!

xuwang
Tera Contributor

Thank you Guido for the posting. It's helpful. There is one minor problem - I couldn't make item milestones show up (roadmap milestones OK). Can anyone please give another example for "roadmapItemMilestones"?

Andy Smith2
Tera Contributor

Hi Guido,

 

I'm struggling with a couple of configuration goals - have raised a case with Support but no further forward after 7 days waiting. I wondered if you might know how I could achieve two things:

 

1) Change time timeline to be Weeks and Days

2) Define the fields that are displayed on the hover over roadmap item

 

I'm amazed that you've worked out so much about this component given the lack of detailed documentation, examples and support. Any assistance would be much appreciated.

 

Many thanks

Andy

 

Guido Bernuetz
Giga Guru
  • roadmapItemMilestones: didn't work also for me. no idea yet. 
  • Change time timeline to be Weeks and Days: I haven't found an option to do this
  • Define the fields that are displayed on the hover over roadmap item: I don't know yet. But you can use the details display, when you have clicked on a item

Hint: select the Utah version. there are more details explained

GuidoBernuetz_0-1712421548663.png

 

There is also a script, which may show some secrets: 
/nav_to.do?uri=sys_script_include.do?sys_id=f650c3fac70011101671670f6ec260d4 

Andy Smith2
Tera Contributor

Apologies, Guido - I posted my question and you were kind enough to reply very quickly - and here I am, 6 months later, picking up your response. I'd make an excuse, if I had a decent one - but I don't.

 

All I can offer is a genuine apology. Regards, Andy

martinnorde
Tera Explorer

Might have been a while since this thread was active,
As I was trying to set it up with the example code provided, it did not display.

I discovered that the variables for start and end date in the item code are not named the same in the meta data script.
planned_start and planned_end in Roadmap item example, 

planned_start_date and planned_end_date in Meta data example.

 

Hope it helps someone else to get started.

 

Andy Smith2
Tera Contributor

Hi Folks - I'm back trying to get the roadmap Now Component to help me deliver a compelling UX for our customers. I'm still stumped when it comes to changing the timeline to deliver a major interval of days and a minor interval of hours or even minutes. 

 

ChatGPT offers some clues:

 

To customize the timeline intervals (major and minor) in the ServiceNow Roadmap Now Component, you must use the configuration object within the component’s JSON setup.

✅ Key Configuration Fields for Timeline Granularity

The ServiceNow Roadmap component supports two primary fields that control the timeline:

  • "majorInterval": Defines the main time segments (e.g., Days, Weeks, Months)

  • "minorInterval": Defines the sub-segments within each major interval (e.g., Hours, Minutes)

These are defined using ISO-8601 duration format (e.g., P1D = 1 day, PT1H = 1 hour, PT15M = 15 minutes)

 

Has anyone managed to do this ? Any help would be very much appreciated.

 

Thanks

Andy

 

 

Version history
Last update:
‎06-28-2023 09:00 AM
Updated by:
Contributors