Hubspot, Wrike & MYOB Custom Middleware

2019

Brief

Build an automated system that can import data from various 3rd part SaaS products (Wrike, Hubspot and MYOB), process it and apply some business workflows, then export/push to API and email.

Context

This project came up whilst I was consulting for a software engineering company in Melbourne in 2019.

The client (https://www.powerplant.com.au) was after a service to automate various workflows that their staff were managing manually through 3rd-part SaaS. The solution had to pull data from one source, process it, and push that data in a different format to another SaaS, all automated, with error and exception handling and email notifications.

There was also some specific business logic that required certain operations to be run after others, and the system also had to regularly poll data from the connected SaaS APIs to maintain an accurate state of various projects.

Solution

After some initial meetings with various stakeholders in the business, I planned the technical architecture of the solution, which would involve using:

  • A custom framework built on top of PHP, Composer and Doctrine ORM
  • Metronic front-end theme using custom JS for API calls
  • CRON based process automation in the cloud to connect with various SaaS REST APIs

The challenging part here was maintaining a consistent and accurate state of various points of data from the different services the client was using. So, I created models on the 'middleware' database that would house all the relevant data as well as flags and timestamps to keep track of when and where data was being imported and exported to.

On top of this, I built a custom logging class that tracked every single action and exposed this data in the front-end for the client to review logs at any time.

It was a challenging and rewarding project that allowed me to work with various stakeholders in the business, learn and experiment with a new framework, and deliver a robust solution that automated and improved the clients workflows.