SageLink
SageLink représente une étape significative dans mon parcours professionnel, témoignant de ma capacité à comprendre les besoins spécifiques des entreprises et à développer des solutions logicielles innovantes pour les résoudre. Ce projet fait suite à Simplink, une application PHP conçue pour regrouper les commandes des différents sites e-commerce de l’entreprise Les Chamans. Avec SageLink, j’ai franchi une nouvelle étape en développant une API utilisant la librairie d’objets métiers de Sage 100c, permettant ainsi de mettre à jour directement les commandes sur la base Sage de l’entreprise. Cette évolution illustre mon engagement à améliorer continuellement les processus opérationnels des entreprises grâce à des solutions logicielles efficaces et personnalisées.
Contexte
SageLink émerge dans le cadre d’une démarche professionnelle axée sur l’optimisation des processus opérationnels des entreprises. Initié après le développement réussi de Simplink, une application PHP centralisant les commandes des sites e-commerce de l’entreprise Les Chamans, SageLink représente une évolution stratégique vers une solution plus intégrée et efficace. L’objectif principal de SageLink est de simplifier la gestion des commandes en permettant la connexion directe à la base de données Sage 100c, éliminant ainsi les tâches manuelles et les risques d’erreurs associés. Ce projet s’inscrit dans une perspective d’innovation technologique, tout en mettant en avant ma capacité à comprendre et à utiliser des outils spécifiques tels que la librairie d’objets métiers de Sage 100c. En tant que première expérience dans le développement d’une API .NET, SageLink représente un défi enrichissant, combinant autonomie dans le développement et collaboration avec mon tuteur d’alternance pour assurer sa réussite.
Etapes
Le développement de SageLink a suivi un processus méthodique, débutant par la mise en place d’une infrastructure de test et se terminant par le déploiement sur le serveur final.
Création de la base de test
La première étape consistait à établir une base de test pour reproduire l’environnement Sage 100c et permettre le développement sécurisé sans altérer les données réelles. La première action entreprise a été de créer une copie de la base de données Sage de production. Cette copie a été réalisée en dupliquant la base existante et en lui attribuant un nom et un emplacement différents, conformément aux conventions de nommage établies pour les bases de données de test. De manière similaire, une copie de la base de données SQL Server a été effectuée pour correspondre à la copie de la base de production. Cela a permis de disposer d’une base de données réaliste pour les tests, évitant ainsi les divergences entre les données de test et les données réelles. Cette approche de création d’une base de test réaliste a permis de garantir que le développement se déroule dans un environnement sécurisé et fidèle à l’environnement de production, minimisant ainsi les risques et les surprises liés aux données lors des tests et du déploiement.
Modélisation des données
Pour cette étape, la modélisation des données a été entreprise en se basant sur la documentation de la librairie Sage 100c objets métiers. La première étape a consisté à étudier attentivement la documentation de la librairie Sage 100c objets métiers. Cela a permis de comprendre la structure des données et les entités disponibles dans l’écosystème Sage. En se basant sur les informations extraites de la documentation, des modèles de données ont été conçus pour représenter les entités pertinentes pour SageLink. Ces modèles ont été implémentés en utilisant des objets C#, en prenant soin d’inclure uniquement les attributs pertinents et utiles pour les fonctionnalités de modification et de vérification nécessaires. Par exemple, pour les documents de vente, seuls les attributs essentiels tels que le code Sage, le prix et le statut ont été inclus dans le modèle d’objet C#. Cette approche a permis de créer des modèles de données précis et efficaces, adaptés aux besoins spécifiques de SageLink tout en minimisant les informations superflues. Cela a également facilité le développement ultérieur en fournissant une base solide pour la manipulation des données dans l’application SageLink.
Mise en place de la connexion
Une fois les modèles de données établis, la mise en place de la connexion à la base de test a été une étape cruciale pour le développement de SageLink. En premier lieu, j’ai consulté la documentation des objets métiers de Sage 100c afin de comprendre les méthodes et les paramètres nécessaires pour établir une connexion à la base de données. Ensuite, j’ai ajouté les fonctions de connexion nécessaires dans le fichier program.cs de mon projet. Ces fonctions incluaient les informations d’authentification requises, telles que le nom d’utilisateur et le mot de passe, que j’ai pour l’instant codées en dur pour faciliter les tests initiaux. Une fois la connexion réussie, j’ai procédé à une restructuration du code pour améliorer sa lisibilité et sa maintenabilité. Par exemple, j’ai créé des fonctions génériques pour l’ouverture et la fermeture de la base de données, ce qui m’a permis d’éviter la répétition de code et de faciliter le rappel de ces fonctions dans d’autres parties du projet. De plus, j’ai implémenté des vérifications avant d’ouvrir ou de fermer la base de données afin d’éviter les redondances et d’optimiser les performances. Par exemple, j’ai ajouté des vérifications pour s’assurer qu’une base n’était pas déjà ouverte avant d’essayer de l’ouvrir à nouveau. Ces améliorations ont contribué à rendre le processus de connexion plus robuste et plus efficace, ce qui est essentiel pour assurer le bon fonctionnement de SageLink et garantir une expérience utilisateur fluide.
Récupération et modification des données
Les étapes de récupération et de modification des données dans SageLink ont été cruciales pour permettre la manipulation efficace des documents et des informations dans la base Sage. Voici les actions que j’ai entreprises pour implémenter ces fonctionnalités : Tout d’abord, j’ai travaillé sur la récupération d’un document de vente en utilisant son code Sage, en suivant les instructions fournies dans la documentation. Après avoir ouvert les bases de données en utilisant les méthodes de connexion que j’avais précédemment mises en place, j’ai réussi à lire un document de vente dans Sage. Ensuite, j’ai mis en place la création d’un objet basé sur mes modèles de données à partir du document récupéré dans Sage. Pour rendre cette fonctionnalité plus accessible et réutilisable, j’ai restructuré le code en créant un fichier de services où cette fonction serait hébergée. Cela faciliterait l’ajout ultérieur d’un contrôleur pour transformer cette fonction en une API. Après avoir validé la récupération des données avec mon maître d’alternance, qui m’a conseillé sur les données à récupérer, j’ai travaillé sur la modification des documents. Pour cela, j’ai consulté mes collègues qui effectuent habituellement ces modifications manuellement, afin de comprendre leur processus. Une fois ce processus compris, j’ai pu le traduire en code, en modifiant directement le statut d’un document récupéré avant d’utiliser les fonctions fournies par les objets métiers pour effectuer la transformation, par exemple d’un document de vente en facture. Enfin, mon maître d’alternance m’a demandé de pouvoir récupérer le nouveau numéro ou code Sage d’un document après sa transformation. Après des recherches approfondies et des tests en C#, j’ai conclu que les objets métiers ne permettraient pas cette opération. J’ai donc créé une fonction pour récupérer directement cette donnée en SQL. Cela a nécessité l’ajout d’un système de connexion directe à la base de données, mais cela a résolu le dernier problème à cette étape du projet, et mon maître d’alternance en a été satisfait.
Configuration du serveur IIS
La configuration du serveur IIS pour rendre la base de test accessible pour des requêtes externes a représenté un défi significatif, étant donné que je n’avais jamais déployé d’API ni manipulé de serveur IIS auparavant. Voici les étapes que j’ai suivies pour réussir cette configuration : Tout d’abord, j’ai dû effectuer de nombreuses recherches pour comprendre comment déployer mon application sur le serveur IIS. J’ai créé un contrôleur API de test, qui n’était pas connecté à mes services précédents, simplement pour tester le déploiement de base. Une fois que j’ai confirmé que le déploiement de l’application de test fonctionnait, j’ai testé une requête utilisant mes services réels, qui impliquait l’utilisation de la bibliothèque d’objets métiers Sage 100c. Cependant, j’ai rencontré des erreurs de versioning, ce qui m’a appris que je devais installer .NET 7 ainsi que la bibliothèque d’objets métiers sur le serveur. Une fois ces installations effectuées, mes tests ont enfin fonctionné et j’ai pu passer à la création de tous les contrôleurs nécessaires pour l’API. Cette étape m’a permis de rendre la base de test accessible via des API, ouvrant ainsi la voie à l’utilisation de SageLink dans des applications externes.
Implémentation des contrôleurs API
L’implémentation des contrôleurs API a été une étape cruciale pour permettre l’accès à la base de données Sage depuis l’extérieur et tester ces requêtes à l’aide d’outils comme Postman. Voici comment j’ai procédé pour réaliser cette étape : Tout d’abord, j’ai créé un contrôleur pour chaque service que j’avais précédemment mis en place. Ces contrôleurs servent d’endpoint, récupérant les paramètres de la requête et les transmettant aux services correspondants pour récupérer ou transformer des documents dans la base de données Sage. Pendant la mise en place de ces contrôleurs, j’ai également créé un objet “Résultat” standard qui contient le document récupéré ou transformé, le code de la requête et un message personnalisé pour chaque résultat possible (par exemple, 404 pour document non trouvé, 500 pour erreur serveur, 200 pour succès, etc.). Une fois que les routes des contrôleurs ont été mises en place et testées, j’ai pu passer à l’étape de sécurisation de ces contrôleurs pour assurer la protection des données et éviter les accès non autorisés.
Sécurisation de l’accès
Pour sécuriser l’accès à l’API et prévenir les accès non autorisés, j’ai mis en place un système d’authentification basé sur une clé API et des identifiants de connexion. Voici les ajustements que j’ai apportés pour cette étape : Pour simplifier le déploiement, les mises à jour et renforcer la sécurité, j’ai créé un fichier JSON d’authentification contenant la clé d’API ainsi que les éléments de connexion Sage et SQL. Ce fichier est lu au lancement de l’API et utilisé par tous les services et routes pour authentifier les requêtes. Cela garantit que seules les requêtes autorisées avec la clé API et les identifiants de connexion valides peuvent accéder à l’API, renforçant ainsi la sécurité de l’ensemble du système.
Déploiement sur le serveur final
Une fois toutes les étapes précédentes terminées avec succès, le déploiement sur le serveur final s’est déroulé de manière fluide. En collaboration avec mon maître d’alternance, nous avons créé un nouveau serveur IIS avec une adresse propre. Grâce à mon expérience acquise lors de la création du serveur de test, ce processus a été simplifié. Ensuite, une fois le programme déployé et lancé sur le serveur final, nous avons mis à jour le fichier d’authentification pour contenir les valeurs des vraies bases de données. Ainsi, le projet SageLink était désormais en production, prêt à être utilisé par l’entreprise pour faciliter la gestion des commandes et assurer la sécurité des accès à l’API.
Acteurs
Dans le cadre du projet SageLink, les acteurs impliqués étaient les suivants : Moi-même, en tant que seul développeur, j’ai assumé le rôle de concepteur, développeur et responsable de la mise en œuvre de SageLink. J’ai également pris en charge la documentation du projet et sa publication sur le GitLab de l’entreprise pour faciliter son suivi et sa maintenance ultérieure.
Mon maître d’alternance a agi en tant que commanditaire et propriétaire du produit, fournissant des directives, des spécifications et des retours tout au long du processus de développement. - Notre comptable a joué un rôle de consultant, offrant des informations précieuses sur les processus métier et les besoins spécifiques de l’entreprise en matière de gestion des commandes.
L’équipe de préparation des commandes a été impliquée pour la validation des fonctionnalités et des processus, assurant que SageLink répondait aux besoins opérationnels de l’entreprise. Cette collaboration étroite entre ces acteurs, combinée à mon implication dans la documentation et la gestion du projet sur le GitLab de l’entreprise, a permis de créer un produit final satisfaisant qui répondait aux besoins et aux attentes de l’entreprise en matière de gestion des commandes et de sécurisation de l’accès aux données.
Résultats
SageLink a permis de faciliter le suivi et la maintenance des commandes pour l’entreprise. En effet, les attentes ont été remplies aussi bien pour moi que pour l’entreprise. J’ai eu à mener un projet ambitieux, plein d’apprentissages aussi bien techniques (API .NET, serveurs IIS, Sage) que transverses (communication avec les parties prenantes, gestion de projet, autonomie). Quant à mon maître d’alternance, il fut satisfait que toutes les attentes soient remplies (récupération, transformation et vérification de documents Sage via une API interne). Ce projet est ainsi une réussite très importante pour tous ses acteurs.
Lendemains
Après le déploiement de SageLink, j’ai mis à jour Simplink pour l’utiliser. L’équipe de préparation peut ainsi maintenant directement voir sur l’interface Simplink si une commande a des données différentes de celles sur Sage via une UI affichant ces erreurs en utilisant SageLink. Aussi, lorsqu’une commande est marquée comme préparée sur Simplink, elle est désormais automatiquement facturée sur Sage également, afin d’enlever ce travail autrement manuel. Ceci est un gain de temps non-négligeable dans le processus de l’entreprise et de l’équipe de préparation, très satisfaite de ces résultats et du gain d’efficacité procuré. Leurs retours m’ont également permis de clarifier certains messages affichés mais potentiellement ambigus. Par exemple, “prix incorrect” devient “prix sur Simplink différent de celui sur Sage: X sur Simplink, Y sur SageLink”. Plus tard, il m’a également été confié comme tâche d’ajouter encore plus de fonctionnalités à SageLink visant à être utilisé pour la préparation de documents de livraison. Cela incluait l’ajout, la suppression d’articles, la mise à jour des quantités, le transfert de dépôts à dépôts et la mise à jour des descriptions. Ceci fut relativement simple grâce à la base déjà en place et ma compréhension des technologies en jeu. SageLink est ainsi un point incontournable de ma carrière mais aussi du flux de préparation de commandes de l’entreprise.
Synthèse
Dans le cadre de SageLink, j’ai pu mettre en pratique mes compétences en C# tout en travaillant de manière autonome. Cette expérience a été l’occasion de démontrer ma polyvalence et ma capacité à assimiler rapidement de nouvelles technologies, notamment les API .NET et les serveurs IIS. En parallèle du développement technique, j’ai également développé mes aptitudes en communication avec les parties prenantes et en gestion de projet. SageLink a été une pierre angulaire dans l’optimisation des processus de suivi et de maintenance des commandes au sein de l’entreprise. Bien que le nombre d’utilisateurs ait été limité, l’application a eu un impact significatif sur le flux de travail de l’équipe de préparation de commandes. En simplifiant les tâches de vérification et de transformation des documents Sage, elle a contribué à améliorer l’efficacité opérationnelle. Cette expérience m’a enrichi sur le plan technique, en approfondissant ma compréhension des API .NET, de la configuration des serveurs IIS et de l’intégration avec le système Sage. De plus, elle m’a permis de développer des compétences transverses telles que la communication interne et la gestion autonome de projet. Pour l’équipe de préparation de commandes et pour moi-même, SageLink représente une réussite majeure. Il a répondu aux attentes fixées et a considérablement amélioré l’efficacité opérationnelle de l’entreprise. Cette expérience servira de référence pour mes futurs projets et marque une étape essentielle dans mon développement professionnel.