Monday, January 13, 2014

Important Considerations in Siebel EIM


1. For import and merge processes, you must populate the ROW_ID, IF_ROW_STAT, and IF_ROW_BATCH_NUM columns in the EIM tables. This also must be done for delete processes when you run DELETE EXACT. For merge processes, you also need to populate the IF_ROW_MERGE_ID column. Do not populate these required columns with spaces because a space does not equal a NULL value.

2. Manually creating mappings to an existing Siebel base column in Siebel Tools is not supported.

3. Before you can create an explicit primary mapping, both the parent and the primary child table must be mapped to the same EIM table. If an explicit primary mapping exists, you can use EIM to set the primary explicitly during import or update by setting the primary flag column in the EIM table.

4. EIM_NOTE_DEL and EIM_SKLI_DEL are special EIM tables used for deleting from the S_NOTE* and S_*SKILL_IT tables, which do not have the normal U1 user key.

5. If you are planning to use Unicode in your implementation, then the EIM configuration file must be saved as a Unicode text file.

6. If the batch number component parameter is set to 0, the batch number in the EIM configuration file (if any) is used. This is the only exception to the parameter hierarchy.

7. If LOG TRANSACTIONS TO FILE parameter is set to TRUE, you must make sure that the Siebel Server can write to the file system’s eim directory. During installation, the file system directory must be specified using the Uniform Naming Convention (UNC).

8. PASSWORD PARAMETER in IFB file: If you start EIM from the command line, it uses the user name and password you used to log into the srvrmgr. If you start EIM from the Siebel application, EIM looks for the user name and password in the EIM Server Component parameters first, and if they are not specified, EIM then looks in the .IFB file. If EIM cannot find the user name and password in those places, EIM cannot log into the database and it fails. If you do not want your user name and password visible in the .IFB file, then specify them in the EIM Server Component parameters.

9. USERNAME PARAMETER in IFB file: If you start EIM from the command line, it uses the user name and password you used to log into the srvrmgr. If you start EIM from the Siebel application, EIM looks for the user name and password in the EIM Server Component parameters first, and if they are not specified, EIM then looks in the .IFB file. If EIM cannot find the user name and password in those places, EIM cannot log into the database and it fails. If you do not want your user name and password visible in the .IFB file, then specify them in the EIM Server Component parameters.

10. If your configuration file has more than one process section and you want a certain parameter to act on more than one process, you must include the parameter setting within each of the process sections that correspond to the processes on which you intend for the parameter to act.

11. It is best not to use COMMIT EACH PASS parameter in delete processes. This is because if a commit occurs after each table or each pass in a delete process, then in case of errors causing exit from the process, you can be left with orphan records and dangling references. If the commit occurs for the whole batch, then in case of errors, you can roll back other table deletes.

12. It is best not to use COMMIT EACH TABLE parameter in delete processes. This is because if a commit occurs after each table or each pass in a delete process, then in case of errors causing exit from the process, you can be left with orphan records and dangling references. If the commit occurs for the whole batch, then in case of errors, you can roll back other table deletes.

13. INCLUDE 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.

14. SESSION SQL parameter cannot be used to insert or update data in Siebel base tables. EIM sends the SQL statement directly to the database and may cause data loss for Siebel Remote and Siebel Replication Manager.

15. For performance reasons, you should limit the number of tables to export or merge in a single process section to five tables or fewer.

16. In IFB file, when the backslash 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.

17. You can use EIM to update only non-user key columns; EIM does not support modification of existing user key columns. To update user key columns in S_ORG_EXT, S_PROD_INT, S_PROD_EXT, S_PARTY tables use EIM_ORG_EXT_UK, EIM_PROD_INT_UK, EIM_PROD_EXT_UK, and EIM_PARTY_UK. The postfix UK denotes user key.

18. If there are rows where required columns contain only blanks, the complete EIM process will fail at this step. Rows will not be imported or updated.

19. If the data exists in a database that uses a different character set, the import process does not work properly until you recreate the database.

20. Siebel EIM tables contain several special columns that must be populated before rows can be imported.

21. If you have active mobile Web clients, do not disable the Enable Transaction Logging system preference in the Administration - Siebel Remote screen. If you disable this system preference, the server database and mobile Web client databases will not be synchronized after the import.

22. The ONLY BASE TABLES, IGNORE BASE TABLES, ONLY BASE COLUMNS, and IGNORE BASE COLUMNS parameters can be used to improve EIM performance.

23. COMMIT EACH PASS works cumulatively with COMMIT EACH TABLE. If you set both COMMIT EACH PASS and COMMIT EACH TABLE to TRUE, a commit will occur at the end of each pass and at the end of each table.

24. COMMIT EACH TABLE works cumulatively with COMMIT EACH PASS. If you set both COMMIT EACH PASS and COMMIT EACH TABLE to TRUE, a commit will occur at the end of each pass and at the end of each table.

25. COMMIT OPERATIONS parameter is useful only for row-by-row processing (with transaction logging on). It is not used for set-based processing operations.

26. The INSERT ROWS parameter must be set to FALSE for any table with an EIM table that does not have mappings to all its required columns, such as S_ORDER for EIM_ORDER_DTL. In this example, when EIM is not able to resolve the EIM_ORDER_DTL row to an existing S_ORDER record, it attempts to insert it as a new S_ORDER record. Since EIM_ORDER_DTL does not have mappings to all the S_ORDER required columns, the process fails with a “Cannot insert null” error.

27. MISC SQL is intended for initial data loading only (with DOCKING TRANSACTIONS = FALSE), because when using MISC SQL to set primary child foreign keys, NO transactions are logged for mobile users.

28. NET CHANGE = TRUE does not work for long columns. If you want to update a long column, you must use NET CHANGE = FALSE.

29. No custom values are allowed in the PARTY_TYPE_CD column. This column must contain one of the values listed above.

30. The PAR_PARTY_ID field needs to be populated only when the PARTY_TYPE_CD is set to Organization or Position. For Positions, if the record is a position that is the child of another position, then PAR_PARTY_ID needs to be populated with the ROW_ID of the parent position. In the case of Organizations, this field applies only to internal organizations. Similarly to Positions, the PAR_PARTY_ID needs to be populated with the parent organization if it has one. Also note that Divisions and Accounts have PARTY_TYPE_CD set to Organization well, but it is not necessary to populate the PAR_PARTY_ID field.

31. Transaction logging does not occur during export operations because Siebel base table values are not modified.

32. For performance reasons, you should limit the number of tables to export in a single process section to five or less.

33. Rows from child tables of related child tables are not exported until they have been mapped. EXPORT MATCHES WHERE clause fragment.

34. Complex SQL WHERE clauses like sub queries are not supported. EXPORT MATCHES can be used only against a target base table, or against a non-target base table that is an extension table of S_PARTY when the target table is S_PARTY.

35. The column names included in the criteria (that is, in “(...criteria...)”) must be columns from the target base table or the table that is specified for the EXPORT MATCHES parameter.

36. Do not use EIM to delete organizations. Using EIM to delete data from the Products base tables is also not recommended and can lead to inadvertent data integrity loss.

37. If the record to be deleted is a parent, the child records are affected as described above. However, if a non-required foreign key is part of the user key and clearing it will create a conflict, then the record will be deleted.

38. Because the delete process affects the contents of base tables, transaction logging should be in effect during delete operations if you have active mobile Web clients, so that the appropriate transactions are captured for later docking.

39. When you are deleting records based on user keys, specify the parameter DELETE EXACT in the .IFB file.

40. You must use one of the following DELETE parameters described in this section: DELETE EXACT, DELETE MATCHES, or DELETE ALL ROWS.

41. Do not use ONLY BASE TABLES with the target base table and non-target base tables, because the EIM table record cannot specify just one record to be deleted.

42. Do not use the DELETE MATCHES parameter to delete rows from S_PARTY based tables. For example, using the criteria "DELETE MATCHES = S_PARTY, (CREATED > xxxxx)" will cause all records of S_PARTY that matches this criteria to be deleted from the database.

43. Use the DELETE ALL ROWS = TRUE setting with extreme caution. It will delete all rows in the named base table including any seed data. Do not remove unnecessary seed data by deleting all rows from the S_LST_OF_VAL base table. If you do so, you will not be able to reimport “clean” data and you will be forced to rebuild the seed data or restore from backup. To selectively delete rows, use the DELETE EXACT or DELETE MATCHES expressions.

44. Do not use ONLY BASE TABLES with the target base table and non-target base tables, because the EIM table record cannot specify just one record to be deleted.

45. Use the DELETE ALL ROWS = TRUE setting with extreme caution. It will indeed delete all rows in the target base table.

46. Using EIM to merge data in the Products and Positions base tables is not recommended and can lead to inadvertent data integrity loss.

47. Because the merge process affects the contents of base tables, transaction logging should be enabled during merge operations if you have active mobile Web clients, so that the appropriate transactions are captured for later synchronization.

48. For performance reasons, you should limit the number of tables to merge in a single process section to five or less.

49. EIM will ignore this parameter if Enable Transaction Logging is unchecked in the Remote System Preferences view of the Administration - Siebel Remote screen.

50. In Merge operation, use the UPDATE ROWS = <Table_Name>, FALSE setting carefully. Inappropriate use can result in dangling foreign key pointers.

51. EIM behavior, whether executed from the GUI or through an EIM run, does not merge data in the base record. It simply repoints the foreign keys in the dependent child records. This applies to all columns in the base table. This could lead to unintended data loss in an extension column.

52. Activating flags (Error, Trace, SQL Trace Flags) will have a direct effect on performance. Typically, activating flags should only be done when testing EIM processes. Avoid activating flags in a production environment unless absolutely necessary.

53. Do not use the IGNORE BASE COLUMNS parameter for merge processes or export processes. This parameter should only be used for import processes and delete processes.

54. If you run EIM jobs in parallel on the same base tables, you might encounter unique constraint errors if you have the same values for the unique index fields in batches being processed by two different EIM jobs.

55. Running EIM processes in parallel on a DB2 database may cause a deadlock when multiple EIM processes access the same EIM table simultaneously. To avoid this potential problem, set the UPDATE STATISTICS parameter to FALSE in the EIM configuration file. The UPDATE STATISTICS parameter is applicable only for DB2.