Mystery of Siebel EIM Merge Process Explained

A merge process deletes one or more existing rows from the base table and ensures that intersecting table rows are adjusted to refer to the remaining rows. Some process parameters like TYPE, BATCH and TABLE are similar to that in case of the above mentioned processes. Upon completion of the merge process, the some row survives and the remaining rows are deleted.

For surviving records, the IF_ROW_MERGE_ID column in the EIM table is set to NULL. For rows to be merged (and subsequently deleted), this column is set to the value of the base table ROW_ID where this row will be merged. All child and intersection table rows that previously pointed to ROW_IDs of the deleted record now point to the merged (survivor) record.

For deleted rows, EIM sets T_MERGED_ROW_ID to the ROW_ID of the row that was merged into (the surviving row) and T_DELETED_ROW_ID to the ROW_ID of the deleted base table row.

UPDATE ROWS: This parameter is necessarily to be set to TRUE in case of Merge process. It specifies whether the foreign key (or keys), which references the merged rows, in the named table need to be adjusted. Valid values are TRUE (the default) and FALSE.

[Merge Accounts]
TYPE = MERGE
BATCH = 1
TABLE = EIM_ACCOUNT
UPDATE ROWS = TRUE

To set the value to FALSE, the table name on which the parameter setting will act should be mentioned.

[Merge Accounts]
TYPE = MERGE
BATCH = 1
TABLE = EIM_ACCOUNT
UPDATE ROWS = S_ADDR_PER, FALSE


EIM can only be used to merge rows from target base tables and not secondary base tables. For example, EIM_ASSET can only be used to merge rows in target base table S_ASSET and not secondary base table S_ASSET_CON.

Tags