References

Backend migration in a live depot

A depot operator in southern Germany had to replace its legacy CPMS while buses and trucks kept charging every night. The switch happened without interrupting charging operations.

Segment Buses & trucks in a depot
Protocols OCPP 1.6J / 2.0.1
Operating model On-premises
Role Assessment, design & implementation

Starting point

A depot operator in southern Germany charges its buses and trucks overnight in the yard. The CPMS in use was approaching the end of its contract, key functions were missing – the decision to switch providers had been made. The catch: the vehicles had to keep charging every night, so halting charging operations was not an option.

A direct cut-over – moving all charge points to the new backend on a single day – would have meant exactly that risk: if anything fails after the switch, vehicles stand in the depot the next morning without enough charge.

Approach

The project started with an assessment of the existing landscape: which charge points speak which OCPP version, which configurations and edge cases exist, which processes depend on the legacy system? The result was a migration plan in groups instead of a cut-over date.

We then placed the OCPP Broker as a decoupling layer between the charge points and the backend. Since then, the charge points connect to the broker – which backend answers behind it is a routing decision. The new backend was first connected as a shadow system: it received the same OCPP messages as the legacy system without affecting operations.

Running both backends in parallel made it possible to verify that the new system handled every flow correctly – from authorisation to the end of a charging session. Only then were the charge points switched over group by group, starting with non-critical ones. For every group, the way back to the legacy system stayed open at all times.

Outcome

The migration succeeded without interrupting charging operations: at no point were the vehicles in the depot unable to charge. Rollback capability remained in place until the last group was switched – it was never needed, but it was there.

Today the operator owns the decoupling layer itself. The next backend change – whether for contractual, functional or cost reasons – is no longer a major project but a routing decision. The lock-in to a backend provider is gone.

Building blocks used

OCPP Broker as a decoupling layer with multi-backend routing and shadow connection, complemented by assessment and migration support from our services. The broker runs on-premises at the operator and remains permanently in their ownership.

What mattered to us was that the vehicles are ready to go every morning. Throughout the entire migration, that was never in question.

Technical lead at the operator