redispatch-xml
XML/XSD format parsing, serialization, and validation for Redispatch 2.0, the German electricity-grid congestion-management protocol (§§ 13, 13a, 14 EnWG, mandatory since 1 October 2021).
All nine BDEW Redispatch 2.0 document types are fully implemented: parse, serialize,
structural validation, and semantic validation. The crate targets MSRV 1.88 and is
#![deny(unsafe_code)].
Regulatory basis
| Document | Authority | Binding since |
|---|---|---|
| NABEG 2019, § 13 ff. EnWG | Bundestag | 2021-10-01 |
| BNetzA BK6-20-059 (Abrechnungsbilanzkreis) | BNetzA | 2021-10-01 |
| BNetzA BK6-20-060 (Netzbetreiber-Koordination) | BNetzA | 2021-10-01 |
| BNetzA BK6-20-061 (Informationsbereitstellung) | BNetzA | 2021-10-01 |
| BDEW XML-Datenformate Redispatch 2.0 | BDEW | Annual update |
All German grid operators (TSO/DSO) must implement Redispatch 2.0. Absence of a conformant implementation is a regulatory violation under § 14 EnWG.
Document types
All documents are CIM/IEC 62325-based XML, not EDIFACT. IFTSTA status
messages (EDIFACT) are handled by the edi-energy crate.
| Document type | XSD version | Valid from | Status |
|---|---|---|---|
ActivationDocument |
1.1f | 2025-10-01 | ✅ Implemented |
PlannedResourceScheduleDocument |
1.0f | 2025-10-01 | ✅ Implemented |
AcknowledgementDocument |
1.0f | 2025-10-01 | ✅ Implemented |
Stammdaten (master data) |
1.4b | 2025-10-01 | ✅ Implemented |
StatusRequest_MarketDocument |
1.1 | 2025-10-01 | ✅ Implemented |
Unavailability_MarketDocument |
1.1b | 2025-10-01 | ✅ Implemented |
Kaskade |
1.0 | 2025-10-01 | ✅ Implemented |
NetworkConstraintDocument |
1.1b | 2025-10-01 | ✅ Implemented |
Kostenblatt |
1.0d | 2025-10-01 | ✅ Implemented |
XSD schemas and application guidelines are published by BDEW at bdew-mako.de (topicGroupId 25 — XML-Datenformate Redispatch 2.0).
Quick start
use ;
// Auto-detect document type and parse
let doc = parse?;
// Parse + structural/semantic validation in one step
let doc = parse_and_validate?;
// Serialize a Document back to XML bytes
let bytes = serialize?;
// Serialize a specific type (when document type is known at compile time)
use ;
let bytes = serialize_as?;
// Parse a specific type directly
use parse_as;
let doc: ActivationDocument = parse_as?;
API overview
| Function | Description |
|---|---|
parse(xml) |
Detect type, deserialize, validate namespace |
parse_as::<T>(xml) |
Deserialize into a known type T |
parse_and_validate(xml) |
Parse + structural + semantic validation |
detect(xml) |
Return DocumentType without deserializing |
serialize(doc) |
Serialize Document enum to XML bytes |
serialize_as(doc, decl) |
Serialize any Serialize type to XML bytes |
validate(doc) |
Run structural + semantic validation, return ValidationResult |
Document::mrid(&self) |
Primary document identifier — correlation key for process routing |
Document::sender_id(&self) |
Sender GLN / EIC (13 digits) |
Document::receiver_id(&self) |
Receiver GLN / EIC (13 digits) |
ValidationResult::into_errors() |
Consume result — Ok(warnings) or Err(errors) with the full list |
Type system highlights
DocumentId/MarketParticipantId— validated newtypes withDisplay,AsRef<str>,TryFrom<&str>,TryFrom<String>, custom serde.TimeInterval— parses/serializes"yyyy-mm-ddThh:mmZ/yyyy-mm-ddThh:mmZ", validates UTC and start-before-end. ImplementsDisplay.Decimal3— non-negativef64serialized as"NNN.NNN"(3 dp). ImplementsDisplay.AttrV<T>— ENTSO-E attr-v pattern wrapper withFrom<T>,Display,Deref.- All public fallible constructors are annotated
#[must_use]. - Enums open for extension:
Direction,MeasureUnit,CodingScheme,ControlZoneare all#[non_exhaustive].
Market roles
| Abbrev. | Role |
|---|---|
| ÜNB | Übertragungsnetzbetreiber (TSO) |
| VNB | Verteilnetzbetreiber (DSO) |
| ANB | Anlagenbetreiber (generation asset operator) |
| DV | Direktvermarkter |
| BKV | Bilanzkreisverantwortlicher |
Related crates
| Crate | Role |
|---|---|
redispatch-xml ← this crate |
XML format layer (parse / serialize / validate) |
mako-redispatch |
Event-sourced process engine — 8 workflows, RedispatchRouter, RedispatchModule |
edi-energy |
IFTSTA status messages (EDIFACT, PIDs 21037/21038) |
mako-engine |
Event-sourced workflow runtime (Workflow, Process, EventStore) |