Migrating from 6.x to 7.0
This guide covers breaking changes introduced in EUDIPLO v7.0 and the required migration steps from any 6.x version.
:::warning Back up before upgrading Always back up your database and your assets/config directory before performing a major version upgrade. :::
Summary of Breaking Changes
| Area | Change | Impact |
|---|---|---|
| Trust-list verification material | walletProviderTrustLists no longer accepts string URLs. Each entry must define verifier material (verifierKey or verifierX509Der). | High |
| Trust-list JWT integrity | Unsigned trust-list JWT acceptance is removed. If verifier material is missing, trust-list validation now fails instead of falling back to TOFU behavior. | High |
| DCQL trusted authorities | In dcql_query.credentials[].trusted_authorities, etsi_tl.values is now object-based (url + verifier material) or managed (trustListId) instead of plain URL strings. | High |
| Presentation config webhooks | Presentation configs no longer accept the deprecated webhook JSON payload. Use webhookEndpointId and the webhook endpoint relationship instead. | Medium |
1. walletProviderTrustLists Format Is Strict in v7
What Changed
In v6.x, this was accepted:
walletProviderTrustLists: ["https://trust.example/wallet-providers.jwt"]
In v7, this is rejected.
Each entry must be an object with:
url(required)- one verifier method (required):
verifierKey(JWK), orverifierX509Der(base64 DER-encoded X.509 certificate)
Before (6.x)
{
"walletProviderTrustLists": ["https://trust.example/wallet-providers.jwt"]
}
After (7.0)
{
"walletProviderTrustLists": [
{
"url": "https://trust.example/wallet-providers.jwt",
"verifierKey": {
"kty": "EC",
"crv": "P-256",
"x": "...",
"y": "...",
"alg": "ES256"
}
}
]
}
Alternative using certificate verifier material:
{
"walletProviderTrustLists": [
{
"url": "https://trust.example/wallet-providers.jwt",
"verifierX509Der": "MIIB..."
}
]
}
2. Trust-list JWT Integrity Is Now Enforced
What Changed
v6.x allowed trust-list JWT retrieval without signature verification if no verifier material was configured.
v7 removes that behavior for walletProviderTrustLists entries:
- missing verifier material is a configuration error
- trust-list JWT validation fails closed for that entry
Migration Steps
- Inventory all issuance configs containing
walletProviderTrustLists. - Replace string entries with object entries.
- Add verifier material (
verifierKeyorverifierX509Der) for every entry. - Re-test:
- wallet attestation flows (
walletAttestationRequired) - OID4VCI attestation proof flows using wallet-provider trust lists
- wallet attestation flows (
3. DCQL trusted_authorities Format Changed
What Changed
For presentation configs, dcql_query.credentials[].trusted_authorities changed for ETSI trust lists:
- v6.x accepted
etsi_tl.valuesas an array of URL strings - v7 requires
etsi_tl.valuesto be an array of objects
Each ETSI value object must be one of:
- external trust list reference:
url(required)- plus
verifierKeyorverifierX509Der(required)
- managed local trust list pointer:
trustListId(required)- verifier material is resolved server-side from the trust-list key chain
openid_federation.values remains an array of string entity IDs.
Before (6.x)
{
"dcql_query": {
"credentials": [
{
"id": "pid",
"format": "mso_mdoc",
"trusted_authorities": [
{
"type": "etsi_tl",
"values": ["https://example.com/trust-list/pid-provider.jwt"]
}
]
}
]
}
}
After (7.0) - External Trust List
{
"dcql_query": {
"credentials": [
{
"id": "pid",
"format": "mso_mdoc",
"trusted_authorities": [
{
"type": "etsi_tl",
"values": [
{
"url": "https://example.com/trust-list/pid-provider.jwt",
"verifierX509Der": "MIIB..."
}
]
}
]
}
]
}
}
After (7.0) - Managed Local Trust List
{
"dcql_query": {
"credentials": [
{
"id": "pid",
"format": "mso_mdoc",
"trusted_authorities": [
{
"type": "etsi_tl",
"values": [
{
"trustListId": "local-pid-trust-list"
}
]
}
]
}
]
}
}
Migration Steps
- Find all presentation configs that set
dcql_query.credentials[].trusted_authoritieswithtype: "etsi_tl". - Replace string URL entries in
valueswith object entries. - For external URLs, add verifier material (
verifierKeyorverifierX509Der). - Optionally replace external URLs with managed pointers (
trustListId) when using EUDIPLO-managed trust lists. - Re-test OID4VP and ISO 18013-7 presentation verification flows.
4. Presentation Configs Now Use webhookEndpointId Only
What Changed
In v6.x, presentation configs could still carry a deprecated webhook JSON payload.
In v7, that payload is removed. Presentation configs must reference a reusable webhook endpoint by webhookEndpointId instead.
Migration Steps
- Find any saved presentation configs that still contain a
webhookJSON payload. - Create or reuse a webhook endpoint under the tenant.
- Set
webhookEndpointIdon the presentation config and remove the oldwebhookpayload. - Re-test presentation request generation and notification delivery.