Vous avez un projet d’intégration API et vous voulez un accompagnement sur mesure, de la stratégie au run ? Découvrez notre offre d’intégration API sur mesure.
Au-delà du choix d’un protocole, d’un SDK ou d’un outil, le vrai sujet reste toujours le même: qualité du mapping, idempotence des traitements, gestion des erreurs, observabilité, coût de maintenance et lisibilité du run côté métier. C’est à ce niveau que se joue la robustesse réelle d’une intégration API.
Si vous cherchez un cadrage plus large sur la conception, le delivery et l’exploitation de vos flux, découvrez aussi notre expertise en intégration API pour structurer un socle durable, pilotable et utile en production.
Pour cadrer un flux ERP concret, partez aussi de notre page Intégration API ERP: on y tranche la source de vérité sur les articles, stocks, commandes, factures, avoirs, paiements et taxes avant d’ouvrir le connecteur. C’est là qu’on décide si une erreur de schéma part en DLQ, si un retry est autorisé, et si la reprise se fait au document, à la ligne ou au batch.
Oracle Fusion oblige à raisonner par domaines fonctionnels: inventory, procurement, AP, AR, GL et intercompany. Un mapping sérieux doit donc porter le business unit, le ledger, le site fournisseur, le code taxe, la devise, l’échéance, le numéro de commande, le numéro de facture et la distribution comptable. Sans ces champs, un document peut être techniquement valide mais comptablement inexploitable.
{
"business_unit": "BU-FR01",
"ledger": "FR_LEDGER",
"supplier_site": "SUP-FR-003",
"purchase_order_number": "PO-45891",
"invoice_number": "INV-2025-119",
"currency": "EUR",
"tax_code": "TVA20",
"idempotency_key": "oraclefusion-ap-119-v1",
"lines": [
{"item": "ART-502", "qty": 12, "unit_price": 19.5},
{"item": "ART-503", "qty": 4, "unit_price": 31.0}
]
}
Si la période comptable est close, si la distribution GL est incomplète ou si le compte analytique manque, la bonne décision n’est pas de “forcer” la facture. On met le message en DLQ, on journalise la `request_id`, puis on repart de la facture source ou du lot corrigé. Cette discipline évite les écritures fantômes et les rapprochements manuels en fin de mois.
Sur un projet réel, on voit souvent une facture fournisseur rejetée parce qu’une distribution GL est incomplète, puis un paiement partiel qui doit malgré tout rester rattaché au bon `ledger`. Le bon design consiste à isoler la pièce en DLQ, à corriger le mapping puis à rejouer seulement le document concerné, pas tout le lot intercompany.
Exemple Oracle Fusion: une AP invoice peut arriver avant le paiement bancaire ou l’écriture GL; le connecteur doit donc conserver le lien entre la pièce, le `supplier_site`, le `ledger` et le numéro de rapprochement. C’est ce niveau de traçabilité qui permet de rejouer une seule facture, sans rouvrir tout le lot comptable.
{
"business_unit": "BU-FR01",
"ledger": "FR_LEDGER",
"supplier_site": "SUP-FR-003",
"purchase_order_number": "PO-45891",
"invoice_number": "INV-2025-119",
"currency": "EUR",
"tax_code": "TVA20",
"idempotency_key": "oraclefusion-ap-119-v2"
}
Les objets clés à garder en mémoire sont `ap_invoice_number`, `credit_memo_number`, `payment_reference`, `intercompany_reference`, `reconciliation_batch` et `accounting_period`. Si une période est close ou si le rapprochement ne trouve pas de ligne correspondante, l’élément fautif part en DLQ et le reste du lot continue à vivre.
Par exemple, un `endpoint` d’import AP peut recevoir une facture fournisseur, puis un `webhook` de paiement confirme le lettrage. Avec une `queue` de reprise, un `rate limit` par entité et des retries bornés, Oracle Fusion traite le lot sans dupliquer la pièce ni casser le rapprochement.
Oracle Fusion intervient dans des environnements structurés et exigeants: finance, achats, supply chain, gouvernance multi-entités. Les intégrations API doivent respecter des contraintes de sécurité, de conformité, de volumétrie et de traçabilité bien supérieures à une intégration ponctuelle.
Le SDK Oracle Fusion de Dawap sous Symfony standardise l’auth OAuth2, les modèles d’erreur, les mappers métier et les politiques de résilience. Cette approche réduit le risque de divergence entre projets.
Vue globale: Intégration API.
Les APIs Oracle Fusion sont riches, avec des objets transverses (Business Unit, Ledger, Legal Entity, Supplier, Customer, Invoice, Journal). Le point critique est la cohérence des dimensions de gestion: un payload techniquement valide peut être rejeté pour non-conformité métier.
Nous séparons systématiquement le contractuel (schéma/validation/version endpoint) de l’illustratif (payload d’exemple) pour garantir une intégration maintenable malgré les évolutions applicatives.
Le SDK s’articule autour de composants dédiés: `OracleFusionTokenProvider`, `OracleFusionHttpClient`, `OracleFusionDomainAdapters`, `OracleFusionErrorMapper`, `OracleFusionTelemetry`. Les adapters couvrent finance, procurement et master data.
final class OracleFusionApInvoiceAdapter
{
public function __construct(
private OracleFusionHttpClient $client,
private OracleFusionErrorMapper $errors
) {}
public function createInvoice(array $payload, string $idempotencyKey): array
{
return $this->client->post(
'/fscmRestApi/resources/11.13.18.05/invoices',
$payload,
headers: ['X-Idempotency-Key' => $idempotencyKey]
);
}
}
oracle_fusion_sdk:
auth:
grant_type: client_credentials
token_uri: '%env(ORACLE_FUSION_TOKEN_URI)%'
http:
base_uri: '%env(ORACLE_FUSION_BASE_URI)%'
timeout:
read_seconds: 12
write_seconds: 25
retries:
read_max: 2
write_max: 1
Exemples illustratifs, à adapter au tenant Oracle Fusion cible.
POST /oauth2/v1/token HTTP/1.1
Host: [ORACLE_IDENTITY_HOST]
Content-Type: application/x-www-form-urlencoded
grant_type=client_credentials&scope=[SCOPE]
{
"BusinessUnit": "FR_OPERATIONS",
"Supplier": "SUP-10027",
"SupplierSite": "MAIN",
"InvoiceNumber": "AP-2026-00412",
"InvoiceCurrencyCode": "EUR",
"InvoiceAmount": 14500.00,
"InvoiceDate": "2026-02-19",
"InvoiceLines": [
{
"LineNumber": 1,
"LineAmount": 14500.00,
"Description": "Prestations intégration API",
"DistributionCombination": "601000-AN001-CC100"
}
]
}
{
"Ledger": "LEDGER_FR",
"AccountingDate": "2026-02-19",
"JournalBatchName": "BATCH-API-2026-02-19",
"JournalLines": [
{"Account": "707000", "EnteredDrAmount": 0, "EnteredCrAmount": 14500.00},
{"Account": "411000", "EnteredDrAmount": 14500.00, "EnteredCrAmount": 0}
]
}
Le SDK effectue une validation post-écriture sur les identifiants Oracle renvoyés, la devise, et l’état de validation documentaire avant publication de l’ack final.
Sur les flux finance et procurement, les cas concrets les plus sensibles sont la facture fournisseur, l’ordre d’achat et les écritures intercompany. Une divergence entre Business Unit, Ledger et Distribution Combination doit être traitée comme une erreur métier structurée, avec la possibilité de rejouer seulement le sous-lot impacté.
Les flux Oracle Fusion doivent être partitionnés par périmètre de gestion: Business Unit, Ledger, Legal Entity, et parfois région fiscale. Sans cette segmentation, les incidents intercompany deviennent difficiles à diagnostiquer.
Concrètement, nous évitons de mélanger les objets AP, AR et GL dans un seul message. Une facture fournisseur, un encaissement client et un journal d’ajustement ne partagent pas la même logique de reprise. Séparer les files permet de protéger la clôture: si la combinaison analytique d’une facture est invalide, on rejette la ligne, on garde le document brut, et on évite de perturber les paiements ou les écritures déjà validées.
En pratique, cela signifie aussi que le support finance peut traiter les rejets dans le bon ordre: d’abord la dimension fautive, ensuite le document, enfin le lot. Sur Oracle Fusion, ce séquencement évite de bloquer une BU entière pour un seul site fournisseur ou une seule combinaison de distribution incorrecte. Les équipes gagnent du temps parce qu’elles savent si elles doivent corriger un référentiel, un workflow ou un payload.
Queue naming recommandé:
- erp.oraclefusion.masterdata.[business_unit]
- erp.oraclefusion.ap.[ledger]
- erp.oraclefusion.ar.[ledger]
- erp.oraclefusion.gl.[ledger]
Cette partition par file est ce qui permet de garder un support lisible quand un périmètre finance bloque. Si une facture fournisseur est rejetée pour une distribution combination incomplète, on ne doit pas ralentir les encaissements clients ni les journaux GL déjà validés. Le replay doit rester au bon niveau de granularité: document, lot métier ou période de clôture, jamais un redépart global.
Nous classons les erreurs Oracle Fusion en technique, contrat et métier. Seules les erreurs techniques transitoires sont rejouées automatiquement. Les rejets de validation métier sont dirigés vers une file de reprise pilotée.
enum OracleFusionErrorClass: string
{
case TECHNICAL = 'technical';
case CONTRACT = 'contract';
case BUSINESS = 'business';
}
final class RetryPolicyDecider
{
public function shouldRetry(OracleFusionErrorClass $class): bool
{
return $class === OracleFusionErrorClass::TECHNICAL;
}
}
Les plans de test incluent des cas nominaux et dégradés sur AP/AR/GL, avec vérification des dimensions comptables, de la conformité fiscale et des transitions de statut.
Référence utile: Tests API, stratégie et bonnes pratiques.
Matrice de test minimale:
1) Nominal: supplier invoice -> validation -> posting
2) Dégradé réseau: timeout AP -> reprise idempotente
3) Dégradé contrat: champ Ledger absent -> rejet actionnable
4) Dégradé métier: compte GL invalide -> quarantaine
5) Non-régression: rejouabilité batch -> aucun doublon
Pour l’exploitation, nous suivons aussi le volume de documents rejetés par règle de validation, le nombre de replays par BU et le délai moyen entre rejet et correction. Si la dérive vient d’un code comptable ou d’une dimension analytique, le problème doit remonter immédiatement au référentiel maître, pas au retry.
Cas réel: une facture fournisseur peut être techniquement correcte mais refusée si la combinaison `BusinessUnit` / `Ledger` / `DistributionCombination` ne correspond pas à la politique de l’entité. Le SDK doit alors conserver la facture, marquer la dimension fautive et orienter la correction vers l’équipe référentiel plutôt que de multiplier les retries. Pour une organisation multi-pays, c’est souvent la seule façon de garder un run lisible et de ne pas confondre incident technique et arbitrage comptable.
Le même raisonnement s’applique aux commandes d’achat et aux écritures intercompany: un batch qui mélange plusieurs BU crée des effets de bord dès qu’une seule ligne est en échec. Nous préférons donc des lots par périmètre, des messages DLQ avec la dimension exacte en cause, et un replay qui ne rejoue que le sous-ensemble corrigé. Cela simplifie aussi les audits, parce que l’on peut prouver quelle ligne a été refusée, pourquoi, et à quel moment elle a été réémise.
Découpage Oracle Fusion
- batch AP par BU
- batch GL par Ledger
- batch intercompany par Legal Entity
- DLQ par règle métier
- replay seulement après correction de la dimension fautive
Cette approche est aussi la seule viable quand Oracle Fusion est utilisé comme colonne vertébrale financière pour plusieurs filiales. Une facture fournisseur peut être valide dans une BU et invalide dans une autre, simplement parce que les centres de coûts, les règles taxes ou la combinaison analytique ne sont pas les mêmes. Le SDK doit donc conserver le contexte métier exact, rejouer uniquement le sous-ensemble correctif et fournir un historique suffisamment propre pour l’audit.
Sur les lots intercompany, le moindre mélange de BU crée des effets de bord sur les réconciliations. Nous privilégions donc des flux très explicites: une écriture par périmètre, un motif de rejet par règle, une DLQ par entité et un replay qui ne remet jamais en cause les documents déjà publiés. C’est ce niveau de discipline qui permet d’absorber la complexité Oracle Fusion sans gonfler les temps de support.
On retrouve la même exigence sur les flux de dépenses et d’approvisionnement: une demande d’achat peut être approuvée dans une entité, rejetée dans une autre et renvoyée vers un Ledger distinct. Le connecteur doit donc exposer le motif exact de rejet, la BU concernée et l’étape de validation qui a échoué afin que le métier sache si la correction relève du référentiel, du circuit d’approbation ou du payload d’origine.
Cette finesse devient encore plus visible sur les processus intercompany. Une facture d’une filiale peut être compensée par un journal dans une autre, puis ajustée à cause d’une taxe ou d’un centre de coût. Si le middleware n’embarque pas la BU, le Ledger, le site fournisseur et la combinaison de distribution, le replay devient dangereux: on peut corriger la mauvaise entité et contaminer plusieurs clôtures. La bonne approche est donc de découper les flux par périmètre, de documenter l’erreur par règle et de conserver une piste d’audit qui explique pourquoi tel lot a été mis en attente.
Sur les charges réelles, on sépare aussi le traitement des factures, des paiements et des écritures de correction. Un paiement reçu ne doit pas réparer automatiquement une facture mal mappée, et une correction analytique ne doit pas réécrire une facture déjà postée sans validation. Ce respect des responsabilités métier est ce qui permet à Oracle Fusion de rester gouvernable lorsque plusieurs BU et plusieurs équipes partagent le même socle.
Oracle Fusion devient encore plus exigeant dès qu’on ajoute le cycle AP complet: demande d’achat, commande fournisseur, facture, approbation, paiement, rapprochement. Chacun de ces objets porte sa BU, son Ledger, parfois sa Legal Entity, et un jeu de dimensions comptables qui doit rester cohérent jusqu’à la clôture. Le SDK doit donc conserver le statut de validation, l’étape de workflow et la combinaison analytique exacte pour pouvoir expliquer un rejet de manière utile au métier. Un simple retry ne corrige pas une BU erronée.
Dans les flux de production, on sépare souvent les lots par phase: pré-validation du fournisseur, création de facture, posting GL, paiement et réconciliation. Cette séparation évite qu’un lot de paiement vienne masquer une facture mal configurée ou qu’un journal d’ajustement soit rejoué sur une pièce déjà validée. Les équipes finance peuvent alors suivre un chemin clair: document accepté, document en attente, document rejeté, document corrigé. C’est ce niveau de lisibilité qui fait la différence en période de clôture.
Oracle Fusion replay
- ap invoice -> validate BU, ledger, supplier site
- payment -> match only against current invoice state
- intercompany -> separate lots by legal entity
- journal -> reject if distribution combination incomplete
- DLQ -> preserve rule code, entity, and posting context
Oracle Fusion exige un niveau de précision très élevé: chaque `payload` doit porter la BU, le Ledger, l’entité légale et les dimensions comptables qui font foi. Le SDK doit donc gérer le `mapping` comme un contrat de clôture, pas comme une simple transformation technique. Si un `endpoint` reçoit un document avec une distribution incomplète, on ne le rejoue pas à l’aveugle.
Les cas de production les plus sensibles sont ceux où une facture AP est correcte en apparence mais attend encore une validation de site fournisseur, ou ceux où un paiement arrive avant la publication définitive du document. Le SDK doit garder la clé d’`idempotence`, pousser la ligne en `queue` ou en `batch` selon le mode de reprise, et isoler la correction de la simple saturation technique.
Le support a besoin d’un langage clair: s’agit-il d’un problème de `token`, d’`oauth`, de `rate limit`, d’un `webhook` en double ou d’un rejet métier sur la combinaison analytique? La réponse détermine si l’on corrige la donnée, si l’on patiente, ou si l’on rejoue seulement le sous-lot concerné. Un `retry` de trop coûte souvent plus cher qu’une quarantaine métier bien placée.
Cette discipline est aussi cruciale pour les lots intercompany. Un lot qui mélange plusieurs Legal Entities ou plusieurs BU peut masquer l’origine d’un rejet et polluer la clôture. On préfère donc des lots courts, des journaux explicites et une DLQ qui conserve le contexte exact du document, du compte et de la règle de validation. C’est ce qui rend Fusion gouvernable en production.
Oracle Fusion decision map
- api endpoint -> ap invoice, payment or journal
- payload -> BU, ledger, legal entity, distribution
- webhook -> approval or posting signal
- queue -> staged processing by legal entity
- batch -> AP or GL replay
- retry -> technical only
- idempotence -> same document, same posting effect
Les collections Postman servent à valider les appels OAuth2, les ressources FSCM, et les scénarios de recette multi-entités avant exécution CI/CD.
Voir: Postman pour industrialiser vos tests API.
Les dashboards suivent latence, taux d’échec, backlog, reprises et écarts de réconciliation par domaine (master data, AP, AR, GL). L’objectif est d’industrialiser le run, pas seulement d’exposer des logs.
Complément: Observabilité et runbooks API.
Métriques recommandées:
- api_call_duration_ms{resource,operation}
- api_error_total{class,resource}
- integration_backlog_size{queue}
- replay_total{reason}
- accounting_reconciliation_gap_total{ledger}
Sur Oracle Fusion, le SDK doit souvent orchestrer un flux intercompany: création d’un supplier invoice,
validation du ledger, puis retour du statut vers l’ERP source. Sans mapping explicite des BU,
des cost centers et des tax codes, le support voit des écarts de comptabilisation difficiles à
expliquer. Le connecteur doit donc porter le supplier_id, le ledger_code,
le tax_code et la version du schéma pour que le run puisse rejouer l’opération sans créer de doublon.
{
"invoice_id": "AP-44011",
"supplier_id": "SUP-881",
"ledger_code": "FR-GL",
"tax_code": "VAT20",
"bu": "France Retail",
"idempotency_key": "oraclefusion:AP-44011:post"
}
Le bon arbitrage est de garder le synchrone pour la validation métier et l’asynchrone pour la synchro des écritures, surtout quand l’API retourne des états intermédiaires ou des files de reprise. C’est ce découpage qui évite d’arrêter la chaîne finance pour un simple retard de propagation.
Pour rester exploitable au quotidien, le contrat doit aussi documenter l’endpoint, le payload, le webhook de retour, le token de service, le mapping des BU et la politique d’idempotence. Sur un flux procurement ou intercompany, ces repères aident le run à distinguer un simple retry d’un vrai écart de ledger, puis à rejouer la file de reprise sans réécriture manuelle.
Le traitement quotidien doit aussi prévoir la queue de reprise, le batch de synchronisation, le rate limit et les échanges avec l’ERP source ou le CRM finance. Ces détails opérationnels font la différence entre un connecteur théorique et un SDK réellement supportable en production.
Vue d’ensemble: Découvrir le guide des SDK API ERP Dawap.
SDK API ERP Microsoft Dynamics 365
L’intégration Oracle Fusion nécessite un niveau d’ingénierie élevé: sécurité OAuth2 robuste, gouvernance des dimensions de gestion, stratégie de reprise maîtrisée et observabilité complète.
Le cadrage doit couvrir le périmètre fonctionnel priorisé, la politique de versionning, et l’ownership run/métier. C’est ce cadre qui permet de tenir les exigences enterprise dans la durée.
Besoin d’un accompagnement sur mesure pour cadrer, construire ou fiabiliser vos flux ? Découvrez notre offre d’intégration API sur mesure.
Articles complémentaires à lire ensuite : pour prolonger ce sujet, comparez aussi notre guide complet d’intégration API, notre article sur l’architecture sync, async et event et notre guide sur les tests API en production.
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
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.
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.
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.
Les projets Divalto demandent de concilier contraintes terrain, flux commerciaux et exigences logistiques. L’article présente notre SDK Symfony avec mappings versionnés, stratégie de retry adaptée et normalisation des échanges pour stabiliser les opérations au quotidien.
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