So far I have only looked at one-directional export-import, i.e. take products from one system and import them on the other end.
Now I have the following challenge: UPDATE products in shop (shopware) with data from Akeneo, but only for those products that are in the shop (in Akeneo there are many more products than what is and should be in the shop).
So it would mean I have to:
- first retrieve a list of the products in the shop and
- get [only] those products from Akeneo and
- finally update these products on the shop.
Can this be done in Alumio, and how? Grateful for any advice.
Maybe the easiest way would be just to make an incoming from shop (export the list of products needed) and outgoing to the same shop (import) of the same products, but enriched by a lookup on Akeneo.
- Incoming: get products from A
- Entity transformer with lookup on B (merge + http transformers)
- Outgoing: update products on A
Although I we need to find out how we can
filter on previous somewhere inside there so we don’t just update everything every time.
You are correct about doing the lookups on B using HTTP transformers. However, it also depends on the requirement of the integration. It also depends on what kind of entity data you want to be visible in each task.
If we need to have the enrichment data from B in the entity data of each task, we need to put the HTTP transformer inside the incoming configuration or route. If you don’t need to see the enrichment data from B in the entity data, you can put the HTTP transformers in the outgoing configuration. Then let the publisher (in outgoing configuration) call endpoint(s) on A again.
You can also do more than one call on A if needed after enriching the data from B by sending the requests using HTTP transformers in the outgoing configuration.
Alumio is very strong on this point where you are free to choose what a route does and how complex it should work. We don’t restrict users to having only one-directional export-import integrations.
As for the entity transformer Filter previously stored entities, you can put it in the incoming configuration or route. It can filter out the entities that were previously processed by comparing them with the processed entities in the pointed storage.