DataTransfer — Migration Guide
Use cases P01–P02 (DataTransfer functional block). Perspective: CSMS Developer.
Created by tzi.app — your guide to migrating from OCPP 2.0.1 to OCPP 2.1.
Overall Migration Effort: Minimal — The DataTransfer functional block is essentially unchanged between OCPP 2.0.1 and 2.1. The only concrete schema change is the increased max length for StatusInfoType.additionalInfo (512 → 1024 characters). All flows, message structures, enum values, and functional requirements remain identical.
1. Summary of Changes
| Area | Change Type | Impact |
|---|---|---|
| StatusInfoType.additionalInfo | Max length increased | 512 → 1024 characters |
| JSON Schema $id URNs | Updated | Version identifiers changed from 2020:3 to 2025:1 |
| Flows P01, P02 | No changes | Message structure, fields, enum values, and requirements are identical |
| DataTransferStatusEnumType | No changes | Same four values: Accepted, Rejected, UnknownMessageId, UnknownVendorId |
| DataTransferRequest fields | No changes | vendorId, messageId, data — same types and constraints |
| DataTransferResponse fields | No changes | status, data, statusInfo — same types and constraints |
| Requirements P01.FR.01–P01.FR.07 | No changes | Identical requirements |
| Requirements P02.FR.01–P02.FR.08 | No changes | Identical requirements |
2. Schema Changes
2.1 StatusInfoType.additionalInfo — Max Length Increased
This applies to the statusInfo field in DataTransferResponse. The reasonCode max length (20 characters) remains unchanged.
| Version | additionalInfo maxLength |
|---|---|
| 2.0.1 | 512 |
| 2.1 | 1024 |
CSMS Migration Action
- If your CSMS validates or truncates additionalInfo at 512 characters, update the limit to 1024.
- If your CSMS sends additionalInfo in responses (P02), you may now use up to 1024 characters.
- If your CSMS parses additionalInfo from incoming responses (P01), ensure your storage/logging can handle up to 1024 characters.
2.2 JSON Schema $id URNs Updated
| Message | 2.0.1 $id | 2.1 $id |
|---|---|---|
DataTransferRequest | urn:OCPP:Cp:2:2020:3:DataTransferRequest | urn:OCPP:Cp:2:2025:1:DataTransferRequest |
DataTransferResponse | urn:OCPP:Cp:2:2020:3:DataTransferResponse | urn:OCPP:Cp:2:2025:1:DataTransferResponse |
Migration action: If your CSMS references these URNs for schema validation, update them to the 2.1 values.
3. P01 — Data Transfer to the Charging Station
No Breaking Changes
The P01 flow is functionally identical between 2.0.1 and 2.1. The same messages, fields, requirements, and behavior apply.
- Request:
DataTransferRequestwithvendorId(required),messageId(optional),data(optional) — unchanged. - Response:
DataTransferResponsewithstatus(required),data(optional),statusInfo(optional) — unchanged. - Status enum values:
Accepted,Rejected,UnknownVendorId,UnknownMessageId— unchanged. - Requirements P01.FR.01–P01.FR.07: Identical in both versions.
CSMS Migration Action: No code changes required for P01 logic, beyond the schema-level changes noted above.
4. P02 — Data Transfer to the CSMS
No Breaking Changes
The P02 flow is functionally identical between 2.0.1 and 2.1. The same messages, fields, requirements, and behavior apply.
- Request:
DataTransferRequestwithvendorId(required),messageId(optional),data(optional) — unchanged. - Response:
DataTransferResponsewithstatus(required),data(optional),statusInfo(optional) — unchanged. - Status enum values:
Accepted,Rejected,UnknownVendorId,UnknownMessageId— unchanged. - Requirements P02.FR.01–P02.FR.08: Identical in both versions.
CSMS Migration Action: No code changes required for P02 logic, beyond the schema-level changes noted above.
5. Field Constraints Reference (Both Versions)
| Field | Max Length | Changed? |
|---|---|---|
vendorId | 255 | No |
messageId | 50 | No |
data | Undefined (agree between parties) | No |
statusInfo.reasonCode | 20 | No |
statusInfo.additionalInfo | 512 → 1024 | Yes |
6. Migration Checklist
- Update additionalInfo max length validation from 512 to 1024 (if applicable)
- Update JSON Schema $id URNs if used for schema validation
- No changes needed to DataTransfer handler logic, routing, or vendor registries