Quick fix:ORA-01400: cannot insert NULL into ("IFSAPP"."…_CFT"."ROWKEY")when migrating custom fields means theCf_New__method isn't receiving the parent record's identifier. In Method List Attribute, replaceOBJID@<seq>withOBJID_@<seq>(with the underscore): that's the parameter name in theNew__/Modify__procedures. The custom field insert goes through.
You build a multi-method migration job in IFS: create the object (purchase order, part…), then populate its custom fields via …CFP.Cf_New__. The first CF method works. The second one returns, row after row:
ORA-01400: cannot insert NULL into ("IFSAPP"."RETWHO_PO_BOXES_CFT"."ROWKEY")
Both methods look configured exactly the same. So why does one pass and the other fail?
The symptom
The error appears when executing a job that chains several methods (New__, Cf_New__) — typically: create an object, create its lines or custom tabs, then insert custom field values (CFV/CFT). The Cf_New__ method fails with cannot insert NULL into …_CFT.ROWKEY: IFS doesn't know which parent record to attach the custom field value to.
The cause
To attach a custom field to its record, Cf_New__ needs the parent's OBJID, fetched from a previous method in the job (the @10, @30… syntax references that method's Execute Seq).
The trap: the OBJID column doesn't exist in the views' Method List Attribute (PURCHASE_ORDER, RETWHO_PO_BOXES…). What you must reference is the output parameter of the New__/Modify__ procedures — and it's called OBJID_, with a trailing underscore. Writing OBJID@30 instead of OBJID_@30 → the reference resolves to nothing → Cf_New__ receives NULL → ORA-01400 on the ROWKEY.
Solution validated on the real IFS community case (a purchase order intake job with CFs on two custom tabs): "Instead of using OBJID@30 use OBJID_@30 as fixed value in the method list attribute screen." The author's reply: "Genius! That made it work!"
How to fix it
- Open the job, Method List tab, find the failing
…CFP.Cf_New__method. - Open its Method List Attribute.
- Find the line passing the parent identifier:
OBJID@<seq>(where<seq>= the Execute Seq of the method creating the parent). - Replace it with
OBJID_@<seq>— underscore before the@. - Re-run: the custom field inserts with its ROWKEY correctly populated.
Official reference: the IFS docs (Data Migration in Custom — Custom Fields) document this mechanism: the OBJID is fetched through the parameters of the New__/Modify__ procedures, hence the OBJID_ name.
Why "the first CF method worked"
In the real case, the first Cf_New__ (header's "Retail info" tab) referenced method 10 and worked; the second (the "box" lines) referenced method 30 and failed. If your first CF passes with OBJID@10, don't conclude the syntax is fine: depending on version and context (1 row vs n generated rows), resolution can succeed by accident. OBJID_ is the documented form — use it everywhere.
How to avoid it
- In any multi-method job with custom fields: pass parent identifiers as
OBJID_@seq, systematically. - Make
Cf_New__execution conditional on a value being present ("must have value" field) so you don't create empty CFs. - Test each method of the job in isolation on one row before chaining all 30 methods.
Related IFS migration errors
The same kind of blocker shows up under other codes — all covered in our IFS Cloud data migration pillar guide:
- ORA-02291 "parent key not found" — the other custom-tab error: an entity reference whose objkey must be fetched.
- ORA-20112 FND_RECORD_EXIST — the job tries to INSERT a row that already exists (a key problem).
- ORA-20111 / FND_RECORD_NOT_EXIST — a missing contextual prerequisite (parents before children).
- SE_UNAUTHORIZED — the job's projection not granted to the executing user: a migration permissions problem.
For import/export management, see also the IFS Excel Import/Export page.
Migrate customizations without the plumbing
This case says it all: migrating custom fields through IFS jobs requires knowing the internal plumbing (Cf_New__, OBJID_, Execute Seq, CFV/CFT). That's exactly the territory of ERP Control's CRIM module: migrating IFS customizations (custom fields, custom tabs) between environments, no-code — without hand-assembling 30-method jobs. Consistent across your CFG · UAT · TRN · PROD environments.
See how ERP Control migrates your IFS customizations — check the CRIM module.
Part of our pillar guide: IFS Cloud Data Migration — the Complete 2026 Guide.
FAQ
What's the difference between OBJID and OBJID_?
OBJID is the IFS view column; it doesn't appear in the Method List Attribute. OBJID_ (with underscore) is the parameter of the New__/Modify__ procedures — that's what you reference with @seq to fetch the identifier created by a previous method in the job.
Why does the error mention ROWKEY and not OBJID?
ROWKEY is the NOT NULL technical column of the custom table (…_CFT). When Cf_New__ doesn't receive the parent OBJID, it can't generate the ROWKEY → Oracle blocks the insert with ORA-01400.
Does this apply to IFS Cloud, or only APPS9/10?
The OBJID_ mechanism is documented in the current IFS Cloud TechDocs (Data Migration in Custom — Custom Fields). The real case was on APPS9, the reference doc is 25R2: same principle.
Sources
Real case from the IFS community (solution validated on the thread) + official documentation: