Automatisation du reporting sur Sellsy

Sellsy est une solution SaaS française de gestion d’entreprise qui dispose de plusieurs modules : CRM, facturation, comptabilité. Sellsy est efficace, à bien des égards. Mon propos dans cet article n’est donc pas de remettre en question la pertinence de l’outil.

À titre professionnel, j’utilise d’ailleurs Sellsy depuis un peu plus de 10 ans. Le use case dont je suis le plus satisfait concerne la structuration des services financiers et production d’une agence internationale implantée dans 8 pays. Sellsy occupait alors une place prépondérante dans la SI globale car nous l’avions déployé sur l’ensemble des filiales.

Comme chacun peut voir, je dispose donc d’une solide connaissance de la plateforme :sunglasses:.

Dans le retour d’expérience qui suit, vous verrez cependant que je me suis pris les pieds dans le tapis. J’espère donc que cet article contribuera à vous épargner quelques retentissantes désillusions.

Précision : pardon par avance, mais le sujet est un peu geek. D’ailleurs, mettons tout de suite les deux pieds dans le plat de la geekerie avec ce meme qui résume assez bien le propos :

Contexte de la mission

Je suis DAF TP. Mes clients sont principalement des agences de communication et de growth marketing. Une agence me contacte pour l’accompagner dans la mise en place d’une solution de reporting.

Elle souffre en effet de certaines zones d’ombre sur le pilotage de ses activités, notamment quant à l’analyse de ses marges. L’idéal pour elle serait de connaître ses résultats par pôles d’activité, par secteur d’activité de ses clients, par verticales adressées et par projets.

En faisant le tour du propriétaire, j’apprends que les équipes utilisent Sellsy. Or, j’encourage toujours mes clients à continuer d’utiliser ce qui existe et qui fonctionne. Nous décidons donc de rester sur Sellsy pour ne pas bousculer les habitudes.

En creusant un peu sur l’utilisation qui est faite de la solution, je remarque que les fonctionnalités qui permettent l’analyse des marges ne sont pas exploitées. Par exemple :

  • les Custom Fields, qui permettent de qualifier et de segmenter les documents d’achats et ventes pour apporter différentes couches de lecture et de niveaux de granularité dans l’analyse
  • les Smart-Tags, qui ont sensiblement la même fonction

La première partie de la mission consistait donc à établir la grille d’analyse qui serait la plus pertinente pour l’agence. À partir de là, il ne nous restait plus qu’à créer Custom Fields et Smart-Tags correspondant, et à qualifier l’ensemble des documents d’achats et ventes.

Travail de fourmis, très chronophage, mais nécessaire pour la suite.

Reporting et datavisualisation dans Sellsy

Une fois les documents d’achats et de vente qualifiés, nous avons été confrontés à une limite de la plateforme. En effet, à l’heure actuelle, l’un des problèmes majeurs que rencontrent mes clients qui utilisent Sellsy est l’absence de datavisualisation.

Côté Sellsy, je crois comprendre que le sujet est pris au sérieux. D’ailleurs, une mise à jour réalisée en 2022 met à disposition des utilisateurs un certain nombre de rapport prédéfinis. Ces rapports donnent quelques indications sur la marche des affaires, mais restent hélas très insuffisants dans le cadre d’un contrôle de gestion un peu plus poussé.

À ce sujet, si quelqu’un de chez Sellsy me lit, ce serait sympa de préciser la roadmap sur ces aspects en commentaire :slight_smile:

Déploiement de Google Looker Studio

On ne peut donc pas faire de rapport personnalisés dans Sellsy. Qu’à cela ne tienne ! Je l’ai fait dans Google Looker, la solution de datavisualisation inclue avec le package Google Workspace dont dispose mon client.

En règle générale, quand je me lance dans une mission de reporting, je préfère partir des exports qui sont disponibles depuis les différentes solutions utilisées par mes clients. Cette étape me permet de savoir quelles sont les données disponibles, comment elles sont structurées, et surtout comment elles s’articulent entre elles. Naturellement, je démarre les travaux sur la base des exports CSV proposés par Sellsy.

Jusqu’ici, tout va bien. Mon client est satisfait du résultat car nous disposons de différents niveaux de granularité pour analyser l’activité. Il est par exemple possible de filtrer les données, de les segmenter en un clic car les graphiques sont interconnectés les uns avec les autres.

Bref, ça fonctionne.

Le seul bémol, c’est que pour rafraîchir les données, il est nécessaire de

  1. Faire les exports des factures de vente et d’achat depuis Sellsy, manuellement
  2. Importer les données dans Google Sheet, à la main

Deux petites étapes de rien du tout mais qui sont souvent source d’erreurs. Et puis… à l’ère de la digitalisation, de l’émergence des API et de l’automatisation des tâches, pourquoi continuer à faire les choses à la main ?

Automatisation de la mise à jour du reporting via l’utilisation des API de Sellsy

Pour gagner du temps, éviter les erreurs et, surtout, disposer d’un reporting actualisé en temps réel, nous passons à la deuxième étape de la mission : automatiser le processus.

Dans mon esprit, les choses étaient censées être assez simples. Le fichier Google Sheet étant déjà créé et connecté à Looker Studio, il suffisait d’ajouter 2 étapes préliminaires :

  1. Extraire les données de Sellsy en utilisant l’API
  2. Automatiser l’import des données dans Google Sheet

Simple. Basic. Orelsanien.

Étape 1 : Extraire les données de Sellsy en utilisant l’API

Première déconvenue. En me documentant sur l’API de Sellsy, j’apprends que 2 versions de l’API existent et fonctionnent en parallèle. En fonction des données que vous voulez récupérer, il vous faudra utiliser l’une ou l’autre version :grimacing:.

Pour simplifier, disons que la V1 permet de récupérer les factures fournisseurs et que la V2 permet de récupérer les devis et factures clients.

Liens vers la doc :

Il faudra donc s’appuyer sur deux API, qui ne renvoient pas les données de la même manière, pour faire le job. Sans compter que l’arrêt de la V1 est susceptible d’arriver n’importe quand et qu’il faudra réajuster les scripts en conséquence.

Bon… ça rajoute du boulot, mais rien d’insurmontable.

Étape 2 : Automatiser l’import des données dans Google Sheet

N8N est un outil qui permet l’automatisation des tâches. J’apprécie particulièrement cet outil parce qu’il est open source : c’est-à -dire qu’il est développé et maintenu par une communauté de passionnés, puis mis à disposition gratuitement.

#OpenSourceLover

Cet outil fonctionne sous forme de nœuds. C’est-à -dire que les actions s’exécutent les unes après les autres, dans l’ordre logique que vous aurez défini.

Voici à quoi ressemble la récupération automatisée des données de Sellsy :

Explications :

  1. Webhook : quand une action est réalisée sur Sellsy (création, modification ou suppression d’un document de vente ou d’achat), l’automatisation est lancée. C’est le trigger.
  2. À cette étape, je récupère une seule information : de quel type de document s’agit-il ? Devis de vente ? Facture de vente ? Facture d’achat ?
  3. En fonction de type de document, j’oriente la suite de l’exécution vers l’API correspondante
  4. Ici, je récupère les informations dont j’ai besoin : n° de document, montant HT, montant TTC, client concerné, Custom Fields correspondants, etc.
  5. À ce niveau, les données sont structurées et mises en forme pour être…
  6. … injectée dans le fichier Google SpreadSheet

Résultat ?

Ça fonctionne ! :fire:

Mais… attention au retour de flamme

L’automatisation fonctionne à merveille lorsqu’un nouveau document est créé. En revanche, quand les Custom Field ou les Smart-Tags d’un document sont ajoutés, modifiés ou supprimés… rien ne se passe.

Le webhook ne détecte pas le changement = l’automatisation ne se lance pas = les données ne sont pas mises à jour dans le fichier Google Sheet = le reporting est faux.

:sob:ARF !

D’abord j’ai pensé que c’est moi qui m’y prenait mal, qui avait mal configuré n8n ou mes appels à l’API. Mais le support de Sellsy m’a confirmé l’existence de ces limitations. (D’ailleurs, je fais une petite parenthèse : l’équipe support de Sellsy est remarquable. Il y a toujours quelqu’un pour répondre de manière rapide, exhaustive et juste.)

Tout ça pour ça ?

Oui. Je suis retourné à mes exports/imports de CSV.

Alternatives envisagées

Hasard de la vie, au moment où je constatais l’échec des efforts déployés, @ThomasClaassen, fondateur de Mithril, publiais un post sur Linkedin sur le sujet. La solution SaaS qu’ils proposent permet de connecter Sellsy à Google SpreadSheet ! Forcément curieux, je fonce sur leur site pour en savoir plus. Il me semble néanmoins qu’ils sont confrontés aux mêmes limites que moi. Nous en avons parlé brièvement en messagerie mais n’avons pas eu l’occasion de creuser. (Curieux d’avoir votre avis sur la question @ThomasClaassen !).

Résumé de mon expérience

Sellsy est donc une solution très robuste pour gérer son entreprise. Au-delà du fait qu’il couvre plusieurs aspects de la gestion d’entreprise, la force de l’outil que propose Sellsy réside dans les possibilités de structurations et d’exploitation des données sur l’activité.

Au niveau du reporting financiers, 3 options s’offrent à vous :

  1. Niveau 1 : Utiliser les rapports prédéfinis proposés par Sellsy
  2. Niveau 2 : Souscrire à une solution comme Mithril pour exploiter les données dans Google Spreadsheet, et creuser un peu
  3. Niveau 3 : Extraire les données manuellement et disposer d’un niveau de granularité de l’analyse quasiment illimité

Si quelqu’un à trouvé un meilleur moyen de faire du reporting / contrôle de gestion plus abouti à partir de Sellsy, je suis preneur de vos éclairages !

Si vous avez des questions, n’hésitez pas à me contacter :slightly_smiling_face:

2 « J'aime »