You are on page 1of 21

Siebel EIM Questionnaire

Q: Is it possible to update joined field? A: Underlying a 1:1 extension table's relationship with the base table and business component is a set of hidden relationships called an implicit join (also called implied join). The implicit join makes the extension table rows available on a 1:1 basis to the business component that uses the extension table. The name of the implicit join is the same name as the extension table. When a field in the business component is based on a column in the extension table, the Column property of the Field object is set to the name of the column, and the Join property is set to the name of the extension table. For example, the Industry field in the Contact business component has a Column property value of ATTRIB_48 and a Join property value of S_CONTACT_X. An implicit join is different from a join that you define as an object definition.

Implicit joins allow data to be updated in columns, whereas joins defined as object definitions do not. Joins defined as object definitions only allow data to be displayed. Implicit joins do not need to be configured. Columns in the extension table will automatically be available for you to use for business component fields.

Implicit Join Implicit Join exists between tables having 1:1 relationship. Implicit meaning implied join already exists between tables and need not be configured. For example S_CONTACT_X is the extension table for S_CONTACT and the relationship between them is 1:1 which is already defined within the BC. To understand better if we look into the Contact BC under Siebel Tools, there are fields like ATTRIB_01, ATTRIB_02 that belong to S_CONTACT_X. This S_CONTACT_X is mentioned under the Join property. But when we try to look at the Join Specification for the extension table S_CONTACT_X, it is not mentioned. So there is a hidden relationship inside the Business Component Contact which makes the relationship between these two tables meaningful. The hidden join is done using the field Id (system field of Contact BC representing S_CONTACT.ROW_ID) and S_CONTACT_X. PAR_ROW_ID. Similarly implicit join exists between the following table and many others

S_SRV_REQ and S_SRV_REQ which is used by Service Request BC S_OPTY and S_OPTY_X used by Opportunity BC S_ORG_EXT and S_ORG_EXT_X by Account BC

So the following facts can be noted about Implicit Joins.


Implicit joins are already defined by Siebel and need not be configured There is no join specification It only exists between the base table and extension table (_X). The join is done using the BC system field "Id" which is the ROW_ID of the parent table and "PAR_ROW_ID" of the extension table. Explicit Join

Explicit join is opposite of implicit join. Explicit join exists between tables which dont have direct relationship. So the join has to be defined explicitly. It is important to recall that join is defined between tables to create 1:1

Page 1 of 21

relationship. Examples of this type of join are between tables S_CONTACT and S_ADDR_PER where a contact can have only one primary address. The join definition is S_CONTACT. PR_PER_ADDR_ID = S_ADDR_PER.ROW_ID. Similarly explicit join exists between tables S_ORG_EXT and S_CONTACT where one Account can have only one primary contact. So the join definition is S_ORG_EXT.PR_CONT_ID = S_CONTACT.PAR_ROW_ID. Explicit join is defined in Siebel Tools under BC object. For the above example of "Contact" BC, we have a join named S_ADDR_PER and the join specification defines the source field (S_CONTACT .PR_PER_ADDR_ID) and destination field (S_ADDR_PER.ROW_ID). Remember that for implicit join we dont find this type of definition. Similarly for Account BC example above, we have a join named "S_CONTACT_PRIMARY" and the join specification defines the source field (S_ORG_EXT.PR_CONT_ID) and the destination field (S_CONTACT.PAR_ROW_ID). To summarize, explicit join is defined explicitly in Siebel Tools, whereas for implicit join definition dont exist.

Q: How to update the User Key in Siebel? A: In recent time I have come across many queries regarding updating the user key columns in the Siebel through EIM. Lets understand what is the importance of user key in siebel eim and discuss how to update User Key using EIM. User Key specifies one or more columns that must contain a unique set of values. Prevents users from entering duplicate records based on the user key. Siebel EIM identifies the unique record with the help of the user key. Thus Siebel does provide some good practice to update the user key through EIM as the user key in the heart of the Siebel EIM on which it work and updating the same user key is some where we are contradicting with the very basics of the Siebel EIM architecture on which it has been developed. Siebel provide following EIM table to update the user keys through EIM: EIM_ORG_EXT_UK EIM_PARTY_UK EIM_PROD_EXT_UK EIM_PROD_INT_UK To update the user key for the S_ORG_EXT table you need to use EIM_ORG_EXT_UK. The following columns will play the role : 1) The PARTY_TYPE_CD and PARTY_UID will contain the data for the existing user key. 2) The column ORG_NAME and ORG_LOC will contain the data for the new user key which you want to update. I have practically worked on this requirement in past and it worked good for me. The people have some doubts about the integration_id but this column is not used in this process. Other than these you cannot update the user key through EIM but can use many other work around through scripting , business service, sql update queries etc. In the similar fashion you can update user for S_PARTY , S_PROD , S_PROD_INT using the tables EIM_PARTY_UK , EIM_PROD_EXT_UK, EIM_PROD_INT_UK respectively. Q: How to add COLUMN to a table? A: There are often times when we need to extend the Siebel data model. One of them is to add an extension column to the existing Siebel tables. In this blog I have listed a simplified version of steps required to add an extension column. But

Page 2 of 21

before you create an extension column make sure that the existing columns provided by Siebel dont meet your requirements. You should create extension columns only if necessary. There is also a way you can avoid creating this extension column by using the columns under 1:1 extension tables. For example instead of extending the base table S_ORG_EXT you can use one of the columns available under 1:1 extension table S_ORG_EXT_X. The problem with using the extension table is that there will be a join that would be used each time S_ORG_EXT is accessed. This in turn would reduce performance. So normally developers tend to create extension column and is a very common practice. Below are the simplified steps on how to create an extension column. For the purpose of this blog, I will take an example of adding an extension column X_OLD_ACC_NUM to the table S_ORG_EXT.

Steps:
1. Login into Siebel Tools connecting to Local. 2. Check out the corresponding project for which the table belongs to. For example S_ORG_EXT belongs to the project Table Organization. So checkout this project. 3. Make a copy of your existing local database found at C:\Program Files\Siebel\7.7\Tools\LOCAL\sse_data.dbf. This will ensure a safe back up. 4. Under table object select the table you want to add an extension column to. 5. Expand the object explorer tree to view the table columns. 6. Right click on the columns section and create a new record. Give a name for example X_OLD_ACC_NUM. The column will prefix with X_ even if you do not mention it. All extension columns are prefixed with X_. 7. Mention the Physical type and Length of the column. This will depend on what you need. Enter some comments for future reference. 8. Now you have created an object definition in Siebel tools. But this is not yet reflected onto your local database which is done in next step. 9. Hit the Apply button. An input form pops up asking for more details. 10. All you would need over here are four parameters. 11. Tables: Select current Row 12. Database User: SIEBEL 13. Database Password: This is the user you used to extract the local DB. For example you are using JSMITH as your login and used this to extract the password will be JSIMITH. 14. ODBC Data Source: Select the OBDC data source pointing to the local database. This would normally be SSD Local Db default instance 15. Hit Apply on the window. This will take a while and message pops up confirming changes to the database. 16. Now the extended column is available in the local database. 17. Test locally and make sure the changes look fine and are as required. If you see anything is wrong and would like to roll back exit Siebel Tools and replace the backup dbf file from step 3 otherwise proceed. 18. Check in the project. 19. Now the object definitions are changed in the Server repository but this column is not yet available in the server database. 20. Login into Siebel Tools connecting to Server. 21. Lock the project under which the table belongs to. Ex: Table Organization. 22. Find the table S_ORG_EXT and make sure that the extended column X_OLD_ACC_NUM is visible. 23. Select the table and hit apply to have server changes reflect in the server database. Fill up required information similar to step 10. Here the login will be SIEBEL/<siebelpasswd> and the ODBC data source will be the one pointing to the server. Check your ODBC settings to figure this out. Normally applying schema changes in the server will be done by Siebel Administrator. 24. After applying changes you should be able to see the new columns in the database. Login to the server database using your favorite SQL editor like TOAD and verify that the new column has been created and you are able to query on that. Now that column is available for use.

Page 3 of 21

25. Make sure you test thoroughly before deployment. 26. As usual let me know if this blog has helped you. Post some comments. Q: How to Load File Data through EIM to File System Instead of the Database Summary: How can I load file data through EIM so it gets diverted to the File System instead of the Database? Full Article: Disclaimer: Contents are not reviewed for correctness and are not endorsed or recommended by ITtoolbox or any vendor. Popular Q&A contents include summarized information from Siebel-L discussion unless otherwise noted. Adapted from a response by sai_ci On Monday, February 16, 2004 To import file attachments into Siebel database tables using Windows Explorer, navigate to the Siebel Server directory. The default is c:\siebel. Verify that the Siebel directory contains a directory named input. If the directory does not exist, create it by choosing File > New Folder and entering input. - Copy all file attachments to the input directory. Siebel interface tables support all file attachment formats. - Populate interface tables with rows matching the file attachments. - Run EIM. - Three interface table columns must be populated in order to import file attachments - Make sure the directory exists on a Siebel Server machine and you have read and write access to it. Example: ATTACHMENT DIRECTORY = SIEBEL_HOME\INPUT Each file attachment row must contain the filename reference to the files you want to import and the appropriate values in the following columns: FILE_NAME This column requires the root filename of the file attachment. FILE_NAME="budget99" FILE_EXT This column requires the extension type of the file attachment (DOC, XLS, or TXT). FILE_EXT="doc" FILE_SRC_TYPE This column requires the value "FILE" or the rows can not be imported. FILE_SRC_TYPE="FILE Q: How to load an ATTACHMENT in the Service Request? A: In Siebel versions 5.x ,6.x and 7.x, users can run Enterprise Integration Manager (EIM) to import file attachments. For example, there are already some Service Request records in S_SRV_REQ table. Please follow several steps to import file attachments to Service Requests: In version 6.x and 7.x: 1. Put the file to be attached in the Siebel_Server\input directory (i.e. ABC.doc) 2. In the EIM_SR_DTL table, populate: SR_SR_NUM SR_BU ATT_FILE_NAME (ABC) ATT_FILE_EXT (DOC)

Page 4 of 21

ATT_FILE_SRC_TYPE (FILE) 3. Run EIM to import file attachment to S_SR_ATT table. 4. A new .saf file will be generated in the file system after EIM loading. In version 5.x: 1. Put the file to be attached in the Siebel_Server\input directory (i.e. ABC.doc) 2. In the S_SR_DTLIF table, populate: SR_NUM SR_FILE_NAME (ABC) SR_FILE_EXT (DOC) SR_FILE_SRC_TYPE (FILE) 3. Run EIM to import file attachment to S_SR_ATT table. 4. A new .saf file will be generated in the file system after EIM loading. Q: How to setup a new LOGIN? A: Developers work on Siebel Tools to configure Siebel and they are connected to Local Database. Local
database contains all the object definitions plus the subset of actual data from the server. To get all this information from the server, we essentially follow a process of extracting all the object definitions from the server and storing into our local database. Before we connect to the server and be able to extract the database, following steps have to be done. These steps are as per the Siebel Version 7.7. Create a Database User Account: This is the first step to the whole process. Request a database account either to the DBA or Siebel Administrator. This is will be the login account. For example: MJONES. This login account should be created and should be added to the group SSE_ROLE. This is a server database account and should be able to login to the database directly using DB tools like TOAD or SQL-Plus. If at LOCAL dbf:

GRANT GRANT GRANT GRANT

CONNECT TO SSE_ROLE CONNECT TO SANCHOPRA IDENTIFIED BY SANCHOPRA GROUP TO SSE_ROLE MEMBERSHIP IN GROUP SSE_ROLE TO SANCHOPRA

For Changing PASSWORD in future: alter user USERNAME identified by PASSWORD


Setup Developers as Siebel Employees: Setup each developer to be a Siebel Employee as described in the steps below.

Page 5 of 21

Login to Siebel Server using the login SADMIN/SADMIN or as any other account having access to add Siebel Users. Normally Siebel Administrators have this. Go to Site-Map -> Administration-User-> Employees Create a new Record with First Name, Last Name and desired login Id. Password will be the same as that mentioned while creating the Database User Account above. Assign a Position and Responsibility to this User. This would normally be Siebel Administrator. But might change depending on the setup. This is very important otherwise the database extract would fail.

Setup Developers as Mobile Clients: After setting up developers as employees, you must register developers as mobile client. This will provide information for extracting local database for that user. Follow the steps below. Login as either SADMIN or any other account having access to employee screens. Go to Site Map -> Administration-Siebel Remote -> Mobile Clients In the parent server form, choose the appropriate ones. Normally there is only one unless there are multiple implementations of Siebel on the same server. In the Mobile Clients list, click New and fill up the following details. Mobile Client Name Example: MJONES (Login Account Name) User Id. Example: MJONES (Login Account Name) Routing Model as Mobile Client - Extract Only.

1. What is EIM? 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 (in earlier releases, these tables were known as interface tables). The EIM tables act as a staging area between the Siebel application database and other databases. You should use EIM to perform bulk imports, exports, updates, and deletes. 2. What are the mandatory columns in EIM table? ROW_ID. For an EIM table row to be eligible for processing, you must initialize its ROW_ID. The ROW_ID, in combination with the value of IF_ROW_BATCH_NUM, must yield a unique value. The ROW_ID values in the EIM tables are not the ROW_ID values that are assigned to the row when it is loaded into the base table. An EIMgenerated ROW_ID has a ##-###-### format. A regular row ID that is assigned to the row has a #-## format. IF_ROW_BATCH_NUM. You must set the values in this column to the same integer, greater than or equal to 0, as an identifying number for all rows to be processed as a batch. The maximum value is 2147483647. Use this column as the first key of any new indexes created on an EIM table. IF_ROW_MERGE_ID. You can set this column to one of two values: NULL. This value identifies the surviving or merged-into-row. ROW_ID. This value identifies the ROW_ID number in the EIM table where the row will be merged. IF_ROW_STAT. EIM updates this column after processing the row to indicate the status of the record. The IF_ROW_STAT column is not used by EIM when determining which rows to process. When populating the EIM tables, you can set this column to any value except NULL. You can initially set this value to FOR_IMPORT to indicate that the row has not been imported. After processing, if certain rows were not imported due to a data error, you should change: IF_ROW_BATCH_NUM value for the rows that require reimporting BATCH line in the configuration file

Page 6 of 21

If EIM updates this column to NOT_ALLOWED after processing a row, EIM has attempted to insert a new row but the action is not allowed. In such cases, the INSERT ROWS parameter may have been set to FALSE. 3. What are the mandatory columns for file attachment? Column Description Example FILE_NAME This column requires the root filename of the file attachment FILE_NAME=budget99 FILE_EXT This column requires the extension type of the file attachment (DOC, XLS or TXT) FILE_EXT=doc FILE_SRC_TYPE This column requires the value FILE or the rows cannot be imported FILE_SRC_TYPE=FILE 4. How did Choose Organization columns? The EIM_ type interface tables use the xxx_BU/xxx_BI column pairs to map organizations. For example, the CON_BU/CON_BI column in the EIM_CONTACT interface table is mapped to the BU_ID column in the S_CONTACT base table. In order for organizations to be resolved properly, you need to populate the xxx_BU column with the organization name and leave the xxx_BI column empty. Do not populate the xxx_BU column with the organization ROW_ID. EIM looks up the ROW_ID for the organization in xxx_BU and puts it in the corresponding xxx_BI column. 5. How many type of Section in eim? Two Types: A. Header Section B. Process Section 6. What are the header section parameters? CONNECT : The ODBC source name for connecting to the database server. LOG TRANSACTIONS TO FILE : This parameter must be in the header section and the default value is TRUE. Transactions can be logged in a file or a table. By default, EIM logs transactions into files. Log files are saved in the file systems eim directory. If you do not want transactions to be logged in files, then setting this parameter to FALSE logs transactions to a table. PASSWORD : The database password for the process to be run. This parameter is inherited for the EIM component from the Gateway Name 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 : Identifies the specific process to run during this invocation of EIM. The named process must be defined in the process section of the .IFB file. [Siebel Interface Manager] : Header section must use this reserved name.

Page 7 of 21

TABLEOWNER: The database logon name that owns the tables to be operated on; used as the prefix for table names; defined during installation. USERNAME: The database/employee logon name for the process to be run. This parameter is inherited for the EIM component from the Gateway Name 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. 7. What are the Process Section parameters? BATCH: Required. Specifies a required batch number for the process to be run. Use this batch number to identify the set of rows to load from the EIM tables for this specific process. This batch number corresponds to the value in the interface column IF_ROW_BATCH_NUM and must be a positive integer between 0 and 2147483647 (no commas). To specify multiple batches, use a range or list of batch numbers. To specify a range of batches, use the first_batch-last_batch format as shown in this example: BATCH=100-120 To list batches, use the comma-delimited format as shown in this Example: BATCH=100,103,104 COMMIT EACH PASS: Optional. Commit after each EIM pass; default is TRUE. COMMIT EACH TABLE: Optional. Commit after each base table; default is TRUE. IGNORE BASE TABLES: Optional. Do not process these tables. USING SYNONYMS: Optional. Controls the queries of account synonyms during import processing. When set to FALSE, this parameter saves processing time because queries that look up synonyms are not used. The default value is TRUE. USE INDEX HINTS: Optional. For Oracle databases only. Controls whether EIM issues optimizer hints to the underlying database to improve performance and throughput. The default value is FALSE INCLUDE:This parameter can be used only in shell processes. A shell process uses the INCLUDE statement to invoke a sequence of processes in a single run. LOG TRANSACTIONS:Use this parameter to control the logging mode. If this parameter is set to TRUE, EIM logs changes when mobile clients synchronize. If this parameter is set to FALSE, changes are not logged. In general, when you load data into the HQ database for the first time, this parameter should be set to FALSE. ONLY BASE TABLES:Optional. Process only base tables. ROLLBACK ON ERROR:Optional. Error rollback behavior; default is FALSE. TABLE: Required. Specifies the name of an EIM table used in this process. Multiple TABLE parameters may be used to define a process using more than one table. TYPE:Required. This parameter specifies the type of process being defined (possible values are IMPORT, EXPORT, DELETE, MERGE, SHELL). A shell process uses the INCLUDE statement to invoke a sequence of processes in a single run. USING SYNONYMS:Optional. Controls the queries of account synonyms during import processing. When set to

Page 8 of 21

FALSE, this parameter saves processing time because queries that look up synonyms are not used. The default value is TRUE. 8. What is called an interface table and why we use interface table in EIM? Interface table is a staging area for eim. Data from legacy is transferred to eim table first using non-siebel process. For this we need interface table. 9. How will you fine the particular interface table for a base table? Go to Tools: In Object Explorer select Flat Tab. Select Eim Table Mapping : Query in OBLE in Destination Table (Base Table Name) and get the corresponding EIM Table Name in Parent EIM Interface Table. 10. What is .ifb? Mention its use? . ifb is a configuration file, which is used when EIM Component is running. It contains information such as user name, password, process and many other parameters. 11. Write a sample ifb file for import process for Account or contact .IFB FILE FOR ACCOUNT [siebel Interface Manager] User Name = sadmin Password = sadmin Process=ImportAccount [ImportAccount] Type = Import Table = EIM_ACCOUNT BATCH=55 ONLY BASE TABLES = S_PARTY, S_ACCNT_POSTN, S_ORG_EXT, S_ORG_BU DEFAULT COLUMN = ACCNT_FLG, "Y" DEFAULT COLUMN = ACTIVE_FLG, "Y" DEFAULT COLUMN = BUYING_GROUP_FLG, "N" DEFAULT COLUMN = CG_DEDN_AUTH_FLG, "Y" DEFAULT COLUMN = CG_SVP_A_LOCK_FLG, "N" DEFAULT COLUMN = CG_SVP_LOCK_FLG, "N" DEFAULT COLUMN = CG_SVP_SKIP_FLG, "N" DEFAULT COLUMN = CL_SITE_FLG, "N" DEFAULT COLUMN = DISA_CLEANSE_FLG, "N" DEFAULT COLUMN = EVT_LOC_FLG, "N" DEFAULT COLUMN = FCST_ORG_FLG, "N" DEFAULT COLUMN = FUND_ELIG_FLG, "N" DEFAULT COLUMN = INCL_FLG, "N" .IFB FILE FOR CONTACT [Siebel Interface Manager] USER NAME = "SADMIN" PASSWORD = "SADMIN" PROCESS = Import Contact [Import Contact]

Page 9 of 21

TYPE = SHELL INCLUDE = "Import Contact Information" INCLUDE = "Import POSTN_CON Information" [Import Contact Information] TYPE = IMPORT TABLE= EIM_CONTACT BATCH = 555 ONLY BASE TABLES = S_PARTY, S_CONTACT, S_CONTACT_BU DEFAULT COLUMN = CON_ACTIVE_FLG, "Y" DEFAULT COLUMN = CON_DISACLEANSEFLG, "N" DEFAULT COLUMN = CON_DISPIMGAUTHFLG, "N" DEFAULT COLUMN = CON_EMAILSRUPD_FLG, "N" DEFAULT COLUMN = CON_EMP_FLG, "N" DEFAULT COLUMN = CON_PRIV_FLG, "N" DEFAULT COLUMN = CON_INVSTGTR_FLG, "N" DEFAULT COLUMN = CON_PO_PAY_FLG, "N" DEFAULT COLUMN = CON_PROSPECT_FLG, "N" DEFAULT COLUMN = CON_PTSHPCONTACTFL, "N" DEFAULT COLUMN = CON_PTSHPKEYCONFLG, "N" DEFAULT COLUMN = CON_SENDSURVEY_FLG, "N" DEFAULT COLUMN = CON_SPEAKER_FLG, "N" DEFAULT COLUMN = CON_SUPPRESSEMAILF, "N" DEFAULT COLUMN = CON_SUPPRESSFAXFLG, "N" [Import POSTN_CON Information] TYPE = IMPORT TABLE= EIM_CONTACT1 BATCH = 555 ONLY BASE TABLES = S_PARTY, S_CONTACT, S_POSTN_CON

12. Why do you use Docking Transaction and UTC? Docking Transaction: Typically, a disabled Docking: Transaction Logging setting is only used during initial data loads. Disable Docking: Transaction Logging is set from the System Preferences settings within the Siebel application. This setting indicates whether or not the Siebel application will log transactions for the purpose of routing data to Siebel Mobile Web Clients. The default for this parameter is FALSE. If there are no Siebel Mobile Web Clients, then the default setting should remain. If you have Siebel Mobile Web Clients, then this parameter must be set to TRUE in order to route transactions to the mobile clients. However, during initial data loads, you can set this parameter to FALSE to reduce transaction activity to the Siebel docking tables. After the initial loads are complete, set the parameter back to TRUE. UTC: If the Siebel administrator is importing into base tables that use the UTC (Universal Time Coordinated) time scale, the Siebel administrator or a database administrator must convert the local time in the data into UTC before loading data into the EIM tables. 13. List the difference between Default Column and Fixed column? Default Column: (Import only) Specifies a default value for an EIM table column. The syntax is column name, value.

Page 10 of 21

Example: DEFAULT COLUMN = CURCY_CD, "USD" The given value will be used only if the column is null in the EIM table. Fixed Column: (Import only.) Specifies the value for an EIM table column. The syntax is the same as for DEFAULT COLUMN. Example: FIXED COLUMN=ORG_CD,. Commercial. The given value will be loaded into the Siebel base table, overriding the value in the EIM table column. 14. How to identify an EIM table prior to Siebel 6 release? Prior to Siebel 6 Eim Table starts with S_. After siebel 6 Eim Table starts with EIM_. 15. How to find the status of EIM process? The status of EIM Process could be seen in IF_ROW_STAT IN EIM INTERFACE TABLE. 16. Write the steps for Import in EIM? 1 Identify and validate the data to be imported. To perform this task, you must: A. Determine the data to load and whether it already exists in another database. You should review existing data for completeness. For example, the Siebel database may require both an area code and a telephone number, while your existing database may not. B. Determine the number of opportunities, contacts, and accounts you plan to import. This information assists you in estimating the time and resources required to import, process, and store your data. 2 Identify the column mappings and user key columns of the data to be imported. To perform this task, you must: A. Identify the mapping between the data and Siebel base columns. B. Identify the EIM table columns that map to these base table columns. C. Identify the user key columns and make sure they are populated uniquely. 3 Make sure that your hardware and software environments are ready. Before you use Siebel EIM tables to import data, the Siebel application must be properly installed. Work with your Siebel representative and MIS personnel to verify that the required hardware and software resources are available. 4 Back up your existing database. Before undertaking any significant change. Such as installing a new application, importing data, or upgrading an installed application. You should first perform a comprehensive backup of your database. This facilitates an easy recovery if problems occur. 5 Copy file attachments to the Siebel server subdirectory named. input.. If you want to import file attachments, you can: A. Copy the files to the input subdirectory under the Siebel server root directory. B. Store file attachments in the location specified in the ATTACHMENT DIRECTORY .IFB file header parameter. Siebel EIM tables support all file attachment formats, including common file types such as Word documents (.doc), Excel spreadsheets (.xls), and text files (.txt). 6 Load and verify the EIM tables. Your database administrator can use a database tool provided with your RDBMS (such as SQL*Loader, Bulk Copy Utility, or dbload) to copy data from your existing database to the Siebel

Page 11 of 21

EIM tables. A. After the EIM tables are loaded, check the number of loaded rows against your existing database to make sure that the appropriate rows were loaded. B.Check the contents of several rows to make sure that the tables are ready for the import process. 7 Edit the EIM configuration file (default.ifb). This file customizes the behavior of EIM by defining the data you will import and identifying the batch number to use. 8 Test your import process. Run a small test batch (perhaps 100 records) to verify that the EIM tables load correctly, and that the correct parameters are set in the configuration file and on the srvrmgr command line. 9 Run the import process. Although your batch sizes depend on the volume of data you must import, consider using multiple smaller batches (1,000 to 5,000 rows) rather than one large batch. Smaller batches place fewer demands on resources. Also, when using smaller batches, the fixing of problems is simpler. If a batch is not imported correctly, it is easier to isolate the condition, correct it, and rerun the batch. 10 Verify results. EIM provides several diagnostic tools that let you verify the success of import processing. You must test and run the import process and verify the results for each batch you are importing.

17. What are the possible IF_ROW_STAT values after import? AMBIGUOUS: There are two rows in the base table that have the same user key but different conflict IDs. EIM cannot distinguish these rows DUP_RECORD_EXISTS: The row exactly matches rows that already exist in the destination tables. DUP_RECORD_IN_EIM_TBL: The row was eliminated because it is a duplicate (has the same user key) of another row in the EIM table with the same batch number. In this case, MIN(ROW_ID) is the record processed, and the other records with the same user key are marked as UP_RECORD_IN_EIM_TBL.Do not confuse DUP_RECORD_IN_EIM_TBL with UP_RECORD_EXISTS. DUP_RECORD_EXISTS status indicates that the same record already exists in the base table, while DUP_RECORD_IN_EIM_TBL status indicates that there are two or more EIM table records having the same user key values. FOREIGN_KEY: A required foreign key column in the target table could not be resolved. IMPORTED: The row was successfully processed against all its destination base tables. This status is set after the import has been completed. You can check the import status by using database commands to query the appropriate EIM tables for rows whose IF_ROW_STAT value is not equal to IMPORTED. The result is a list of rows that were not successfully imported. IMPORT_REJECTED: A user-specified filter query failed for this row. IN_PROGRESS: If rows still have this status value after EIM exits, a failure occurred that aborted processing for this table. PARTIALLY_IMPORTED: The row did not fail for the target table (although it may have been a duplicate), but did fail during processing of a secondary base table. This status is set after the import has completed. PICKLIST_VALUES: A required picklist value in the target table could not be resolved. REQUIRED_COLS: One or more required columns for the target table were NULL.

Page 12 of 21

ROLLBACK: EIM encountered an error, such as an SQL database failure, and rolled back the transaction. This status is only used when ROLLBACK ON ERROR = TRUE. SQL_ERROR: An SQL error occurred during an attempt to import this row. This error occurs for rows processed when transaction logging is set to TRUE. 18. What is Export Process? To export data, EIM reads the data in the Siebel database tables and places the information in the appropriate EIM tables. You can then copy data from the EIM tables into another database. The export process generally populates the applicable EIM table with a row for every Siebel base table row encountered. As a consequence, where EIM tables have mappings to multiple Siebel base tables, one export operation can generate multiple rows within the EIM table governing the rows encountered within the Siebel base tables. 19. What are the tasks eim perform in export process? A. EIM initializes the EIM tables for export. B. It applies filter logic to select rows for exporting. C. EIM updates EIM table rows to indicate the export status. 20. Write step for export? 1 EIM initializes EIM tables for export. If CLEAR INTERFACE TABLE in the configuration file is TRUE, all rows with the specified batch number are deleted. Otherwise, a warning is issued if rows already exist with the specified batch number. The default configuration file is default.ifb. 2 It uses export parameter expressions in the configuration file to locate and export table rows: A. If EXPORT ALL ROWS is TRUE, ignore any EXPORT MATCHES parameters and export all rows. B.If EXPORT ALL ROWS is FALSE; use EXPORT MATCHES parameters to locate specific rows. Set IF_ROW_STAT to EXPORTED for rows that are successfully exported. 3 For parent tables, EIM locates child table rows and exports them to their corresponding EIM tables. 21. What are the parameters for export process? ATTACHMENT DIRECTORY: (Default is SIEBEL_HOME\OUTPUT) Specifies the directory to be used for exporting attachments. Before specifying a directory, make sure the directory exists on a Siebel Server machine and you have read and write access to it. Example: ATTACHMENT DIRECTORY = SIEBEL_HOME\OUTPUT If the export of an attachment fails, the export process continues and EIM writes a message in the trace file. CLEAR INTERFACE TABLE: Specifies whether existing rows in the EIM table for the given batch number should be deleted. The default value is TRUE. EXPORT ALL ROWS: Specifies that all rows in the target base table and secondary tables are to be exported. The default value is FALSE. Existing values in the EIM table and export matches expressions are ignored. For all columns to export using an EIM table (both data from the base table and data from related child tables), you need to make sure this parameter is set to TRUE (you may need to add this line if it does not currently exist) in the .IFB file. Note: Rows from child tables of related child tables are not exported until they have been mapped. EXPORT MATCHES WHERE clause fragment. Example: EXPORT MATCHES=(NAME LIKE .GEN%.) 22. IFB file for Export All Rows?

Page 13 of 21

[Siebel Interface Manager] USER NAME=SADMIN PASSWORD=SADMIN PROCESS=Export Accounts [Export Accounts] TYPE = EXPORT BATCH = 2 TABLE = EIM_ACCOUNT EXPORT ALL ROWS = TRUE 23. IFB file for Export Matches? [Siebel Interface Manager] USER NAME=SADMIN PASSWORD=SADMIN PROCESS=Export Accounts [Export Accounts] TYPE = EXPORT BATCH = 2 TABLE = EIM_ACCOUNT EXPORT ALL ROWS = FALSE EXPORT MATCHES=(NAME LIKE .GEN%.) 24.How does Check Export Result? A. Query the appropriate EIM tables for rows whose IF_ROW_BATCH_NUM equals the batch number for the export. The value of IF_ROW_STAT should be EXPORTED. 25. What are task for delete process? 1.EIM initializes the EIM tables for deletion. 2. It applies filter logic to do one of the following: a) Select rows for deleting b) Insert EIM tables rows that correspond to matching base table rows c) Select rows with matching user keys in the EIM tables 3. EIM updates other tables with rows containing foreign keys that point to newly deleted rows. 26. Write step for delete process? 1. EIM initializes EIM tables for delete. If CLEAR INTERFACE TABLE in the configuration file is TRUE, all rows with the specified batch number are deleted. CLEAR INTERFACE TABLE must be FALSE for a delete process that uses EIM table values to identify rows for deletion. 2. EIM deletes rows. a If the DELETE EXACT parameter in the configuration file is set to TRUE, EIM deletes the rows from the table that match the user key defined in the EIM table. b If the DELETE MATCHES parameter in the configuration file is set to a base table, EIM deletes the rows from the target base table that match the predicate specified in the parameter.

Page 14 of 21

c If the DELETE ALL ROWS parameter in the configuration file is set to TRUE, EIM deletes all rows from the target base table. 3 .EIM sets IF_ROW_STAT to DELETED for rows that are successfully processed. a) 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. 27.Q: Write the IFB for importing attachments for the SRs. A: Please check the IFB i'm using to run this job. [SIEBEL INTERFACE MANAGER] ATTACHMENT DIRECTORY = SERVER\INPUT PROCESS = "IMPORT" [IMPORT] TYPE = SHELL INCLUDE = "ATTACHMENTS" [ATTACHMENTS] TYPE = IMPORT BATCH = 13562 TABLE = EIM_SR_DTL ONLY BASE TABLES = S_SRV_REQ,S_SR_ATT INSERT ROWS = S_SRV_REQ,FALSE UPDATE ROWS = S_SRV_REQ,FALSE ONLY BASE COLUMNS = S_SRV_REQ.SR_NUM,S_SRV_REQ.BU_ID,\ S_SR_ATT.FILE_NAME,\ S_SR_ATT.FILE_EXT,\ S_SR_ATT.FILE_SRC_TYPE,\ S_SR_ATT.PAR_ROW_ID,\ S_SR_ATT.COMMENTS Q: Define to Steps for the EIM Mapping. A: The following is a step by step guide for mapping external source data to EIM tables in order to insert/import to a Siebel base table. Siebel EIM Mapping Step By Step Guide 1. Determine the base tables that the data will be mapped to and you must understand the data models that the data will be converted into. I am assuming that you have already worked out the mapping and data conversion rules so you know what fields from excel file will be mapped to what base tables etc. 2. For each of the Siebel base tables to be populated, make a note of all the columns in the base tables that you will be mapping to with your source data. Also make a note of the columns that make up the user key for the table. If you are using Siebel EIM to update existing data in base tables then all that is required for EIM mapping is the mapping

Page 15 of 21

to user key and the columns being updated from source data. However if you are using Siebel EIM to insert new records you also need to also map to the non-system columns on the base tables that have the "Required" checkbox flagged and make a note of these. So you have 3 separate notes: a. The required columns of the table (required for EIM inserts) b. The columns mapping data to c. The user key columns of the base table 3. In you need to determine a Siebel EIM table that is appropriate to load the data into the base tables, the appropriate Siebel EIM table would be that which has all the column mappings you need to populate the data. To do this, in the Siebel Tools Object Explorer go to "Flat Mode" and select "EIM Table Mapping". In the list of table mappings, query in the "Destination Table" column for the base table you wish to populate make a note of some of the "Parent EIM Interface Table" tables. It is usually obvious which table(s) to use (i.e. EIM_ACTIVITY would map to S_EVT_ACT, but you would use EIM_ACTIVITY1/EIM_ACTIVITY2 etc for mapping to activity related tables etc.). When you have found the Parent EIM Interface Table, go to the "Types" view in the object explorer and select "EIM Interface Table" query for the table, drill into the table to the "EIM Table Mapping" and select the base table being mapped to then drill in to "Attribute Mapping" to verify that all the base columns you want to populate are there. 4. Lookup through Attribute Mapping in the "Base Table Attribute Column" field each of the columns being mapped to and make a note of what the corresponding interface table column is to populate with that field value. Do this for all the columns you wish to map to. It is good practice to maintain a mapping spreadsheet document to map fields from source data to interface table columns and Siebel base table columns. 5. In the same way as above lookup the required base table columns that you made a note of as these will need to be populated for the Siebel EIM insert/update operation to be successful. As part of this you need to determine what the value of the base table column that is required should be. Most of the time these are flag fields as part of the vanilla Siebel table in which you just need to ensure that you populate which that default value. 6. In the same way as the above step lookup the user key columns that you made a note of. You need to ensure that these columns are correctly populated with the unique identifier for each record that you wish to insert. Most of the time the user key will consist of the Name/LOC/BU, for example if for populating S_ORG_EXT, the user key is NAME/LOC/BU (not sure exactly what the BU column is called) where the NAME represents the unique name column of the Org, LOC is usually NULL and BU is based on the Organization the record belongs to "Default Organization" would be the value for a single org application. 7. In the Siebel Tools Object Explorer, go to EIM Interface Table > EIM Interface Table Column and filter for all records where "Required" = Y. Check if there are any columns here that have not been included to be mapped in the above mappings. If there are you need to ensure that these columns are also populated. Again it is a matter of determining what the column will map to and what the appropriate value for that column should be. Usually if the column does not mean anything to your application functionality specifically you would just map it to the default value that all other records in the base table are populated with. 8. If you populate the EIM table with all the above data for each record and run the EIM job with a configuration file that is correct you will get a successful EIM insert/update. This article is part 2 of the Siebel EIM Mapping Step by Step Guide. I will explain how foreign keys are populated using Siebel EIM.

Page 16 of 21

A foreign key is a column in a table that holds the same value as a column in another table. The foreign key references the record in the other table. A Siebel example of a foreign key is the S_EVT_ACT.TARGET_OU_ID column. This foreign key column references S_ORG_EXT.ROW_ID column. What is also important in understanding importing foreign keys with Siebel EIM is the use of user keys. Siebel EIM uses the foreign key table's user key to identify the foreign key record. This is best explained with an example, the following steps can be followed to populate foreign keys using Siebel EIM. I will use S_EVT_ACT.TARGET_OU_ID as an example. 1. Ensure that all required Siebel EIM columns are populated for the record that you wish to import using Siebel EIM. See Siebel EIM Mapping - Step By Step Guide - Part 1 for more information. You also need to verify that the foreign key can be populated through the Siebel EIM table that you select. To do this go to Siebel Tools and select "Flat Mode" on the Object Explorer. Click on the "Foreign Key Mapping" item in the Object Explorer. In the Siebel Tools list applet, query for the name of the foreign key column in the [Foreign Key Column] field (for my case this is TARGET_OU_ID) and the name of the base table in the [Parent EIM Table Mapping] field (for my case this is S_EVT_ACT). The records returned show all EIM tables that can import to the foreign key ([GParent EIM Interface Table] field). 2. Once you have all required columns populated on the EIM table to import the record as discussed in Siebel EIM Mapping - Step By Step Guide - Part 1, in the Siebel Tools Object Explorer select the "Type" tab and select the "EIM Interface Table" Object Explorer item. Query for the EIM table and drill expand the "EIM Interface Table" Object Explorer item. Select the "EIM Table Mapping" Object Explorer item and select the record in the list applet with [Destination Table] = the base table. Then expand the "EIM Table Mapping" Object Explorer item and select the "Foreign Key Mapping" Object Explorer item. In the "Foreign Key Mappings" list applet, query for [Foreign Key Column] = the foreign key column. Then expand the "Foreign Key Mapping" Object Explorer item and select the "Foreign Key Mapping Column" Object Explorer item. Each of the records shown in the "Foreign Key Mapping Columns" list applet represents the EIM table columns required to resolve the foreign key value. The columns listed for a foreign key mapping is always the user key of the destination table. 3. The columns required to be populated are in the [Interface Table Data Column] field. There are some exceptions which I will explain next. For the example of S_EVT_ACT.TARGET_OU_ID, the user key of the S_ORG_EXT table which this foreign key refers to is: NAME, LOC and BU_ID. The foreign key mapping columns are listed as (notice the resemblance): TARGET_ACCNT_NAME - maps to the NAME of the S_ORG_EXT record. TARGET_ACCNT_LOC - maps to the LOC of the S_ORG_EXT record. TARGET_ACCNT_BI - maps to the BU_ID of the S_ORG_EXT record. There is an exception for the above EIM columns where the TARGET_ACCNT_BI represents the value in BU_ID, the TARGET_ACCNT_BU column represents the name of the org that BU_ID joins to in S_BU. For some reason the TARGET_ACCNT_BI when populated will not always resolve the foreign key, however I have found that the equivalent TARGET_ACCNT_BU column when populated will resolve the foreign key. Many EIM tables have BU/BI related columns, there will always be a pair with the same name but differing BU/BI. My rule of thumb is to always use the "BU" column first and populate with the name of the Organization. Then if this does not resolve the foreign key then try the "BI"

Page 17 of 21

column. 4. Now that the above EIM columns are populated, the foreign key should resolve when the EIM task is executed. You need to ensure that if you have an ONLY BASE COLUMNS section in the IFB file for the EIM task, then you need to include the foreign key column in the ONLY BASE COLUMNS section (eg. S_EVT_ACT.TARGET_OU_ID). 5. When you execute the EIM task, ensure to include parameters: SQL Trace Flags = 8, SQL Error Flags = 8. This will give a lot of information in the EIM log file and helps for debugging. 6. Once the EIM task has executed search for the foreign key column name in the EIM log file. There should exist a section in the log file which specifies whether the foreign key was imported or if it failed. If the foreign key import failed there will be an explanation of what was wrong in the EIM table. 27. Write ifb file for delete all rows? [Siebel Interface Manager] USER NAME=SADMIN PSSWORD=SADMIN PROCESS=Delete Accounts [Delete Accounts] TYPE = DELETE BATCH = 200 TABLE = EIM_ACCOUNT DELETE ALL ROWS = TRUE 29. How do Check delete results in eim table? A: Query the appropriate EIM table for rows whose IF_ROW_BATCH_NUM equals the batch number for the delete. The value of T_DELETED_ROW_ID identifies deleted rows. 30. Write step for delete process using delete exact parameter? A. Populate the following columns in the EIM table (such as user keys for the S_ORG_PROD table and all the special interface columns): ACCNT_NAME, ACCNT_LOC, INS_PROD_NAME, INS_PROD_VENDR, INS_PROD_VENDR_LOC, INS_DT, ROW_ID, IF_ROW_BATCH_NUM, IF_ROW_STAT, ROW_ID. B.Add or modify the following process section in your .IFB file: TYPE = DELETE BATCH NUMBER = TABLE = EIM_ACCOUNT ONLY BASE TABLES = S_ORG_PROD DELETE EXACT=TRUE C.Run EIM.

Page 18 of 21

This deletes all rows from the S_ORG_PROD table that have user keys that match the rows in your EIM table. 31. What are the tasks for merge process? A. Initialize the EIM tables for merge. B. Initialize the EIM tables for merge. C. Merge child rows into the replacement rows. EIM then deletes rows from the target base table that are specified in the EIM table. 1. For deleted rows, EIM sets T_MERGED_ROW_ID to the ROW_ID of the row that was merged into (the surviving row). 2. EIM sets T_DELETED_ROW_ID to the ROW_ID of the deleted base table row. D.Update child rows containing foreign keys that point to newly deleted rows. For base tables that have foreign keys in newly deleted rows, EIM updates the foreign keys to point to surviving rows (depending on the value for UPDATE ROWS in the configuration file). 32. Write ifb file for merge process? [Siebel Interface Manager] USER NAME=SADMIN PSSWORD=SADMIN PROCESS= Merge Accounts [Merge Accounts] TYPE = MERGE BATCH = 1 TABLE = EIM_ACCOUNT UPDATE ROWS = TRUE 33. List parameter for merge process? A: SET BASED LOGGING Specifies whether set-based logging is enabled. The default value is TRUE. NOTE: EIM will ignore this parameter if Docking Transaction Logging is set to FALSE in the System Preferences view UPDATE ROWS Specifies whether the foreign key (or keys) that reference the merged rows in the named table need to be adjusted. Valid values are TRUE (the default) and FALSE. NOTE: Use the UPDATE ROWS = Table_Name, FALSE setting carefully. Inappropriate use can result in dangling foreign key pointers. 34. How do check merge results in eim table? 1 Query the appropriate EIM table for rows whose IF_ROW_BATCH_NUM equals the batch number for the

Page 19 of 21

merge process. 2 Inspect the values of T_DELETED_ROW_ID and T_MERGED_ROW_ID. 35. List required column for merge process in eim table? ROW_ID, IF_ROW_BATCH_NUM,IF_ROW_STAT,IF_ROW_MERGE _ID 36. Why we give sql trace flag 8? Setting the SQL Trace Flags parameter to 8 creates a log of all SQL statements that make up the EIM task. 37. What is purpose for give trace flag 1,2,4,8,32? Trace Flag 1 Setting the Trace Flags parameter to 1 creates a step-oriented log of the task. This can be used to determine the amount of time EIM spends on each step of the EIM task, or for each EIM table processed. Trace Flag 2 Setting the Trace Flags parameter to 2 creates a file log that traces all substitutions of user parameters. Trace Flag 4 Setting the Trace Flags parameter to 4 creates a file log that traces all user-key overrides. Trace Flag 8 Setting the Trace Flags parameter to 8 creates a file log that traces all Interface Mapping warnings. Trace Flag 32 Setting the Trace Flags parameter to 32 creates a file log that traces all file attachment status. 38. What is purpose for give error flag 1? A: Setting the Error Flags parameter to 1 produces a detailed explanation of rows that were not successfully processed.

EIM table Mappings Provided as Common Parents to Non Target EIM table Mappings
Some EIM table mappings (ususally to the target base table) are provided as a common parent to nontarget EIM table mappings. An example of this type of EIM table mapping is mapping from the EIM_OPTY_DTL interface table to the S_OPTY base table.These EIM table mappings have comment in Siebel repository, indicating that they do not support inserting or updating data. In such EIM table mappings, only the user key columns are mapped. Except for updating the primary foreign key columns, EIM does not support inserting and updating rows using these EIM table mappings. Parameters to Set: For stability of EIM when using these EIM tables, follow the template in the default.ifb file by including the following parameters for the relevant section in the EIM configuration file: INSERT ROWS = optional parent_table, FALSE UPDATE ROWS=optional parent_table,FALSE CAUTION: If you do not include these parameters, the EIM process may fail or some exceptions may occur.

Page 20 of 21

Page 21 of 21

You might also like