Exploitation des connecteurs ERP et cartographie « erpLinks »
Ce mémo résume pour les équipes projets où configurer hors code (secrets plateforme, formulaires admin) et où cartographier chaque société Ninon vers un identifiant côté ERP. Les anomalies de synchro sont visibles dans les journaux Observability avec la source « erp-sync ».
Général
La fenêtre d’extraction GL par défaut (souvent 90 jours) se règle dans la configuration de déploiement. Chaque entité groupe possède un objet JSON erpLinks : une clé par fournisseur (dynamics365bc, xero, netsuite, sap_business_one, sap_s4hana, sage_intacct). La valeur filtre côté API pour rattacher les lignes à la bonne entité ; renseignez-la avant de compter sur une synchro multi-filiales.
Xero
OAuth PKCE produit : après consentement, si plusieurs organisations Xero sont reliées au compte, vous devez choisir le tenant dans l’écran Intégrations (liste chargée depuis Xero après autorisation). Un alignement manuel optionnel par entité possible via erpLinks.xero. Scopes côté app Xero : lecture des paramètres comptables et transactions (journaux).
NetSuite
Deux voies : enregistrement scripté des jetons (API d’intégration) ou OAuth navigateur avec realm (identifiant compte, sous-domaine SuiteTalk) saisi avant redirection. Enregistrez l’URL de redirection de Ninon dans l’intégration NetSuite. Les identifiants OAuth hébergés côté plateforme assurent le refresh ; les surcharges de scopes sont documentées pour les opérateurs. SuiteQL filtre par filiale : erpLinks.netsuite = ID interne subsidiary.
SAP Business One
Service Layer : URL …/b1s/v1, société et utilisateur chiffrés. Plusieurs filiales : erpLinks.sap_business_one = BPLID (ou équivalent renvoyé sur les lignes). Option avancée journalEntryCollection si votre Service Layer expose un autre nom de collection OData (défaut JournalEntries). Des diagnostics verbeux optionnels pour les lignes ignorées faute de mapping peuvent être activés dans la configuration de déploiement.
SAP S/4HANA
Racine du service OData publié (ex. API_GLACCOUNTLINEITEM_SRV) + soit jeton Bearer collé (mode manuel), soit OAuth client_credentials (tokenUrl, clientId, clientSecret, scope optionnel) avec rafraîchissement automatique avant expiration. erpLinks.sap_s4hana = CompanyCode. Champs optionnels entitySetName et preferredDateFields (liste séparée par virgules) si votre API diffère. Des diagnostics de chemin OData (sans secrets) peuvent être activés dans la configuration de déploiement.
Sage Intacct
Web Services avec sender / société / utilisateur ; erpLinks.sage_intacct = LOCATIONID lorsque plusieurs lieux sont modélisés. La synchro pagine automatiquement via readMore lorsque Intacct renvoie numremaining > 0 après readByQuery sur GLENTRY.