Subscribe

RSS Feed (xml)

Powered By

Skin Design:
Free Blogger Skins

Powered by Blogger

Tuesday, October 21, 2008

What is Interactive Assignment?

This is when the end user request Assignment and receives a list of qualified people available for the assignment.

What is Dynamic Assignment?

This is when Assignment Manager runs automatically to intelligently assign new objects (inserts) or objects that have changed, (updates), via Connected Clients, Mobile Clients, EIM or Thin Clients.

What does Releasing do for Assignment rules?

Restart the Assignment Manger.
Regenerate the rulecache.dat file on the Siebel Server that contains your Assignment rules.

How does Assignment Manger find the best candidate?

Calculates score for each employee/position.
Highest scoring employee/position is considered best fit.
Uses scores to assign weights to your criteria.

What is a State Model?

A State Model defines the controls for the values of fields within a business component and the transitions between the values of the chosen field.

What does the Workflow Action Agent do?

Process requests in S_ACTN_ESC_REQ for a single group.
Invokes all actions linked with the policy being processed in order.
Logs Email\actions in the S_APPSRVR_REQ table so the correct manager can execute them. Purge the S_ESCL_ACTN_REQ table.

What does the Workflow Monitor Agent do?

Checks the S_ESCL_REQ table for violations of workflow policies.
Monitors all policies within a single group.
Generate requests for Workflow Action Agent in the S_ESCL_ACTN_REQ.Purges the S_ESCL_REQ table.

What is stored in the S_ESCL_REQ?

When a trigger fires, based on a Workflow Policy, it inserts a row in the S_ESCL_REQ
table. This is then checked by the Workflow Monitor to see if an action is required to befired against the rows found.

What can you NOT execute from a Workflow Action?

Any application that has a GUI.

Describe the process for file Attachments in EIM.

It is three steps:
1 – Copy the files to Siebel server Root\Input directory
2 – Populate the IF tables with rows that reference the files
3 – Run EIM

What is the SLEEP TIME parameter in both Workflow and Assignment?

It is parameter that sets the time that the process (Assignment or Workflow) sleeps between polling.

Name 6 possible values for the IF_ROW_STAT, when using EIM.

FOR_IMPORT
IN_PROGRESS
SQL_ERROR
IMPORT_REJECTED
FOREIGN_KEY
PICKLIST_VALUE
REQUIRED_COLS
DUP_RECORD_EXISTS
PARTIALLY_IMPORTED
IMPORTED

Name the 3 modes of running for the Assignment Manger.

Batch Mode
Dynamic Mode
Interactive Mode

Name the four Assignment Rule Types.

All, Above minimum – Use all candidates with score >= min
All, Must assign – Use all candidates
One, Best fit – One person, with highest scoring employee/position
One, Random – One random person

Name 3 types of Authorization that the State Model can use.

Position – job title of a person
Division – an area where a job is located
Position Type – a more generic position

Name the 3 pieces of the State Model

Framework
Change Requirements
Authorization

If you set EXEC = TRUE, when generating triggers, what does this actually do?

It generates a TRIGGER.SQL file that contains all the triggers to run your Workflow and Assignment policies. Then is runs the SQL file on the database.

What are the 5 steps to run the Workflow Manger?

Generate the triggers
Start the Workflow Monitor Agent
Start the Workflow Action Agent
Start the E-mail manager
Start manager

Name four generic events that Workflow can run.

Send E-mail
Send a page
Send a broadcast message
Run external program
Perform Database operation

What are the four ways that you can log/trace in EIM?

Task Info Log
Trace Flags
Error Flags
SQL debug flags

Wednesday, October 15, 2008

What does Delete All Rows, do in an .ifb file?

It deletes all rows in the target table and the child records.

What directory must the .ifb file be in, in order for EIM to pick it up?

Siebel Sever Root\admin

Explain how you run EIM

Select: Server Administration ? Server ? Server Tasks.
Add a new Task and select EIM.
Set the parameters (Batch number, Configuration file, trace flags).
Start the task.
Ensure a complete run.
Check Trace files.

What is a User Key?

The User key is the unique key within the base table. The User key can be made up of one or more columns and is/are mandatory. All the User Key fields must be imported to ensure loading.

What is to purpose of IF_ROW_BATCH_NUM?

It is an integer greater then or equal to 0. It is used to group rows together in a single batch. It is combined with the ROW_ID to form a unique key within the interface table.

What is EIM?

EIM (Enterprise Integration Manager) is server based and allows asynchronous integration with other corporate databases. It manages data exchange between external systems and Siebel Enterprise Applications.

Explain what a primary position is.

A primary position can merge or delete records, submit forecasts and by default the creator of an account, contact or opportunity is the owner. Primaries are assigned:Manually – by the Siebel Admin or manger Automatically – by Assignment manager.

Name and explain the three modes of Component operation

Server Mode: run background operations for the server and runs forever, once started, Task Mode: run specific task and exits upon completion,
Session Mode: created dynamically for client request. Runs as long as session is maintained then exits.

Explain the 5 main functions of the Server Manger

Controls your Enterprise,
Manages Siebel Servers,
Allows the configuration of the components,
Allow you to run tasks,
Collect statistics

Name 5 third party software packages that are shipped with Siebel

Adobe Acrobat
Fulcrum SearchBuilder
Actuate
Resonate
Sybase SQL Anywhere

Give two possible reasons why an employee logs in and sees nothing inside the application?

1 – The employee has no responsibility set.
2 – The responsibility that the users has, has no view associated with it.

What must a employee have set, other than login name and password in order to log in to Siebel?

Position

What are the two sections of the .ifb file?

Header Section: Specifies global parameters that apply to all the process sections.
Process Section: Specifies the parameters for the section.

What is a collective name for the specific mandatory columns in a EIM interface table?

User key

What are the 3 generic mandatory columns in an EIM Interface table?

ROW_ID,
IF_ROW_BATCH_NUM,
IF_ROW_STAT.

What are the four possible processes that EIM can perform?

Import,
Export,
Merge,
Delete.

What are the 5 steps to define the your Organization in Siebel

Define the Organizational Hierarchy,
Understand Visibility,
Define Positions,
Define Responsibilities,
Set up Users as Employees

Name the four states that a component can be in

Running,
Enabled,
Disables,
Shutdown.

Name the four levels of control we have over the Server

Enterprise,
Server,
Component,
Task.

Name the 5 main building blocks of the Siebel Architecture

File Server,
Gateway Server,
Enterprise Server,
Siebel Server,
Siebel Database Server.

Saturday, October 11, 2008

List some of the strategies to optimize application performance

Reduce the number of objects
Reducing number of applets per view not as critical
Cut down on unnecessary duplication

What is data-driven access control?

Controls the read-only nature of BC, BC record, or BC Field based on value of another BC Field BC Read Only Field: current record read only Field Read Only Field: field specified by field name is read only Parent Read Only Field: BC read only

What are the available settings for Visibility Applet Type?

Sales Rep (see when user on Team)
Manager (see when direct/indirect reports are “primary” on team or when “primary”) All List (see all records with a primary position) Personal (see Contacts/Activities not Accounts and Opportunities)

What are the Dos and Don’ts of BO configuration?

Do:
Add/modify fields
Modify properties of existing BC
Add BC to BO
Add new relationships between BC
Create new BC & BO

Do not:
Rename them
Delete/inactivate BC or any of their fields
Delete/inactivate BO or BC within a BO

List the BO configuration guidelines in regards to creating new objects.

No Siebel-supplied definition exists to satisfy business requirement
An existing definition is in use
Need the same BC twice in the same BO
Wish to use a table already used by Siebel-supplied BC definition, but for entirely different purpose

List the configuration steps

Perform analysis, design and document
Create/modify object definitions in the Siebel Repository
Create SRF file for the application
Test the Siebel Enterprise application, including performance testing
Step through until design is fully implemented

What are the steps for implementing physical database changes?

Test custom extensions locally first
Prepare the server database
Apply the changes to the server database
Propagate the server changes to mobile users’ databases

What are the steps for using a standard 1:M extension table?

Create BC to represent 1:M extension table
Set Search Spec to equal Pre Default Value “TYPE” field
Add fields to the new BC (ensure “NAME” and “TYPE”)
Create a link from BC to New BC and add the New BC to BO
Create applet to display data from new BC

What are the steps for using a standard 1:1 extension table?

Add a joined field in the parent BC (based on the “main” table). The join is implied and created automatically at runtime. Add a control or list column to an applet.

Describe the types of Siebel database extensions

Standard extension tables - Predefined tables which support 1:1 or M:1 relationship. Part of the existing physical database. Custom extension tables and custom extension columns - New 1:1 tables, New columns that are added to new and existing tables.

List 3 options for visualization tools

View Details (for BCs and BOs only),
View Hierarchy (applicable to applets, applications, BCs, screens, and views), View Relationships (for BCs and Tables only)

List 3 additional object definition aids

Bookmarks (Adding a bookmark saves your ‘context’ as part of the location of the object definition.), Repository Search, Visualization Tools.

What is responsibility and position?

A responsibility is a class of users who require access to the same set of applicationfeatures. Controls what views are available when the employee logs in. Whereas Position, controls what records from the BCs are displayed in the view.

List some Siebel naming conventions

Prefix new object definition names with your company acronym to easily recognize your object definitions versus Siebel-supplied ones, Avoid using a numbering convention, Give new object definitions meaningful names

What are two common approaches to structuring development work?

Assign individual developer or group the bottom-to-top development role for specific functional area, Assign developer or group to a specific architectural layer

Describe the Custom 1:1 Extension Table?

The table name will be the main table + sequential number + _X, The PAR_ROW_ID column. stores the foreign key to the “main” table, There are eight predefined system columns. User data columns must be added as custom extension columns.

Describe the Standard 1:M Extension Table?

The table name will end with “_XM”, The PAR_ROW_ID column stores the foreign key to the “main” table, There are 47 predefined data columns of varying types, The “NAME” and “TYPE” columns are required, non-system columns.

Describe the Standard 1:1 Extension Table?

The table name will end with “_X”, The PAR_ROW_ID column stores the foreign key to the “main” table, There are 47 predefined data columns of varying types.

Can you use EIM to populate added extension columns to a base table?

Yes. But you must add extension columns to the appropriate interface table and map the extension columns to the base table.

Outline the Siebel database extension process

Design the extension, Determine the placement of the data item in the user interface,
Determine how to load data into the new data item

Thursday, October 9, 2008

List some of the calculated field limitations.

Cannot be used as sort criteria, stored in columns and read only. Validation criteria on calculated fields is ignored. If SQL is used and performs a calculation, the value will be applied after the data is in the BC, but before displaying in the applet.

What syntax is used to denote strings? Field names?

Double-quotes are used to enclose strings. Square brackets are used to enclose field names.

How do you create a primary on a MVL?

Add a primary key field on the parent BC. Set the Primary Id Field and Use Primary Join properties on the MVL.

How do you create a primary on a MVL?

Add a primary key field on the parent BC. Set the Primary Id Field and Use Primary Join properties on the MVL.

What is a primary?

A primary is a FK on the parent-side that points to one “primary” record on the child-side of a 1:M link. A primary FK creates a 1:1 link between the parent and the child.

What are the steps for creating a MVG?

Create a MVL in the parent BC. Add MVFs in the parent BC. Create a MVG applet to display child records. Add controls/list columns to the parent applet to display MVFs and invoke MVG applets. Add primary FK in the parent BC and on the MVL.

What are the steps for creating a dynamic pick list?

Create a Pick list using a BC representing the joined table. Associate the Pick list with a BC field. Map the BC fields to the Pick list BC fields. Create a Pick list applet. Specify which control or list column will invoke the Pick list applet.

What are the steps for creating a static pick list?

Create a new static pick list. Add BC field that will be populated. Map the BC field to the pick list BC field. Specify which control or list column will invoke the pick list applet. Picklist will be empty until values are put in the S_LST_OF_VAL table.

How do you configure a dynamic toggle?

Child applet toggle definition specified for each applet you want to appear when a specific condition is met. If all conditions fail the parent applet is displayed. Auto Toggle Field: The test field. Auto Toggle Value: test value to match the test field.

How do you configure a static toggle?

Parent applet specifies the first applet to appear in the view. Each child applet toggle specifies additional applets to which the user can go. A toggle icon must be added to the applets, it is a standard button control ( Method Invoked = CycleToggle)

What is the difference between - Pre-Default and Post-Default?

Pre-default automatically assigns a value to a field for a newly inserted record, whereas Post-default assigns a value to a field, if not entered by the user, before the record is inserted into the database.

What object types have a Sort Specification property?

BCs,
Pick Lists,
Links.

What are the comparison and logical operators?

Comparison: =, <>, >, <, >=, <=. Logical: NOT, AND, OR

What is the visual cue for the user that a MVG applet is available?

A glyph after the control.

What are MVFs, MVGs, and MVLs?

Multi Value Fields allow master-detail or parent-child information to be displayed in one applet. Multi Value Group applets allow for the popup display of detail or child records on demand. Multi Value Links leverage Links to support MVFs.

What is the visual cue for the user that a pick list is available?

A drop down arrow.

What does setting the Runtime property to TRUE indicate?

If TRUE, then a runtime check will be made to see what special processing needs to occur for the field. TRUE indicates that more must be done than just showing the data from the database.

What is the S_LST_OF_VAL?

S_LST_OF_VAL is one table that holds all static pick list values. Must declare a LOV_TYPE to distinguish the particular pick list.

When is the Thread bar updated/refreshed?

The thread bar is refreshed when another screen is selected from the tab bar or Screens menu.

Wednesday, October 8, 2008

What are the two types of view drilldown that Siebel supports?

Static: Navigation is to a particular view.
Dynamic: Navigation is to one of several candidate views.

Sunday, October 5, 2008

List 5 of the command line switches.

/u Username,
/p Password,
/d Database,
/x Debug Mode,
/s Spool: outputs all SQL statements to a log file,
/c Configuration File,
/l Language: same effect as the Language parameter in a .cfg file

What is the No Delete Property?

If set to TRUE, the user cannot delete the child records through the link. The user can disassociate a child record from its parent, but the record still exists in the database and can be viewed via another screen.

List the options for a link’s “Cascade Delete” property

Delete: If a parent record is deleted, all child records are deleted, None: Doesn’t delete nor does it clear the FK column, Clear: Doesn’t delete but clears the FK column.

What is a link?

Specifies the relationship between BCs, Provides for the display of master-detail or parent-child information, Used for 1:M or M:M relationships, Allows data from the child BC to return many records associated with the parent.

What are the steps involved in creating a link?

Add/identify fields on BCs or intersection table to construct the link,
Create the link between the BCs,
Add BC(s) to BO and specify the link on the child,
Create applet(s) and view for display.

What are the steps for creating a join for an existing BC?

Add field (FK) to BC required to construct join,
Create a join for the selected BC,
Specify the join relationship (FK to PK) BC,
Add fields to BC coming from joined table,
Modify applets as required (to display joined data).

What is the .srf file?

A file that contains object definitions in a compressed, binary format, Stored in the…\Objects folder, Read at runtime, Siebel reads the file on demand as different parts of .the application are executed, once read from the file, it is kept in memory.

What are the steps for creating view, screen, and application definitions?

Create a view,
Create a screen,
Add view(s) to the screen,
Create an application (or use an existing one),
Associate screens to tabs,
Associate screens to screen menu items

What happens during a copy record operation?

All child object definitions will be copied along with the selected object definition.

What is an applet and what does it do?

Provides viewing, entry, modification, and navigation capabilities for data in one BC. Usually implemented as a scrolling list table or data entry form.

Wednesday, June 25, 2008

Are joined fields “updateable”?

No, they are READ-ONLY. In order for data to be manipulated (insert/delete/update), it must appear in an applet in which the fields (to which the controls are mapped) are single-value fields mapped to columns of the BC’s base or main table.

What is the result of setting the “Outer Join Flag” property to TRUE?

Returns all records from the main table of the BC even if there is no joined record. Set it to FALSE if the FK relationship is mandatory. If the FK will always be there, then you don’t need the outer join.

What does the join object specify?

The FK to PK relationship. Allows a BC to represent data from a foreign table. Used on the many side of a many to one relationship. Requires data from the joined table to return at most one row.

How are keyboard shortcuts created?

With an ampersand (&) before any letter in the Text property

What is involved in creating a bitmap?

Add a bitmap category;
Create a bitmap (name must be “Logo”);
Import bitmap;
Preview

What are the child object types of an application, we have looked at so far?

Screen Menu Items, Tabs

How do you invoke the view designer?

Select the ‘View’ object type in the OE and choose View -> Edit Layout from the Tools .menu bar or right mouse-click on a view definition in the OBLE and choose Edit Layout.

What is the layout of the Siebel view sectors?

0 4
1 5
2 6
3 7

What are the options for the Check Bitmap Identifier property for list columns of type

CheckBox?Check, Asterisk, Alarm, Flag.

How do you invoke the Applet Designer?

View -> Edit Layout either off of the menu or by right clicking the mouse

Saturday, June 21, 2008

What are the steps for creating a BO and BC?

Create a project and/or checkout,
Create a BC and add to project,
Add fields to BC,
Create BO and add to project,
Associate BC to BO.

What are the different kinds of values that an object definition property can be?

A Siebel constant,User-defined,Reference to the Name of an existing object definition

What is the Siebel UI Organization Structure?

An application is a collection of screens. Each screen is a collection of views pertaining to a functional area; Views map to the same BO and presents a subset of its data: is a collection of one or more applets. Each applet maps to one BC.

What is the User Interface Objects layer?

Is the visual representation of the underlying BOs and BCs. Provides means to customize the screen display. Defines the application, screens, views, applets and reports (including UI layout and navigation, all UI controls)

What is a BO?

A major area of business functionality. A collection of BC’s which are logically related.One BC in the collection serves as the master BC (the master BC has the same name as the BO itself). Same BC can be used in different sets of relationships.

What is a BC?

Associates columns from one/more tables in the Data Object layer into a single entity. Maps to a main table. Has Fields, most of which map to a Column in a Table. Enables relationships with other BCs using PK/FK relationships built-in to the Data Model.

What is the Business Object Layer?

Business Object Definitions built on Data Object Definitions and/or other Business Object Definitions. Provides the interface to retrieve and manipulate data from the underlying SQL tables. Major object types: Business Component and Business Object

Wednesday, June 4, 2008

What is the Data Object Layer?

A layer of abstraction over the RDBMS, insulating the application and developer from database administration and restructuring.Contains Data Object Definitions such as ‘Table’, ‘Column’, and ‘Index’, which directly map to the RDBMS structure.

What kinds of information is contained in the .cfg file?

Siebel application to run,
Data sources available to application,
Repository file to use,
Application title to display in splash screen,
Application title to display in application window

What is the difference between an object type and an object definition?

An object type is a named structure from which object definitions of a given type can be created. (ex.: ‘Applet’ is an abject type and ‘Opportunity List Applet’ is an object definition.) An object type has a predefined set of properties.

What are the two means for editing object definitions?

Object List Editor, Properties window

What is the No Delete, No Insert, No Update BC property?

If set to TRUE, no data manipulation can be performed. Default is FALSE.

What are the three windowpanes associated with project ‘Diff’?

Project differences,Object differences,Attribute differences

What is the difference between ‘Get’ and ‘Checkout’?

They are equivalent except that ‘Get’ does not place locks. Initial ‘Get’ is required before compiling against the local Repository.

What does the Changed Flag indicate?

A Checkmark in this column indicates that changes have been made to the contents of the corresponding record since a particular date and time (You set this date and time using the General tab in Tools -> Options menu).

What keyboard command is used to invoke the picklist?

F2

Describe the 3 Object Explorer (OE) tabs.

Types: higher level object types displayed,

Details: expanded top level object type displays object definitions of that type, Flat: displays all definitions of that type

What are the three layers to the Siebel Architecture?

User Interface Objects, Business Objects, Data Objects- Business Object

What is the repository file?

The repository file is a compiled file which contains the data configuration and the data presentation configuration constructed by the developer.

What is Tools?

Allows customizing of underlying data configuration as well as data presentation configuration. Data configuration determines what SQL is sent to the database. Siebel generates the SQL and it cannot be directly modified.

Siebel FAQs

What is Siebel repository ?

Define siebel.exe file ?

Define siebel.cfg file ?

Questions on Call Centers and CTI.

What is the hardware ? What is the middleware ?

When CTI is installed in NY how the development work was done in

Chennai ?

Description of the whole process.

Relationship with other objects.

When the call was received, which screen was popped up ?

How did you transfer the screen from one place to other ?

How many views are handled by agent and how many are transferred ?

Questions on Savvy projects.


How many developers are involved ?

How is the environment ?

Who was Project Manager and Siebel Project Manager ?

How it was executed ? What was the duration ?

Questions on EIM project ?

Description of the process, execution, methods, operations, problems, connectivity with client.

How many screens / views are there ?

How import / export was done ?

Script on EIM process.

Questions on Siebel tools.

Difference between 99 tools and 2000 tools ?

Questions asked during the GE Interview:

1. EIM

Concept

Details of tables

IF tables – reasons, config etc.

2. Sales

Forecasting, Different types of forecasting etc.

Complete sales cycle in Siebel

3. Marketing

Campaign types and uses.

4. CTI

Concept

Application

Integration of CTI with Call Centers

5. Tools

Joins

Links

6. Workflow & Assignment Manager

Concept

Process

Applications

Difference between them

7. Call Center

Smart script

8. Actuate Reports

Integration of Report server with others

Report Generation

9. About our company, SAVVY SYSTEMS.

Monday, May 19, 2008

Siebel CRM How To – Restrict a Field to only Accept Certain Characters?

Requirement:

  • We have a multilingual application and we have Unicode enabled database but still we would like to restrict user from entering certain characters.

  • We want to prevent user from entering numbers in alpha-numeric fields.
Solution:

Use charCodeAt function given by Siebel but not documented properly by Siebel. Here I am giving a Pseudo code to explain how it can be used.

if (FieldName == "First Name") {
for (var i=0;i less than field length ;i++) {
var ASCII_code = fieldvalue.charCodeAt(i)
if(ASCII_code is not valid code)
Error("Not Valid Code");
}}


charCodeAt() returns the ASCII code of the character that is supplied to it. ASCII code comparison is way faster than the number function that are used to compare strings so we can also use this function where we want to compare two strings by just modifying the above given Pseudo code.

Hope this helps! If yes, Please put your comments below.

Siebel CRM How To - Automate login into Siebel Dedicated Client

The trick I am going to tell you in this article might seem to you very simple and basic if you have been working on siebel for a long time but for a newbie it can be small time saving trick during his early days of dabbling with Siebel Development. I have come to know in last few days while talking to a friend, assuming that a simple thing is known to everybody is a mistake and there is nothing such as useless simple thing.

My experience has taught me that it is pretty common to ignore simple things but they usually are the one's that can save you a lot of hassel if used in a proper way. During our intital time of Siebel development there is atleast 50 time we open Siebel Dedicated Client and Siebel tools while we are trying to explore Siebel to the best of our ablity. This simple trick can automate your login to the client and tools and save some time of entering username or password.


  • Right Click the shortcut through which you acess the Siebel Client or Siebel Tools and choose Properties from the context menu.
  • Scroll right to the end of Target Text Field Value enter the following text in the end.

/u sadmin /p sadmin /d sample

These text will automate your login to sample database. If you want to automate your login to Local Database enter the following code.

/u username /p pwd /d Local

replace username with your local username and pwd with your local database password

You can create copies of the shortcut that you use and can configure different shortcuts to login to different databases. Detail about switches being used in the above article and other switches that can be used is a subject of another post.

Hope this post helps you. If yes, Then please post your comments or suggestion to improve this blog.

Navigating Siebel - Via Keyboard!

We generally navigate siebel with the help of mouse. Suppose, one fine day your mouse stops working would that mean that you are stuck and will not be able to work on siebel? I don't think so, to overcome that situation Siebel has provided keyboard shortcuts or acclerators to navigate and perform important functions in siebel so that you are dependent on Mouse to do all your work in siebel.

And I have always been a fan of keyboard as it saves you lot of time while working on system. So, here I am presenting list of keyboard shortcuts provided by siebel to perform various functions.


Record Management

New Record : CTRL + N
Copy Record : CTRL + B
Delete Record : CTRL + D
Save Record : CTRL + S
Undo Record : CTRL + U OR ESC
Select All Records in List : CTRL + A

Record Navigation

Next Record : CTRL + Down Arrow Key
Next Page of Records : CTRL + ALT + . (In List Applets)
Last Page of Records : CTRL + ALT + L (In List Applets)
Previous Record : CTRL + Up Arrow Key
Previous Page of Records : CTRL + ALT + , (In List Applets)
First Page of Records : CTRL + ALT + F (In List Applets)


Query Management

New Query : CTRL + Q
Execute Query : ENTER in a Field OR CTRL + ENTER in a Text Area
Refine Query : CTRL +R

General Navigation

Go to Site Map : CTRL + SHIFT + A
Open Search Center : CTRL + F OR CTRL + SHIFT + F
Run Report : CTRL + SHIFT + R

Layout Management

Define Columns Displayed : CTRL + SHIFT + K
Define Sort Order : CTRL + SHIFT + O

Online Help Shortcut


Open Online Help : CTRL + ALT + H
Help with Record : CTRL + ALT + K
Technical Support : CTRL + ALT + J

Application Management Shortcut

Connect as New User : CTRL + SHIFT + W (Works in Dedicated Client)
Log Out : CTRL + SHIFT + X (Works in Dedicated Client)


Field Navigation

Next Field : Tab
Previous Field : SHIFT + TAB

If you think I have missed something or you know something that others don't feel free to share it here. I will be more than happy to include it with your reference.

Siebel How To - Create Inbound and Outbound Webservice?

I was fortunate enough early in my carrer to get a chance to work on Siebel EAI. It was the first implementation of Web Services in our project. So, had to struggle a lot to understand basics of web service. But I always from my school time had intrest in XML and Web so understanding that part was not that difficult but I really had to work hard to understand web services from Siebel Prespective. I am thankful to God now that there was nobody to guide me at that time which resulted in terrific learning and understanding of a fact

'Siebel is Huge' like a sea and what I have explored till now is not even 10% of whole Siebel.

During my days working on Siebel Web Services I created a Powerpoint Presentation (PPT) which had minimum steps that you need to perform to create Inbound and Outbound Service with Screen Shots. Which I would like to share with you all. It can act as a your guide to check If you are missing any steps in creating Web Service. It is not a comprehensive guide but just a tutorial to give you insight and to point you to the right direction if you are involved in EAI.

Click on the Link Below to download the PPT.

Download Now!!!!

Siebel Tools How To - Have Mutiple Local database Instances?

This article is a step by step guide to have mutiple local database instances on the same system.
Below mentioned points might be the reason why you would want to do that

  • You are working on mutilple projects and they all have repository named 'Siebel Repository'. You want to work on both repositories simultaneously.
  • You share your system and you want the changes made by other developer to be on a different instance rather than yours.
  • You have a server that can be accessed by mutiple people who work on it simultaneously

So, How do you do that? Here is the answer

  • Make a copy of your siebel local database (that is file named sse_data.dbf) rename it to be anything such as sse_data_copy.dbf
  • Make a copy your tools.cfg file (which should be residing in siebel install dir\tools\bin\enu\) and rename it to such as tool_copy.cfg
  • Open the tools_copy.cfg file scroll down to section [Local]
  • Find parameter named Connect String and change the value to reflect the name and path of you newly created copy of your dbf file.

for example

Previous Value : C:\PROGRA~1\Siebel\7.8\Tools\local\sse_data.dbf -q -m -x NONE -gp 4096 -c256m -ch256m -ch256m

New Value : C:\PROGRA~1\Siebel\7.8\Tools\local\sse_data_copy.dbf -q -m -x NONE -gp 4096 -c256m -ch256m -ch256m

you can change the other parameters also. To learn more about other parameters please read my post Siebel CRM - Configuration File (cfg) Disected and Explained.

  • Change the parameter named DockRepositoryName to different name if you don't want to have repository of your newly created instance to be Siebel Repository.
  • Create a copy of your shortcut which you use to access your siebel tools instance.
  • Right Click on the newly created instance and choose properties from the context menu
  • In the Target field of the newly opened window scroll to the point where it mentions the name of the cfg file which should be tools.cfg
  • Rename just the name of the file to tools_copy.cfg (the name of the copy of the cfg file you made)

for example

Orignal Value : "C:\Program Files\Siebel\7.8\Tools\BIN\siebdev.exe" /c "C:\PROGRA~1\Siebel\7.8\Tools\bin\enu\tools.cfg"

New Value : "C:\Program Files\Siebel\7.8\Tools\BIN\siebdev.exe" /c "C:\PROGRA~1\Siebel\7.8\Tools\bin\enu\tools_copy.cfg"

And you are done. Now you have two Siebel tools instances on the same system.

This solution will not work if :

  1. If you mutiple users work on the system at same time. (For example a terminal server where multiple users can login and work simultenously)
  2. If you want to Check in your changes to a different server

In next article we will discuss about additional changes that can be done to overcome this problem.

I Hope this post was helpful to you. If yes, Please post your comments or suggestion to make this site better.

Siebel CRM How To - Invoke Workflow through BC User Property

Till siebel 7.5 the only method know to invoke workflows were

  • Runtime Events in start step of workflow
  • Business Service
  • Business Component Script
  • Workflow Policies
But from Siebel 7.7 ownwards there is one more method by which we can invoke a workflow. That way is Siebel business Component user property. You can 'Named Methodn' user property in a BC which can invoke a workflow where n is increment to the last named method user property defined on that BC.

Name: Named Method

Value:[Event Name] , "INVOKESVC", , "Workflow Process Manager", "RunProcess", 'ProcessName',[Name of the Workflows] , 'RowId', [Row Id Value]

Example

The below mentioned will invoke a workflow named 'Example Workflow' when a new record is created in Example BC.

Name: Named Method 1

Value: "New Record", "INVOKESVC", "Example", "Workflow Process Manager", "RunProcess", "'ProcessName'", "Example Wrokflow", "'RowId'", "[Id]"

Hope this post helps you. If yes, Please post your comments.

Siebel CRM How To - Create a new LOV?

Whatever I have posted in this blog assumes that you have fair bit of idea working on Siebel CRM. I noticed there is hardly anything in this blog that can help a newbie. So thought of starting a new Category that is 'Siebel CRM How To'. This Category will include step by step How To's to various things in Siebel CRM. Starting this series is a simple 'How To' of creating a new List of Value and adding to the existing List of Value (LOV).

Information about LOV and explaination about the various terms is subject of another post. In this post I am just going to have step by step tutorial of creating a new LOV and adding new values to existing LOV's

Creating a new LOV

You can create an LOV from two places both have a different way of creating LOV in Siebel CRM.

Administration ==> Data ==> List of Values
Administration ==> Data ==> LOV Explorer


Through List of Values to add a new LOV following steps have to be followed. As an Example we will add a new LOV for Martial Status of a person.


  1. Click New and Choose LOV_TYPE in Type Field
  2. Enter MARITAL_LOV in 'Display Value'.
  3. Enter 'Marital Status' in Language-Independent Code Field
  4. Enter 'English-American' if you implementation language is English otherwise it will be according to the language of your implementation. Save the record
  5. Click New again and choose 'MARITAL_LOV' in Type Field
  6. Enter 'Married' in Display Value and Language-Independent Code Field
  7. Enter 'English-American' if you implementation language is English otherwise it will be according to the language of your implementation. Save the record.
  8. Follow steps 5 -7 for all values that you want to associate with this LOV

For example we will follow steps 5 - 7 and just change the value Married to Single so that It can have two values 'Married' and 'Single'

Through LOV Explorer you have to perform the following steps.

  1. Click New and enter 'MARITAL_LOV' in the Type field
  2. Click on the + sign in the left hand side of the LOV Explorer window for the type that you created
  3. Click on the Values folder.
  4. In the Right hand side Applet click on New
  5. Enter 'Married' in the 'Code' and 'Display Value' Field
  6. Enter 'English-American' if you implementation language is English otherwise it will be according to the language of your implementation. Save the record.
  7. Repeat steps 4-6 for the all the values that you want to enter.


That's it. You are done with creating the New LOV with new Values

To enter New Values in the existing Siebel LOV just perform the following steps.

  1. Query for the LOV Type that you want to add New Values.
  2. Copy the record Enter the Display Value and Language Independent Code Field
  3. Change the value in the Order Field to be the unique number and save the record.
Related Posts that you might like to Read:

Siebel CRM - List of Values a Strategic Move!
Siebel CRM - List of Values a Strategic Move- Continued!

Siebel List of Values - A Strategic Move - Continued.

Last time I said that I will be presenting a Solution to make Required Fields dynamic and SRF independent. So I am back with What I promised.

Requirement:

Siebel Service Request module was to be implemented because of a new implementation the business requirements were being changed all the time. One Strange requirement was to make the Required Fields of a business component dynamic. So that they can be changed without a release. Now, we all know one way to make a field required is to set the Required Property of the field to true. But that would mean that if I were to change that a new SRF deployment will be required.


Solution:
LOV's again were the life saver for us. We created an LOV called SRV_REQ_FIELD and in the Display value we provided the names of the fields that we wanted as Required Fields. In the Business Component PreWrite Record we queried for that particular LOV and traversed through the records that were active. If the Field provided in the LOV did not contained a value then an error was raise stating that the value for that particular required field was not supplied. I am giving the Pseudo Code below to what that script might look like


BOLOV = TheApplication().GetBusObject("List Of Values");
BCLOV = BOLOV.GetBusComp("List Of Values");
with (BCLOV)
{
Query for LOV Type as 'SR_REQ_FIELD' and Active Flag = 'Y'
}

IsRecord = BCLOV.FirstRecord();
while( Last record is not reached)
{
this.ActivateField(BCLOV.GetFieldValue("Name"));
if ( this.GetFieldValue(BCLOV.GetFieldValue("Name")) == "" )
Raise Errro Text ("Value not given")
BCLOV.NextRecord();
}


This solution is not recommended if the number of fields that are required is fairly large. But still can be really handy in many situations.

Hope you liked this post! If yes, Do post your comments.

For other posts Related to LOV please go through the category of List of Values

Siebel List of Values - A Strategic Move!

List of Values (LOV) is assumed to pretty simple entity in siebel and having very limited use, of showing values in dropdown picklist. But lately I found they can be used in more than one ways. They can be a real life saver. One use I have found of them is to avoid hard coding. Yes, you can avoid hard coding of values and use LOV instead which you can then change without SRF Release.

I will list below some real scenarios which I have come across and used List of Values to accomplish task which otherwise would have a real pain while moving stuff different environments.

Workflows - Requirement :
We were creating workflows that were going to integrate Siebel with some other application with the help of MQ Series. Now, to accomplish that we had to enter two paramerters related to MQ Series in the first step of workflows, Queue Manager and Physical Queue Name.

If, we were to hardcode then it would be difficult to move workflow between different envoirnments such as QA and production because they had different Physical Queue Name . There LOV's came to our Rescue. We created two LOV's with the values of the Queue Manager and Queue Name and used LookupValue() method in workflows to acomplish that.

LookupValue method accepts two arguments 'LOV Type' and Language Independent Code ('LIC') and returns the display value of that LOV Type. The syntax is as following



LookupValue("LOV Type","LIC")

Example :
  • Create an new LOV Type (in this case we are created MQ_PHY_QUEUE_NAME. It should be same in all the environments where you want to deploy the workflow)
  • Enter the Display Value (actual value that you want to speficy like in this case we specify ESBLDAS for dev env and ESBLQAS for QA Env)
  • Enter the LIC (can be anything descriptive like in this case we had given 'Physical Queue Name')
  • In the Input Arguments of workflow choose input argument type as Expression and specify the value as LookupValue("MQ_PHY_QUEUE_NAME","Physical Queue Name")

Now, it is going to pick the value as 'Display Value' of the LOV that you have specified.

In next post I will describe how can we use LOV to dynamically specify Required Fields for a Business Component.

For other posts Related to LOV please go through the category of List of Values

Siebel eScript – An Overview

Scripting is one of the most important areas in Siebel Development but irony is that it is never recommended to write script in Siebel. Siebel scripting is done in a language known as eScript. eScript shares it’s syntax with JavaScript. If you have worked in JavaScript then you would find it pretty easy to adapt to eScript.

eScript can be broadly classified into two categories

  • Server Scripts
  • Browser Scripts
Server Scripts: as its name suggests is executed on server side. Which means that the user request is sent to server where the scripts is then executed

Browser Script: is actually converted into JavaScript and is executed on client side.

Usually scripting is written on objects in Siebel such as Applets, Business Components etc. But the main use of eScript is done to write Business Services. There are lots of things that you achieve through a business service. Detail discussion on business service is subject to different post but it is similar to somewhat workflows implementing complete business processes with the help of script.

Scripting should be used as a last resort. Everything can be done through script of course but it makes the manageability and up gradation of Application difficult.

But as I said in my earlier post to be a successful Siebel developer Scripting and Configuration should be your strong points. Scripting can be fun but should be avoided as long as possible

Siebel eScript – How to track performance with Timing Scripts

Timing scripts can come in handy to know exactly how much our code is taking to execute. There can be several reasons for doing this.

  • We are calling several business services in code and we need to know performance of each one.
  • We need to know time our script on business component, Applet is taking
  • We have several approaches to solve the problem and need to know the exact time taken by each.
The code to achieve that is:

var fileVar = Clib.fopen("c:\\Timing.txt", "at");
var timeVar = Clib.ctime(Clib.time());
Clib.fputs(timeVar + ": Starting trace in of code", fileVar);

//code which you want to track time
…………………………………….
…………………………………….

timeVar = Clib.ctime(Clib.time());
Clib.fputs("Ending trace of code: " + timeVar, fileVar);
Clib.fclose(fileVar);

PS: This code will work only if you are trying to run it in dedicated client or your Siebel server is windows server. This code will fail if you are trying to run it from thin client and your Siebel Server is a unix server as it will not able to find the path. You will have to change the path to unix path e.g. /apps/srvr/bin if your server is unix.

Hope this helps!!!!

NextRecord DeleteRecord - Use with caution!!

Number of times we have written code in which we have to traverse number of records in a loop and n number of times we have missed one important statement that results in our code to stuck in infinite loop. Yes, I am talking about the statement Object.NextRecord()

This statment is generally used at the end of the loop so that after all the processing is complete we move on to the next record in the record set and perform processing on the next record. I am giving a Psuedo code to explain that.

while(not end of recordset)

{

perform operation

recordset.NextRecord()

}


But here I am going to to tell you about a situation where doing a NextRecord(). will result in problems. Yes, I we are deleting the records in the loop then we don't need to use the NextRecord() function.


Reason for that is using DeleteRecord() results in pointer to moved to next record automatically and if we use NextRecord then it will result in skipping of the last record we are trying to delete. Pseudo to explain this

while(not end of RecordSet)

{

do processing

recordset.DeleteRecord();

// recordset.NextRecord(); // no need to use next record as delete will automatically move the pointer to next line

}

Hope this tip is helpful. Happy Scripting :)

Siebel How To - enable or disable a button conditionally?

I was working on my desk one day and newbie to siebel approached me to ask a question(also a avid reader on asked me the same question on mail). He asked me about a simple requirement or rather I should say the requirement that appeared simple to me.

The requirement was :

A button on an Applet should be enabled if a particular user logs into the application otherwise it should remain disabled.The Solution is a simple script that we can write on Applet_PreCanInvoke event to enable or disable a button conditionally.

I am providing the pseudo code for that script below

function WebApplet_PreCanInvokeMethod (MethodName, &CanInvoke)
{
if (MethodName == "UrButtonMethod")
{
if(UserLogin == "AuthorisedUser")
{
CanInvoke="TRUE";
return (CancelOperation);
}
else
{
CanInvoke="FALSE";
return (CancelOperation);
}
}
}

There is just one catch in the above mentioned code. How will you find that user is the authorised user or not. There are several ways of doing it some are easy and some are difficult.

I will tell you the easiest way to do that. You just need to write one line of code to accomplish that which is as following.

if(TheApplication().GetProfileAttr("Me.Login") == "AuthorisedUserLogin")

There is a whole bunch of such kind of profile attributes that are available to us all the time in the whole application, we can use them anywhere we want. But discussion on Profile Attributes is subject of another post. So, come back for more.

If this post was helpful to you, Please post your comments or suggestions to make this site better.

Siebel Search Specification (Search Spec) – What about it?

This article has been submitted by Nidhi Puri having Siebel experience of 2+ years and right now working as Project Lead.

A Search Spec is nothing but a filter on the returned set of records and if we we look atc it from database point it acts as where clause in the SQL that is formed which restricts the number of records that will be retruned from database.

In Siebel we can apply search spec to

  • Applet
  • Business Component
  • Link
  • Picklist

1. For an Applet, a search spec filters the records that are displayed on UI. The underlying BC brings back a set of records and before they can be displayed, the applet search spec applies the filter on them and displays only a subset of records.

2. For a Business Component, a search spec filters all records that would be returned from the underlying base table. This would also result in the filtering of records on the applet tied to this BC. However, the search spec in 1 above works only for that particular applet while on a BC, the search spec is inherently applied to all applets that are based on this BC.

3. A search spec on a Link will filter all child records from the destination BC.

For Example
Account/Address link. Search spec looks something like this: [City] = ‘London’, this will bring back all address records for the account where the City = London.

4. A search spec on a Picklist will filter the data that the picklist points to. For static picklist, the data exists on the List of values, so the search spec for a static picklist would look something like this:

[Value] <> 'Corporate'. This would show all values other than "Corporate" when you click on the dropdown. For dynamic picklists, the search spec would something look like this: [Active Flag] = ‘Y’, this would bring back all records from the destination BC (on which the picklist is based on) where the Active Flag = Y

Siebel Profile Attributes - an Overview.

Profile Attributes I stumbled upon them in siebel when I was working on my first assignment involving Siebel EAI. Till that time I had only used and heard of Global Variables which you could use throught out your script.

But as the requirement said only if user clicked a button in View A and then performed some particular action in View B trigger a workflow.

As views involved had different BC's it was not possible to have done through global variables. Then my senior colluege introduced me to a new entity in siebel called 'Profile Attributes'. They are important because they have a unique property. They are available throughout the application. The best term that comes to my mind to describe them is 'Session Variables'. Those who have worked a little bit on development of Web Application will understand exactly what I am saying and for those who hasn't worked on them I will explain.

As you know from siebel 7 onwards it has Web Architecture. So, as soon as you login into siebel through your browser a session is started which last till time you log out or you close your browser window or according to the length set through session parameter at server level.

Now discussing in details that how server maintains this session and what goes on behind the scene is out of scope of this article
but what you need to know is that Siebel server recognises every unique user through session id that is given to you when you login to siebel and it remains valid until you session closes due to above mentioned reasons. So, Profile Attributes are variables that can hold any value during the session of the user. There are two methods available to in siebel escript that help you to work with Profile Attributes.

  • GetProfileAttr
  • SetProfileAttr

GetProfileAttr method is used to retrieve the value of a particular profile attribute. The syntax is

TheApplication().GetProfileAttr("ProfileAttrName")

SetProfileAttr method is used to set the value of Profile Attribute. If the Profile Attribute that you mention is not already existing it creates a new Profile Attribute. The syntax is

TheApplication().SetProfileAttr("ProfileAttrName",Value)

So, to accomplish the our requirement we Set a profile attribute when clicked the button on view A and then when he went to View B and did the particular action we wanted we retrieved the value of the profile attribute and if all the conditions were met we executed the workflow and everybody developed happily ever after :)

But, there is a twist in the story and it was not a happy ending after all which highlights the fragile nature of Profile Attributes. Now, in a particular situation this solution won't work. If user clicked button on View A and then logged off which meant profile attribute is destroyed hence the functionality failed. So, as you all must have guessed this solution was scrapped :(

So, the moral of the story is use Profile Attributes with caution and only if you are sure that if the session is destroyed you functionality wouldn't fail.

Siebel Business Component Outer Join - How Important?

During my past two years of working on Siebel I have come across lot of situations where just one little miss can wreck havoc with the application. It can result in performance issues and Data issues. I think some of you might have guessed by know what miss I am talking about.

I am talking about Outer Join Flag on Join Section of the Business Component. Joins are the integral part of Siebel configuration. They are indispensable, joins are required because we know the database (it can be oracle, DB2 or Microsoft SQL Server) is a relational database known as RDBMS in short form. Which means the information that resides in it is in the form of related tables and we always need information of one table in another. These tables are related with the help of Foreign Keys (FK). So, when we want to show information of one table in another we use Joins and we use them all the times.


When we are creating Joins in Siebel you can see a field called Outer Join Flag. Please see the screenshot below.



and every time we don't check that flag we are heading for trouble.
Now, what exactly does that flag represent? Before I explain it I assume that you have basic understanding of SQL and simple joins. As I have mentioned earlier that everything that configure or do on UI is converted into SQL and that is where this flag comes into picture.

For example see the simple sql pulling data from another table with the help of simple join

select name b
from siebel.s_opty a, siebel.s_doc_quote b
where b.par_row_id = a.row_id
and a.somefield = b.somefield
and a.row_id = 'Some Id'

Now this SQL is suppose to select name of the quote where the par_row_id column (which store row id of its parent) is equal to the row if of opportunity and in addition to that somefield of opportunity is equal to some field of quote. Now we assume that you had created a join between Opportunity-Quote and forgot to check the outer join flag.You will be amazed to see that there are No Records on UI. The reason being it will try to match the exact values in the field and any record that is a not a match will be discarded. Which means if there are some records that have no value in 'somefield' either in Opportunity or on Quote will be discarded. What if we want those records to shown? We have to check the Outer join flag which will result in a query as given below

select name b
from siebel.s_opty a, siebel.s_doc_quote b
where b.par_row_id = a.row_id
and a.somefield = b.somefield(+)
and a.row_id = 'Some Id'

Which will result in all the Quotes that have 'Some Id' in par_row_id or in simple terms that have Opportunity Id with 'Some Id' as their parent.

My experience has taught me to ask this as the first question whenever I face problem mentioned above and I have seen developers sweat over this kind of problem for hours before they spot it. I will mention some real life situations I have faced which were due this little (or rather huge) miss while doing configuration.

Examples - Real Life Situations:
We have developed a web service that resulted in the insertion of quotes from a Java Application. When we inserted a quote it got inserted successfully and when we tried to update it, it Failed. It took us almost a day to find out that a developer had created a new join in business component and forgot to check that Outer Join flag which resulted in update to failed as it was not able to fetch that record.

I had created a new View in Assets Screen. When user was in My Assets view then he was able to see the records but as soon as he choose All view the records disappeared. The reason same a new join and forgot to check Outer join flag.

Whenever you face this kind of problem go through logs and more often than not you will find this as your root cause. To know more about logs read my Post Siebel - Logs How useful are they?

If this Post was helpful to you please post some comments and come back for more.

Siebel Logs - How Useful are they ?

If you have worked on Siebel CRM I am sure that you have heard the term LOGS lot of times. They are one of the most important and useful things if you are a Siebel Developer. But still most of us actually know how to use them to our advantage or to reduce our development time. Here in this Article I will try to explain some tips and tricks to get the logs and debug our code. Now we all know that we have two types of Siebel Application Clients.


  • Dedicated Client
  • Web Client
Siebel Web Client : We will talk first about the Siebel Web Client. Now to get logs from Siebel Web Client there is no easy way and the only way to get logs is to increase the log level at server for "Object Manager" or particular component that you want to get logs of for example Workflow Process Manager. I will talk detail about the Web Client Logging techniques in my next few posts.

In this article I am going to discuss ways which can help us get logs from dedicated clients and speed up our debugging and development time.


Dedicated Client : There are essentialy two ways to get logs from dedicated client

  • Spool
  • Environmental Variable

Spool : it is a very basic and known technique to get the spool of all the SQL Queries that are fired in the database level and we all come across it during our initial Siebel development days. We can enable the spool for Siebel Client as well as Siebel Tools. The steps to enable spool for both the Siebl tools and client there is common process which is as following

  1. Right click the siebel tools or Siebel Client Shortcut
  2. Go to end of String which is in Target Text Field
  3. Enter the Following string at the end: /s "c:\spool.txt"

/s switch here stands for Spool. Various other switches that can be used are as following

  • /u : username
  • /p : password
  • /d : database

With the following string you can automate login to your local or sample database depeding on the value you give in the switch. I am providing you examples of both

/u sadmin /p sadmin /d sample : String to login to Sample database with Sadmin user id
/u user /p pwd /d local : String to login to Local database with "user" user id.

Environmental Variable : This is more powerful and less know method of generating logs for dedicated client. Siebel has provided couple of Environmental Variables which are as following :

  • SIEBEL_LOG_EVENTS
  • SIEBEL_LOG_DIR

SIEBEL_LOG_EVENTS : This environmental variable can have two types of values.
Numeric or text.
The numeric value is the log level which can be between 1-4. 1 being the lowest and 4 being the highest. The Text value can be ALL which means Log Level of 4.

SIEBEL_LOG_DIR : This value of this variable is path where you want to create the logs. Makes sure that the path you mention is valid otherwise the logs will be created in the temp directory.

Examples of both the environmental variables are as following

SIEBEL_LOG_EVENTS : ALL
SIEBEL_LOG_DIR : C:\siebel_logs

The process to create these enviornmental variables is as following

  1. Right click on the My Computer Icon
  2. Select Properties from context menu
  3. Go to ==> Advanced Tab
  4. Click ==> Environmental Variables
  5. In User Environmental Variables Tab click New
  6. Enter SIEBEL_LOG_EVENTS in Variable Name field
  7. Enter ALL in Variable Value Field
  8. Click New again and Enter the following details
  9. Variable Name : SIEBEL_LOG_DIR ; Variable Value : "your siebel log path"

Remember that Variable Names are case Sensitive. After you have created the variables when you start you dedicated client you will notice that in the path that you have given a file named siebel.log is created for Dedicated Client and file named siebel_dev is created for Siebel Tools.

If you don't provide the SIEBEL_LOG_DIR environmental variable the logs are created by default in Temp Directory.

Hope this posts helps you.
If the answer
is yes. Please post your comments and visit again.

Siebel Tools - Check In - Check Out an Introduction.

Check In - Check Out are the very common terms that Siebel Developers hear. A rather simple but a very important feature for development. Without this feature their would be an absolute chaos during development. I will try to explain Check In - Check Out (CICO) with the help of simple Analaogy:

Imagine a room full of documents. You are allowed to make a copy of document take it home and work on it. What If everybody was allowed to go in at any time into the room and modify any document they want? The answer is again Absolute Chaos. Imagine working really hard on the document and to see next day that what you have taken home is invalid because somebody took a copy and made some changes to and you have to do the rework.

Based on above analogy we can map 'Room' as 'Siebel Server Repository', Documents as 'Siebel Objects', Home as 'Local Environment'

So, the only way to control this is to have a some sort of mechanism to prevent you from taking that document while somebody else is working on it. Siebel Check In - Check Out process is precisely that chaos saving mechanism.

We all know that siebel is based on Client - Server Architecture and the same architechture is followed in case of siebel tools. You have siebel server repository and you siebel client dbf or local database where you perform you development.

Check In - Check Out in siebel refers to the process of getting a copy of siebel objects in the your local environment, work on it and then update it back to the server after you are done.

There are various terms in siebel that you need to understand the check in - check out process

Check Out : Process of getting a copy from Server Repository to your local database and also locking he object on server so that nobody else can modify it.
Check In : Process of putting the object from local environment back to server and also release the lock so that others can work on it
Get : Process of getting copy from Server Repository to your local database without locking the object.
Full Get : Process to update you local tools repository will the latest objects from Siebel Server Repository. Unlike Get you don't select a particular object to update but all the projects

You can check out a single object or a whole project. If you check out a whole project then all the objects that are part of that project will be locked with your Id and nobody else will be able to work on them. So, It is not a good idea. General practice is just to check out a single object.

Now, I will explain the steps to perform each operation mentioned above

Check - Out :

1. Query for the object that you want to check out.
2. Right Click and Choose Check Out. (You can also press F10 or choose Tools Menu ==> Check Out)
Tip:The option of check out single object will only be available if your tools.cfg as parameter EnableObjectCOCI set to true.
3. Again Click on Check Out in the new window that appears.

Check In :

1. Click Tools (Menu) ==> Check In (You can also press CTRL + F10)
A new window will appear. It will show the objects that have check out by your id
2. Select the Object that you want to check in and click Check In

Get :

1. Query for the object that you want to Get.
2. Right Click and Choose Check Out. (You can also press F10 or choose Tools Menu ==> Check Out)
Tip:The option of check out single object will only be available if your tools.cfg as parameter EnableObjectCOCI set to true.
3. Again Click on Get in the new window that appears.

Full Get :

1. Click Tools (Menu) ==> Check Out
2. Select 'All Projects' Radio button in the new window that appears
3. Click Get.


Hope this post was helpful. If Yes, Please post your comments.

Siebel CRM - Configuration File (cfg) Disected and Explained.

Today we are going to discuss about one of the most important files for Siebel CRM. Yes, those who have worked on Siebel will know what I am talking about.
Yes, we are going to discuss ".cfg" file which stands for configuration file which largley controls siebel bhavieor. There are basically 3 important cfg files.

1. eapps.cfg
2. tools.cfg
3. cfg file for Siebel Client(Name can depend on the kind of siebel application you are using)
so for this article we will assume uagent.cfg which is used if you are using call center.

To discuss eapps.cfg is out of scope for this article so in this article we will be discussing tools.cfg and uagent.cfg file.

Tools.cfg is used for Siebel Tools and uagent exsits for Siebel Client both dedicated and thin. First of all the location of the file.

Tools.cfg exsits in :siebel installation directory\tools\bin\enu
Here enu means the language that you have choosen. It can be different if you have installed siebel tools in langauage other than english.

uagent.cfg exsits in : siebel installation directory\web client\bin\enu.
For thin client the cfg file exsits on server and the path is
/siebel install dir/siebsrvr/bin/enu if the server is Unix
siebel install dir\siebsrvr/bin/enu if the server is Windows
Now I will describe various sections of CFG file.

In CFG file anything that starts from [] is a section that contains certain Parameters to control siebel. I will list important sections that are important and we need modify them often

1. [Siebel]
2. [DataSources]
3. [Local]
4. [Sample] Only used if you have installed sample database
5. [ServerDataSrc] Very important and modified often.
6. [SWE]

Tip: If you want to comment anything in cfg file use ; a semicolon in front of any line would mean that siebel is going to ignore that line treating it as comment.
I am goint to list only the important parameters in the sections.

1. [Siebel] : This section contains important parameters related to siebel. Which are as following

RepositoryFile :Name of the SRF file to be used
ApplicationName :Name of the Application to be used
ApplicationTitle :Name that is going to appear in Title of your browser window and can be anything
ApplicationSplashText :Name that is going to appear when you start you dedicated client and can be anything
EnableScripting :Often used for debugging purposes. If set to false no script is going to execute when you start you client
LocalDbODBCDataSource :Name of the ODBC data source that is going to be used when you start dedicated client with local database (SSD Local Db default instance by default)
ServerDbODBCDataSource :Name of the ODBC data source that is going to be used when you start dedicated client with server database (SSD default instance by default)
DockRepositoryName
:Name of the repository that is going to be used.
WebClientSiteDir : Path to the directory from where the browser scripts and images are going to be picked up
EnablePersonalization : To Enable or Disable personlaization for Siebel Users
EnableRuntimeEvents : To Enable or disable Runtime Events
EnableObjectCOCI : To Enable object check in check out when set to false you are not allowed to check out a single object. Remember Object checkout has to be enabled from tools also before you can do that

2. [DataSources] : This section contians the what you can see from the dropdown of you dedicated client. Default values are
Local = Local
Sample = Sample
ServerDataSrc = Server

You can specify more datasources under this section to specify more section you have to define it in the following way.

MyNewDataSource = NewDataSource
MyNewDataSource is the name of the Section that should be present in the cfg file that is going to contain parameters to be used for this datasource
'NewDataSource' is the value that is going to appear in the dropdown of dedicated siebel tools or client.
3. [Local] : In this section only one parameter is important and that we can change to our advantage
ConnectString = C:\PROGRA~1\Siebel\7.8\Tools\local\sse_data.dbf -q -m -x NONE -gp 4096 -c256m -ch256m

As you can see the value of the connection string is in the form of Path and then switches.

The path is the path to your dbf file and the switches that you can give are as following
-q : means start local database in quite mode.This prevents a SQL Anywhere window from showing up.
-m : truncate transaction log after checkpoint.
-x NONE : Do not load any network drivers.
-gp 4096 : Tells the engine that the database page size is 4,096 bytes.
-c256m : Initial cache size is 256 MB
-ch256m : Maximum cache size can be mb256.

4. [Sample] : This section is pretty similar to Local Section with exception of one parameter

FileSystem : It contains path to you file system where you attachments are stored

5. [ServerDataSrc] : This is one of the most important section and you have to change few parameter before you can actually login to server through Dedicated Client.

ConnectString : Here just like local section indicates the connection string to be used to connect to server
FileSystem : Path to you file system. Similar to local section
GatewayAddress : This will contain the name of your Siebel Gateway Server. This section has to be changed to a valid value
EnterpriseServer : This will contain the name of your Siebel Enterprise Server.This section has to be changed to a valid value

6. [SWE] : This section contains parameters related to the bitmaps and appearance of Siebel Client. But It contains an important parameter which is as following.

ClientBusinessService : This parameter is used if you want a business service to be called from browser scripts. The Business service has to be mentioned here in this section.
The format to mention the business service is

ClientBusinessServicen = "Business Service Name" where n is a incremental number one more than the number mentioned in last ClientBusinessService entry. For example
ClientBusinessService0 = "Message Bar"
ClientBusinessService1 = "Communications Client"

If I want to have one more entry in the file then I will enter
ClientBusinessService2 = "Business Service Name"

This completes the listing and explaination of important parameters of the cfg file used by siebel tools and siebel client.

Hope this post was helpful to you. If yes please post your comments and visit again for more.

Siebel 7.8 Signals - A Case Study!

I am back with what I promised.
A case study how we used signals to improve the perfomance by 83%. I will try to tell you facts that I found while working on them and not available in bookshelf and supportweb. If you want to know about singals please read my post Siebel CRM 7.8 - Signals Demysitified

We are working on Siebel 7.8.2.3. It is a Call Center module but major and complex functionality is weaved around Quote Module which includes customizable products. Now these coustmizable products can have upto 10 products and 300 attributes in one Quote Item record. In addition to Quote and Quote Item various custom entities are also copied as Quote Item Child. So, In total there are 11 entites are copied over when you 'Copy' or 'Revise' Quote.

Now it is not possible to copy all these through configuration as by configuration only 'Root Quote Item' or just the First record of Quote Item is copied over, not all the records that are created as a result of customization of product. So, The intial solution was to copy or revise quote through scripting copying the Quote Item and all of its child. But the result was that it took upto 3 minutes to copy or revise the quote which was unacceptable and due to accessive scripting the process was not stable and often broke giving one or the other scripting error.

So, we started exploring the Solution through vaniall singals i.e 'CopyQuote' to copy quote and 'ReviseCopyQuote' to revise quote. When these signals were enabled they resulted in copy and revision of just 'Quote' and 'Quote Item'. After further exploring we found that these signal use a 'Data Map' which can be modified through Application

Data Maps are available
Adminstration ==> Application ==> Data Map Administration.
This view is not available by default especially if you have upgraded your application to Siebel 7.8. You might have to enter a different license key for this view. Data Maps are nothing but declarative mapping of BO, BC and Fields. You specify the Source BC, Fields and Destination BC, Fields. Just creating the mapping is not enough you have to have supporting configuration of the BC's to make it work.

Every BC that you enter should be added to the BO. It should have a Link to it's parent (if any) and that links should be added in the Business Component Section of BO.
Add the custom fields to the datamap.

Now comes the tricky part. Even if you do all this you will not see any improvement in performance and you might face some errors. This is what you have to do in addition to what you have already done.

1. Create 'MapId' Advanced Property for Child Business Component Fields.
2. Create Light version of Child Business Components.

Now, I will explain all the three steps in detail.

MapId : Data Maps support an advanced property called 'MapId' which is really important if you want this to work. 'MapId' is not properly defined in Bookshelf. I will try to explain this property with help of an example.

We assume that Quote Item has a child called Delivery Schedule and we want it to be copied over when we copy quote. A field called 'Quote Item Id' is present in delivery schedule which stores the row id of Quote Item and is used by Link hence establishing the Parent-Child relationship.

When we specify a source field in data map the value of that field is copied to the field specified in the destination field section. Which means when we specify 'Quote Item Id' Field value from source 'Quote Item Id' is copied to the destination field. To simply this further suppose the source 'Quote Item Id' had a value '1-6666' which means destination 'Quote Item Id' would have value '1-6666'. But this is wrong. This behaviour would mean that new delivery schedule record is now child of old 'Quote Item' not new.

Here is where 'MapId' property comes into picture. You have to specify 'MapId' property for all the fields which are suppose to store the row id of parent business component. You have to enter the following information in the MVG that opens when you click on Advanced property field


Property Name :MapId (remember it is case sensitive)
Property Value : Name of parent business component


According to above example the Advanced property would be something like this

Property Name : MapId
Property Value : Quote Item

This should solve one of your problems.

Light Version BC: When we are copying we don't need the validations or stuff like precision or Currency code property.
Making the BC Light mean that create a copy of the original BC and perform the following steps

1. Change the Class of the Bus Comp CSSBCBase.
2. Disable all the user properties of the buscomp.
3. Remove all the Post Defaults and Pre Defaults (Until and unless really required)
4. Remove all the picklists
5. All the values from the validations
6. All the values from the precision fields

I think you Get the idea now So, remove all that you think can be unnecessary. But there are something that are required so you have to use a little common sense before removing all these things.

And you are done!!!!!!!

Using these signals we were able to reduce the copy/revise time to under 10 seconds when it had records in all the 11 custom entities.

Featured Video