Thread for Axelor. All we can do


I will share here some good stuff with my n8n apps connected to my differents Axelor instance (production, testing …)

But what are you talking about? is « The workflow automation platform that doesn’t box you in, that you never outgrow ».
I talked about API connection, the best way to take information, update data, …
If you now about Zapier, n8n is very similar.

But why are you telling us about this?
For me, it’s THE apps for connect everything. My way to send the order from Magento2, a solution for connect my Qonto bank, an automatic connection from Akeneo (Product information Management) and everything else to Axelor (or other apps).

ok but another apps…why?
Open-source is awesome, but we need to manage data between apps, and each application has its own way of using the data. API is the best way to communication between app. n8n can help you a lot.
We can write data to csv file and read it on a other workflow! you want it on a database like mysql ? No problem ! send data to hubspot, take data from MailChimp, Stripe, Paypal …

n8n and Axelor

This is a workflow with 4 node
The first one is a « Start » node simple. But you can take a « cron start » for starting this worklow every day at 4am.
The Second and the third node are a generic node « HTTP Request ». I use it here for make request to my dev instance Axelor. « Cookies » ask token to my axelor instance for the rest of the workflow. « Liste models » GET model of my axelor instance.
The fourth node split the data received. I export 575 domain models from my dev instance Axelor

You can build a lot of possibilities.

Workflow : Organization of Axelor

Between version, you have different structure of Axelor.
This workflow can give you all domain model and all column of each domain model in a folder on your computer (csv file)

Results :


How to do it ?

Install n8n by yourself, I can’t explain here how to do this part (n8n have this own forum for this).
I use docker.

How to connect to Axelor ?

You need a HTTP Request node just for cookie.
You have to specify « Full response » for having the token in the header.
Complete URL for my instance :
http ://IP/axelor-erp-v6.1.8/login.jsp
In body parameters :
{ « username »: « admin », « password »: « admin » }

The next node HTTP Requet

Here a simple GET resquest for ask domain model as you can find here the API doc
http ://IP/axelor-erp-v6.1.8/ws/meta/models
Headers :
{ « Content-Type »: « application/json », « Cookie »: "[{{$node["Cookies "].json[« headers »][« set-cookie »][2]}}; {{$node["Cookies « ].json[« headers »][« set-cookie »][0]}}] » }

Give us some workflow you did

I ask to Axelor all invoice per customer (list of 5 big customer) for the month past.
1 CSV file is create per customer - resume : date, order number, invoice number, total exclude tax, include tax.
1 folder ZIP with all invoice per customer.

This workflow below gives me the unpaid invoices to date, write them on a CSV file, and notify me on RocketChat

So much to do…

1 J'aime


J’écris en français pour celui là car c’est lié aux données de l’INSEE et aux SIRET/SIREN d’entreprises.

Que fait ce workflow ?

Mise à jour du nom de l’entreprise selon son numéro SIRET.

Node 1 : Start - démarrage du workflow
Node 2 : Set - définition de varaible d’environnement (URL d’axelor, domaine modele)
Node 3 : HTTP Request - récupération des cookies de connection de l’instance d’Axelor
Node 4 : HTTP Request - Récupération des tiers ayants des SIRET
Node 5 : items list - mise en liste de la réponse du node précédent
Node 6 : SplitInBatch - donner un a un la liste du node précédent
Node 7 : HTTP Request - demande du token à l’API de l’INSEE
Node 8 : HTTP Request - demande des rensignements à l’API de l’INSEE selon le numéro SIRET obtenue d’Axelor
Node 9 : HTTP Request - Mise à jour du tier selon les informations obtenue de l’INSEE
Node 10 : IF - Réaliser autant de fois que necessaire la boucle de mise à jour du tiers selon la liste obtenue précédement.
Node 11 : Rocketchat - envoyer une message listant toute les modifications réalisée.

Les possibilités de l’API SIRENE

Je n’ai fait que la mise à jour du nom du tiers, mais vous pouvez mettre à jour :

  • Les grands groupes est tous leurs établissements secondaires (SIREN vs SIRET)
  • Les adresses des différents établissements
  • Les code APE, type d’activités, date de créations, categorie d’entreprise …

Les possibilités sur le workflow

Vous pouvez en plus de ce que j’ai fait

  • Comparer les données avant de mettre à jour
  • Créer des tiers selon leur code APE (démarchage d’une cible business)

Parametre du workflow

Node 9 : HTTP Request - Mise à jour du tier selon les informations obtenues de l’INSEE

Method : POST
URL : (url + /ws/rest/ + domaine modèle + /:id ) obtenue grace aux précédents nodes

{{$node[« ENV »].json[« DEV »]}}/ws/rest/{{$node[« ENV »].json[« URL »]}}/{{$node[« SplitInBatches »].json[« data »][« id »]}}

Body Parameters :

« data »: {
« id »: {{$node[« SplitInBatches »].json[« data »][« id »]}},
« version »: {{$node[« SplitInBatches »].json[« data »][« version »]}},
« name »: « {{$json[« etablissements »][0][« uniteLegale »][« denominationUniteLegale »]}} »

Si vous avez des questions, n’hesitez pas.

1 J'aime

Thanks seems very good , you use it on then cloud or on a self-hosted ?

1 J'aime

n8n can be :

  • on cloud of n8n company (pay per used)
  • own cloud (docker, ubuntu, debian …)
  • on self-hosted (work on Windows, OSX, Linux)

I use it on self-hosted on docker
I will soonest use it on k8s for production, access to my bank with API (can’t use it with localhost), access to my gmail/google drive… (can’t use it with localhost), have this instance secure, redundancy and backup.

Some difficulties on self-hosted :

  • If your computer is shutdown, workflow can’t be started of course
  • if you need credential with « localhost » return, it will be not secure or inaccessible …

Good stuff on self-hosted :

  • simple docker-compose and the n8n start in 2 minutes
  • you can share a volume for exhanges files
  • communication with every other docker you want (nextcloud, rocketchat, SQL …) - like I do for making test.

Interesting and recent post on their forum about
Making n8n sustainable: paid advanced features

1 J'aime

Objectif : récupérer les pdf générés par Axelor (ERP), pour chaque facture, sur une période définie.

[1ère ligne]
Node Set « ENV » : inscription de la date de début, de fin, et le nom du dossier dans lequel seront les pdf.
Node Exceute command : je fais un commande mkdir pour créer un dossier en local, le nom du dossier est défini dans le node précédent.
Node HTTP « cookie » : récupération des cookies axelor pour les commandes HTTP suivantes
Node HTTP « invoiceSearch » : POST Body Parametres : champs + critères
Node Item Lists : les DATA reçues doivent être listé pour la suite

2 voies en même temps

  • Création du fichier récap
  • Boucle sur toutes les factures (et avoirs) pour récupérer le PDF

[2ème ligne - voie 1]
Node Set : je choisi les champs pour consituter le tableau récap. Date de la facture, numéru de facture, montant HT, TVA, TTC …
Node Spreadsheet File : consittution du tableau en .xlsx
Node Write Binary FIle : écriture en local de ce tableau excel

[3ème ligne - voie 2]
Node SplitInBatches1 : node de boucle pour passer sur toutes les factures 1 à 1
Node HTTP « invoiceID » : GET récupération de l’ID de la pièce jointe depuis l’ID de la facture
Node HTTP « attachment » : GET récupération de la pièce jointe
Node Write Binary File1 : écriture de la pièce jointe en local
Node If : boucler jusqu’à qu’il n’y ai plus rien à traiter.
Node Rocket Chat : me féliciter du success de ce magnifique Workflow sur mon mon RocketChat privé.