DDS Migration: V1 to V3
Detailed field-by-field mapping
For a complete field-level mapping, see DDS Field-Level Mapping V1→V3.
V1 Submission: EUDRSubmissionServiceV1 — /tracesnt/ws/EUDRSubmissionServiceV1
V1 Retrieval: EUDRRetrievalServiceV1 — /tracesnt/ws/EUDRRetrievalServiceV1
V3 (unified): EUDRDueDiligenceStatementServiceV3 — /tracesnt/ws/EUDRDueDiligenceStatementServiceV3
Key change: V3 consolidates submission and retrieval into a single service.
Namespace change:
http://ec.europa.eu/tracesnt/certificate/eudr/submission/v1 → http://ec.europa.eu/tracesnt/certificate/eudr/due-diligence-statement/v3
http://ec.europa.eu/tracesnt/certificate/eudr/retrieval/v1 → merged into the above
http://ec.europa.eu/tracesnt/certificate/eudr/model/v1 → http://ec.europa.eu/tracesnt/certificate/eudr/common/v3 (shared types)
Operation changes
| V1 Service |
V1 Operation |
V3 Operation |
Change |
| Submission |
submitDds |
submitDds |
Request/response types renamed; operatorRole replaces operatorType |
| Submission |
amendDds |
amendDds |
Request/response types renamed |
| Submission |
retractDds |
withdrawDds |
Renamed from retract to withdraw |
| Retrieval |
getDdsInfo |
getDds |
Renamed; moved to DDS service |
| Retrieval |
getDdsInfoByInternalReferenceNumber |
getDdsByInternalReference |
Renamed; moved to DDS service |
| Retrieval |
getStatementByIdentifiers |
getDdsByIdentifiers |
Renamed; moved to DDS service |
Request/Response type changes
Submission operations
| V1 |
V3 |
Notes |
SubmitStatementRequest |
SubmitDdsRequest |
Renamed; adds operatorRole replacing operatorType; values reduced to OPERATOR / REPRESENTATIVE_OPERATOR |
SubmitStatementResponse |
SubmitDdsResponse |
Field renamed: ddsIdentifier → uuid |
AmendStatementRequest |
AmendDdsRequest |
Field renamed: ddsIdentifier → uuid |
AmendStatementResponse |
AmendDdsResponse |
Now returns uuid and status (lifecycle status, e.g. AVAILABLE) instead of HTTP status string |
RetractStatementRequest |
WithdrawDdsRequest |
Operation + type renamed; field ddsIdentifier → uuid |
RetractStatementResponse |
WithdrawDdsResponse |
Now returns uuid and status (lifecycle status, e.g. WITHDRAWN) instead of HTTP status string |
Retrieval operations (new in V3 DDS service)
| V1 |
V3 |
Notes |
GetStatementInfoRequest |
GetDdsRequest |
Renamed; accepts up to 100 UUIDs |
GetStatementInfoResponse |
GetDdsResponse |
Renamed; uses OverviewType from common XSD |
GetDdsInfoByInternalReferenceNumberRequest |
GetDdsByInternalReferenceRequest |
Renamed |
GetDdsInfoByInternalReferenceNumberResponse |
GetDdsByInternalReferenceResponse |
Renamed |
GetStatementByIdentifiersRequest |
GetDdsByIdentifiersRequest |
Renamed |
GetStatementByIdentifiersResponse |
GetDdsByIdentifiersResponse |
Renamed |
Fault changes
| V1 |
V3 |
Notes |
DdsPermissionDeniedException |
PermissionDeniedException |
Renamed (generic) |
BusinessRulesValidationException |
BusinessRulesValidationException |
Unchanged |
| — |
NotFoundException |
New — used by getDds, getDdsByInternalReference, getDdsByIdentifiers |
Data model changes
| Change |
Details |
operatorType → operatorRole |
Field renamed; values reduced to OPERATOR / REPRESENTATIVE_OPERATOR (TRADER roles removed) |
ddsIdentifier → uuid |
Identifier field renamed across all request types |
nameAndAddress → operatorAddress + operatorName |
V1 combined name+address split into structured fields |
volume removed from GoodsMeasure |
Use netWeight or supplementaryUnit instead |
netWeight type changed |
From DecimalThreePrecType to DecimalSixteenTotalSixPrecType (16 total, 6 fraction) |
supplementaryUnit type changed |
From nonNegativeInteger to DecimalSixteenTotalSixPrecType |
supplementaryUnitQualifier type changed |
From fixed enum (60+ values) to free-text string (3-4 chars) |
percentageEstimationOrDeviation added |
New field in GoodsMeasure |
ScientificNameType max length |
Increased from 100 to 200 |
speciesInfo moved |
Now in DDS-specific namespace |
| Operator identifier types reduced |
Only eori, vat, gln, tin remain (8 types removed) |
operatorName added |
New mandatory field (was inside address in V1) |
TRADE activity type removed |
Traders no longer submit DDS |
associatedStatements → groupedDeclarations |
Renamed; now uses GroupedDeclarationsType with groupedDeclaration reference numbers (max 2000) |
| Common model introduced |
V3 uses shared eudr-common.xsd types |
| Retrieval merged into DDS service |
No separate retrieval service |
GROUPED, OBSOLETE, SUSPENDED, UPDATED, DRAFT statuses |
New in V3 |
CANCELLED status removed |
Removed from external enumeration |
Status values
| V1 Value |
V3 Value |
Change |
AVAILABLE |
AVAILABLE |
Unchanged |
SUBMITTED |
SUBMITTED |
Unchanged |
REJECTED |
REJECTED |
Unchanged |
CANCELLED |
— |
Removed |
WITHDRAWN |
WITHDRAWN |
Unchanged |
ARCHIVED |
ARCHIVED |
Unchanged |
| — |
DRAFT |
New |
| — |
SUSPENDED |
New — not active in current release |
| — |
UPDATED |
New — not active in current release |
| — |
GROUPED |
New — grouped declaration status |
| — |
OBSOLETE |
New — superseded declaration |
Error codes (Retrieval)
| Error Code |
Description |
EUDR_NUMBER_EMPTY |
Reference or verification number is null/empty |
EUDR_NUMBER_INVALID |
Contains prohibited characters |
EUDR_NUMBER_TOO_LONG |
Exceeds maximum allowed length |
EUDR_WEBSERVICE_STATEMENT_NOT_FOUND |
DDS not found or not in AVAILABLE/ARCHIVED status |