Skip to main content
Version: Next

EDC interoperability

TSG exchanges DSP messages and DCP presentations with EDC connectors and identity hubs, targeting DSP 2025-1, DCP 1.0.1 and VCDM 2.0. Everything below under "Default behavior" applies always; the settings in the first section are off by default and are only needed for peers that deviate from those specifications.

Tested against Eclipse CFM platform-images 0.0.1-rc.4 (EDC 1.0.0-SNAPSHOT) and the DSP TCK runtime 1.0.1.

Peer-specific settings

SettingApplicationKindPurpose
interop.edc.dataAddressEndpointPropertyControl planeWorkaroundAlso advertise the provider endpoint in EDC's endpoint property, for peers that ignore the standard DataAddress.endpoint.
policy.consumerSkippedLeftOperandsControl planePolicy choiceLet the consumer rely on the provider to enforce the listed constraint operands.
interop.edc.statusListVcClaimWalletWorkaroundAccept status-list JWTs that carry the credential in the older vc claim. Signature and issuer checks still apply.
dcp.allowMissingPresentationAudienceWalletSecurity relaxationAccept a DCP presentation with no audience claim. A present but conflicting audience stays invalid, and OID4VP keeps its audience checks.

An EDC peer that uses membership policies typically needs, on the control plane:

interop:
edc:
dataAddressEndpointProperty: true
policy:
consumerSkippedLeftOperands:
- https://w3id.org/edc/v0.0.1/ns/credential/MembershipCredential

and on the wallet:

interop:
edc:
statusListVcClaim: true
dcp:
allowMissingPresentationAudience: true

A skipped operand applies only to an atomic constraint directly inside a permission's constraint list; every other constraint is still evaluated. The same operand inside a duty, obligation, prohibition or logical and, or or xone is unsupported and denies. Provider evaluation is unaffected, and unknown operands are never implicitly accepted.

Default behavior

DSP protocol messages carry only the DSP context URL on the wire, and JSON-LD compaction preserves extension metadata without requiring the peer to load TSG or HealthDCAT-AP contexts. Management responses keep the TSG contexts.

Catalog offers omit explicit targets; the containing dataset identifies the asset. Negotiation messages and agreements put the dataset target on the policy. Received offers are compared with the stored policy after normalizing shared rule properties, so added or changed permissions and constraints are rejected. A missing assignee means the authenticated requester. Rule-level targets echoed by an older TSG peer are tolerated on a contract request.

Agreement delivery retries HTTP 409 with delays of 250 ms, 500 ms, 1 s and 2 s; other errors are not retried. Failed delivery terminates a negotiation only while it is still agreed. Transfers require an agreement from a finalized negotiation for the same tenant and counterparty.

DCP holders send enveloped presentations with an explicit holder, and presentation signing keys must be authorized by the DID document's authentication relationship. Verification binds signer, holder and credential subjects to the authenticated participant. Only DID-URL presentation key identifiers are supported.

Status-list requests send one Accept value at a time and try another representation only after HTTP 406 or 415, never after a failed signature check. JSON status lists require a verified proof, and a numeric status-list index is accepted only when it is a safe non-negative integer.

Imported credentials need an id, but it does not have to be a URL: VCDM 2.0 requires one, while tested EDC issuers use bare UUIDs. Such credentials are accepted with a warning.

Termination and suspension reasons may hold plain strings or other JSON values, and termination codes are optional on the wire. HTTP pull still requires a usable endpoint when the consumer receives a transfer start.

Credential subjects

A credential subject must carry at least one claim besides id. The CLI adds memberOf: <authority DID> when an issuer offer would otherwise produce an id-only subject; explicitly configured claims are preserved. The wallet rejects new id-only subjects before allocating a status-list index, signing or storing.

Existing id-only credentials are not repaired by upgrading. Update the issuance configuration, issue replacements, and confirm that holders use them.

Qualifying a peer

Exercise catalog request, negotiation, HTTP pull and payload retrieval in both participant roles, using separate transfers for completion, consumer termination and provider termination, and check the final state on both peers plus the old data-access credentials after each ending.

Use a disposable credential for revocation testing and disable or expire the status cache. A cluster-internal status-list URL that resolves from a TSG pod says nothing about cross-cluster reachability.

Note that a peer data plane may keep serving data with an old token after a transfer ends; record that separately from TSG's own token invalidation.