If you intend to implement your own business logic using the OMI API, you need to pay attention to the following requirements regarding transaction control in your m_pck_omi_custom CIP code:
The m_pck_omi_custom.omi_load procedure MUST commit.
Event procedures ARE NOT ALLOWED to commit. Otherwise, a lot of error conditions that also seriously affect the OMI main program processing can occur. If you need any kind of sub transaction handling capabilities in your code, you may only do so by either using intermediate savepoints, or by implementing autonomous transactions. However, you must also not use those savepoint identifiers that are already used internally by the OMI main program before CIP callouts are made. These identifiers are: sv_cr_tag, sv_bom_node_created, sv_bom_node_found, sv_bom_pos_created, sv_lp_pre_transfer, sv_omi_job_start, and sv_omi_job_end.
If a CIP callout results in an unhandled exception situation in your code, the OMI main program rolls the transaction back to the savepoint that it marked previously before the CIP call. The program then writes an error log entry containing the original Oracle error message that was caused by your code, commits this log transaction, and then re-raises the exception. Any such error in your code causes an unsuccessful termination of the complete OMI import job.