You are on page 1of 38

Objectives

After completing this module you will be able to:

- Describe the basic concepts of EIM


- Understand Data Model
- Write Configuration Files (IFB)
- Execute EIM task and analyze the result
Why you need to know

- To successfully import external data into the Siebel


database

Enterprise Integration Manager (EIM)


Server task that manages exchange of data between external data in
interface tables and user data in base tables
S_ORG_EXT
EIM_ACCOUNT

Siebel
Server

EIM

S_ADDR_ORG

External
data

Import
, Exports,
Deletes and Merges large amounts of
Why
EIM
?
data
Siebel Systems does not support using native SQL to

load data directly into Siebel Base tables


Maintains Referential Integrity, by resolving ROW_IDs

for base tables.

EIM Functions
Import data into Siebel base tables
Export Data from Siebel base tables
Delete Data from Siebel base tables
Merge Data in Siebel base tables

Different Types of Tables Involved


in EIM
Interface Tables (EIM_ )
Base Tables

a). S_ tables
b). CX_ tables (Custom Extension Tables)

Interface Tables (EIM tables)


Interface tables store external data inside the Siebel database
Staging area for data to be imported, updated, or merged into base tables

via EIM
S_ORG_EXT
Staging area for data exported by EIM
EIM_ACCOUNT
Staging area for data
to be deleted in the base table using EIMs delete
function

S_ADDR_ORG

External
data

Interface Table
Base Tables

EIM table Mandatory Columns


ROW_ID

- Should be unique in one table.


IF_ROW_STAT

- Usually used status before EIM task is FOR_IMPORT. But technically


it can be populated with anything (varchar, 30) before running the EIM
task. EIM identifies records to be processed based on Batch Number
and not based on status.
- On starting EIM task, EIM sets it first to status IN_PROGRESS.
- Based on the success or failure of the EIM process, EIM sets different
statuses. More info about different statuses is available in Siebel
bookshelf
IF_ROW_BATCH_NUM

- Each record should have a batch number based on which it is taken


up for EIM processing.
- Optimum number of records in one batch is 5000.

Mandatory Columns- continued.


IF_ROW_STAT_NUM

- can be populated with any number before EIM task


- After EIM, if the record is successfully processed it
will be set to 0.
- If EIM fails, this column will be set to the EIM pass at
which it failed.

Base Table ROW_ID, User Keys,


Foreign Keys
ROW_ID of a record is unique in a base table.

- Note :a). A UI created records ROW_ID has format # - ### and an EIM
created records ROW_ID has format # - ## - ###
b). ROW_ID can be same for two records in two different tables. For
ex:- S_USER and S_CONTACT.
User Keys of a base table

- One column or a combination of columns which should be unique for


the records of a particular base table.
- Identifies records of a base table.
- ROW_ID is not part of this

To find User key columns from


Tools
User Key

List of User Keys columns


for a table S_CONTACT

Base table - Foreign Key Column

Foreign key column (stores the


ROW_ID of S_USER)

Column in one base table which stores ROW_ID of a

record in another table.

EIM Table Mapping


To find EIM table for a Base table.

To Create EIM table Mapping

EIM Column Mappings


Attribute Mapping
Each Base Column can have corresponding EIM Column
exists in EIM Table (one-one mapping).
Foreign Key Mapping
Each Base column should have a combination of EIM
Columns exists in EIM Table.
Each and every foreign key column should have a T_ columns
exists in EIM table. These T_ columns are required for
internal processing.
After the EIM Process, these T_ columns will be populated
with the ROW_ID of the Base table
Explicit Primary Mapping
We use this, when we require to map any one of the values
from the list of values. We can use this incase of setting
Primary values. (like primary position)

Attribute Mapping
Non foreign key columns
One to one mapping
Attribute Mapping

Attribute Mapping (oneone mapping

Attribute Mapping Continued


Example
Lets consider EIM_CONTACT table with following values
ROW_ID CON_FST_NAME
1000
SURAIZ
1001
JOSEPH
1002
PRAJITH

CON_LAST_NAME
AHAMED
THOMAS
PRAHASAN

EIM (Attribute) mapping can exists as


S_CONTACT.LAST_NAME = EIM_CONTACT.CON_LAST_NAME
S_CONTACT.FST_NAME = EIM_CONTACT.CON_FST_NAME

After EIM Process, values in S_CONTACT as


ROW_ID
1-RVS-01
1-RVS-02
1-RVS-03

FST_NAME
SURAIZ
JOSEPH
PRAJITH

LAST_NAME
AHAMED
THOMAS
PRAHASAN

The values in the EIM columns gets populated into its

corresponding base column.

Foreign Key Mapping


Foreign Key Mapping

Foreign Key column

Foreign Key Table

Temporary T_ Columns

Foreign Key Mapping Continued


Base table column gets resolved from more than one

EIM table columns.

Combination of EIM columns to


resolve EMP_ID

Foreign Key Mapping Continued

User Key attributes corresponding to


the EIM columns

Foreign Key Mapping Continued

User Key column in S_USER

User Key combinations in


S_USER table

Foreign Key Mapping Continued


Foreign key will not get resolved if the corresponding columns are not populated
correctly.
But EIM process can show success status even if one foreign key column is not resolved.
Depends on whether the column is defined as required at the table level or not.
EIM record status will be PARTIALLY_IMPORTED or FOREIGN_KEY if a required
foreign key column is not resolved.

Example:

In S_USER Table, let say we have two records with the following values
ROW_ID
LOGIN
1-FXY-01
SURAIZ
1-FXY-02
JOTHO

In EIM_CONTACT table, we have two records with following values


ROW_ID
CON_EMP_LOGIN
T_CONTACT_EMP_ID
1000 SURAIZA
NULL
1001 JOTHO
NULL

EMP_ID will resolve only for the second record since user key matches and will not resolve for the first record.

S_USER.LOGIN = EIM_CONTACT.CON_EMP_LOGIN

After EIM Process the T_ column T_CONTACT_EMP_ID will be populated as NULL and 1-FXY-02

In S_CONTACT, EMP_ID will be populated as


ROW_ID
EMP_ID
1-R8B-01
NULL
1-R8b-02
1-FXY-02

Explicit Primary Mapping


Primary foreign keys are used to point from a parent
S_EVT_ACT.OWNER_PER_ID

base table to a child base table.

Explicit Primary Mapping


Explicitly mentioning the
primary (flag)

Explicit Primary Mapping


Continued
Example:
Consider an Activity A1 exists in S_EVT_ACT. We need to populate the

column OWNER_PER_ID (Owner for an activity)


ROW_ID
1-S7V-01

ACTIVITY_UID
1-10LEMY

OWNER_PER_ID
NULL

Consider we have 3 employees associated to that Activity A1.


We have the values in EIM Table as
ROW_ID EMP_EMP_LOGIN
1000
JOTHO
1001
PRAKOP
1002
ANIL

ACT_ACTIVITY_UID

EMP_OWNER_PER

1-10LEMY

1-10LEMY
1-10LEMY

N
N

Now S_ACT_EMP Table can have three records with values.


ROW_ID EMP_ID

ACTIVITY_ID

1-D4V-01 1-FXY-02
1-D4V-02 1-FXY-03
1-D4V-03 1-FXY-04

1-S7V-01
1-S7V-01
1-S7V-01

Now only one employee should be an owner for that activity. Value in

S_EVT_ACT table is as follows:


ROW_ID
1-S7V-01

ACTIVITY_UID
1-10LEMY

OWNER_PER_ID
1-FXY-02

Populating Data into EIM Table DTS


DTS Data Transformation Service
DTS is used to Populate the data from source file (text, excel, Siebel database etc) into EIM
Tables.
It is a inbuilt functionality with MS SQL under Enterprise Manager.

Populating Data into EIM Table DTS Continued..

Ifb - Configuration File.


EIM reads a configuration file that specifies the EIM Process to perform
(Import, update, merge, delete or export)

Parameters used in ifb:


General header parameters
General Process parameters
Specific process parameters Viz., Import, Export, Merge, Delete or Export

General Header Parameters:


CONNECT ODBC Source name to connect
LOG TRANSACTIONS TO FILE TRUE (Default)
PASSWORD Database password for the process to be run
PROCESS Identifies the process which EIM invokes
[Siebel Interface Manager] This name should be mentioned in the header
TABLEOWNER Database logon name that owns the tables
USERNAME Database LOGON Name for the process to be run

Ifb - Configuration File


Continued
General Process parameters :
BATCH Required. Specifies the Batch number for the process to be run.
COMMIT EACH PASS Optional. Commit after each EIM Process. (TRUE)
COMMIT EACH TABLE Optional. Commit after each base table. (TRUE)
IGNORE BASE TABLES Optional. Do not process these tables.
LOG TRANSACTIONS Optional. EIM Logs the changes when the mobile client
synchronizes.
TABLE Required. Specifies the name of the EIM Table.
TYPE Required. This specifies the type of process being defined.

Points to Remember:
Lines that begin with a semicolon (;) are comment lines and are ignored.
Multiple lines are distinguished by back slash (\). This denotes the continuation.
When the back slash is followed by a space, EIM interprets the space character as
escaped, and the new line character then terminates the parameter definition. This can
generate an error message indicating the parameter definition is incomplete.

Ifb - Configuration File


Continued
Comments

Example of an IFB File:


;Description: Interface File to Import Quote Contact Relationship
;Author: Joseph
General
;Date: 8-Feb-2007

Header Parameters

[Siebel Interface Manager]


PROCESS = Import Quote Contact

General Process Parameters

[Import Quote Contact]


TYPE = IMPORT
BATCH = 81700-81799
TABLE = EIM_QUOTE
ONLY BASE TABLES = S_DOC_QUOTE, CX_QUOTE_CON
INSERT ROWS = S_DOC_QUOTE, FALSE
UPDATE ROWS = S_DOC_QUOTE, FALSE

EIM Performance Optimization


New Line Continuation

INSERT ROWS = CX_QUOTE_CON, TRUE


UPDATE ROWS = CX_QUOTE_CON, FALSE

ONLY BASE COLUMNS = S_DOC_QUOTE.QUOTE_NUM, \


S_DOC_QUOTE.REV_NUM, \
S_DOC_QUOTE.BU_ID, \
CX_QUOTE_CON.X_CONTACT_ID, \
CX_QUOTE_CON.X_QUOTE_ID, \
CX_QUOTE_CON.TYPE, \
CX_QUOTE_CON.X_ROLE_CD

Executing an EIM Task


Steps in running an EIM Process

Preparing to Run an EIM Process


Running an EIM Process
Viewing the EIM Log file
Optimizing EIM Performance

Preparing to Run an EIM Process :


Identified the data for EIM Process
Prepared the related EIM Tables
Modified the EIM Configuration file accordingly

Running an EIM Process :


Running using Graphical User Interface (GUI)

1. Navigate to Administration Server Management > Jobs > New Job


2. Choose the Enterprise Integration Manager Component
3. Mentioning Job Parameters List
4. Start the EIM Process. First it will be in Queued state and then moved to Active
and then success upon successful completion.

Executing an EIM Task


Continued
Running an EIM Process using Command Line Interface (CLI)
1. Start the Server Manager in the command line interface
2. Execute a start task command
Example :

srvrmgr /e ent_db /g osl241 /u SADMIN /p SADMIN /s osl241 /c


"run task for component EIM with config =
'D:\sea78\siebsrvr\ADMIN\DM\0110_EIM_PROJ_ACTIVITY_UPD.ifb',
sqlflags=8,errorflags=1,traceflags=1

Point to Remember:

EIM is a multi step process. Once the EIM process is running, do not

stop or pause the task. Otherwise, some steps may not rollback correctly.

Viewing a Log Folder :


Results of the EIM tasks can be viewed by drilling down in an EIM server task that
has completed. This is also provided in the EIM log file within the Siebel
server\log directory.

Executing an EIM Task


Continued
Sections in log file:
Startup messages This section pertains to dictionary loading, parameter loading and
the .ifb file parsing.
Run-time messages This shows the start time and end time for each process.
Row-Count summary of each process This shows the number of rows updated in each
table.

Point to Remember:
If error flags, SQL trace flags, or trace flags were included in the parameters, then EIM
log file will also contain the results of each flag.

Optimizing an EIM Process :

Limit base table and columns to be processed. Four parameters helps in optimizing the
performance are

1. only base Tables


2. ignore base tables
3. only base Columns
4. ignore base columns

Analyzing Log Folder


All errors faced during EIM execution can be understood

by analyzing the log folder.


EIM does the task of importing data step wise and each
step has a specific number or pass number.
If the EIM task fails due to any reason at a particular step,
then this pass number is saved in column
IF_ROW_STAT_NUM during EIM task .
By searching for this number in the log folder, the reason
for failure can be identified.
Log file gives a clear explanation of the failure at this pass
number, when the job parameters are set to
sqlflags=8,errorflags=1,traceflags=1.

Analyzing log folder Continued..


On navigating to the pass which caused the issue, you would find

explicit messages like the following (an example) :- Failed to resolve foreign key value. (severity 7)

It also mentions which column did not get resolved :S_ACCNT_POSTN (Position for Account)
------------POSITION_ID (Position)

On scrolling down further in the log file, it gives you the values which

were populated in the EIM table columns, which did not resolve the
proper ROW_ID
ROW_ID POSTN_BI POSTN_DIVN
POSTN_LOC POSTN_NAME
------- -------- ---------------------- --------- --------------------584297 0-R9NH Siebel Administration NULL Siebel Administrator

On Analyzing and cross checking these values with the corresponding

base table, the wrongly populated value can be found

Common Errors in EIM Tasks


Some of the common errors during EIM Process are
- Invalid Configuration (ifb) file Ifb path or ifb name would be wrong
- ignore base table/columns invalid column / table names mentioned in the ifb
- All the rows in the given batch is failed invalid batch number mentioned

Some of the common errors after EIM Process are


- PICK LIST VALUE The corresponding Pick list value will not exists in S_LST_OF_VAL
- IN PROGRESS There are more than one record with same foreign key reference
- NOT ALLOWED
1. If there is not reference exists in the Parent table when populating child value.
2. Trying to update a column, but in ifb UPDATE is set as FALSE
- PARTIALLY IMPORTED Failed to resolve the foreign key value (which are mandatory)
- DUPLICATE RECORD EXISTS It tries to update the already existing record of same values.

Reference
Siebel Enterprise Integration Manager

Administration Guide Version 7.7 Rev.A

Compiled by One Siebel

You might also like