Skip to content

Communication Sequences Examples

This section provides step-by-step message examples demonstrating the full lifecycle of a vehicle charging process.

Activity Flow Overview

  1. Provisioning and Connection Establishment
  2. Initial Charging Request
  3. Vehicle Arrival
  4. Start of Charging
  5. Active Charging Phase
  6. Updated Departure Time
  7. End of Charging
  8. Vehicle Departure
  9. Offline Behavior

Setup

The following scenario is used throughout the examples:

Scenario: Vehicle ID VIN12345678901234, Max Charging Power = 150 kW, Battery Capacity = 330 kWh.

Each message follows the structure:

[MessageType, Source, PresystemId, TimeStamp, MessageId, MessageAction, Payload]


1 Provisioning and Connection Establishment

The CMS provides the upstream system with depot and station information upon initial connection.

sequenceDiagram
    participant Vehicle
    participant CS as "Charging Station"
    participant CMS as "ChargeManagement System"
    participant DMS as "Depot Management / ITCS"

    CMS-->>CMS: Provisioning()
    DMS-->>DMS: Provisioning()

    CS->>CS: PowerUp()
    CS->>CMS: BootNotificationReq()
    CMS-->>CS: BootNotificationResp()

    CMS->>DMS: BootNotification.req()
    DMS-->>CMS: BootNotification.conf()

    CMS->>DMS: ProvideChargingInformation.req()
    DMS-->>CMS: ProvideChargingInformation.conf()
    Note over CMS, DMS: ProvideChargingInformation Example 1
Example 1 Request:
[1, "CMS", "uri://Customer1/Presystem1", "2020-07-17T08:30:00Z", "728ba441-4fd6-4b8b-9680-ea4018c2cd2e", "ProvideChargingInformation", {
  "depotInfoList": [
    {
      "depotId": "uri://Customer1/Depot1",
      "name": "depot1",
      "chargingStationInfoList": [
        {
          "chargingStationId": "uri://Customer1/Depot1/CS1",
          "chargingStationStatus": "Available",
          "chargingPointInfoList": [
            {"chargingPointId": "uri://Customer1/Depot1/CS1/CP1", "chargingPointStatus": "Available", "presentPower": 0, "energyMeterReading": 888000},
            {"chargingPointId": "uri://Customer1/Depot1/CS1/CP2", "chargingPointStatus": "Available", "presentPower": 0, "energyMeterReading": 999000}
          ]
        }
      ]
    }
  ]
}]
Response:
[2, "BMS", "uri://Customer1/Presystem1", "2020-07-17T08:30:01Z", "51a3e975-c0f0-417c-8625-f4f3220376ce", "ProvideChargingInformation", {}]

2 Initial Charging Request

The upstream system sends a charging request for vehicle VIN12345678901234.

sequenceDiagram
    participant Vehicle
    participant CS as "Charging Station"
    participant CMS as "ChargeManagement System"
    participant DMS as "Depot Management / ITCS"

    DMS->>CMS: ProvideChargingRequests.req()
    CMS-->>DMS: ProvideChargingRequests.conf()
    Note over CMS, DMS: ProvideChargingRequests Example 1

    CMS->>DMS: ProvideChargingInformation.req()
    DMS-->>CMS: ProvideChargingInformation.conf()
    Note over CMS, DMS: ProvideChargingInformation Example 2
Example 2 Request:
[1, "BMS", "uri://Customer1/Presystem1", "2020-07-17T08:38:00Z", "baf4ad01-d220-4430-a3eb-b31e4999720e", "ProvideChargingRequests", {
  "chargingRequestList": [
    {
      "chargingPointId": "uri://Customer1/Depot1/CS1/CP1",
      "vehicleId": "VIN12345678901234",
      "chargingRequestId": "uri://Customer1/Presystem1/Depot1/CR1",
      "priority": 1,
      "chargingInstruction": "Normal",
      "chargingRequestData": {
        "expectedArrivalTimeAtChargingPoint": "2020-07-17T09:30:00Z",
        "expectedSocAtArrival": 22,
        "minTargetSoc": 85,
        "maxTargetSoc": 90,
        "requestedTimeForDeparture": "2020-07-17T11:00:00Z"
      }
    }
  ]
}]
Response:
[2, "CMS", "uri://Customer1/Presystem1", "2020-07-17T08:38:01Z", "baf4ad01-d220-4430-a3eb-b31e4999720e", "ProvideChargingRequests", {}]

3 Vehicle Arrival

CMS reports that the vehicle has arrived and is preparing to charge.

sequenceDiagram
    participant Vehicle
    participant CS as "Charging Station"
    participant CMS as "ChargeManagement System"
    participant DMS as "Depot Management / ITCS"

    Vehicle->>CS: Plug connected()
    CS->>CMS: StatusNotificationReq(occupied)
    CMS-->>CS: StatusNotificationResp()

    CMS->>DMS: ProvideChargingInformation.req()
    DMS-->>CMS: ProvideChargingInformation.conf()
    Note over CMS, DMS: ProvideChargingInformation Example 3
Example 3 Request:
[1, "CMS", "uri://Customer1/Presystem1", "2020-07-17T09:29:47Z", "88081f2b-be27-4a0e-9bab-8009e7ab0cf1", "ProvideChargingInformation", {
  "depotInfoList": [
    {
      "depotId": "uri://Customer1/Depot1",
      "name": "depot1",
      "chargingStationInfoList": [
        {
          "chargingStationId": "uri://Customer1/Depot1/CS1",
          "chargingStationStatus": "Available",
          "chargingPointInfoList": [
            {
              "chargingPointId": "uri://Customer1/Depot1/CS1/CP1",
              "chargingPointStatus": "Occupied",
              "presentPower": 0,
              "energyMeterReading": 888000,
              "chargingProcessInfo": {
                "presystemId": "uri://Customer1/Presystem1",
                "chargingRequestId": "uri://Customer1/Presystem1/Depot1/CR1",
                "chargingProcessId": "uri://Customer1/CPR1",
                "processStatus": "Preparing",
                "startTime": "2020-07-17T09:29:47Z"
              }
            }
          ]
        }
      ]
    }
  ]
}]
Response:
[2, "BMS", "uri://Customer1/Presystem1", "2020-07-17T09:29:48Z", "88081f2b-be27-4a0e-9bab-8009e7ab0cf1", "ProvideChargingInformation", {}]

4 Start of Charging

CMS reports the start of the charging process with vehicle info and electric data.

sequenceDiagram
    participant Vehicle
    participant CS as "Charging Station"
    participant CMS as "ChargeManagement System"
    participant DMS as "Depot Management / ITCS"

    Vehicle->>CS: Plug connected()
    CS->>CMS: StartTransactionReq()
    CMS-->>CS: StartTransactionResp()

    CMS->>DMS: ProvideChargingInformation.req()
    DMS-->>CMS: ProvideChargingInformation.conf()
    Note over CMS, DMS: ProvideChargingInformation Example 4
Example 4 Request:
[1, "CMS", "uri://Customer1/Presystem1", "2020-07-17T09:31:47Z", "51e9599a-7e8f-4d8d-8880-d8eff52e349a", "ProvideChargingInformation", {
  "depotInfoList": [
    {
      "depotId": "uri://Customer1/Depot1",
      "name": "depot1",
      "chargingStationInfoList": [
        {
          "chargingStationId": "uri://Customer1/Depot1/CS1",
          "chargingStationStatus": "Available",
          "chargingPointInfoList": [
            {
              "chargingPointId": "uri://Customer1/Depot1/CS1/CP1",
              "chargingPointStatus": "Occupied",
              "presentPower": 0,
              "energyMeterReading": 888000,
              "vehicleInfo": {
                "vehicleId": "VIN12345678901234",
                "vehicleChargingStatus": "ReadyToCharge"
              },
              "chargingProcessInfo": {
                "processStatus": "Preparing",
                "startTime": "2020-07-17T09:29:47Z"
              }
            }
          ]
        }
      ]
    }
  ]
}]
Response:
[2, "BMS", "uri://Customer1/Presystem1", "2020-07-17T09:31:48Z", "51e9599a-7e8f-4d8d-8880-d8eff52e349a", "ProvideChargingInformation", {}]

5 Active Charging Phase

During charging, CMS reports ongoing progress, including SoC and power values.

sequenceDiagram
    participant Vehicle
    participant CS as "Charging Station"
    participant CMS as "ChargeManagement System"
    participant DMS as "Depot Management / ITCS"

    Vehicle->>CS: Start Power Transfer()

    loop Charging Loop
        Vehicle->>CMS: Optional VDV261 Req()
        CMS-->>Vehicle: Optional VDV261 Resp()

        CS->>CMS: TransactionEventReq(updated)
        CMS-->>CS: TransactionEventResp()

        CMS->>DMS: ProvideChargingInformation.req()
        DMS-->>CMS: ProvideChargingInformation.conf()
        Note over CMS, DMS: ProvideChargingInformation Example 5
    end

NOTE: The Value-Added-Service communication VDV261 is asynchronous to OCPP. It is an optional part of the sequence and may not be implemented.

Example 5 During this phase, many ProvideChargingInformation messages are sent. The following example message is sent after approximately one hour. Request:
[1, "CMS", "uri://Customer1/Presystem1", "2020-07-17T10:31:47Z", "1fb0360c-5608-4a91-9965-cfcba09b163e", "ProvideChargingInformation", {
  "depotInfoList": [
    {
      "depotId": "uri://Customer1/Depot1",
      "chargingStationInfoList": [
        {
          "chargingStationId": "uri://Customer1/Depot1/CS1",
          "chargingStationStatus": "Available",
          "chargingPointInfoList": [
            {
              "chargingPointId": "uri://Customer1/Depot1/CS1/CP1",
              "chargingPointStatus": "Occupied",
              "presentPower": 150,
              "energyMeterReading": 1038000,
              "vehicleInfo": {
                "vehicleId": "VIN12345678901234",
                "tractionBatteryInfo": {"stateOfCharge": 67},
                "vehicleChargingStatus": "Charging"
              },
              "chargingProcessInfo": {
                "processStatus": "Charging",
                "electricData": {
                  "chargingCurrent": 200,
                  "chargingVoltage": 750,
                  "chargingPower": 150
                }
              }
            }
          ]
        }
      ]
    }
  ]
}]
Response:
[2, "BMS", "uri://Customer1/Presystem1", "2020-07-17T10:31:48Z", "1fb0360c-5608-4a91-9965-cfcba09b163e", "ProvideChargingInformation", {}]

6 Updated Departure Time (+30 min)

Upstream modifies the charging request to postpone departure.

sequenceDiagram
    participant Vehicle
    participant CS as "Charging Station"
    participant CMS as "ChargeManagement System"
    participant DMS as "Depot Management / ITCS"

    Vehicle->>CS: Start Power Transfer()

    loop Charging Loop
        Vehicle->>CMS: Optional VDV261 Req()
        CMS-->>Vehicle: Optional VDV261 Resp()

        CS->>CMS: TransactionEventReq(updated)
        CMS-->>CS: TransactionEventResp()

        CMS->>DMS: ProvideChargingInformation.req()
        DMS-->>CMS: ProvideChargingInformation.conf()
        Note over CMS, DMS: ProvideChargingInformation Example 5


      opt Renegotiation

          DMS->>CMS: ProvideChargingRequests.req()
          CMS-->>DMS: ProvideChargingRequests.conf()
          Note over CMS, DMS: ProvideChargingRequests Example 2


          CMS->>CS: SetChargingProfileRequest()
          CS-->>CMS: SetChargingProfileResp()
          CS->>Vehicle: Start Renegotiation()

          CMS->>DMS: ProvideChargingInformation.req()
          DMS-->>CMS: ProvideChargingInformation.conf()
          Note over CMS, DMS: ProvideChargingInformation Example 6


      end

    end

Example 6 Request:
[1, "CMS", "uri://Customer1/Presystem1", "2020-07-17T10:32:47Z", "7beebb5d-3941-4d63-a65b-3e24dca01b0f", "ProvideChargingRequests", {
  "chargingRequestList": [
    {
      "chargingRequestId": "uri://Customer1/Presystem1/Depot1/CR1",
      "chargingInstruction": "Changed",
      "chargingRequestData": {
        "requestedTimeForDeparture": "2020-07-17T11:30:00Z"
      }
    }
  ]
}]
Response:
[2, "DMS", "uri://Customer1/Presystem1", "2020-07-17T10:32:48Z", "7beebb5d-3941-4d63-a65b-3e24dca01b0f", "ProvideChargingRequests", {}]

7 End of Charging

CMS reports completion of charging.

sequenceDiagram
    participant Vehicle
    participant CS as "Charging Station"
    participant CMS as "ChargeManagement System"
    participant DMS as "Depot Management / ITCS"

    Vehicle->>CS: Stop Power Transfer()
    CS->>CMS: TransactionEventReq(Ended)
    CMS-->>CS: TransactionEventResp()

    CMS->>DMS: ProvideChargingInformation.req()
    DMS-->>CMS: ProvideChargingInformation.conf()

    Note over CMS, DMS: ProvideChargingInformation Example 7
Example 7 Request:
[1, "CMS", "uri://Customer1/Presystem1", "2020-07-17T11:30:00Z", "60c03f4a-4844-49a6-84a1-acc4224cf90f", "ProvideChargingInformation", {
  "depotInfoList": [
    {
      "depotId": "uri://Customer1/Depot1",
      "chargingStationInfoList": [
        {
          "chargingStationId": "uri://Customer1/Depot1/CS1",
          "chargingPointInfoList": [
            {
              "chargingPointId": "uri://Customer1/Depot1/CS1/CP1",
              "chargingPointStatus": "Occupied",
              "energyMeterReading": 1113000,
              "vehicleInfo": {"vehicleChargingStatus": "ReadyToCharge"},
              "chargingProcessInfo": {"processStatus": "Finishing"}
            }
          ]
        }
      ]
    }
  ]
}]
Response:
[2, "BMS", "uri://Customer1/Presystem1", "2020-07-17T11:30:01Z", "60c03f4a-4844-49a6-84a1-acc4224cf90f", "ProvideChargingInformation", {}]

8 Vehicle Departure

CMS reports that the vehicle has departed and the point is available again.

sequenceDiagram
    participant Vehicle
    participant CS as "Charging Station"
    participant CMS as "ChargeManagement System"
    participant DMS as "Depot Management / ITCS"

    Vehicle->>CS: Plug disconnected()
    CS->>CMS: StatusNotificationReq(Available)
    CMS-->>CS: StatusNotificationResp()

    CMS->>DMS: ProvideChargingInformation.req()
    DMS-->>CMS: ProvideChargingInformation.conf()

    Note over CMS, DMS: ProvideChargingInformation Example 8
Example 8 Request:
[1, "CMS", "uri://Customer1/Presystem1", "2020-07-17T11:31:00Z", "c61f868a-d1d1-4cf6-936c-f22f25b607d9", "ProvideChargingInformation", {
  "depotInfoList": [
    {
      "depotId": "uri://Customer1/Depot1",
      "chargingStationInfoList": [
        {
          "chargingStationId": "uri://Customer1/Depot1/CS1",
          "chargingPointInfoList": [
            {"chargingPointId": "uri://Customer1/Depot1/CS1/CP1", "chargingPointStatus": "Available", "presentPower": 0, "energyMeterReading": 888000},
            {"chargingPointId": "uri://Customer1/Depot1/CS1/CP2", "chargingPointStatus": "Available", "presentPower": 0, "energyMeterReading": 999000}
          ]
        }
      ]
    }
  ]
}]
Response:
[2, "BMS", "uri://Customer1/Presystem1", "2020-07-17T11:31:01Z", "c61f868a-d1d1-4cf6-936c-f22f25b607d9", "ProvideChargingInformation", {}]

9 Offline Behavior

sequenceDiagram
    participant CMS as "ChargeManagement System"
    participant DMS as "Depot Management / ITCS"

    CMS->>DMS: ProvideChargingInformation.req()
    DMS-->>CMS: ProvideChargingInformation.conf()

    alt Offline Behavior
        Note over CMS: CMS is offline.
        Note over DMS: Wait for CMS to be online again to reconnect.
    else
        Note over DMS: DMS/ITCS is Offline.
        Note over CMS: Wait for DMS/ITCS to reconnect.
    end

    Note over CMS: CMS is online.
    Note over DMS: DMS/ITCS is online.

    DMS->>CMS: BootNotification.req()
    CMS-->>DMS: BootNotification.conf()

If either system goes offline:

  • CMS failure: Upstream retries reconnection periodically.
  • Upstream failure: CMS waits for reconnection.

NOTE: No historical data is replayed after recovery.

Recovery sequence:

  1. BootNotification.req / BootNotification.conf
  2. ProvideChargingInformation.req
  3. ProvideChargingRequests.req