Correction rapide :ORA-01400: cannot insert NULL into ("IFSAPP"."…_CFT"."ROWKEY")en migrant des custom fields signifie que la méthodeCf_New__ne reçoit pas l'identifiant de l'enregistrement parent. Dans Method List Attribute, remplacezOBJID@<seq>parOBJID_@<seq>(avec underscore) : c'est le nom du paramètre dans les procéduresNew__/Modify__. L'insert du custom field passe.
Vous construisez un job de migration multi-méthodes dans IFS : création de l'objet (commande d'achat, article…), puis alimentation de ses custom fields via …CFP.Cf_New__. La première méthode CF fonctionne. La deuxième renvoie, ligne après ligne :
ORA-01400 : cannot insert NULL into ("IFSAPP"."RETWHO_PO_BOXES_CFT"."ROWKEY")
Les deux méthodes semblent configurées exactement pareil. Alors pourquoi l'une passe et l'autre pas ?
Le symptôme
L'erreur survient à l'exécution d'un job qui enchaîne plusieurs méthodes (New__, Cf_New__) — typiquement : créer un objet, créer ses lignes ou onglets custom, puis insérer les valeurs de custom fields (CFV/CFT). La méthode Cf_New__ échoue avec cannot insert NULL into …_CFT.ROWKEY : IFS ne sait pas à quel enregistrement parent rattacher la valeur du custom field.
La cause
Pour rattacher un custom field à son enregistrement, Cf_New__ a besoin de l'OBJID du parent, récupéré depuis une méthode précédente du job (la syntaxe @10, @30… référence l'Execute Seq de cette méthode).
Le piège : la colonne OBJID n'existe pas dans la Method List Attribute des vues (PURCHASE_ORDER, RETWHO_PO_BOXES…). Ce qu'il faut référencer, c'est le paramètre de sortie des procédures New__/Modify__ — et il s'appelle OBJID_, avec un underscore final. Écrire OBJID@30 au lieu de OBJID_@30 → la référence ne résout rien → Cf_New__ reçoit NULL → ORA-01400 sur le ROWKEY.
Solution validée sur le cas réel de la communauté IFS (job de lecture de commandes d'achat avec CF sur deux onglets custom) : « Instead of using OBJID@30 use OBJID_@30 as fixed value in the method list attribute screen. » Réponse de l'auteur : « Genius! That made it work! »
Comment corriger
- Ouvrez le job, onglet Method List, repérez la méthode
…CFP.Cf_New__en échec. - Ouvrez sa Method List Attribute.
- Repérez la ligne qui passe l'identifiant du parent :
OBJID@<seq>(où<seq>= l'Execute Seq de la méthode qui crée le parent). - Remplacez-la par
OBJID_@<seq>— underscore avant le@. - Relancez : le custom field s'insère avec son ROWKEY correctement renseigné.
Référence officielle : la doc IFS (Data Migration in Custom — Custom Fields) documente ce mécanisme : l'OBJID se récupère via les paramètres des procédures New__/Modify__, d'où le nom OBJID_.
Pourquoi « la première méthode CF marchait »
Dans le cas réel, le premier Cf_New__ (onglet « Retail info » de l'en-tête) référençait la méthode 10 et fonctionnait ; le second (lignes « box ») référençait la méthode 30 et échouait. Si votre premier CF passe avec OBJID@10, ne concluez pas que la syntaxe est bonne : selon la version et le contexte (1 ligne vs n lignes générées), la résolution peut réussir par accident. OBJID_ est la forme documentée — utilisez-la partout.
Comment l'éviter
- Dans tout job multi-méthodes avec custom fields : passez les identifiants parents en
OBJID_@seq, systématiquement. - Conditionnez l'exécution du
Cf_New__à la présence d'une valeur (champ « must have value ») pour ne pas créer des CF vides. - Testez chaque méthode du job isolément sur une ligne avant d'enchaîner les 30 méthodes.
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-02291 « parent key not found » — l'autre erreur des onglets custom : une référence d'entité dont il faut récupérer l'objkey.
- 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).
- 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.
Migrer les personnalisations sans la tuyauterie
Ce cas le montre : migrer des custom fields via les jobs IFS exige de connaître la tuyauterie interne (Cf_New__, OBJID_, Execute Seq, CFV/CFT). C'est précisément le terrain du module CRIM d'ERP Control : la migration des personnalisations IFS (custom fields, custom tabs) entre environnements, en no-code — sans assembler à la main des jobs de 30 méthodes. Cohérent sur vos environnements CFG · UAT · TRN · PROD.
Découvrez comment ERP Control migre vos personnalisations IFS — voir le module CRIMFait 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
Quelle différence entre OBJID et OBJID_ ?
OBJID est la colonne des vues IFS ; elle n'apparaît pas dans la Method List Attribute. OBJID_ (avec underscore) est le paramètre des procédures New__/Modify__ — c'est lui qu'on référence avec @seq pour récupérer l'identifiant créé par une méthode précédente du job.
Pourquoi l'erreur parle de ROWKEY et pas d'OBJID ?
Le ROWKEY est la colonne technique NOT NULL de la table custom (…_CFT). Quand Cf_New__ ne reçoit pas l'OBJID du parent, il ne peut pas générer le ROWKEY → Oracle bloque l'insert avec ORA-01400.
Ça s'applique aussi à IFS Cloud, ou seulement APPS9/10 ?
Le mécanisme OBJID_ est documenté dans les TechDocs IFS Cloud actuels (Data Migration in Custom — Custom Fields). Le cas réel était en APPS9, la doc de référence est 25R2 : même principe.
Sources
Cas réel issu de la communauté IFS (solution validée sur le thread) + documentation officielle :