Skip to main content

HP Jarvis SDK Issues to Report

This document tracks issues and feature requests for the HP Jarvis Data Collection SDK that should be reported to the HP Jarvis team.

Issue #1: SysSerialNumber Not Supported in ControlledData.Item Enum

Severity: Medium
SDK Version: v3.13.1.710
CDM Schema Version: v1.1.0
Status: ⚠️ INVESTIGATING - ValueStore set but field not appearing in payload

Resolution

The HP Jarvis SDK team confirmed that sysSerialNumber should NOT be set via ControlledData reflection. Instead, it must be set through ValueStore using the reserved key:

new HP.Jarvis.ValueStore.PutKeyValueOption
{
Key = HP.Jarvis.ValueStore.ReservedValueStoreKey.SystemSerialNumber,
Value = config.SysSerialNumber ?? string.Empty
}

Implementation: See native/application/DataCollectionBridge.cs lines 763-788

Reference: For other reserved ValueStore keys, see:

Original Description (for historical context)

The ControlledData.Item enum does not include SysSerialNumber, making it impossible to set the device serial number in originator metadata, even though it's specified as an optional field in the CDM Schema v1.1.0 originatorDetail specification.

Impact

Applications cannot include device serial numbers in analytics originator metadata when using the reflection-based ControlledData approach, leading to incomplete originator information sent to HP backends.

Current Behavior

When attempting to set SysSerialNumber via reflection:

try
{
var sysSerialItem = Enum.Parse(itemEnumType, "SysSerialNumber");
// ... set value
}
catch (ArgumentException)
{
// ❌ Fails: SysSerialNumber is not defined in ControlledData.Item enum
}

Log Output:

[DataCollectionBridge]   ✓ Set SysUuid: 4c4c4544...
[DataCollectionBridge] ℹ SysSerialNumber not available in ControlledData.Item enum
[DataCollectionBridge] ✓ Set AppName: hptvplus
[DataCollectionBridge] ✓ Set AppVersion: 0.7.11-dev.0

Resulting Originator (from com.hp.jarvis.datacollection.cdm.event.status):

{
"originatorDetail": {
"version": "1.1.0",
"currentDateTime": "2025-11-20T20:24:35.764Z",
"sysUuid": "4c4c4544-0057-4710-8051-b7c04f374d33",
"osPlatform": "Windows",
"appName": "hptvplus",
"appVersion": "0.7.11-dev.0",
"appPackageId": "hptvplus/0.7",
"appPackageDeployedUuid": "4c4c4544-0057-4710-8051-b7c04f374d33"
// ❌ Missing: "sysSerialNumber"
}
}

Expected Behavior

The ControlledData.Item enum should include a SysSerialNumber value, allowing applications to set device serial numbers:

// Should work:
var sysSerialItem = Enum.Parse(itemEnumType, "SysSerialNumber");
Func<object> sysSerialFunc = () => "ABC123XYZ";
indexerProperty.SetValue(dictionary, sysSerialFunc, new object[] { sysSerialItem });

Expected Originator:

{
"originatorDetail": {
"version": "1.1.0",
"sysUuid": "4c4c4544-0057-4710-8051-b7c04f374d33",
"sysSerialNumber": "ABC123XYZ", ✅ Should be present
"appName": "hptvplus",
"appVersion": "0.7.11-dev.0",
// ... other fields
}
}

CDM Schema Reference

According to CDM Schema v1.1.0, sysSerialNumber is defined as an optional field:

com.hp.cdm.domain.telemetry.type.originatorDetail.originator.ucdeSoftware.version.1
├── version (required)
├── currentDateTime (required)
├── sysUuid (required)
├── sysSerialNumber (optional) ← Specified but not supported
├── osPlatform (required)
├── appName (required)
└── appVersion (required)

Suggested Fix

Add SysSerialNumber to the ControlledData.Item enum in the HP Jarvis SDK:

Current Enum (v3.13.1.710):

namespace HP.Jarvis.DataCollection
{
public static class ControlledData
{
public static class Shared
{
public enum Item
{
SysUuid,
AppName,
AppVersion,
OsPlatform,
// ❌ Missing: SysSerialNumber
}
}
}
}

Proposed Enum:

namespace HP.Jarvis.DataCollection
{
public static class ControlledData
{
public static class Shared
{
public enum Item
{
SysUuid,
AppName,
AppVersion,
OsPlatform,
SysSerialNumber, // ✅ Add this
}
}
}
}

Workarounds Considered

  1. Pass Full CDM Envelope: Provide pre-built originator in EventData
    • ❌ Rejected: SDK rebuilds originator from ControlledData, ignoring provided data
  2. Modify Notification in Subscriber: Inject sysSerialNumber in cdm.event.status subscriber
    • ❌ Rejected: Notification already built when subscriber receives it, can't modify
  3. Add Enum Value via Reflection: Dynamically add SysSerialNumber to enum
    • ❌ Rejected: Not possible, enums are sealed types

Conclusion: No viable workaround exists. This requires SDK team to add the enum value.

Testing Environment

  • Application: HP TV+ Desktop (Electron)
  • Platform: Windows 10/11 x64
  • SDK: HP.Jarvis.DataCollection v3.13.1.710
  • Runtime: .NET 8
  • Bridge: electron-edge-js (Node.js ↔ C# interop)

Reproduction Steps

  1. Initialize HP Jarvis SDK with configuration including SysSerialNumber
  2. Use reflection to set ControlledData values including SysSerialNumber
  3. Publish an event via Publisher.Publish(JarvisDataCollectionEventName.CdmEvent, eventData)
  4. Subscribe to com.hp.jarvis.datacollection.cdm.event.status
  5. Observe buildNotification action output
  6. Note that originatorDetail does not contain sysSerialNumber

Additional Context

Why This Matters:

  • Device serial number is important for device-specific analytics and troubleshooting
  • CDM schema explicitly includes it as an optional field
  • Other HP products may rely on this field being present
  • Incomplete originator metadata reduces analytics value

ValueStore Reserved Keys Available:

The following reserved keys can be used to populate originator and other metadata:

  • ApplicationInstanceId - Application Instance Id (UUID)
  • StratusUserId - Stratus user id ('stratus_id' in token)
  • HpIdUserId - HP ID user id ('sub' in token)
  • WpIdUserId - WPID user id ('wpid' in token)
  • SelectedPrinterUUID - UUID of current printer
  • SelectedPrinterModelNumber - HP model number of current printer
  • UserProgramLevel - User's program level
  • TenantId - Tenant ID for user token binding
  • SystemSerialNumber - System (Mac/PC) serial number ✅ Now implemented
  • PcDeviceUuid - Windows device/BIOS UUID
  • UcdeCorrelationId - UCDE Correlation ID for cloud service linking
  • ConsentBasisId - Consent basis Id
  • ApplicationName - Application name for appPackageId construction
  • ApplicationIdentifier - Overrides appName in originatorDetail ✅ Now implemented

See ReservedValueStoreKey.cs for complete enum definition.

SDK Version History:

  • v3.13.1.710: SysSerialNumber not supported (confirmed)
  • v3.14+: Unknown (needs testing when available)

Contact Information

Report To:

References

  • HP TV+ Desktop Implementation: native/application/DataCollectionBridge.cs lines 620-641
  • CDM Schema Documentation: (HP internal SharePoint)
  • Related Documentation: docs/docs/Analytics/hp-jarvis-integration.md#known-issues--limitations

Future Issues

Placeholder for Additional SDK Issues

(Add new issues here as they are discovered)


Reporting Process

  1. ✅ Document the issue in this file with reproduction steps
  2. ⏸️ Obtain HP Jarvis SDK team contact information
  3. ⏸️ Submit issue via appropriate channel (GitHub, email, support ticket)
  4. ⏸️ Track issue status and SDK version updates
  5. ⏸️ Test fix when new SDK version is released
  6. ⏸️ Update documentation when resolved