Automation with Insightly API
I have been using the cloud based CRM software Insightly for a while now. I use it to manage my clients' information, and projects that I have with those clients. Recently I was presented with a task by my boss. He wanted to automate some of our business processes because we were taking to much time entering data and creating spreadsheets to send to our accounting team. Every time we would start a new project with one of our clients we would create a spreadsheet showing all of the information about the project budgeted hours, budgeted amount, etc. Also, we would check with our accounting team to see if they already had the client within their system. If not we would also create a customer spreadsheet to send over so they could have emails, billing contacts information, etc.
This process took about thirty minutes every time we started a new Project. So, we needed to come up with a way to speed up or automate this process. We are closely associated with Mulesoft, and have a team of Certified Mule Developers, and we decided to use Mule to accomplish this task. Mulesoft has a suite of different integration and API products.
So let me explain a little bit about what is going on behind the scenes of this process that I have built out. Whenever we create a Project within Insightly we make sure to have all of the fields that we need to send over to our accounting team, this includes the linked customer(Organization) that we will also be creating a spreadsheet for and sending to our accounting team. We then use Insightly's “Tag” functionality to mark this Project as a New Project. Now Mule is polling constantly to look for Projects with the tag New Project and when it sees one it uses Insightly API to grab the Project and all of its linked information.
Once Mule has this data it starts to run checks to make sure that all of the fields that our accounting team require are populated. If any of the required fields are missing, it will stop the process and email our team letting them know that there are required fields missing and they need to go modify the record in Insightly to include those fields. Once it has made sure that it has everything it needs, it calls upon a custom transformer to take the data and put it into an Excel spreadsheet. This transformer is built using Java and Apache POI which is an add on to Java that is used for manipulating data into a custom formats such as XLS, DOC, and PPT. After the spreadsheet is created, it is sent to a shared drop-box folder for our accounting team to pick up and add to the accounting system. Then Mule reaches back out to Insightly and updates the “New Project” tag to “Project” so that Mule doesn't poll it again.
While that process is running there is also another process running that is working with the linked Organization on the Project. I needed a way to make sure that the organization that is associated with the project wasn't already in our accounting system. So I decided that I would add a tag to the Organization of Customer once it had been sent to our accounting team. So in my flow, I added a check to the Organization flow that makes sure there isn't a tag of customer. This flow is imaged below.
The linked Organization information will come in here and then it will scan through tags that are on the Organization to see if there is one called Customer. If there is one then it will populate this variable with it, if not the variable will be blank.
This will check the variable to see if it is blank or if it has a value in it. If the variable is blank it will go into path A where it will send a message stating that the Company has already been created in our accounting system and then the process will stop. If there is a value in there, it will go to path B where it will take the customer and begin processing it to be submitted to our accounting system.
After the Project comes into Mule, it takes the linked Organization and sends it over to a separate flow, and then it uses the Organization Id to call back out to Insightly to get the rest of the Organizations information. Once it has that back in Mule, the first thing it does is check for a tag of “Customer”. If it has one the process stops, and the customer spreadsheet is not created because it is already in our accounting system. If there is no tag, it begins to make sure it has all of the necessary fields to create the spreadsheet. After those checks are done, it sends the data through another custom transformer to manipulate the data into a spreadsheet and then send it to our shared drop-box folder, and finally it reaches back out to Insightly to update the Organization with the new tag of “Customer”.
These flows run at the same time, so this process is very quick. From the moment Mule picks up the New project it takes under five seconds to complete this entire process. Saving time is not the only benefit of setting up processes like this. You don't have to use two monitors to hand copy data from Insightly over to a spreadsheet and worry about missing or misspelling fields. Also, like we did within our process, you can set up checks to make sure things are populated and formatted correctly.
Automating processes such as this are becoming more and more vital to having a successful business process. Assuring that your data is being passed between services quickly and efficiently while keeping it secure has never been more important. With all the new cloud based technology like Insightly this has never been easier. What time consuming process would you like to automate?