Wednesday, June 25, 2014

Debugging for IF_ROW_STAT value as PARTIALLY_IMPORTED

What is IF_ROW_STAT column?

IF_ROW_STAT column in an EIM table is among the mandatory system columns that need to be populated before running the EIM job. It's purpose is to reflect the EIM row status after EIM processing. You can populate this column with any alphanumeric value not exceeding 30 characters. Commonly we initially populate this column with something like "FOR_IMPORT", "FOR_DELETE", "FOR_MERGE" for import, delete and merge operation respectively. After EIM processing i.e. when the IFB runs this value changes for each record and is replaced by the row status, whether processed successfully or not. This is the column that you should look first to know the status of records after EIM job finishes.

What does Partially imported mean in EIM?

In simple words partially imported means, the EIM processed records successfully in the target base table but failed to process data in one or more non-target base tables.

Lets take a simple example of loading Accounts through EIM_ACCOUNT table. Since account is a party type entity, the target base table for EIM_ACCOUNT is S_PARTY where as S_ORG_EXT, S_ORG_BU, S_ACCNT_POSTN etc. are non-target base tables. Now, suppose you have populated all the user key columns, required columns and other attribute columns for accounts and you IFB looks something like this:

[Siebel Interface Manager]

PROCESS = "ACCOUNT_LOAD"

[ACCOUNT_LOAD]
TYPE = SHELL
INCLUDE = "IMPORT_ACCOUNTS"
[IMPORT_ACCOUNTS]
TYPE  = IMPORT
BATCH = 1000
TABLE = EIM_ACCOUNT
ONLY BASE TABLES = S_PARTY, S_ORG_EXT, S_ACCNT_POSTN, S_ORG_BU

And you ran the IFB and IF_ROW_STAT column value turned out to be PARTIALLY_IMPORTED. Now what does this mean?

There is primarily one reason for it and that is one or more of the non-target base tables mentioned in the ONLY BASE TABLES parameter didn't get processed because of some missing/incorrect column information. One example of it could be the VIS_BU column of EIM_ACCOUNT which corresponds to the BU_ID foreign key of S_ORG_BU. Simply put forward, to associate the correct organization to the account, VIS_BU and (ACCNT_BU, LOC, NAME --> for ORG_ID of S_ORG_BU) column set should be populated with correct data. Similarly if you miss to populate the position related data in EIM_ACCOUNT (POSTN_BU, POSTN_DIVN, POSTN_LOC, POSTN_NAME) you will face the partially imported error. But if you had not mentioned the S_ORG_BU or S_ACCNT_POSTN table in ONLY BASE TABLES parameter, this error would not have had come.

Resolution:

To resolve this error, just re-populate the correct data in respective EIM columns of base table foreign key columns and run the EIM job again. In this case populate the VIS_BU column or the position columns correctly.