With the ongoing shift to digital supply chains, our customers increasingly rely on multiple software solutions. Unfortunately, these systems are often data silos, islands of information with no way to talk to each other. Inevitably, many of these systems require some common data such as voyage schedules or cargo manifests to operate. This results in users having to input the same information multiple times but in slightly different formats throughout different applications. Sounds tedious, right?

Don’t repeat yourself 

This was the problem posed to us by one of our customers operating in the Southern North Sea. Their voyage scheduling team had to enter the same information into two separate systems, once in their planning system and again for the system they use aboard their vessels. Wouldn’t it be great if you only had to enter your data once and everything was taken care of for you? Enter VOR.

The starting line 

We’ve worked closely with this particular customer over several years, so we had a head start. Through an existing integration, when a user creates a new voyage schedule in their planning application VOR already knows how to fetch that schedule and not only display it in VOR but enhance it; with scheduling predictions, weather forecasts, cargo manifests, and real-time updates and warnings about important events such as high-cost cargo that might not reach the quayside in time for loading. We do this through ingestion pipelines that pull data from dozens of external systems and suppliers and combine everything into a single source of truth. We then apply our logistics expertise to provide actionable insights for our customers.

The problem – users have no choice but to enter the same information in multiple systems.

So we had a good starting point; we have the voyage from the planning application, but how do we get that schedule into a third application? We need an API.

What’s an API? An Application Programming Interface is a standardized way for two or more systems to communicate with one another. APIs are the key to unlocking a truly seamless digital supply chain, allowing VOR to speak the same language as the many systems we tie together.

Fortunately for us, the third application and the API we needed to hook into turned out to be the excellent team at Onboard. Their Onboard Platform provides a suite of applications for fleet management, allowing their customers to unlock operational efficiency gains on their vessels by providing visibility into their vessel data, from digital logbooks to fuel efficiency. Our customers wanted their voyage schedules to be automatically uploaded to Onboard to avoid the need for users to manually enter it through an interface since they were already doing this in their planning application.

Onboard’s GraphQL powered Vessel API gives us the ability to input the voyage schedule automatically, without any user intervention.

So how does it all work?

Getting on the grid

Our first challenge is that VOR needs to know when to tell Onboard about changes to voyage schedules. VOR is constantly refreshing its voyage data, but in this instance, we only want to update Onboard if there are new voyages or updates to existing ones. To do this, we leveraged the power of Azure EventGrid. 

EventGrid gives us an event-based architecture using a pub-sub model to allow services in VOR to dispatch and listen for events to dynamically trigger other services. In this case, we can dispatch events when the voyage changes and have a service listen for those events and handle sending them Onboard. Rather than dispatching events every time a voyage updates, we set up a simple Diff’ing strategy that compares the most recent voyage data to its previous version. Then we dispatch events only if we detect changes to voyage schedules that Onboard needs to know about. 

Servers – who needs ’em?

The beauty of EventGrid is that it works seamlessly with the rest of our Azure ecosystem. Rather than set up and host an application to listen for events, we used serverless Azure Functions, which can be triggered directly by EventGrid using Webhooks. 

When an event is detected, a Function automatically spins up to handle it, eliminating the need to host and maintain another application. In this case, the function is converting our voyage data into a format that Onboard understands and making requests to their Vessel API to create, update or delete voyages as appropriate. Using Onboard’s GraphQL API couldn’t be simpler (check out one of their articles here). Not only does GraphQL simplify their API down to a single endpoint and allow you to describe the structure of the response data, but it also generates interactive documentation that allows you to explore the schema through a playground environment and provides autocomplete and linting to validate your query before you ever hit send.

Our solution utilising Azure EventGrid and Functions.

Having a conversation

Integrations like this aren’t limited to one way communication. Onboard provides us with the latest vessel activities once the voyage is underway, allowing us to display the last reported vessel activity as part of VOR’s voyage monitoring page. The result is that VOR talks to Onboard to inform their systems of upcoming voyages, and Onboard replies with the latest activities performed by the vessel, giving our users the information they need at a glance without having to switch tabs.

The result

Now, when a user creates or updates a voyage schedule in their planning application, VOR intelligently decides if Onboard needs to know about it and automatically generates the voyage on behalf of the user, eliminating the need for them to log into both applications and do so manually. This is an example of the powerful orchestration VOR is capable of through APIs, breaking down the walls of data silos and allowing for complete end to end visibility of the supply chain without burdening users with the management of a dozen different systems. Our integration with Onboard provides a seamless experience where users plan their schedules and VOR takes care of the rest, allowing our customers to make more efficient use of their time and resources.

Now users only need to enter their data once, VOR takes care of the rest.

Integrations like this are a foundational concept of VOR, so we’re no stranger to them, but the first hurdle is always the quality of documentation provided to us by the system we’re integrating with. Onboard’s Vessel API provides a best-in-class developer experience when it comes to implementing this type of integration through its interactive documentation and self-service model of being able to describe the data you want thanks to GraphQL, so a shout out to their team, particularly Erik, is absolutely in order – great work. We look forward to collaborating again soon. As is always the case when we have a new problem to solve, we’re spoiled for choice in terms of technologies made available through Azure thanks to our partnership with Microsoft; EventGrid and Serverless Functions are rapidly becoming some of our most powerful tools, and we’re making more use of them every day, working with our partners to create integrations like this and expand VOR’s ability to intelligently orchestrate our customers’ supply chain to provide a seamless data ecosystem.