ORA-01400: cannot insert NULL into ("FDMEE"."TDATASEG_T"."DATAKEY")

Behind the scenes FDMEE inserts values into DATAKEY but sometimes things can get a little messed up. Fixing this issue is generally quick and simple.

ORA-01400: cannot insert NULL into ("FDMEE"."TDATASEG_T"."DATAKEY")

TL;DR; Click the Regenerate ODI Scenario button from the Import Format screen in FDMEE.

I recently ran into a issue where an open interface adapters that I had migrated from 11.1.2.3 to 11.1.2.4 was failing. Since FDMEE rarely gives much information on the nature of a why an error occurred the first step in trouble shooting generally is to open Oracle Data Integrator (ODI) and check out the Operator log. In the log I  found the cause of the failure: ORA-01400: cannot insert NULL into ("FDMEE"."TDATASEG_T"."DATAKEY"). Seems like a simple enough error message. First I decided to confirm that the column was in fact marked as Not Null in both the new and legacy environments.

ORA-01400: cannot insert NULL into ("FDMEE"."TDATASEG_T"."DATAKEY") 

Next, I looked at the ODI interfaces in both environments and found that neither the legacy or the new environment were inputting data into this column, meaning the interface appears to have been fully migrated.

The standard interface leaves DATAKEY Null.

Then, I examined the database and found that a sequence existed that should be populating this value. It seemed logical that there must be something in the background that was populating the DATAKEY column with a value from the sequence (TDATASEG_DATAKEY_S).

TDATASEG_DATAKEY_S Sequence

After a little digging, via Bing for some unknown reason, I read a few things that seemed to suggest something might be wrong with the ODI Scenario. So, I returned to the FDMEE GUI (Graphical User Interface) and located the Import Format for the desired rule. When first using the Regenerate ODI Scenario button, it failed due to an execution that were "pending".

Since these processes had finished some time ago but for whatever reason never got updated to complete or failed I had to reset the status using the Reset Status button. Finally I was able to regenerate the scenario and execute the load rule successfully.