Correction rapide :ORA-20110n'est pas UNE erreur, c'est la famille des règles métier violées. Tout est dans l'étiquette :ORA-20110: Entité.ETIQUETTE: message. Lisez l'entité (où ça bloque) et l'étiquette (quelle règle), puis corrigez soit la donnée (valeur hors plage, format), soit le paramétrage (basic data manquante). Quatre cas résolus ci-dessous.
ORA-20110 est probablement le code le plus fréquent — et le plus mal compris — des migrations IFS. Contrairement à ORA-20112 (clé) ou ORA-20122 (champ verrouillé), il ne désigne pas un mécanisme précis : c'est le code générique qu'IFS renvoie quand votre donnée viole une règle métier.
La bonne nouvelle : le message contient tout ce qu'il faut pour diagnostiquer.
Anatomie du message
`
ORA-20110: SalesContract.CONWINPROBERR: Win Probability must be within the range 0 - 100.
└── entité ──┘└─ étiquette ─┘└────────── la règle violée ──────────┘
`
- L'entité dit où ça bloque (SalesContract, VoucherRow, BasicDataTranslation…).
- L'étiquette dit quelle règle est violée — c'est votre mot-clé de recherche.
- Le message dit souvent quoi corriger — mais parfois de façon trompeuse, comme on va le voir.
Quatre cas réels (et leurs corrections validées)
1. SalesContract.CONWINPROBERR — la valeur écran ≠ la valeur base
Migration de contrats de vente : Win Probability must be within the range 0 - 100, alors que le fichier contient WIN_PROB = 100. Le piège : l'écran affiche un pourcentage, la base stocke une valeur absolue. 100 % = 1 en base, 20 % = 0.2. Corrigez la source : WIN_PROB entre 0 et 1. (Solution validée par la communauté IFS.)
C'est LA leçon ORA-20110 : la règle s'applique à la valeur stockée, pas à la valeur affichée.
2. VoucherTypeUserGroup.INVVOUTYPE2 — le paramétrage manquant
User group AC is not connected to voucher type with function group L for accounting year 2026. Ici, rien à corriger dans les données : c'est la basic data qui manque. Direction Voucher Series per Voucher Type → type de voucher concerné (ex. MPL) → année → User Group per Voucher Series → ajouter le groupe utilisateur (et le type par défaut). À faire aussi pour les types liés (L, 0). (Solution validée.)
À savoir : sur les gabarits société standard, les groupes utilisateurs par série de vouchers manquaient pour 2026+ — corrigé en 26R2.
3. BasicDataTranslation.PROGNOTEXIST — la clé fabriquée par l'API
Migration de traductions (Basic Data Translation) : Corresponding basic data does not exist for attribute key. La cause est subtile : le champ PATH, pourtant clé primaire, est reconstruit par l'API à partir de LU + MODULE + ATTRIBUTE_KEY — la valeur que vous fournissez est ignorée. La correction (testée par la communauté) : dans Method List Attribute, ajouter les colonnes LU et ATTRIBUTE_KEY en flag K, et passer PATH de K à -. Le job a alors une clé exploitable et l'insert/update passe.
4. CustOrdDateCalculation.INVALSHIPDATE — le message trompeur
Planned ship date is outside the range of the current calendar en migrant des lignes de commande. On soupçonne les dates… la vraie cause était un CONTRACT non défini sur la ligne. Sans site, IFS ne peut pas résoudre le calendrier → le contrôle de date échoue. Morale : quand la règle semble absurde, cherchez le champ de contexte manquant (voir notre article ORA-20111).
La méthode générale
- Lisez l'étiquette, pas seulement le message. Elle identifie la règle précise.
- Demandez-vous : donnée ou paramétrage ? Valeur hors plage / mauvais format → corrigez la source. Règle qui référence un élément absent (groupe, calendrier, basic data) → corrigez le paramétrage IFS.
- Vérifiez la valeur stockée en base (colonnes
_DB, valeurs absolues) — pas la valeur affichée à l'écran. - Testez la même opération à la main dans IFS : si l'écran la refuse aussi, la règle est métier (et le job n'y peut rien) ; si l'écran l'accepte, cherchez le champ de contexte que le job ne transmet pas.
- Sur des fichiers mixtes (en-têtes + lignes, composants de kits), ajoutez un Order By dans le job : beaucoup d'
ORA-20110viennent d'un simple ordre de traitement.
Erreurs de migration IFS liées
Le même type de blocage se joue sur d'autres codes — tous décortiqués dans notre guide pilier Migration de données IFS Cloud:
- ORA-20112 FND_RECORD_EXIST — le job tente d'INSÉRER une ligne qui existe déjà (problème de clé).
- ORA-20111 / FND_RECORD_NOT_EXIST — un prérequis contextuel manquant (parents avant enfants).
- ORA-20122 « may not be modified » — un champ non modifiable via l'API standard.
- ORA-20124 NULLVALUE — un champ obligatoire vide… parfois parce qu'une ligne liée n'est pas encore passée.
- SE_UNAUTHORIZED — la projection du job non accordée à l'exécutant : un problème de permissions de migration .
Pour la gestion des imports/exports, voir aussi la page Import / Export Excel IFS page.
Valider les règles métier avant de charger
ORA-20110 récompense ceux qui valident avant de charger : valeurs stockées vs affichées, paramétrage présent, ordre de traitement. ERP Control intègre cette discipline : les données passent par l'API OData d'IFS — donc par les mêmes validations métier que l'écran — avec un retour d'erreur ligne à ligne lisible, en no-code, avant d'engager le volume. Et le contrôle de qualité de données en amont réduit les allers-retours sur vos environnements CFG · UAT · TRN · PROD.
Découvrez comment ERP Control simplifie les migrations IFS Cloud — voir le module migrationFait partie de notre guide pilier :
Migration de données IFS Cloud — le guide complet 2026 Migration de données IFS Cloud — le guide complet 2026Fait partie de notre guide pilier :
FAQ
ORA-20110 a-t-il une cause unique ?
Non — c'est le code générique des règles métier violées. La cause précise est dans l'étiquette (CONWINPROBERR, INVVOUTYPE2, PROGNOTEXIST…). Deux grandes familles : donnée invalide, ou paramétrage manquant.
Ma valeur est correcte à l'écran, pourquoi le job la refuse ?
Vérifiez la valeur stockée : l'écran affiche souvent une conversion (pourcentage, libellé traduit). Le job, lui, écrit la valeur base — ex. Win Probability 100 % = 1, pas 100.
L'erreur survient en migration mais pas en saisie manuelle. Pourquoi ?
Le job ne transmet pas tout ce que l'écran envoie implicitement (site, société, valeurs par défaut). Cherchez le champ de contexte manquant, ou l'ordre de chargement (Order By).
Sources
Cas réels issus de la communauté IFS (solutions validées sur les threads) :
- Discussion IFS Community — migration de contrats de vente (2026)
- Discussion IFS Community — transfert d'écritures de stock et séries de vouchers (2026)
- Discussion IFS Community — migration de traductions Basic Data (2024-2025)
- Discussion IFS Community — en-têtes et lignes de commande dans un même job (2025)