Skip to content

DDS Migration: V2 to V4

Detailed field-by-field mapping

For a complete field-level mapping with types, constraints, and regulatory references, see DDS Field-Level Mapping.

V2 Submission: EUDRSubmissionServiceV2 — /tracesnt/ws/EUDRSubmissionServiceV2
V2 Retrieval: EUDRRetrievalServiceV2 — /tracesnt/ws/EUDRRetrievalServiceV2
V4 (unified): EUDRDueDiligenceStatementServiceV4 — /tracesnt/ws/EUDRDueDiligenceStatementServiceV4

Key change: V4 consolidates submission and retrieval into a single service.

Already on V3?

This guide covers migrating all the way from V2 to the current V4 contract. If you are already on V3 and only need the incremental V3 → V4 changes, see the DDS V3 → V4 Migration Guide.

Namespace change:
http://ec.europa.eu/tracesnt/certificate/eudr/submission/v2 → http://ec.europa.eu/tracesnt/certificate/eudr/due-diligence-statement/v4
http://ec.europa.eu/tracesnt/certificate/eudr/retrieval/v2 → merged into the above


Operation changes

V2 Service V2 Operation V4 Operation Change
Submission submitDds submitDds Request/response types renamed (see below)
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. In V4 this operation no longer returns content — it always returns a NotFoundException fault ("Statement detail access is possible only over UI"). Detail retrieval is UI-only
Retrieval getReferencedDds — Removed in V4

Request/Response type changes

Submission operations

V2 V4 Notes
SubmitStatementRequest SubmitDdsRequest Renamed; adds operatorRole field (OPERATOR / REPRESENTATIVE_OPERATOR) replacing operatorType
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

V2 V4 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. Defined in the schema but not returned in V4 — getDdsByIdentifiers always faults with NotFoundException (detail is UI-only)
GetReferencedDdsRequest — Removed
GetReferencedDdsResponse — Removed

Fault changes

V2 V4 Notes
DdsPermissionDeniedException PermissionDeniedException Renamed (generic)
BusinessRulesValidationException BusinessRulesValidationException Unchanged
— NotFoundException New — returned by getDds / getDdsByInternalReference when no match is found, and always by getDdsByIdentifiers in V4 (detail retrieval is UI-only)

Data model changes

Change Details
operatorType → operatorRole Field renamed in submit request; values changed to OPERATOR / REPRESENTATIVE_OPERATOR (TRADER roles removed)
ddsIdentifier → uuid Identifier field renamed across all request types
speciesInfo added to DdsCommodityType New — supports scientificName and commonName (up to 500 per commodity)
Producer type restructured producerPosition → position, producerCountry → country, producerName → name
Producer location V4 DDS requires geometryGeojson only (no postal address option)
associatedStatements → groupedDeclarations Renamed; now uses GroupedDeclarationsType with groupedDeclaration reference numbers (max 2000)
GROUPED / OBSOLETE statuses New lifecycle states for grouped declarations
Common model V4 uses shared eudr-common.xsd types (UuidType, ActivityType, etc.) instead of V2's model/v2/eudr.xsd
getReferencedDds removed Supply chain traversal operation no longer available in V4
Retrieval merged into DDS service No separate retrieval service — all operations on one endpoint
referenceNumberInfo added New optional field on overview responses (OverviewType) — human-readable reference-number status ("Under system analysis" / "Under Competent Authority review (Article 17)" / "Assigned")
summaryAddress added New optional SummaryAddressType (name + country) on EconomicOperatorIdentificationType, alongside operatorAddress
EudrUserMessage response header added New optional header (EudrUserMessageType, max 2000) carrying EUDR announcements