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:
- https://github.azc.ext.hp.com/jarvis/xamarin-value-store/blob/develop/src/HP.Jarvis.ValueStore/platforms/shared/ReservedValueStoreKey.cs
electron/temp/ReservedValueStoreKey.cs(local copy)
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
- Pass Full CDM Envelope: Provide pre-built originator in EventData
- ❌ Rejected: SDK rebuilds originator from ControlledData, ignoring provided data
- Modify Notification in Subscriber: Inject sysSerialNumber in
cdm.event.statussubscriber- ❌ Rejected: Notification already built when subscriber receives it, can't modify
- 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
- Initialize HP Jarvis SDK with configuration including
SysSerialNumber - Use reflection to set ControlledData values including SysSerialNumber
- Publish an event via
Publisher.Publish(JarvisDataCollectionEventName.CdmEvent, eventData) - Subscribe to
com.hp.jarvis.datacollection.cdm.event.status - Observe buildNotification action output
- Note that
originatorDetaildoes not containsysSerialNumber
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 printerSelectedPrinterModelNumber- HP model number of current printerUserProgramLevel- User's program levelTenantId- Tenant ID for user token bindingSystemSerialNumber- System (Mac/PC) serial number ✅ Now implementedPcDeviceUuid- Windows device/BIOS UUIDUcdeCorrelationId- UCDE Correlation ID for cloud service linkingConsentBasisId- Consent basis IdApplicationName- Application name for appPackageId constructionApplicationIdentifier- 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:
- 📧 HP Jarvis SDK Team (contact TBD)
- 🔗 GitHub: https://github.com/Fing-Technology/Jarvis-DataCollection-XamarinLibrary
References
- HP TV+ Desktop Implementation:
native/application/DataCollectionBridge.cslines 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
- ✅ Document the issue in this file with reproduction steps
- ⏸️ Obtain HP Jarvis SDK team contact information
- ⏸️ Submit issue via appropriate channel (GitHub, email, support ticket)
- ⏸️ Track issue status and SDK version updates
- ⏸️ Test fix when new SDK version is released
- ⏸️ Update documentation when resolved