NAN% complaint under license usage ServiceNow

PatthiBharathi
Mega Guru

Hello Community,

 

I need help, I've run reconciliation. After completing reconciliation I'm seeing the compliance results showing as NAN% complaint under license usage servicenow. PFB SS FYR and What is the meaning of this NAN%? When I open publisher card it's completely empty (Second image). However, in the third image details are showing null but removal candidates are showing as 4.

 

 

PatthiBharathi_1-1743161032703.png

PatthiBharathi_2-1743161103553.png

PatthiBharathi_3-1743161176878.png

 

Thank You,

Bharathi Patthi

 

 

9 REPLIES 9

Please refer to the below KB ARTICLEs

KB0961819

KB 1665370

KB0961268

PRB1882921

abby_singh786
ServiceNow Employee
ServiceNow Employee

Hi @PatthiBharathi ,

 

“NaN” stands for Not a Number, which usually appears when the system is expecting a numerical value but receives null or an undefined value instead. SAM Pro is unable to calculate compliance due to missing software entitlements, product mapping, or normalization gaps.

 

Here’s what might be going wrong:

 

1: Validate Discovery and Data Source Integration

Check whether software installation data is being received.

  • Navigate to Discovery > Discovery Status (or your data source like SCCM/JAMF).
  • Confirm that software installation records are coming into the system:
    • Table: cmdb_sam_sw_install
    • Check if installations exist for the relevant publisher.

If no installations are found, SAM cannot calculate compliance.

 

2: Check Software Model Normalization

ServiceNow uses software models to reconcile installations and entitlements.

  1. Go to Software Asset > Normalization > Software Installations.
  2. Filter by Normalization Status = Not Normalized.
  3. Click on a few records. Check:
    • Is the Discovery model linked?
    • Is there a software model associated?
    • Does the software model have a publisher?

Fix:

  • If missing, normalize the discovery model manually or review Content Library (plugin) is up to date.
  • Use "Manage Software Models" to link software models if automatic normalization fails.

3: Confirm Software Models Have Valid Metrics

  1. Go to Software Models (cmdb_software_product_model).
  2. Open any model for the affected publisher.
  3. Confirm:
    • Publisher field is set.
    • License metric is defined (e.g., Per Device, Per User, Named User).
    • Product classification is correct.

Without these, reconciliation logic won’t know how to measure usage vs. rights.

 

4: Check Software Entitlements

  1. Go to Software Asset > License Workbench > Software Entitlements.
  2. Filter by the affected publisher.
  3. Ensure:
    • Software model is linked.
    • Metric matches the software model.
    • Quantity is populated.

Add entitlement if none exist, and ensure they map to normalized models.

 

5: Reconcile Software

Once the data is validated and corrected:

  1. Navigate to License Workbench > License Reconciliation.
  2. Click Run Reconciliation.
  3. Wait for the job to complete.
  4. Navigate back to License Usage > Publishers.

You should now see:

  • % compliance updated (instead of NaN%)
  • Compliant product counts
  • True-up and over-licensed costs calculated

6: Review Logs if Still Empty

 

If the problem persists:

  • Go to License Reconciliation > Reconciliation Runs.
  • Open the latest run and view the Job Logs.
  • Look for errors like:
    • No entitlements found
    • Software model mismatch
    • No metric assigned

7: Review Removal Candidates

You have 4 removal candidates, which means: The system has detected software installations but can't associate them with valid entitlements.

Click Removal Candidates and:

  • Check which software is listed
  • See which software model or publisher is missing

8: Sample Test Entitlement Script:

(function() {

    // ====== CONFIGURATION ======

    var softwareModelName = "Microsoft Visio Professional 2024";  // Update this

    var publisherName = "Microsoft";                              // Update this

    var entitlementQuantity = 50;

    var licenseMetric = "Per Device"; // Must match existing metric options

 

    // ====== LOOKUP SOFTWARE MODEL ======

    var sm = new GlideRecord('cmdb_software_product_model');

    sm.addQuery('name', softwareModelName);

    sm.addQuery('publisher.name', publisherName);

    sm.query();

 

    if (!sm.next()) {

        gs.error("Software model not found. Please check the name and publisher.");

        return;

    }

 

    // ====== CREATE ENTITLEMENT ======

    var entitlement = new GlideRecord('sam_entitlement');

    entitlement.initialize();

    entitlement.name = softwareModelName + " - Test Entitlement";

    entitlement.software_model = sm.sys_id;

    entitlement.metric = licenseMetric;

    entitlement.license_type = "perpetual"; // or 'subscription'

    entitlement.quantity = entitlementQuantity;

    entitlement.license_rights_type = "full"; // 'full' for full license, 'upgrade' for upgrades

    entitlement.status = "active";

    entitlement.entitlement_type = "license"; // other option: 'right'

    entitlement.vendor = publisherName;

    entitlement.purchase_date = gs.nowDateTime(); // set today as purchase date

    entitlement.insert();

 

    gs.info("Test entitlement created successfully for: " + softwareModelName);

})();

 

How to Run This:

  • Go to System Definition > Scripts - Background.
  • Paste the script and click Run Script.
  • Go to Software Entitlements and search for the new entitlement.
  • Run License Reconciliation under License Workbench.

Regards,

Abhishek

Should my response prove helpful, please consider marking it as the Accepted Solution/Helpful to assist closing this thread.

 

I just tested this on my instance and realized the information I shared earlier wasn’t accurate — some of the details I mentioned don't seem to apply as expected.

 

Apologies for the confusion. Please feel free to ignore my previous post for now — I’ll recheck everything and come back with a proper, verified response.

Thanks for your understanding.

 

Regards,

Abhishek

HeyMarkWarmack
Tera Expert

Found this, bad news for Yokohama users that upgrade every other releases.  Awaiting some Yokohama updates after Zurich release (sometimes see fixed in earlier versions.)

     SN Support KB2108200 - Publisher cards show NaN% Compliance in workspace       

     https://support.servicenow.com/kb?id=kb_article_view&sysparm_article=KB2108200 


RESOLUTION: This issue is fixed in Zurich release.  Related Problem: PRB1882821

 

 

HeyMarkWarmack
Tera Expert

UPDATE:  No longer seeing NAN% complaint under License Usage

We are now on Yokahama Patch 4 and my Software Asset Workspace > License Usage > widgets and seems  to be fixed ahead of actually upgrading to Zurick.

Build tag: glide-yokohama-12-18-2024__patch4-05-14-2025

 

HeyMarkWarmack_0-1754494610798.png