Replicating OOB CMDB Health Dashboard metrics (3Cs) in a custom Platform Analyti

EmmadishettV
Tera Contributor


Hi everyone,
I am working on building a custom daily operations dashboard for a client using the Platform Analytics Workspace, and they have requested a dedicated tab that mirrors the Out-of-the-Box (OOB) CMDB Health Dashboard metrics.
Specifically, I need to display data visualizations for the 3Cs:
Completeness
Correctness (including Duplicate, Orphan, and Stale CIs)
Compliance
I can see that the OOB CMDB Health Dashboard populates these scores via standard scheduled jobs (e.g., CMDB Health Dashboard - Completeness Score Calculation), which execute background Java processors.
My question is regarding the best practice for pulling this specific data into the new Platform Analytics Workspace widgets:
1. Are there specific OOB Performance Analytics (PA) Indicators I should be using as the data source for these Data Visualization widgets?
2. If PA indicators are not the standard approach here, is the best practice to set the widget data source to query the ⁠cmdb_health_score⁠ or ⁠cmdb_health_metric_status⁠ tables directly?
Any guidance or exact indicator names you have successfully used for this type of custom CMDB reporting would be greatly appreciated.
Thanks in advance!

EmmadishettV_0-1790669160282.png

 

2 REPLIES 2

IbrarA
Kilo Sage

Hi @EmmadishettV, 

On your first question, there aren't OOB PA indicators for the 3Cs. The health jobs write scores into the health tables and nothing is snapshotted for you.

On the second, the tables holding these scores are cmdb_health_scorecard_group and cmdb_health_result_group_map. Worth checking those in your instance rather than the two you listed.

They only keep results from the last couple of runs, so a widget pointed at them gives you today's number with nothing behind it. For trends you have to capture history yourself. Either build PA indicators over those tables with a daily collection, or run a scheduled job that copies the scores into a custom table with a date stamp and report from that.

Same question came up here, with the retention limit confirmed: https://www.servicenow.com/community/cmdb-forum/how-to-retrieve-historical-cmdb-health-scores-beyond...

From your screenshot, Compliance shows no data because no CIs were evaluated. Without desired state audits configured that card stays empty and drags the overall score down.

 

 

Thanks

ibrar

ayushraj7012933
Giga Guru

Hi @EmmadishettV ,

I would first check the OOB CMDB Health data/PA content available in your instance rather than creating new indicators or directly rebuilding the 3C calculations.

The important point is that Completeness, Correctness and Compliance are calculated from different underlying health metrics. So I would not recommend creating one generic PA indicator directly on cmdb_health_score and expecting it to reproduce the OOB dashboard.

The CMDB Health scheduled jobs calculate the individual health metrics and store the results in the CMDB Health tables. cmdb_health_metric_status is useful for checking the execution/status of those calculations, while the detailed health results are generated from the individual metrics.

For a custom Platform Analytics dashboard, my approach would be:

  1. Check Performance Analytics > Indicators for the CMDB Health OOB indicators/content available in your release.
  2. If the required OOB indicators are available, use those as the source for the Platform Analytics visualizations.
  3. If the exact KPI is not available as a PA indicator, use the CMDB Health result data as the source for a custom indicator rather than querying the score/status table and trying to recreate the complete calculation.
  4. Keep the OOB CMDB Health scheduled jobs enabled, because those jobs are responsible for generating the health calculations/results.

Also, be careful with the Compliance KPI. It is not necessarily evaluated against exactly the same CI population as Completeness and Correctness because Compliance is based on configured Desired State / Scripted Audits.

So in short: