Dear Alumio team,
In the past few integrations, we hardly used the routing/incoming→outgoing path system in Alumio. It is purely due to the fact, that in almost all cases, we had to perform actions based on the response of the outgoing entity’s publisher - thus we could only use incoming configurations with merger&http transformers for these occasions (which somewhat defeats the purpose of the outgoing configurations, since we use incoming for that as well).
It would be nice to have the option to run entity transformers AFTER the publisher of an outgoing configuration too - not only before.
An example:
Lets say, that I have products coming in from System A. I’m getting them using an incoming config (subscriber is irrelevant), save then to a storage for later use, and I also want them to integrate into System B. Based on whether this product exists in System B or not, I would send different HTTP requests (lets say POST vs PATCH, url would change too).
The goal, is to somehow retrieve whether the product exists in System B or not WITHOUT causing unnecessary requests to System B.
By using outgoing configs and routes, we have the following possibilities:
The best approach would be to use the product storage, in which a product has either a saved ID from System B, or not. If it does, then we only PATCH, if it doesn’t, we POST. For this approach, we need to save the ID contained by the response of the outgoing publisher into the product storage - Which we cannot do now as far is I know
The above method would be convinient.
The worse approach is to query down the product from System B with entity transformers between incoming and outgoing config of the route - and decide what to do based on the response. This method - while working flawlessly - creates an unnecessary overhead to System B, thus making the sync less efficient (especially when we are talking about systems with 100k+ entities)
Since the first approach is not feasible, and the second creates unnecessary requests, we have to default back to using an incoming config for this job as well - thus getting stripped from features like tasks, easier parallel processing using routes etc.
I hope my request is clear, in case of any questions, feel free to comment!
Best Regards,
Gergő Borsodi - Backend Developer
7digits
