Étude de cas - Remplacer une équipe de 8 consultants avec 2 développeurs
Étant un leader en logistique au Canada et en pleine expansion en Amérique du Nord. Le client avait besoin d'un ERP sur mesure qui lui permettrait de gérer ses opérations de bout en bout, systématiser ses meilleures pratiques et intégrer des solutions AI afin d'optimiser ses opérations.
- Client
- Ray-Mont Logistics
- Year
- Service
- ERP sur mesure, Développement Web, Recherche Opérationelle
- nouveaux terminaux lancés utilisant le nouveau ERP
- 2
- nouveau service offert créant une nouvelle source de revenu pour la compagnie
- 1
- modules d'opération existant optimisés
- 5
Faciliter une croissance rapide
Le client utilisait un ERP conçu à l'interne au début des années 2000, le système fonctionnait toujours mais ne permettait pas de répondre aux nouveaux besoins de la compagnie.
La direction a fait la décision d'investir dans l'innovation afin de moderniser la compagnie et de se préparer pour la croissance future.
Ils ont pris la décision de mettre en place un nouveau ERP sur mesure qui permettrait de gérer les opérations de bout en bout, systématiser les meilleures pratiques et intégrer des solutions AI afin d'optimiser les opérations.
Premier Essai
Avant notre arrivé sur le projet, le client avait tenté de remplacer une petite partie de son ERP avec un système de gestion de terminal sur mesure qui intégrait du AI.
Le client avait fait appel à une équipe de développement externe de 8 consultants pour réaliser le projet.
Erreurs multiples
Plusieurs facteurs ont contribué à l'échec du projet.
Remplacer une partie du ERP nécessitait l'intégration avec l'ancienne plateforme ce qui nécessitait beaucoup de temps et d'effort d'intégration.
Le choix technologique pour le nouveau système était aussi un problème. L'architecte logiciel en charge du projet avait mis en place une solution beaucoup trop complexe pour les besoins du clients. Sa solution aurait été parfaite pour une compagnie avec des centaines de milliers d'employés, mais pour notre client, la complexité du projet ralentissait le temps de développement et augmentait le risque de l'échec.
Les pratiques du fournisseur étaient aussi un problème. On perdait beaucoup de temps dans la gestion du projet et dans la communication avec le fournisseur. Les développeurs n'avaient pas une maitrîse suffisante du domaine d'affaire pour voir au delà des spécifications et proposer des solutions qui auraient pu améliorer le projet.
Une nouvelle base
Après 2 ans de développement et quelques millions de dollars, il était clair que le projet n'allait pas être un succès et a donc été abandonné.
Un plan pour un nouveau projet a été mis en place.
On créerait un nouveau ERP sur mesure qui remplacerait complètement l'ancien ERP pour éviter de perdre du temps à s'intégrer avec l'ancien système.
Le nouveau projet utiliserait Elixir et Phoenix pour accélérer le temps de développement. Étant une plateforme relativement nouvelle, c'était un risque en soit de choisir cette plateforme, mais si on réussissait à bien l'utiliser, on pourrait réaliser ce projet en beaucoup moins de temps.
Un choix stratégique a aussi été fait de créer une application monolithique ignorant la tendance des microservices qui n'ont pas d'utilité pour ce client et qui sont de moins en moins populaire.
Notre équipe de développeurs comprennent le domaine d'affaires du client et sont en mesure de proposer des solutions qui vont au delà des spécifications. Ceci permet de réduire les risques et de créer un système qui répond mieux aux besoins du client tout en réduisant le temps passé à communiquer avec le client.
Modules
Différentes modules ont été construits afin de remplacer l'ancien ERP.
Directory
Un premier module permettant de garder des informations sur les clients, les fournisseurs, les employés ainsi que les locations importantes a été construit.
Comme le client a plus d'une location il était important de contextualisé l'information selon la location qui opère l'ERP.
Configuration
Un module de configuration a été construit afin de permettre au client de configurer les différents produits et packaging que la compagnie traite.
Order
Un module de gestion des commandes a été construit afin de permettre au client de gérer les commandes de ses clients.
Les commandes du client peuvent être très complexes et peuvent contenir plusieurs produits, plusieurs services et plusieurs destinations.
Une section Provisioning permet de gérer l'allocation des cargos et des conteneurs pour les commandes pour s'assurer que les commandes vont être en mesure d'être complétées.
Capacity
Un module qui permet d'estimer et de gérer la capacité des ressources de la compagnie.
Les différentes ressources prises en compte sont les employés, les conteneurs, les cargos, les camions, l'espace sur les track de chemin de fer, les facilités et les équipéments dans les terminaux logistiques.
Work Order
Un module qui permet de gérer comment les commandes vont être exécutées dans les terminaux logistiques.
Permet notamment d'assigner des employés à des tâches, de gérer les équipements utilisés et de gérer les étapes de la commande.
Terminal Operation
Un module qui permet de gérer les opérations dans les terminaux logistiques.
Contient une page dédiée aux cranes qui sont les est véhicules qui déplacent les conteneurs dans les terminaux. L'opérateur peut voir le prochain moves qu'il doit effectuer, les moves futurs et peut décider de les réordonner pour optimiser ses opérations.
Transportation
Un module permettant de gérer les opérations de tranports par truck des containeurs.
On peut notamment organiser le transports des containers entre les terminaux logistiques, les clients et les ports.
Ocean Transportation
Un module permettant de gérer les différents voyages des bateaux et l'espace qui nous est disponible sur les bateaux.
Yard Configuration
Un module permettant de gérer comment les containeurs vont être rangés dans un terminal.
On peut organiser les stacks de containeurs dans les terminaux et gérer les règles de rangement des containeurs. On peut aussi créer des zones dans les configurations du Yard dédiées à des clients spécifiques et à des types d'opérations spécifiques.
Gestion de container dans les terminaux
Un module permettant de gérer comment on déplace les containeurs dans les terminaux.
Permet de rentrer dans le système l'arrivée d'un container au terminal, de déplacer un container dans le terminal et de sortir un container du terminal. S'occupe aussi de générer les documents nécessaires pour le transfert de container entre les différents parties impliqués.
Transloading de paper rolls
Un module programmer très rapidement afin de venir en aide à un terminal qui traite beaucoup de paper rolls.
Il était difficile pour les opérateurs de terminaux de garder une trace de tous les paper rolls tranloadés dans un container qui peut en contenir jusqu'à 90.
Un système a été mis en place afin de permettre aux opérateurs de scanner les paper rolls et de les assigner à un container. Ceci a permis de diminuer le nombre d'erreurs et d'augmenter la productivité des opérateurs.
Intégration avec le fournisseur AI
En plus du travail de développement, notre équipe a aussi été en charge de l'intégration avec le fournisseur AI.
Le fournisseur AI s'occupe de la planification des opérations dans les terminaux logistiques. On doit donc lui fournir de l'information sur nos opérations afin qu'ils puissent faire des calculs d'optimisation pour nous retourner la suite d'action la plus optimale.
L'équipe s'est donc chargé de créer une API qui permet de communiquer avec le fournisseur AI.
Lancement de Storage
Vu les circonstances de la pandémie, la compagnie avait besoin de lancer une nouvelle offre de service offrant le stockage de containeurs d'importation pour une durée indeterminiée.
Les containeurs devaient être stockées par compagnie et non pêle-mêle. Ainsi, il fallait être en mesure de garder la position de tous les containeurs de nos clients dans les terminaux.
De plus, il fallait pouvoir facturer les clients pour le temps que leurs containeurs passent dans les terminaux et du nombre de move nécessaire pour leur sortir un containeur.
Le lancement du module storage en Janvier 2023 a permis à la compagnie de lancer son nouveau service de stockage et de générer des nouveaux revenus dans une période difficile pour les compagnies qui faisaient principalement de l'export.
La différence Outer
Outer a remplacé 8 consultants avec une équipe de développeurs qui connaissent le domaine d'affaires et qui sont en mesure de créer une solution qui répond aux besoins du client rapidement.
Comparitivement à l'ancienne équipe, Outer a été en mesure de livrer un système beaucoup plus gros, qui gère beaucoup plus de complexité en moins de temps et au quart du coût.
- ERP sur mesure
- Développement Web
- Elixir
- Phoenix
- Phoenix LiveView
- PostgreSQL