Skip to Content

ORA-01400 "cannot insert NULL into ROWKEY": Migrating IFS Custom Fields Without Breakage (the OBJID vs OBJID_ Trap)

June 15, 2026 by
ORA-01400 "cannot insert NULL into ROWKEY": Migrating IFS Custom Fields Without Breakage (the OBJID vs OBJID_ Trap)
Quick fix: ORA-01400: cannot insert NULL into ("IFSAPP"."…_CFT"."ROWKEY") when migrating custom fields means the Cf_New__ method isn't receiving the parent record's identifier. In Method List Attribute, replace OBJID@<seq> with OBJID_@<seq> (with the underscore): that's the parameter name in the New__/Modify__ procedures. The custom field insert goes through.

ORA-01400 cannot insert NULL into ROWKEY in IFS migration: the OBJID vs OBJID_ trap for custom fields — ERP Control

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!"

ORA-01400 diagram: Cf_New__ must receive the parent OBJID via OBJID_@seq (parameter of the New__ procedures); with OBJID@seq the reference is empty and the ROWKEY is NULL

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:

ORA-20114: FND_MODIFIED in IFS Migration — "record has already been changed" and the Forgotten OBJVERSION Field