You are here

Siebel EIM

Component request parameters for running an EIM process

The component request parameters for running an EIM process are

1. Batch Number:  This parameter is used for identifying the rows to be processed by the EIM process. Value 0 specifies the EIM process to use the batch number as specified in the EIM configuration file.


2. Configuration file: This parameter names the configuration file to be used by the EIM process. This file should be placed in the ADMIN subdirectory of the Siebel server.

3. Error Flags, SQL Trace Flags and Trace Flags: These parameters are used to specify whether logging of Error, SQL Statements and other EIM operations would be done in detail or in brief. A detailed discussion on the settings of these flags, and their effect on EIM performance can be found in the Error Handling Section of this guide.

Running the Siebel EIM Process

The EIM Process consists of executing the following sequence of steps:

1.Populate the columns in the Interface/ EIM table that are required to load the Siebel base
2.Write/Edit the EIM Configuration (IFB) File to define the EIM Process to perform
3.Submit the EIM as a Siebel Server Batch component task

Running the EIM: The EIM Process can be run once the EIM Tables have been prepared, i.e. suitably populated, and the EIM configuration file has been accordingly written. The EIM process can be initiated by running a server task for the Enterprise Integration Manager component. On each pass, EIM processes one interface table and performs a particular action (IMPORT, DELETE, EXPORT, MERGE) on all rows in that table for that batch.


There are two methods for running an EIM process:

1.Running an EIM Process Using the Graphical User Interface (GUI)
2.Running an EIM Process Using the Command-Line Interface

Note: Transaction will be logged during EIM to synchronize mobile clients. During initial data loads the Transaction Logging parameter should be set to FALSE in the System Preferences settings under Application Administration, in order reduce transaction activity to the Siebel docking tables. Once the initial loads are complete it can be set back to TRUE if there are Siebel Mobile Web Clients.

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.

Siebel EIM Delete Process Parameter Reference

Some process parameters like TYPE, BATCH, and TABLE are similar to an Import process.

DELETE ROWS: For Delete process the TYPE parameter should be defined as TYPE = DELETE. As a result the DELETE ROWS parameter will be automatically set to TRUE. This parameter can prevent deletions from one table while allowing them in others. For example, the following parameter prevents deletion of rows from the S_ADDR_PER table:

DELETE ROWS = S_ADDR_PER, FALSE


UPDATE ROWS: This parameter specifies if foreign key references can be updated. The default is UPDATE ROWS = TRUE, which affects all tables.

The UPDATE ROWS parameter also prevents updates in one table while allowing them in others. If this parameter is set to FALSE, EIM does not update rows in the specified base table. If you need to specify multiple tables, use one UPDATE ROWS statement for each table.

UPDATE ROWS = S_CONTACT, FALSE
UPDATE ROWS = S_ADDR_PER, FALSE


DELETE ALL ROWS: It will delete all rows in the named base table including any seed data if it is set to TRUE. The default value is FALSE.

[Delete Accounts]
TYPE = DELETE
BATCH = 200
TABLE = EIM_ACCOUNT
DELETE ALL ROWS = TRUE


CLEAR INTERFACE TABLE: Valid values are TRUE and FALSE. If it is set to TRUE, the existing rows in the interface table for a given batch number will be deleted. The default setting of this parameter depends on the DELETE EXACT parameter setting. The CLEAR INTERFACE TABLE default is TRUE if DELETE EXACT is set to FALSE and vice versa. 


CASCADE DELETE ONLY: (Default = FALSE). Set this parameter to TRUE to delete child records with nullable foreign keys when the parent record is deleted. If FALSE, then when EIM deletes a parent record, it sets the foreign keys of the child records to NULL.

Sometimes cascade delete takes place during delete process even if it is not mentioned specifically in the .ifb file. When a foreign key column that references the deleted record is a required one, the record with the foreign key is deleted. Otherwise, the foreign key column is cleared.

EIM deletion of a parent row causes cascade deletion of child rows only if the foreign key column in the child table is a mandatory column. Otherwise a cascade clear is performed.


DELETE EXACT: This parameter specifies the base table rows to delete by using user key values specified in the interface table. It is recommended to use the DELETE EXACT parameter to delete non-target base tables that contain user keys only. By default, DELETE EXACT = FALSE. If DELETE EXACT is set to TRUE, the ONLY BASE TABLES parameter in conjunction with this parameter needs to be mentioned to identify the base tables. It should be ensured that any columns that are not part of the user key are NULL in the interface table.

TYPE = DELETE
BATCH NUMBER = 100
TABLE = EIM_ACCOUNT
ONLY BASE TABLES = S_ORG_PROD
DELETE EXACT=TRUE


DELETE MATCHES: This parameter is used for filtering or more precisely to choose selective base table rows to be deleted. The value is in two parts: the Siebel interface table name and the filter expression that goes against the target base table. An example would be:


DELETE MATCHES = S_ORG_EXT, (LAST_UPD > ‘2004-07-15’ AND LAST_UPD < ‘2004-07-17’)

By default, DELETE MATCHES expressions are not used.

DELETESKIPPRIMARY: This is a special parameter that has been included Siebel 7.x onwards, and is set to either TRUE or FALSE, with TRUE being the default value. The default value results in EIM not performing a cascade update on the primary child column. Setting the parameter to FALSE indicates that EIM will perform the cascade update. Setting DeleteSkipPrimary to FALSE may affect performance, as additional queries will be generated by EIM.

For example,

 TYPE = DELETE
 BATCH = 20
 TABLE = EIM_FN_ASSET1
 ONLY BASE TABLES = S_ASSET_POSTN
 DELETE EXACT = TRUE

In the above process, EIM will delete records from S_ASSET_POSTN but the PR_POSTN_ID column in S_ASSET will not be adjusted to reflect the changed relationship. That is, PR_POSTN_ID may still contain the ROW_ID of the old S_POSTN record rather than ‘No Match Row Id’ as is desired.


The PR_POSTN_ID field in S_ASSET can be reset to reflect the change, by adding the following line in the process:

DELETESKIPPRIMARY = FALSE

Siebel EIM Export Parameter Process Reference

Some process parameters like TYPE, BATCH, and TABLE are similar to an Import process.

EXPORT ALL ROWS: It implies that all rows in the target base table and data from the related child tables in a specific batch section are to be exported. Valid values are TRUE and FALSE (the default). When it is set to TRUE, the EXPORT MATCHES parameter is ignored, as it is selective export process.

[Export Accounts]
TYPE = EXPORT
BATCH = 2
TABLE = EIM_ACCOUNT
EXPORT ALL ROWS = TRUE


EXPORT MATCHES: This is used for filtering the base table rows to be exported. The value is in two parts: the Siebel interface table name and the filter expression that goes against the target base table.

[Export Accounts]
TYPE = EXPORT
BATCH = 2
TABLE = EIM_ACCOUNT
EXPORT MATCHES = S_ORG_EXT, (LAST_UPD > ‘2003-01-01’)

Reference to Siebel EIM Import Parameters

TYPE: This parameter specifies the type of process being defined (IMPORT, EXPORT, DELETE, MERGE, or SHELL). A shell process uses the INCLUDE statement to invoke a sequence of processes in a single run.


BATCH: Specifies a required batch number for this process. This number is predefined as the user sets this number at the time of EIM table load. It is used to identify the set of rows to load from the interface tables for this specific process. It corresponds to the value in the interface table column IF_ROW_BATCH_NUM and must be a positive integer between 0 and 999999999999999 (up to 15 digits, no commas). To specify multiple batches, use a range or list of batch numbers.
BATCH=100-120

To list batches, use the comma-delimited format as shown in this example:
BATCH=100,103,104

It is recommended to use batch ranges (BATCH = x–y). This allows the user to run with smaller batch sizes and avoid the startup overhead on each batch. The maximum number of batches that one can run in an EIM process is 1,000.


TABLE: Specifies the name of an EIM table used in this process. From performance aspect the selection of EIM table is vital. The things that should be kept in mind while selecting the EIM table are discussed earlier.

TYPE = IMPORT
BATCH = 10000-10100
TABLE = EIM_ACCOUNT
 

ONLY BASE TABLE: Specifies and restricts selected base tables for the import process. Use commas to separate table names. Target table for interface tables must be included. This parameter is used to improve performance when loading some specific base tables. For example:

ONLY BASE TABLES = S_PARTY,S_ORG_EXT,S_ACCNT_POSTN,S_ORG_BU


IGNORE BASE TABLES: Specifies base tables to be ignored by the import process. Use commas to separate table names. Target tables for interface tables cannot be ignored. The default is to not ignore any base tables. Use this parameter to improve performance when loading all but a few tables.


ONLY BASE COLUMNS: Specifies and restricts base table columns for the import process. Use commas to separate column names, which can be qualified with base table names. Include all user key columns and required columns. Use this parameter to improve performance when updating many rows but few columns. The default is to process all interface columns mapped to the base table.

ONLY BASE COLUMNS= S_ORG_EXT.NAME, S_ORG_EXT.LOC, S_ORG_EXT.BU_ID


IGNORE BASE COLUMNS: Specifies base table columns to be ignored by the import process. This is also written with the same manner as ONLY BASE COLUMN. Required columns and user key columns cannot be ignored. Use this parameter to improve performance when loading all but a few columns. The default is to not ignore any interface columns.

IGNORE BASE COLUMNS = S_PROD_INT_BU.PR_FULFL_INVLOC_ID,S_PROD_INT_BU.PR_PROD_LN_ID


DEFAULT COLUMN: Specifies a default value for an interface table column. The syntax is COLUMN NAME, VALUE, as in the following example:

DEFAULT COLUMN = CURCY_CD, "USD"

The given value will be used only if the column is NULL in the interface table.


FIXED COLUMN: Specifies the value for a column from the interface table. The syntax is the same as for DEFAULT COLUMN. The given value will be loaded into the Siebel base table, overriding the value in the interface table column.

FIXED COLUMN = PARTY_TYPE_CD, "Organization"


INSERT ROWS: Specifying INSERT ROWS as FALSE indicates that rows from EIM table are not to be inserted into the specified Siebel base table. The default is INSERT ROWS = TRUE. To change this for all tables, use this syntax:

INSERT ROWS = FALSE

For a Siebel base table, the setting is applied when data is imported from any interface table as in the following example:

INSERT ROWS = S_ORG_BU, FALSE
INSERT ROWS = S_ACCNT_POSTN, FALSE

If the named table is an interface table, as in the example below, the setting applies to all Siebel base tables imported from this interface table.

INSERT ROWS = EIM_ACCOUNT, FALSE


UPDATE ROWS: This parameter specifies if foreign key references can be updated. The default value is UPDATE ROWS = TRUE which affects all tables. To change only for specific table(s), specify the table name as follows:

UPDATE ROWS = S_CONTACT, FALSE

If it is required to set the parameter as FALSE for most tables, and TRUE for only a few, use this method:

UPDATE ROWS = FALSE
UPDATE ROWS = S_CONTACT, TRUE
UPDATE ROWS = S_ADD_ORG, TRUE

By default, when importing information, EIM performs both inserts and updates based on the content of the batch set.

If the named table is an interface table, as in the example below, the setting applies to all Siebel base tables imported from this interface table.

UPDATE ROWS = EIM_ACCOUNT, FALSE

 By default, INSERT ROWS and UPDATE ROWS are TRUE

 Note: If neither INSERT ROWS nor UPDATE ROWS are set to FALSE, EIM has to perform additional processing (via SQL statements) to determine whether to update or insert. Basically when importing data via EIM, EIM will first look up user key columns in a base table. If it finds the matching user keys, EIM will continue to compare all non-user key columns in order to determine whether it needs to update the record or reject it as duplicate.1


MISC SQL: This parameter is used to set specific explicit or implicit primaries. “Explicit” is when it is required to set specific values as primaries. “Implicit” is when any of a group of values is acceptable. For example, you are importing one account with nine addresses. If any of the addresses is acceptable as being the primary, then set primary to implicit. EIM then selects one of the addresses as primary. If a specific address should be the primary, then set primary to explicit and indicate the primary account by setting its flag column.
For example, set EIM_ACCOUNT.ACC_PR_ADDR to “Y” for explicit Primary. For example,

MISC SQL = EXPR_S_ORG_EXT_PR_ADDR_ID

MISC SQL is intended for initial data loading only (with DOCKING TRANSACTIONS = FALSE).
Sometimes the intention is to apply explicit primary when specified and implicit primary otherwise. In that case, we mention the following in the ifb file:

MISC SQL = EXPR_S_ORG_EXT_PR_ADDR_ID, IMPR_ S_ORG_EXT_PR_ADDR_ID


USE INDEX HINTS: The default value for this parameter is TRUE. If it is set to TRUE, EIM generates hints during processing which helps in achieving performance gain. It is recommended for EIM processes to be tested with both TRUE and FALSE settings in order to determine which provides the better performance for each of the respective EIM job. 

How is IFB File Structured

An IFB file consists of two main sections namely:

Header Section: The .ifb file begins with a header section to specify global parameters that apply to all process sections.

Process Section: Following the header section, there must be at least one process section with its associated parameters. Some process section parameters are generic for all EIM processes ‘Type’, ‘Process Name’, ‘Batch Number’, ‘EIM Table Selection’ etc.

Header Section

The first nonblank, uncommented line of the header section of any .ifb file must contain the exact information:
 
[Siebel Interface Manager]

The other parameters that are common to all process types (Import, Export, Delete & Merge) in the header section are:


PROCESS: Identifies the specific process to run during this invocation of EIM. The named process must be defined in the process section of this file.


CONNECT: The ODBC source name for connecting to the database server.


USERNAME: Specifies the database logon name for this process. This parameter is inherited for the EIM component from the Gateway server, so it should already be set. However, you can specify this in the .ifb file if you are running EIM from the Siebel application (not the command line) and if you have not already set this value in the EIM Server Component parameters.


PASSWORD: Specifies the database password for this process. This parameter is inherited for the EIM component from the Gateway server, so it should already be set. However, you can specify this in the .ifb file if you are running EIM from the Siebel application (not the command line) and if you have not already set this value in the EIM Server Component parameters.

Process Section

Unlike header section parameters, the process section parameters are not generic for all the processes (Import, Export, Delete & Merge). But some parameters are common for all.

The first nonblank, uncommented line of each process section is a bracketed string ([]) that specifies the name of the process. This is the name used in the PROCESS parameter in the header section.

What is IFB file?

An IFB file is nothing but a EIM configuration file which is an ASCII or Unicode (Binary) text file of extension type .ifb. IFB stands for Interface Batch. It resides in the Admin directory of Siebel Server and allows the database administrator to define the type of EIM process like Import, Export, Merge and Delete to be performed.

Why IFB is needed?

An IFB file contains specifications for batch jobs for the data element to be operated based on the process type mentioned in it.

What is Siebel EIM Enterprise Integration Manager

The Siebel Enterprise Integration Manager (EIM) manages the bi-directional exchange of data between the Siebel databases and other corporate databases. This exchange of information is accomplished through intermediary tables called EIM tables. The EIM tables act as a staging area between the Siebel application database and other databases. In order to perform import, export, update or delete of data in Siebel base tables, Siebel Systems recommends the use of EIM. Siebel Systems does not support the use of native SQL for loading data into the base tables.

EIM reads a special configuration file that specifies the EIM process to perform import, merge, delete, or export with the appropriate parameters. The EIM configuration file (the default file is default.ifb) is an ASCII text file of extension type .ifb that resides in the admin subdirectory under the Siebel server directory. Before running an EIM process, the EIM configuration file must be edited to define the processes that EIM will perform.

Update user key Column for Product Entity, through EIM

Normally, User key updationare not possible through EIM except for few entities, of which Product is one. Here is a useful information to update one of the user key columns for Product (Product NAME for instance) through EIM.

 Solution:  

We can update Product name through EIM_PROD_INT_UK. EIM_PROD_INT_UK will enable us update a Product’s name from “Product 1” to “Product 2”.  

 1.  For a Product NAME, BU_ID, VENDR_OU_ID are part of user keys. However, while updating Product Name for instance, through EIM_PROD_INT_UK, we use another column called INTEGRATION_ID, which will be used as secondary user key to identify the record uniquely. 

2.  Normally the Integration_Id column will be null. Updating the Product user key will include a step which will include a step to update the INTEGRATION_ID column with a unique value that helps in identifying the record uniquely and enable UK updates. We can prepare the record for update by updating the integration_id with the record’s row_id and use it for the EIM updation.

3.  We need to populate the Integration id column value from base table to the EIM_PROD_INT_UK. INTEGRATION_ID along with other attributes required for the eim process to update the record in the Base table.  The new Name, for e.g, should be populated in the EIM_PROD_INT_UK.PROD_NAME column so that it will update the existing value in S_PROD_INT.NAME with the new value.

Here is a sample IFB file for such update which will change the Product Name both in S_PROD_INT and S_PROD_INT_BU

[Siebel Interface Manager]

                PROCESS              =UPDATE_PROD_INT
 
[UPDATE_PROD_INT]
                TYPE      = IMPORT
                TABLE    = EIM_PROD_INT_UK
                BATCH  = 55508
 
DEFAULT COLUMN = ACTIVE_FLG, "Y"
DEFAULT COLUMN = PROD_BU, "Default Organization"
                ONLY BASE TABLES = S_PROD_INT, S_PROD_INT_BU
                INSERT ROWS = S_PROD_INT, FALSE
                INSERT ROWS = S_PROD_INT_BU, FALSE             

Pages

Subscribe to Siebel EIM