Migrer du C/AL vers AL : ce que les outils Microsoft ne font pas pour vous

Le passage du C/AL à AL n'est pas qu'une conversion automatique. Voici les pièges concrets rencontrés sur des projets de migration NAV vers Business Central.

Microsoft fournit txt2al et le Code Conversion Tool pour transformer votre code C/AL en code AL. C’est utile, mais c’est seulement le point de départ. Voici ce qu’il reste à faire à la main, sur la base de plusieurs migrations NAV 2016/2018 vers Business Central.

1. Les modifications du standard ne passent pas

Tout MODIFY sur un objet standard est rejeté par AL. Il faut systématiquement :

  • soit basculer la logique dans un event subscriber,
  • soit recréer l’objet en table extension / page extension,
  • soit assumer qu’on rend la fonctionnalité au standard.

C’est l’occasion de faire le tri : combien de ces modifications étaient encore vraiment utilisées ?

2. Les rapports RDLC ont mal vieilli

Les layouts RDLC convertis automatiquement fonctionnent rarement du premier coup. Notre conseil : profitez-en pour basculer vers des layouts Word ou Excel quand le rapport s’y prête. Plus simple à maintenir par les utilisateurs métier.

3. La numérotation des objets

Les plages 50000-99999 (clients) et 50000-99999 (Microsoft partner) ont disparu en SaaS. Vous devez réserver une plage AppSource (à 5 chiffres, demandée à Microsoft) ou utiliser la plage 50000-99999 des per-tenant extensions (PTE).

À planifier avant d’écrire la première ligne.

4. Les temporary records utilisés comme buffers

Un pattern très courant en C/AL — passer une Record TEMP à une fonction — fonctionne toujours en AL, mais devient suspect : on préférera souvent un list ou un dictionary, plus performants et plus lisibles.

5. La gestion des erreurs

ERROR(...) sans contexte n’est plus tolérable. AL fournit le pattern ErrorInfo qui permet d’attacher des actions correctrices à l’erreur (par exemple : “Ouvrir la fiche client”, “Recalculer les stocks”). Vos utilisateurs vous remercieront.

6. Les tests automatisés

C’est probablement le plus gros saut culturel. AL apporte un vrai framework de tests ([Test], [HandlerFunctions], Library Codeunits). Profiter de la migration pour écrire les tests avant de refactorer un module est l’un des meilleurs investissements possibles.


En résumé

Une conversion C/AL → AL réussie demande, à la louche :

  • 30 % du temps pour la conversion automatique et les ajustements purement syntaxiques,
  • 40 % pour ré-architecturer ce qui ne passe pas (modifications standard, buffers, intégrations),
  • 30 % pour les tests, la documentation et la formation des équipes.

Si on vous vend un projet qui ne consacre que 10 % au dernier point, méfiez-vous.

Vous préparez une migration ? Nous proposons des audits de code C/AL en deux semaines, livrant un rapport détaillé et un budget de conversion. Contactez-nous.