E-MobilityOpen StandardsOICP

Open InterCharge Protocole Training. Lesson 8

26 APRIL 2022 • 9 MIN READ

Bartłomiej Łazarczyk



OICP training hubject

Solidstudio is happy to introduce you to the Open Standards course led by our e-mobility expert - Bartlomiej. Throughout the following lessons, we will uncover the technicalities and functionalities of the OICP - a protocol developed by Hubject - as well as business aspects for e-Mobility Service Providers and Charge Point Operators.

Such a knowledge-pack should serve everyone operating in the e-mobility industry as it unfolds the most crucial aspects of navigating through Open Standards utilization and many more!

Subscribe to our YouTube channel to make sure you don't miss out on the upcoming training entries.

See the previous lessons:

  1. Overview
  2. Business introduction
  3. Technical details
  4. CPO eRoamingAuthorization + eRoamingReservation
  5. CPO eRoamingEVSEdata + eRoamingEVSEstatus
  6. CPO eRoamingDynamicPricing + eRoamingChargingNotifications
  7. EMP eRoamingAuthorization + eRoamingReservation

Open InterCharge Protocol Training - Lesson 8

OICP Training Transcript


In this service, EMP has its own operation which allows them to pull EVSE static data from partner operators. This can be done with eRoaming pool EVSE data operation. Its implementation is mandatory by every EMP partner. EVSE data model used in this operation was already covered before and does not differ. worth mentioning is that from OICP2.3 version response should be in paginated format. As we have seen it before, Hubject holds the last update attribute in every record that is stored in their platform. That allows Hubject to offer filtering functionality based on the LastCall attribute added in the request. LastCall is used for fetching only those data records that have changed compared to the EVSE state at the time of LastCall value. Besides the LastCalll, Hubject includes a deltaType attribute in the response which can tell what kind of operation was performed. Unfortunately, LastCall filtering cannot be combined with other types of filtering like search center, country codes and operator IDs. Request for eRoamingPullEVSEData includes many types of filtering parameters that can be used. The only mandatory attributes are provider ID and GeoCoordinatesResponseFormat. Most of the filterings are very useful i.e. you can filter by authentication modes, accessibility, renewable energy and few more. But probably the most useful one is filtering by SearchCenter which can be provided in order to return EVSEs with any specific radius.

Response for eRoamingPullEVSEData is a list of EVSE data records. Each EVSE data record includes the last update and deltaType attributes which were mentioned before. Return the list of EVSE data records is in the paginated format.


Similar as for eRoamingEVSEdata service, this service also has EMP dedicated operation which allows them to pull EVSE in dynamic data from partner operators. This is being done with the eRoamingPullEVSEStatus operation. Its implementation is mandatory for every EMP partner. It's worth mentioning that EVSE status records are grouped per specific CPO.

Hubject offers two additional functionalities for fetching EVSE statuses built on top of eRoamingPullEVSEStatus operation. The first one is eRoamingPull EVSEStatus by ID which is used for fetching statuses based on EVSE ID list. The second one is eRoamingPullEVSEStatus by operator ID which is used for fetching statuses based on operator ID list. Both of those functionalities are very important for EMP, because those filtering criterias are very useful in practice. In eRoamingPull EVSEStatus request only provider ID is mandatory, but you can also specify EVSE status and SearchCenter filtering. If you would like to fetch statuses by EVSE IDs, then you can provide a list of IDs under EVSE ID attribute, instead of EVSE status and SearchCenter filtering. If you would like to fetch statuses based on operator IDs, then you need to provide a list of IDs under operator ID attribute instead of EVSE status and SearchCenter. Response for eRoamingPullEVSEStatus request is a list of EVSE status records. Each list of records is grouped per operator ID under operator EVSE status. Unlike eRoaming EVSE data response, the data in this response is not paginated.


When it comes to the tariffs, Hubject offers EMPs a possibility to pull pricing product information specified by CPOs in their offers with eRoamingPullPricingProductData operation. Pricing product can be per specific EMP or offered to everyone. Hubject will verify if there is a valid pricing business contract between EMP and CPO before any data is returned. Returning functionality is also offered by providing elastical parameter in request. When it comes to the request of eRoamingPullPricingProductData operation, it's very simple. You need to provide a list of operator IDs, in other words a list of CPOsthat you are interested in and eventually you can provide the LastCall parameter for filtering.

As a response for eRoamingPullPricingProductData request you will receive pricing product data details for specific operator. As an EMP, based on that information, you only know what kind of pricing products a given operator offers. You still do not know yet how to apply them to specific EVSEs. That information is a part of the next operation.


eRoamingPullEVSEPricing operation allows EMP to know exactly how pricing products are assigned to EVSE IDs by CPO. Similar as in the previous operation, Hubject will verify if there is a valid pricing business contract between CPO and EMP. Request for this operation is very simple, you need to specify your provider ID as well as a list of operator IDs, which you are interested in. Also LastCall parameter can be provided for filtering.

Response for eRoamingPullEVSEPricing request is a list of operator EVSE pricing. Each object contains a list of EVSE pricing offered by a specific operator. Each EVSE pricing object has a list of pricing products that can be assigned to given EVSE. If that offer is specific only to you, you will see your provider ideas well in this object. In case data is available to everyone, you will see an asterisk character as a value for the provider ID field.


This service does not differ between CPO and EMP almost at all, but as a reminder - charging notifications allow EMP to know more details about ongoing charging sessions, which is crucial for their customers. Logic, data model and types of notifications are the same as for CPO related service. The only difference is that EMP must be able to handle eRoaming charging notifications request and return eRoaming acknowledgement as a response.

EMP services summary

To sum up this part, we have covered all the services from EMP perspective. When it comes to the list of mandatory services and operations, we may divide it into online EMP and offline EMP.

Online EMP must implement: eRoamingAuthorizedStart and eRoamingChargeDetailRecord operations. Offline EMP must implement eRoamingGetChargeDetailRecord and eRoamingPushAuthenticationData. Both types of EMP must implement eRoamingAuthorizedRemoteStart, eRoamingAuthorizedRemoteStop, eRoamingPullEVSEData, eRoamingPullEVSEStatus. Of course online EMP may use eRoamingChargeDetailRecord and eeRoamingPushAuthenticationData operation in order to take advantage of the Hubject platform and make the whole experience better.