1. Pourquoi un SDK Divalto dédié côté Symfony
  2. Spécificités API Divalto (Infinity / Weavy)
  3. Clés API Divalto: droits, types et cycle de vie
  4. Architecture de notre connecteur SDK Divalto
  5. Exemples d’endpoints et payloads métier
  6. Orchestration des flux: client, commande, facture, stock
  7. Résilience API: idempotence, retries, erreurs
  8. Tests d’intégration et validation fonctionnelle
  9. Outillage: Postman, mocks et contrats API
  10. Observabilité run et gouvernance des flux
  11. SDK ERP développés par Dawap (articles associés)
  12. Conclusion et cadrage d’un projet Divalto

1. Pourquoi un SDK Divalto dédié côté Symfony

Dans les projets Divalto, les intégrations API paraissent simples au départ, puis deviennent rapidement complexes: variantes de modèles, règles métier spécifiques, synchronisations inter-applications, et exigences fortes de continuité de service. Sans cadre commun, les appels API se dispersent et la maintenance devient fragile.

Chez Dawap, nous avons développé un SDK Divalto sous Symfony pour centraliser auth, mapping, normalisation d’erreurs, observabilité et stratégies de reprise. Le connecteur expose des méthodes métier lisibles et réduit drastiquement le code d’intégration dupliqué dans les projets.

Pour la vue globale de notre approche: Intégration API.

2. Spécificités API Divalto (Infinity / Weavy)

Les environnements Divalto (Infinity/Weavy selon contexte) impliquent souvent des schémas API adaptés au métier et des contraintes fortes de cohérence entre gestion commerciale, logistique et facturation. Le connecteur doit absorber ces spécificités sans propager leur complexité à tout le code applicatif.

Les points sensibles sont généralement: référentiels clients/articles, numérotation documentaire, statuts de commande, mouvements de stock et gestion des mises à jour concurrentes. Notre SDK traite ces sujets nativement avec conventions stables et contrôles métier explicites.

En pratique, les difficultés les plus sous-estimées sur Divalto sont rarement techniques "pures". Elles concernent surtout la sémantique métier: cycle de vie d’un document commercial, règles de remise combinées, priorités tarifaires, et dépendance à des référentiels internes (codes tiers, familles, dépôts, taxes, conditions de règlement). Un SDK utile doit intégrer cette couche d’intelligence métier.

3. Clés API Divalto: droits, types et cycle de vie

Sur Divalto, l’accès API repose sur une gestion stricte des clés et des droits par code projet. En pratique, un utilisateur doit disposer des bons accès ERP/CRM et de l’activation de l’application "Clés d’API" pour générer, régénérer ou révoquer une clé selon le contexte d’intégration.

Les types de clés mentionnés incluent notamment `DatabaseQuery`, `ErpGateway`, `ErpGatewayApi` et `HubApi`. Dans nos intégrations, cela implique de tracer explicitement le type de clé utilisé par flux, d’isoler les secrets par environnement et de contrôler les permissions au plus juste.

La doc indique aussi que la clé affichée à la génération n’est pas récupérable après fermeture de la fenêtre. En exploitation, nous prévoyons donc un runbook de rotation avec recopie immédiate, validation de healthcheck, puis révocation de l’ancienne clé une fois le trafic stabilisé.

Important: ces informations sont susceptibles d’évoluer dans le temps (interfaces myDivalto, types de clés, modèle de droits). Dans l’article, nous les considérons comme valides au moment de rédaction, le 19 février 2026, et nous recommandons toujours une vérification opérationnelle sur l’environnement client avant implémentation.

Lecture des exemples ci-dessous: les formats d’authentification et les structures de réponse marquées "format fourni par la doc" sont contractuels au moment de rédaction. Les exemples marqués "illustratif" servent à montrer une implémentation type et restent à adapter à la version Divalto, au tenant et aux paramétrages projet.

Référence API REST Divalto: Documentation officielle.

Exemple d’appel d’authentification REST (format fourni par la doc):

{
  "domain": "[DOMAIN]",
  "user": "[LOGIN]",
  "password": "[PASSWORD]",
  "env": "[ENV]"
}

Réponse attendue en succès:

{
  "error": 0,
  "access_token": "xyz",
  "txterr": "",
  "infos": ""
}

Dans notre SDK Symfony, les secrets restent dans le secret manager et l’`access_token` est caché court terme avec refresh contrôlé, jamais persisté en clair dans les logs.

4. Architecture de notre connecteur SDK Divalto

Le SDK suit une architecture en couches: `DivaltoAuthProvider`, `DivaltoHttpClient`, `DivaltoDomainAdapters`, `DivaltoErrorMapper`, `DivaltoTelemetry`. Symfony sert de socle DI/configuration pour rendre le connecteur réutilisable sur plusieurs projets.

Les adapters sont découpés par domaines métier: `CustomerAdapter`, `ProductAdapter`, `OrderAdapter`, `InvoiceAdapter`, `StockAdapter`. Les DTO internes restent stables pour éviter les effets de bord lors d’évolutions API côté Divalto.

5. Exemples d’endpoints et payloads métier

La référence Divalto distingue deux familles utiles en intégration: API REST `RecordSql` (lecture) et services métier (SOAP/REST, souvent avec `param` XML/HMP).

5.1 Lecture ERP via RecordSql

Exemple contractuel (structure d’appel) pour lecture `RecordSql`:

{
  "dhoq": "[NOM_DHOQ]",
  "recordsql": "[NOM_RECORDSQL]",
  "access_token": "xyz",
  "parameters": "",
  "fields": "CODE,LIBELLE,STATUT",
  "where": "Equal_Tiers",
  "where_parameters": "tiers=C0000001",
  "offset": 0,
  "count": 10000,
  "orderby": "CODE",
  "having": "",
  "having_parameters": "",
  "infos": ""
}

Exemple contractuel (structure de réponse) en succès:

{
  "error": 0,
  "txterr": "",
  "tablename": "TIERS",
  "nbrecord": 1,
  "records": [
    {
      "record": {
        "TABLE_ID": "2",
        "DOS": "998",
        "CHAMP1": "valeur"
      }
    }
  ],
  "infos": ""
}

Dans le SDK, ces appels sont encapsulés dans des query objects pour éviter de propager les chaînes `where`/`fields` dans le code applicatif.

Point de vigilance: si le dictionnaire `RecordSql` n’est pas autorisé côté ERP, l’appel échoue même avec un token valide.

5.2 Service métier stock en REST (param XML/HMP)

Exemple contractuel (structure d’appel) avec transport JSON et `param` XML/HMP:

{
  "action": "SYNCHRO_INFINITY_AGILEO",
  "param": "<dem><action dos=\"998\" nom=\"INTERROGER_STOCK\"><ref>ALB0001</ref><depot>*</depot></action></dem>",
  "access_token": "xyz"
}

Exemple contractuel (structure de réponse) en transport JSON avec contenu métier XML:

{
  "error": 0,
  "result": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>...<action dos=\"998\" nom=\"interroger_stock\" />...",
  "txterr": "",
  "infos": ""
}

Cette hybridation JSON + XML est un point clé Divalto: le SDK doit parser/valider le XML de `result` puis remonter des DTO métiers propres au reste du SI.

Nous ajoutons des parseurs robustes (encodage, décimales, champs absents) pour éviter les erreurs silencieuses.

Exemples illustratifs (à adapter): les mappings métiers spécifiques (noms de champs internes, codes d’action, règles de filtrage) dépendent du paramétrage client et ne doivent pas être copiés en production sans validation sur l’environnement cible.

6. Orchestration des flux: client, commande, facture, stock

Notre séquence type: 1. validation et enrichissement du payload entrant, 2. upsert client/référentiel, 3. création commande, 4. confirmation et éventuelle facturation, 5. synchronisation état/stock et ack applicatif.

Chaque étape est isolée, traçable et rejouable. En cas d’échec partiel, on relance l’étape fautive sans dupliquer les opérations déjà validées.

Exemple concret de gouvernance: si la commande est créée mais que l’étape de facturation échoue, le workflow conserve l’identifiant documentaire Divalto, place le flux en statut "à reprendre", et interdit toute recréation tant que l’état réel n’a pas été relu côté ERP.

Cette discipline évite un anti-pattern fréquent: compenser un incident par une nouvelle création documentaire, ce qui produit des écarts comptables difficiles à corriger.

7. Résilience API: idempotence, retries, erreurs

Le SDK applique retries bornés, timeout par opération et backoff progressif. Les écritures sensibles sont protégées par des clés d’idempotence métier pour empêcher les doublons de commande/facture en cas de timeout.

Les erreurs sont normalisées en catégories actionnables: auth/permission, contrat payload, erreur métier, erreur technique transitoire. Cette normalisation accélère le diagnostic et fiabilise les traitements de reprise.

Nous maintenons une matrice de traitement d’erreurs dédiée Divalto: erreur référentiel -> correction fonctionnelle puis replay, erreur technique transitoire -> retry automatique borné, erreur documentaire bloquante -> escalade métier + reprise manuelle guidée. Ce cadrage réduit fortement les incidents "gris" où personne ne sait quoi faire.

Autre point niche: la gestion des collisions de mise à jour (concurrence entre front-office, opérateur et batch). Le SDK sérialise les opérations critiques par clé documentaire pour conserver l’ordre métier attendu.

8. Tests d’intégration et validation fonctionnelle

Nous combinons tests unitaires (mappers, validators), tests d’intégration API (nominaux et dégradés), puis tests de non-régression sur scénarios métier critiques (commande, annulation, facture, correction stock).

Les cas couverts incluent: retry sur timeout, conflit de version, payload incomplet, idempotence sur réémission, et contrôle de cohérence documentaire.

Nous ajoutons des jeux de tests métier "à forte valeur": changement de tarif en cours de flux, indisponibilité partielle d’un article, split de livraison, et avoir partiel après facturation. Ces scénarios sont ceux qui révèlent les vraies faiblesses d’un connecteur en production.

Référence méthodologique: Tests API, stratégie et bonnes pratiques.

9. Outillage: Postman, mocks et contrats API

Postman est utilisé pour qualifier rapidement les endpoints, rejouer des cas métiers et partager des collections versionnées entre développeurs et équipes recette. Les mocks permettent de reproduire des cas limites sans dépendre en permanence d’un environnement Divalto complet.

Nous alignons systématiquement contrats de payload, implémentation SDK et scénarios de test pour éviter les dérives.

Nous documentons aussi des "fixtures de non-régression" par version d’API Divalto: payloads validés, réponses attendues et règles de compatibilité descendante. C’est essentiel pour maîtriser les évolutions sans casser les flux existants.

D'après la documentation "Actions métiers exposées par les SW" (mise à jour indiquée au 10 juin 2022), chaque service métier expose des exemples de zones `parameters` ou `data` directement exploitables dans Postman. La collection Postman complète peut être demandée au support via un ticket adressé à l’Academy Technique.

Article utile: Postman pour industrialiser vos tests API.

10. Observabilité run et gouvernance des flux

Chaque appel API est corrélé (trace id), journalisé (endpoint, durée, statut, retry_count) et enrichi d’un code erreur normalisé. Les dashboards suivent latence, taux d’erreur, backlog et délai moyen de reprise.

Des runbooks ciblés (auth, mapping, conflits métier, saturation) réduisent le temps de diagnostic et sécurisent l’exploitation.

Complément: Observabilité et runbooks API.

11. SDK ERP développés par Dawap (articles associés)

Vue d’ensemble du panel: Présentation des SDK API ERP développés par Dawap.

SDK API ERP Odoo

SDK API ERP Sage

SDK API ERP SAP

SDK API ERP Microsoft Dynamics 365

SDK API ERP Oracle NetSuite

SDK API ERP Dolibarr

SDK API ERP Cegid

SDK API ERP EBP

SDK API ERP Axelor

SDK API ERP Sellsy

SDK API ERP Axonaut

SDK API ERP Incwo

SDK API ERP Oracle Fusion

SDK API ERP Infor M3

12. Conclusion et cadrage d’un projet Divalto

Sur Divalto, la réussite d’un projet d’intégration ne se mesure pas au nombre d’APIs branchées, mais à la robustesse du système de flux dans la durée. Une intégration "fonctionnelle" le jour du go-live peut devenir fragile en quelques semaines si les règles de mapping, les clés d’idempotence, les traitements de reprise et la gouvernance des versions ne sont pas cadrés dès le départ.

Le bon cadrage consiste à traiter quatre dimensions en parallèle: 1. périmètre fonctionnel priorisé (clients, commandes, factures, stock, statuts), 2. contrat technique explicite (payloads, erreurs, timeouts, retries, traçabilité), 3. stratégie run (monitoring, alerting, runbooks, ownership), 4. trajectoire d’évolution (scalabilité, dette technique, changements d’API, conformité). Sans cet alignement, les incidents se multiplient au moment où les volumes augmentent.

Dans nos missions, nous livrons donc plus qu’un connecteur: un cadre opérable. Cela inclut une architecture SDK maintenable sous Symfony, des scénarios de test réalistes, une matrice d’erreurs actionnable, des conventions de logging corrélées, et une documentation exploitable à la fois par les développeurs, les architectes et les équipes d’exploitation.

Cette approche permet de réduire le time-to-value sans compromettre la stabilité du SI. Les équipes métier gagnent en fluidité opérationnelle, les équipes techniques gardent la maîtrise des évolutions, et la direction dispose d’une visibilité claire sur les risques et la performance des flux critiques.

Pour approfondir côté service: Intégration API ERP Divalto et notre offre Intégration API.

Jérémy Chomel Développeur Devops Dawap

Vous cherchez une agence
spécialisée en intégration API ?

Nous accompagnons les équipes produit et techniques dans la conception, l’intégration et l’industrialisation d’APIs. Notre mission : construire des architectures robustes, sécurisées et évolutives, alignées sur vos enjeux métier et votre croissance.

Vous préférez échanger ? Planifier un rendez-vous

Articles recommandés

SDK Odoo Symfony
Intégration API SDK API ERP Odoo: connecteur Dawap sous Symfony
  • 14 novembre 2025
  • Lecture ~9 min

Les flux Odoo exigent une lecture fine de JSON-RPC, des modèles métier et des règles de transition documentaires. Ce guide détaille comment Dawap structure un SDK Symfony pour synchroniser clients, commandes, factures et stocks avec idempotence, retries maîtrisés et traçabilité run.

SDK SAP Symfony
Intégration API SDK API ERP SAP: connecteur Dawap sous Symfony
  • 5 decembre 2025
  • Lecture ~8 min

SAP implique des contraintes élevées sur la volumétrie, la cohérence des données et la robustesse des workflows critiques. Nous y détaillons notre SDK Symfony pour orchestrer les flux logistiques et financiers avec contrôle d'état strict, résilience réseau et supervision orientée production.

SDK Microsoft Dynamics 365 Symfony
Intégration API SDK API ERP Microsoft Dynamics 365: connecteur Dawap sous Symfony
  • 7 decembre 2025
  • Lecture ~8 min

Dynamics 365 nécessite des échanges API REST sécurisés et cohérents sur plusieurs domaines métier simultanément. Ce guide explique notre SDK Symfony pour synchroniser ventes, clients, stocks et finance, tout en conservant une observabilité fine et une gestion d'incidents pilotable.

SDK Sage Symfony
Intégration API SDK API ERP Sage: connecteur Dawap sous Symfony
  • 23 janvier 2026
  • Lecture ~8 min

Les intégrations Sage demandent une forte rigueur sur les écritures, les référentiels et les statuts comptables. Cet article montre comment Dawap conçoit un SDK Symfony pour normaliser les flux, sécuriser la reprise sur incident et fournir une observabilité exploitable par les équipes run.

Vous cherchez une agence
spécialisée en intégration API ?

Nous accompagnons les équipes produit et techniques dans la conception, l’intégration et l’industrialisation d’APIs. Notre mission : construire des architectures robustes, sécurisées et évolutives, alignées sur vos enjeux métier et votre croissance.

Vous préférez échanger ? Planifier un rendez-vous