-
Notifications
You must be signed in to change notification settings - Fork 7
Description
Summary
When using the ARN SDK (Go) for provider-scoped resources, we're encountering an issue where tenant identifiers set at the child level are not propagated to the parent payload structure.
According to guidance from the ARG team, provider-scoped resources require tenant identifiers to be included at the parent level. However, even when HomeTenantID and ResourceHomeTenantID can only be set on the child (ResourceNotification), these fields are not present in the top-level (parent) payload after the child → parent conversion process so our data that sent to ARG will be get dropped.
Based on the ARN V3 schema documentation, both the Inline payload and NotificationResourceData class contain the same fields: HomeTenantID and ResourceHomeTenantID. In our workflow, we operate on the NotificationResourceData struct (child class) which gets converted back to the Parent Inline Payload (Data struct).
For subscription-level resources, tenant IDs are not necessary and it could be emitted by ARN service itself (which was told by ARN team) . However, for provider-scoped resources, we need to explicitly declare these tenant ID fields ourselves which is mandatory.
Code refer:
types.go#L40
types.go#L223
msgs.go#L242
When HomeTenantID/ResourceHomeTenantID are set on the ResourceNotification (child), these values should be propagated to the corresponding fields in the top-level parent payload. Currently, the tenant ID fields are lost during the child → parent conversion process, resulting in missing tenant information at the parent level, which blocks our provider-scoped resource scenario.
Thank you for taking the time to investigate this issue. Please note that my understanding of the conversion process may not be entirely accurate, as the internal mechanics for ARN are somewhat of a black box from my perspective. I appreciate any guidance or corrections you can provide.
error details that cause the data dropped in the ARG (get from ARG team)

our currently sample payload
(the tenant ID should also appear on the top from my understanding)