Custom Data Reports

Prev Next

Introduction

Custom Data Reports in the Analytics module of HP Workforce Experience platform (WXP) enable customers to collect device-level data that is not available through the standard WXP Insights agent. Users upload PowerShell scripts (packaged in JSON format), execute them across selected device groups, and generate structured analytics reports within WXP.

This feature supports:

  • Script-based evaluation data retrieval

  • Custom Data Report creation (maximum 10 per tenant)

  • Real-time progress monitoring

  • Clickable KPI dashboard

  • Excel (XLS) export capabilities

  • Device-level drilldowns

Prerequisites and Access

Subscription Requirements

Customers must have one of the following subscriptions:

  • WXP Pro Trial

  • WXP Pro

  • WXP Elite

Role-Based Access (RBAC)

Users with the following roles can run scripts and create or view Custom Data Reports:

  • IT Admin

  • Partner Service Specialist

  • Partner Admin (authorized and non-authorized onboarded)

These roles have full access to the feature.

Users with the following roles can view Custom Data Reports but cannot run scripts:

  • HP Support Admin

  • Report Admin

For these roles, the Cancel and Restart options are not available. They can download eligible reports but cannot initiate or cancel jobs. All other roles do not have access to this feature.

For Partner roles, a customer tenant must be selected before functionality becomes available.

Actions performed within the Custom Data Reports feature are retained in audit logs.

  1. Script Requirements and Data Handling

Script Format

Script output must be generated in JSON format. The script file defines:

  • Script metadata

  • Execution properties

  • Optional parameters

  • Expected output schema

  • The order in which data is displayed in the report

PowerShell is used for execution, but the uploaded artifact must follow the defined JSON wrapper format.

Example

Sample script for reference, to get OS and device information:
sample script for reference:
 #Requires -Version 5.1
 function Try-Get { param([ScriptBlock]$Block) try { & $Block } catch { $null } }
 function Round2 { param([double]$n) return [math]::Round($n, 2) }
 
# --- Collect Data ---
 $os    = Try-Get { Get-CimInstance Win32_OperatingSystem }
 $comp  = Try-Get { Get-CimInstance Win32_ComputerSystem }
 $bios  = Try-Get { Get-CimInstance Win32_BIOS }
 $cpu   = Try-Get { Get-CimInstance Win32_Processor | Select-Object -First 1 }
 
$hostname    = $env:COMPUTERNAME
 $osName      = if ($os) { $os.Caption } else { $null }
 $osBuild     = Try-Get { (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion').CurrentBuild }
 $mfgr        = if ($comp) { $comp.Manufacturer } else { $null }
 $model       = if ($comp) { $comp.Model } else { $null }
 $cpuName     = if ($cpu) { $cpu.Name } else { $null }
 $ramTotalGB  = if ($comp) { Round2($comp.TotalPhysicalMemory / 1GB) } else { $null }
 $systemType  = if ($comp) { $comp.SystemType } else { $null }
 
# --- OS Install Date (robust: WMI first, registry fallback) ---
 $osInstall = $null
 # Try WMI DMTF date
 if ($os -and $os.InstallDate -and $os.InstallDate.Length -ge 8) {
     try {
         $osInstall = [Management.ManagementDateTimeConverter]::ToDateTime($os.InstallDate).ToString('yyyy-MM-dd')
     } catch { $osInstall = $null }
 }
 # Fallback: registry InstallDate (Unix epoch seconds)
 if (-not $osInstall) {
     try {
         $reg = Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion'
         if ($reg.InstallDate -and [int]$reg.InstallDate -gt 0) {
             $epoch = [datetime]'1970-01-01T00:00:00Z'
             $osInstall = ($epoch.AddSeconds([int]$reg.InstallDate)).ToLocalTime().ToString('yyyy-MM-dd')
         }
     } catch { }
 }
 
# --- Last patch info (non-admin) ---
 $lastPatch = $null
 $patches   = Try-Get { Get-HotFix }
 if ($patches) {
     $latest = $patches | Sort-Object -Property InstalledOn -Descending | Select-Object -First 1
     if ($latest) { $lastPatch = '{0} on {1}' -f $latest.HotFixID, ($latest.InstalledOn.ToString('yyyy-MM-dd')) }
 }
 
# --- Build JSON Object (10 fields) ---
 $payload = [pscustomobject]@{
     Hostname        = $hostname
     OSName          = $osName
     OSBuild         = $osBuild
     Manufacturer    = $mfgr
     Model           = $model
     CPUName         = $cpuName
     RAMTotalGB      = $ramTotalGB
     SystemType      = $systemType
     OSInstallDate   = $osInstall
     LastPatch       = $lastPatch
 }

Sample Report

JSON Output Structure (Reporting Limitation)

Reporting supports only a single-level JSON hierarchy.

Example of supported format:

{
"BIOSVersion": "1.23.4",
"ThinkCellEnabled": "True",
"AIExtensionDetected": "Yes"
}

Example of unsupported format:

{
"Device": {
"BIOS": {
"Version": "1.23.4"
}
}
}

If nested structures are returned, the data does not render in structured columns. Instead, it appears under StdOut.

Note:

  • URL handling: URLs are accepted in script output. URLs appear as clickable links in reporting views where applicable.

  • Translation handling: Data is displayed in the same format returned by the script without translation or modification.

  • Date and time handling: Date and time values returned as part of the script output are displayed exactly as returned. They are not converted or normalized to any timezone. This ensures raw script fidelity without backend transformation.

  1. Creating a Custom Data Report

Follow these steps to retrieve device data that is not available through standard WXP Insights telemetry.

  1. Log in to WXP. The Home page is displayed

  2. From the left menu of WXP, click Analytics > Custom Data Reports. The existing reports are displayed.

  3. Click Add. The Add report page is displayed to select or upload a script for custom data collection.

  4. Each script displays a Description, Version, and Operation.

    1. The list is automatically filtered to show Evaluation scripts.

  5. If parameters were defined, they are pre-populated and editable.

  6. Choose the audience by selecting one or more groups. Scroll down to calculate the total number of devices in the selected audience.

    1. The device count shows the number of unique devices across the groups selected.

    2. If a device belongs to multiple groups, the script runs only once on that device.

  7. Add a title and optional description for the report.

  8. Publish the script.

Tenant Limit: A tenant can have up to 10 Custom Data Reports. To create an eleventh report, at least one existing report must be deleted. Any user with report viewing permissions can access all Custom Data Reports within the tenant, regardless of who created them.

  1. Custom Data Reports List Table

The following columns are displayed:

  • Report Name and Description

  • Created By

  • Created On

  • Overall Status

    • In Progress

    • Completed (maximum 24 hours after script execution start)

    • Expired

    • Cancelled

  • Export

  • Delete

The following validation rules apply:

  • Bulk deletion is not allowed.

  • Bulk export is not allowed.

  • A report with status “In Progress” cannot be deleted.

  • Reports with status Completed, Cancelled, or Expired can be deleted.

  • Reports with status In Progress, Completed, or Cancelled can be downloaded.

  • Expired reports cannot be downloaded.

  1. Privacy and Security

IT Admin (First Use Per Tenant)

When an IT Admin creates a Custom Data Report for the first time within a tenant, they must accept the terms. This confirmation is shown only once and only to the first IT Admin in that tenant. Subsequent IT Admins are not prompted.

Partner Admin or Service Specialist

When creating a Custom Data Report on behalf of a customer, the user must accept the terms once per customer tenant. The acceptable is tracker per tenant.

  1. Viewing and Monitoring a Custom Data Report

Each Custom Data Report displays the following:

  • Report name and description

  • Script name (linked)

  • Audience definition

  • Total number of devices

  • Start date and time

  • Completion date and time

  • Expiry date

  • Report status

    • In Progress

    • Completed

    • Canceled

    • Expired

  • Download option

  • Delete option (if eligible)

Note: The script runs one time. It does not run continuously or on a recurring schedule. However, users can run it whenever required.

Progress Bar

The progress bar shows the following:

  • Completed devices

  • Errored devices

  • Not Processed devices

  • Total audience

Cancelling a Report

You can cancel a report only when the status is In Progress. Upon cancellation:

  • The status updates to Cancelled.

  • The Report page displays the user who cancelled and the time of cancellation.

  • The Restart option appears shortly after.

Restarting a Report

You can restart a report that is in the following statuses:

  • Completed

  • Canceled

  • Expired

Behavior:

  • Restarts on all original devices.

  • Historical data is deleted.

  • Script, parameters, and audience cannot be modified.

  • Audience may differ if group membership has changed.

  1. Expiry Rules

A Custom Data Report expires 11 days after script execution start (24-hour completion window plus 10 days retention) or 10 days after all devices show Completed or Errored status if under 24 hours.

If the report is canceled, it expires 10 days after cancellation.

The expired reports:

  • Cannot be downloaded.

  • Data is removed from device pages.

  1. Viewing Published Custom Data Report

Clickable KPIs on the Report

KPIs are displayed based on device status:

  • In Progress

  • Completed

  • Errored

  • Not Processed

Behavior:

  • KPIs are not affected by table filtering.

  • Clicking a KPI applies a table filter.

  • Multi-select KPI filters are allowed.

  • Filters retained per tab until removed.

  • Filters do not transfer between Content and Details tabs.

Viewing the Content Tab

The Content tab shows only devices with Completed status.

The default sort is based on the Serial Number.

The following columns are displayed.

  • Device Serial Number (linked to respective device details page)

  • Device Name

  • One column per data element

    • Changes propagate to device details page

  • Output (StdOut)

  • Start Time

If no data is returned, message displayed directing user to the Details tab.

Viewing the Details Tab

The Details tab shows all devices defined in the audience, regardless of status. This tab is primarily used to troubleshoot devices that have a status other than Completed.

This is the default sort order:

  1. Error

  2. In Progress

  3. Not Processed

  4. Completed

The following columns are displayed:

  • Device Serial Number

  • Device Name

  • Last Signed-In User

  • Script Exit Code

  • Output (link to StdOut or Error view)

  1. Exporting a Custom Data Report

Users can export filtered results to an Excel (XLS) file, which includes two tabs:

  • Content

  • Details

You can export reports in the following statuses:

  • In Progress

  • Completed

  • Cancelled

Note: Exports not available for Expired reports.

  1. Accessing Device Details Page

You can open the corresponding Device Details page by clicking any Serial Number listed in the Content or Details tab of the Custom Data Report. This provides a convenient way to view all custom data collected for that device in a centralized location, making troubleshooting more efficient.

The Custom Data tab includes:

  • Link to Custom Data Report

  • Each captured data element and value

  • Report expiration date

  • Status

  • Script Name

  • Script Exit Code

  • Output link

  • Download XLS option

The expired data is not visible.

Note: For completed, canceled, or expired reports:

  • If the script is deleted or all groups are deleted, the call-to-action displayed is Create.

  • If the script and at least one group still exist, the call-to-action displayed is Restart.

  1. Leveraging the Custom Data Report API

For additional information, refer to our Developer Portal documentation on APIs that allow customers to query custom data reports: https://developers.workforceexperience.hp.com/docs/v1/customdatareport

Contact Us

For any assistance, create a support case or email support@wxp.hp.com.