Those who deal with integrations for the first time might be surprised (just like we once were) by how complex the subject is. This article doesn't have the ambitions of a technical post, textbook, or instructions. Therefore, we will not go into detail and examine all aspects of the “art” of integrations. In this article, we will take a look at the real form of integrations.
For our example, we will draw a picture the way a child would. And as well as a diligent child, we will stop and think about it for a moment so we can draw it better next time. Eventually, we should realize that just like many other things, integrations have a different form than we originally thought.
We can imagine integrations as a connection between two systems. It is the easiest case, so that's why we start with it. For example, let's say the motivator to change is that we find it quite silly if we have issued invoices in one enterprise system and our accountant gets them printed so she can record them to her accounting system. We want to transfer the invoice from system A to system B automatically. Why not? It is so easy a child can draw it.
Probably good for a start, but there is a catch. System B has its template for invoices and doesn't like the invoices from system A. So we have to transform the invoices along the way. We can draw it like this:
Our accountant can celebrate now! The invoices are in her system, and we eliminated plenty of useless work. With the diligence innate to all good accountants, she doesn't keep things without control. And thanks to this, she finds out that there are fewer invoices in system B than in system A on the very first day. It is not important why this happened. The point is to find which invoices are missing. The double checking is so exhausting that the joy of spared work is gone. The request is clear. Either ensure that all invoices will always transfer or show how to easily find the undelivered ones.
To ensure the delivery of everything in any case and circumstance is a nice and unfortunately also a naive idea. Who can guarantee that a car with cargo arrives in all conditions? We can increase the odds by providing a good service, though we can not prevent all risks of accidents. Nevertheless, we should prepare a plan of what to do if such an accident occurs.
There are usually plenty of backup plan options. We decide that system B confirms every received invoice to system A which marks them.
This way, we have spared a good deal of work and brought some comfort to the invoice processing. But there is still some room for improvement. With our solution, it still has to be manually controlled if some invoices remain untransferred. This means someone still needs to keep this in mind. What we created is only a semi-automatization. How can we improve the situation?
Definitely with a notification when any invoices have not been delivered successfully. In such a case, we will want to inform someone. It does not matter which communication channel we eventually choose. However, we surely want to send a message.
Now, when we are not successful in the delivery of an invoice to system B, we send a notification about the occurred event. But if we don't get any message, what does it mean? That everything is ok? Or that the whole integration solution doesn't work and therefore doesn't even send messages? To be sure enough, we will take one more precaution. At the moment, when we are processing all invoices, we call system A again and ask for the untransferred invoices. We report the result. We run the process once a day, and we must get the report every time the process completes. If the report isn't delivered, we know that we have to check the condition of the integration.
This is an overview of integrations in the real world. In a simple example, we presented that the true purpose of integrations is not only the transfer of data. But it is most importantly a solution for sparing useless work. And that's why a real picture of integrations is usually a controlled process with several actions that follow each other and with its own logic, not just a connection of two points.
Of course, we can object that the accountant can control the transferred invoices manually and that we don't need the complicated process. Sure even the simple variant brings added value in some cases, and it's always important to begin somewhere. But we should bear in mind the future and at least not close the door on our chosen solution to further development. Once we finish the first phase, other requests will definitely show up.