Sage X3 tourne le plus souvent sur SQL Server, parfois sur Oracle, avec une interface web servie par Syracuse. Le développeur passe d'un sujet à l'autre dans la même semaine : un champ à ajouter sur la fiche article, un contrôle avant validation d'une commande, un état Crystal Reports, un traitement de nuit trop lent, un web service pour une boutique en ligne. Une bonne partie des postes se fait en TMA, sur un existant écrit par d'autres.
Le marché est petit et les profils sont souvent passés par un intégrateur. Les CV mentionnent des versions qui vont de la V6 à la 2026 R1, sortie en 2026 sous le numéro 12.0.39. Sage publie désormais ses versions par année et par release, sur la base de la V12. Une personne restée sur la V6 a connu un X3 sans Syracuse et doit se remettre à niveau sur l'interface web et les web services.
Le signal le plus fiable est la façon dont le candidat parle des spécifiques. Un développeur expérimenté cite les codes activité, les points d'entrée, la validation du dictionnaire et la création de patchs sans y penser. Celui qui modifie les traitements standard laisse au client une dette qui ressort à chaque mise à jour.
Langage, dictionnaire, éditions : l'outillage Sage X3
L4G (4GL Sage X3)
Le langage de développement de Sage X3. Il manipule les tables par des classes de variables ([F] pour la table ouverte, [M] pour l'écran, [L] pour les variables locales, [V] pour les globales) et des instructions comme Read, For, Rewrite ou Trbegin. Les sous-programmes (Subprog, Funprog) et la gestion des transactions sont le minimum à vérifier.
Dictionnaire
Tables, écrans, fenêtres, objets, actions, types de données : tout est décrit dans le dictionnaire, puis validé pour générer la structure SQL et le code. Un champ ajouté directement dans la base sans passer par le dictionnaire disparaît à la validation suivante.
Codes activité
Ils activent ou désactivent des éléments du dictionnaire et en fixent certaines dimensions. Les codes qui commencent par X, Y ou Z sont réservés aux spécifiques : ils marquent le code et les champs du client pour qu'un patch ou une montée de version ne les écrase pas.
Points d'entrée et traitements spécifiques
Les traitements standard appellent, à des endroits prévus, un traitement spécifique déclaré pour le client. Le développeur y ajoute un contrôle ou un calcul, et peut aussi court-circuiter la suite du standard avec la variable GPE. C'est la façon propre de modifier le comportement de l'ERP.
Syracuse, mode Classic et mode natif
Depuis la V7, l'interface web passe par le serveur Syracuse, qui s'appuie sur Node.js et MongoDB. Une partie des fonctions reste en mode Classic, issu des anciennes versions, d'autres reposent sur les classes et représentations du mode natif. Le développeur doit savoir dans lequel des deux mondes se trouve la fonction qu'il modifie.
États Crystal Reports
Factures, bons de livraison, éditions de stock : la plupart des états sont des fichiers Crystal Reports déclarés dans le dictionnaire des états avec leurs paramètres, puis imprimés par le serveur d'édition. Les demandes d'adaptation d'états sont fréquentes en TMA.
Web services et API GraphQL
Sage X3 expose des web services SOAP sur ses objets et sous-programmes, des services REST via Syracuse et une API GraphQL portée par Sage X3 Services. La 2026 R1 a étendu la couverture GraphQL aux achats, à la production, aux immobilisations et aux factures de vente. Le choix dépend de la version du client et de l'objet à piloter.
Imports, batch et EDI
Les modèles d'import et d'export reprennent des fichiers en passant par les contrôles de l'objet. Le serveur batch planifie les traitements de nuit et les enchaînements de tâches. Les échanges EDI et la facturation électronique, obligatoire en réception depuis septembre 2026 en France, reposent sur ces briques.
Dossiers et patchs
Une installation contient plusieurs dossiers organisés en hiérarchie : le dossier de référence X3, des dossiers parents, des dossiers de test et de production. Un développement se livre par un patch, généré dans le dossier de développement puis intégré en recette et en production.
Le développeur Sage X3 travaille en binôme avec un consultant fonctionnel finance, achats, ventes, stock ou production, qui rédige le besoin. Il doit comprendre assez le processus pour discuter une règle de gestion, par exemple la valorisation d'un stock ou l'encours d'un client. L'intitulé varie selon les offres : développeur, analyste développeur, consultant technique. Les missions de TMA demandent de l'autonomie sur un existant mal documenté, les projets de mise en place ou de montée de version demandent de la méthode sur les patchs et la recette. Le SQL compte presque autant que le L4G, pour les reprises de données, les requêtes et le diagnostic de lenteur.
Les six savoir-faire d'un développeur Sage X3 confirmé
- Programmation L4G et transactions
- Dictionnaire et codes activité
- Points d'entrée et spécifiques
- SQL et performance des traitements
- États, imports et web services
- Patchs, dossiers et montées de version
Du L4G aux patchs, cinq questions avec la réponse attendue
Chaque question vient avec ce qu'une bonne réponse contient et le signal qui doit vous alerter. Pas besoin d'être technique pour les poser : écoutez si le candidat raconte du vécu.
Question 1 · confirmé
Une mise à jour de stock doit modifier trois tables. Comment l'écrivez-vous en L4G pour ne jamais laisser une moitié de mise à jour ?
Une bonne réponseTrbegin sur les tables concernées, lecture avec verrou (Readlock), écritures avec Rewrite ou Write, test de fstat après chaque opération, Rollback dès qu'une écriture échoue et Commit à la fin. La transaction reste courte : aucune boîte de dialogue ni appel externe au milieu. Il pose un verrou symbolique (Lock) quand plusieurs traitements peuvent toucher la même donnée.
Signal d'alerteDes Rewrite enchaînés sans transaction, sans test de fstat. Un Infbox ouvert pendant la transaction, qui garde les verrous tant que l'utilisateur ne répond pas.
Question 2 · junior à confirmé
Vous ajoutez un champ spécifique sur la fiche article. Quelles étapes suivez-vous dans le dictionnaire, et qu'est-ce qui protège ce champ d'un patch ?
Une bonne réponseCréation du champ dans la table des articles (ITMMASTER) avec un code activité spécifique en X, Y ou Z, validation de la table qui modifie la structure SQL, ajout dans l'écran concerné, puis validation de l'écran, de la fenêtre et de l'objet. Le code activité spécifique signale l'élément comme appartenant au client, ce qui le protège lors des patchs et des montées de version.
Signal d'alerteUn ALTER TABLE en SQL. Un champ ajouté sans code activité, écrasé au prochain patch standard.
Question 3 · confirmé
Le client veut un contrôle supplémentaire avant la validation d'une commande, sans toucher au code standard. Comment procédez-vous ?
Une bonne réponseIl cherche le point d'entrée prévu dans le traitement standard (documentation des points d'entrée, recherche dans le source, débogueur), déclare un traitement spécifique rattaché à ce traitement standard et y code le contrôle dans le bloc qui correspond au point d'entrée. Pour un objet, il peut aussi passer par le traitement spécifique de l'objet. Il laisse GPE à 0 sauf s'il doit remplacer la suite du standard.
Signal d'alerteModifier le traitement standard. Mettre GPE à 1 par réflexe, ce qui coupe le code standard qui suit, y compris ses corrections futures.
Question 4 · senior
Un recalcul de prix tourne six heures sur le serveur batch. Comment l'accélérez-vous ?
Une bonne réponseIl mesure d'abord : traces du traitement, temps par étape, requêtes lourdes et plans d'exécution côté SQL Server. Puis il supprime les Read répétés dans la boucle (tables lues une fois, Link pour joindre), lit par une clé indexée en limitant les colonnes, regroupe les mises à jour par lots de transactions, et passe en SQL direct les mises à jour massives sans logique métier. Un index manquant se déclare dans le dictionnaire.
Signal d'alerteAjouter de la mémoire au serveur. Créer un index directement dans SQL Server, que la validation suivante supprime.
Question 5 · confirmé
Une boutique en ligne doit créer des commandes dans Sage X3. Quelle technique d'intégration choisissez-vous ?
Une bonne réponseIl part de la version du client et de l'objet à piloter : web service SOAP sur l'objet commande, service REST de Syracuse ou API GraphQL de Sage X3 Services, dont la couverture s'élargit à chaque release. Il prévoit un utilisateur technique dédié, un pool de connexions dimensionné pour les web services SOAP, un journal des appels et une référence externe unique pour ne pas créer deux fois la même commande.
Signal d'alerteÉcrire directement dans les tables de commandes en SQL, ce qui contourne les contrôles, les mises à jour de stock, d'encours et de comptabilité.
Recevez la fiche d'entretien complète en PDF
La fiche pour mener l'entretien de bout en bout, prête à imprimer ou à partager avec le manager.
- 30 questions sur 6 axes, avec la bonne réponse, le signal d'alerte et la relance
- Le niveau visé pour chaque question
- Une mise en situation de 20 minutes et ce qu'on attend du candidat
- La grille d'évaluation de 1 à 4, axe par axe
Sage X3 : ce que demandent les équipes qui recrutent
Un développeur venu d'un autre ERP peut-il passer sur Sage X3 ?
Oui, si la logique ERP est là : objets métier, transactions, spécifiques séparés du standard. Le L4G s'apprend vite pour quelqu'un qui a fait de l'ABAP, du X++ ou du Progress. Le dictionnaire, les codes activité et les patchs demandent plus de temps. Pour un poste seul en TMA, préférez une expérience Sage X3 réelle. Pour un poste en équipe avec un référent, un bon développeur ERP formé quelques semaines peut convenir.
Quelles versions de Sage X3 regarder sur un CV ?
Notez la dernière version pratiquée. La V6 ne connaît pas Syracuse, les V7 à V11 introduisent l'interface web et le mode natif, la V12 sert de base aux versions annuelles comme la 2026 R1. Une personne qui a vécu une montée de version V6 ou V11 vers V12 a souvent traité les spécifiques à reprendre, les états à adapter et les web services à refaire. Demandez-lui ce qui a posé problème.
Quel test technique proposer à un développeur Sage X3 ?
Il faut un dossier de test, ce qui limite l'exercice à faire chez soi. Un format simple consiste à montrer un traitement L4G de quarante lignes qui contient des erreurs : pas de transaction, Read dans une boucle, modification d'un standard. Demandez au candidat de les trouver et de dire comment il les corrigerait. Ajoutez une question sur la façon de livrer le correctif par patch.
Développeur Sage X3 ou consultant technique : faut-il les distinguer ?
Les intitulés se recouvrent. Le consultant technique est souvent plus proche des clients et prend aussi en charge l'installation, les montées de version, la reprise de données et parfois l'administration de Syracuse. Le développeur est davantage tourné vers le L4G, les états et les interfaces. Écrivez dans l'offre la part de développement et la part d'exploitation, c'est ce qui fera venir les bons profils.
Pour structurer vos autres entretiens, consultez aussi nos pages sur les questions d'entretien de recrutement, la méthode de l'entretien structuré et la grille d'évaluation d'entretien.






