Dynamics 365 Business Central et la génération de données par l’IA avec shellbots
Version 2025.03.08.1, Auteur : Dominique Delaire
exemple dans l’environnement Shellbots
Introduction
Nous avons créé un service d’IA permettant de générer des jeux de tests ou des données pour vos différents logiciels. Cela peut s’avérer particulièrement utile pour les environnements de test de nos clients.
L’un de nos clients, utilisant Dynamics 365 Business Central (un ERP Microsoft) et 365 Sales (un CRM Microsoft), souhaitait pouvoir générer facilement des données pour ses environnements. Ces données, de non production, destinées à des environnements de tests, devaient refléter la réalité de son domaine.
À partir de shellbots, nous avons combiné la création d’un service d’IA pour générer les données avec une configuration à la demande permettant de générer tout type de données, y compris des images, etc.
Le client souhaitait également pouvoir visualiser la structure de ces données directement dans shellbots en tant que service en ligne, interroger ses données ERP et CRM et générer du code BC.
Nous avons donc créé des extensions pour Business Central dans l’environnement Shellbots.
Dans cet exemple, nous allons présenter quelques fonctions permettant d’interroger des objets et des champs de 365 Business Central directement dans le framework afin de générer des données factices pour l’ERP. Un autre tutoriel abordera la génération de code et l’interrogation de données via un LLM (Large Language Model).
Les spécifications et objectifs
- Pour notre environnement de test client Business Central, nous souhaitons disposer d’une cinquantaine d’enregistrements de nouveaux fournisseurs.
- Notamment, les noms d’entreprises, adresses, e-mails, numéros de téléphone, etc.
- Cela nous permettra de réaliser des tests sur des données fictives, mais aussi de tester de nouvelles fonctionnalités en centrant nos données sur la réalité.
Exemple d’un enregistrement fournisseur existant dans BC
- Les champs en jaune correspondent à ceux à partir desquels nous souhaitons générer des données pour obtenir un ensemble d’environ 50 nouveaux fournisseurs.
- Il existe également des valeurs que nous souhaitons définir par défaut et qui sont obligatoires. Nous ne demanderons pas à l’IA de générer des valeurs, mais simplement d’en saisir une spécifique.
Création d’extensions pour Microsoft Dynamics 365 Business Central dans shellbots
- Pour les besoins du client, nous avons créé plusieurs fonctions pour interroger facilement les objets ERP et les structures de tables en dehors de Business Central.
- bc_addinstance
- bc_getinstance
- bc_removeinstance
- bc_getobjects
- bc_getfields
- bc_queryobjects
- bc_queryfields
bc_getobjects
- Cette fonction permet de synchroniser les objets modifiés, y compris les dernières extensions développées dans la base de données vectorielle du contexte shellbots actuel, depuis une instance Business Central sélectionnée.
- Cela permettra ensuite d’utiliser ces données sur les objets dans d’autres fonctions, dans un LLM, etc.
- Si un développeur ajoute de nouveaux champs ou objets via une extension, il suffit de réexécuter la commande (un peu comme un check-in sur GitHub) pour mettre à jour tous les objets de chacun des environnements.
bc_getfields
- Même principe que bc_getobjects mais cette fonction synchronise tous les champs de toutes les tables Business Central.
bc_queryobjects
- Cette fonction permet d’interroger n’importe quel objet, y compris les objets du système BC.
Par exemple, nous recherchons tous les objets portant le nom « Écriture comptable » pour identifier les objets liés aux écritures comptables.
Même chose ici mais pour les fournisseurs
Dans notre exemple, nous savons donc que la table des fournisseurs est la table 23.
Nous allons maintenant lister tous les champs de la table des fournisseurs 23 et utiliser la fonction bc_queryfields.
bc_queryfields
- En interrogeant les champs de cette table, nous pourrons identifier rapidement le nom des champs pour lesquels nous souhaitons générer des valeurs fictives.
- Il sait qu’il se trouve sur cette instance bc grâce à la fonction bc_useinstancebydefault qui permet de définir l’instance bc par défaut dans un contexte spécifique.
Creation d’un dataset dans Shellbots
- La création d’un jeu de données permet à une ou plusieurs tables de définir la valeur de chaque champ via une invite ou des directives spécifiques.
- Pour ce faire, nous exécutons la fonction dataset_create
Vous pouvez définir une invite ou ajouter des directives pour vos données. Par exemple, ici, une constante représentée par $$ signifie que la valeur après $$ doit être la valeur de ce champ.
Au lieu de définir « Domestic », vous pouvez définir Vendor_Posting_Group=$$DOMESTIC. Vous avez ainsi le choix entre plusieurs constantes pour la génération de vos données, et pas seulement des techniques d’invite.
Creation d’un modèle et exécution
Pour notre client, nous avons créé un modèle d’IA pour générer les données en fonction de notre architecture de jeux de données
- Le client peut créer un nombre illimité de jeux de données pour plusieurs logiciels (BC, Sales, 365 Finops, Netsuite, Salesforce, etc.) et utiliser plusieurs modèles.
- Pour tester le modèle, exécutez simplement la fonction ai_modelexec. Cela vous permet de tester le modèle et le résultat directement dans le système d’exploitation et le framework Shellbots avant de déployer le service, par exemple sur un cloud Amazon EC2, Azure, Google ou Docker.
Dans cet exemple, ce modèle permet de créer des fichiers CSV et Excel. Cependant, nous disposons d’autres modèles permettant de créer directement des données dans Business Central et Dataverse pour les applications CRM/PowerApps via des API.
Le système aussi pourrait générer des doublons, mais une option dans la création du dataset permet de générer des valeurs distinctes et unique
Ainsi, après avoir généré 50 fiches fournisseurs au format CSV, nous allons les intégrer à Business Central via un package de configuration.
Creation d’un package de configuration et import dans BC
Nous créons un nouveau package pour l’import des fournisseurs dans BC
Ensuite nous définissons les champs spécifiques à importer dans bc
Après nous exportons dans Excel pour obtenir un fichier modèle avec le mapping xml pour l’import
Nous ouvrons un fichier Excel, copions et collons nos données avec la même colonne sans clé (BC génère automatiquement le code fournisseur), enregistrons et importons.
Ensuite, nous avons appliqué le package et l’importation pour obtenir les nouveaux fournisseurs dans Business Central 🙂
Lorsque nous sélectionnons un fournisseur spécifique, nous obtenons les données qui ont été générées avec notre modèle de shellbots
Prochaine étape
L’étape suivante pour le client consiste à disposer d’un LLM et d’une bd vectorielle pour ses données, mais aussi à pouvoir interroger des champs et des objets en langage naturel et à donner des instructions pour créer automatiquement des ensembles de données. Nous verrons cela dans un prochain tutoriel.