You are here

Siebel Interview Q&A

How to make MVG applet read-only

To make the MVG applet read-only, you could use the "Parent BC Read Only" user property.

You have two business components with parent - child relationship as following.

Parent BC: Opportunity Product
Child BC: AB Oppty Supplementary Card Details

1. You should create the calculated field to be changed depending on the field value of one of parent business component.
For example, in Opportunity Product,
Name: RO Flag
Calculated Value: IIf([Type]= "Administration", "Y", "N")

- [Type] is a field name in parent business component to be check if it has any specific value.
- You should set "Link Specification" property to TRUE.

2. You should add the user property to the child business component
For example: in AB Oppty Supplementary Card Details,
Name: Parent Read Only Field
Value: Action.Opportunity Product

3. Compile and execute the application.

How can I show a html (or a mhtml) file within an applet?

Is there a feasibility to show an external html file within an siebel applet? If yes, I need to know which class I have to take, which type of field, etc.

Displaying external Web content in a Siebel applet can be achieved through Symbolic URL's. This technique allows to display a Web page either as inline HTML, within an IFrame, or within an embedded Web browser control.

This is documented in Siebel Bookshelf 8.0 > Siebel Portal Framework Guide > Integrating External Content.

There is also a document available on My Oracle Support which discusses how to embed an external Web page through a Web control:

Applet containing an external web page in Siebel 7 (Doc ID 543107.1). It was written for Siebel 7 but should still be applicable to Siebel 8 and might serve as a starting point.

Runtime Business Service vs. Repository Business Service

Runtime business service is authored in the client while the repository business service is done in tools. The repository business service is compiled into the SRF file to be used. Each time the runtime business service is executed, the definition is retrieved from the database and compiled. To prevent the runtime business service to compile each time, the cache flag can be set. By doing so, the business service is compiled once and stays in the cache during the entire user session.   

Run time Business Service is loosely coupled and "Interpreted" directly. the Repository Business services are tightly coupled and hence perform generally faster than run time business services.

When ever business requirement is not very clear or business is having a part of requirement which is keep changing in that case Runtime BS would be a better choice because it doesn’t need any downtime to take effect in system. For the requirements which are stable enough and not changing very frequently we should go for Repository BS. There are couples of drawbacks with using Runtime BS like performance issue, migration issue, maintenance issue etc, whereas repository BS is having one limitation that it would require down time if there is any changes is needed in BS.

Client - side business service is stored in the siebel databse that store user data (S_RT_SVC).Repository BS is stored in repository table (S_SERVICE).

If a business service is created at client side and at repository with the same name then client-side business service will never will get executed.

Known Scripting performance issues

The following are some events which might contribute to slow performance if extensive coding is done:
- BusComp_PreGetFieldValue
- WebApplet_PreCanInvokeMethod

There two events are frequently fired. For PreGetFieldValue event, it is called every time the user interface is updated to repaint the fields and also be called in other internal uses. For
PreCanInvokeMethod event, this is frequently fired in response to user actions.

In version 8.0 and above, instead of using PreCanInvokeMethod to enable a custom method, this can be done using “CanInvokeMethod” user on the applet user property. For example:
Name: CanInvokeMethod: Test
Value: Y

This user property is suitable for custom method that is not enable/disable based on any (complex) condition.

The use of GetProfileAttr and SetProfileAttr methods in browser script are usually to pass a value in browser scripts or, between browser and server scripts. As these methods make a round-trip to the server, they might potentially contribute to slow performance. Therefore, they should only be used with caution and not extensively.  

As mentioned in earlier reply there are few specific events which has significant performance impact if we write code there like WebApplet_Load and BusComp_PreGetFieldValue etc.

If you logic is having frequent travel between Server and Browser script.

Memory variables are not released in finally block.

Frequent travel to database (Get,Set,Query) instead of storing data in buffer.

Script is not using proper execution identifiers like forward only, backward only.

Not using Switch and using if extensively. Etc

If you are using Siebel 8.x then you have to use ST engine for scripting which is also a better performance tool than T Engine.

Note: Scripting is last option which we have to use for any requirement, it’s recommended to using configuration or application level module (DVM, Healy, etc) to achieve your requirement.

OBIEE Interview Questions and Answers FAQ

1. Define repository in terms of Siebel Analytics

o Repository stores the Meta data information. Siebel repository is a file system ,extension of the repository file. rpd.
o META DATA REPOSITORY
o With Siebel Analytics Server, all the rules needed for security, data modeling, aggregate navigation, caching, and connectivity is stored in metadata repositories.
o Each metadata repository can store multiple business models. Siebel Analytics Server can access multiple repositories

2.What is the end to end life cycle of Siebel Analytics?

o Siebel Analytics life cycle
1. Gather Business Requirements
2. Identify source systems
3. Design ETL to load to a DW if source data doesn’t exist.
4. Build a repository
5. Build dashboard or use answers for reporting.
6. Define security (LDAP or External table…)
7. Based on performance, decide on aggregations and/or caching mechanism.
8. Testing and QA.

3. What were you schemas? How does Siebel Architecture works? Explain the three layers. How do you import sources?

o There are five parts of Siebel Architecture.
1. Clients
2. Siebel analytics Web Server
3. Siebel analytics server
4. Siebel analytics scheduler
5. data sorces
o Metadata that represents the analytical Model Is created using the siebel Analytics Administration tool.
o Repository divided into three layer
1. Physical – Represents the data Sources
2. Business – models the Data sources into Facts And Dimension
3. Presentation – Specifies the users view of the model;rendered in Siebel answer

4.  If you have 3 facts and 4 dimension and you need to join would you recommend joining fact with fact? If no than what is the option? Why you won’t join fact to fact?

o In the BMM layer, create one logical table (fact) and add the 3 fact table as logical table source

5. What is connection pool and how many connection pools did you have in your last project?

o connection pool is needed for every physical database.
o It contains information about the connection to the database, not the database itself.
o Can use either shared user accounts or can use pass-through accounts -Use: USER and PASSWORD for pass through .
o We can have multiple connection pools for each group to avoid waitin

6. Purpose of Alias Tables

o An Alias table (Alias) is a physical table with the type of Alias. It is a reference to a logical table source, and inherits all its column definitions and some properties from the logical table source. A logical table source shows how the logical objects are mapped to the physical layer and can be mapped to physical tables, stored procedures, and select statements. An alias table can be a reference to any of these logical table source types.
o Alias Tables can be an important part of designing a physical layer. The following is a list of the main reasons to create an alias table:  To reuse an existing table more than once in your physical layer (without having to import it several times).
 To set up multiple alias tables, each with different keys, names, or joins
o To help you design sophisticated star or snowflake structures in the business model layer. Alias tables are critical in the process of converting ER Schemas to Dimensional Schemas.

7. How do you define the relationship between facts and dimensions in BMM layer?

o Using complex join ,we can define relationship between facts and dimentions in BMM layer.

8.What is time series wizard? When and how do you use it?

o We can do comparison for certain measures ( revenue.,sales etc.. ) for current year vs previous year, we can do for month or week and day also
o Identify the time periods need to be compared and then period table keys to the previous time period.
o The period table needs to contain a column that will contain “Year Ago” information.
o The fact tables needs to have year ago totals.
o To use the “Time series wizard”. After creating your business model right click the business model and click on “Time Series Wizard”.
o The Time Series Wizard prompts you to create names for the comparison measures that it adds to the business model.
o The Time Series Wizard prompts you to select the period table used for the comparison measures
o Select the column in the period table that provides the key to the comparison period. This column would be the column containing “Year Ago” information in the period table.
o Select the measures you want to compare and then Select the calculations you want to generate. For ex: Measure: Total Dollars and calculations are Change and Percent change.
o Once the Time series wizard is run the output will be:
a) Aliases for the fact tables (in the physical layer)
b) Joins between period table and alias fact tables
c) Comparison measures
d) Logical table sources
o In the General tab of the Logical table source etc you can find “Generated by Time Series Wizard” in the description section
o Then you can add these comparision measures to the presentation layer for your reports.
o Ex: Total sales of current qtr vs previous qtr vs same qtr year ago

9.  Did you create any new logical column in BMM layer, how?

o Yes. We can create new logical column in BMM layer.
o Example: Right click on fact table -new lgical column-give name for new logical column like Total cost.
o Now in fact table source,we have one option column mapping, in that we can do all calculation for that new column.

10.  Can you use physical join in BMM layer?

o yes we can use physical join in BMM layer.when there is SCD type 2 we need complex join in BMM layer.

11.Can you use outer join in BMM layer?

o yes we can.When we are doing complex join in BMM layer ,there is one option type,outer join is there.

12.  What are other ways of improving summary query reports other than Aggregate Navigation and Cache Management

 Indexes
 Join algorithm
 Mat/view query rewrite
 Web proper report design its optimal by making sure that it is not getting any addition column or rows

13.  What is level-base matrics?

o Leval-base matrics means, having a measure pinned at a certain level of the dimension. For Example, if you have a measure called “Dollars”, you can create a Level Based Measure” called “Yearly Dollars” which (you guessed it) is Dollars for a Year. This measure will always return the value for the year even if you drill down to a lower level like quarter, month… etc. To create a level based measure, create a new logical column based on the original measure (like Dollars in the example above). Drag and drop the new logical column to the appropriate level in the Dimension hierarchy (in the above example you will drag and drop it to Year in Time Dim
o A LBM is a metric that is defined for a specific level or intersection of levels.
o Monthly Total Sales or Quarterly Sales are the examples.
o You can compare monthly sales with quarterly sales. You can compare customer orders this quarter to orders this year

14.  What is logging level?Where can you set logging levels?

o You can enable logging level for individual users; you cannot configure a logging level for a group.
o Set the logging level based on the amount of logging you want to do. In normal operations, logging is generally disabled (the logging level is set to 0). If you decide to enable logging, choose a logging
o level of 1 or 2. These two levels are designed for use by Siebel Analytics Server administrators.
o Set Logging Level
1. In the Administration Tool, select Manage > Security.
2. The Security Manager dialog box appears.
3. Double-click the user.s user ID.
4. The User dialog box appears.
5. Set the logging level by clicking the Up or Down arrows next to the Logging Level field

15.  What is variable in sieble?

o You can use variables in a repository to streamline administrative tasks and modify metadata content dynamically to adjust to a chainging data environment.The Administration Tool includes a Variable Manager for defining variables

16.  What is system variable and non system variable?
o System variables
o System variables are session variables that the Siebel Analytics Server and Siebel Analytics Web use for specific purposes. System variables have reserved names, which cannot be used for other kinds of variables (such as static or dynamic repository variables, or for nonsystem session variables).
o When using these variables in the Web,preface their names with NQ_SESSION. For example, to filter a column on the value of the variable LOGLEVEL set the filter to the Variable NQ_SESSION.LOGLEVEL.
o Nonsystem variables.
o A common use for nonsystem session variables is setting user filters. For example, you could define a nonsystem variable called SalesRegion that would be initialized to the name of the user.s sales region. You could then set a security filter for all members of a group that would allow them to see only data pertinent to their region.
o When using these variables in the Web, preface their names with NQ_SESSION. For example, to filter a column on the value of the variable SalesRegion set the filter to the Variable NQ_SESSION.SalesRegion.

17.  What are different types of variables? Explain each.
o There are two classes of variables:
1. Repository variables
2. Session variables.
Repository variables.
A repository variable has a single value at any point in time. There are two types of repository variables:
static : This value persists, and does not change until a Siebel Analytics Server administrator decides to change it.
dynamic:The values are refreshed by data returned from queries. When defining a dynamic repository variable, you will create an initialization block or use a preexisting one that contains a SQL query. You will also set up a schedule that the Siebel Analytics Server will follow to execute the query and periodically refresh the value of the variable.
Session Variables
Session variables are created and assigned a value when each user logs on. There are two types of session variables:
1.system
2.nonsystem.

18.  What are the cache management? Name all of them and their uses. For Event polling table do u need the table in your physical layer?

o Monitoring and managing the cashe is cache management.There are three ways to do that.
o Disable caching for the system.(INI NQ config file), Cashe persistence time for specified physical tables and Setting event polling table.
 Disable caching for the system.(INI NQ config file :
You can disable caching for the whole system by setting the ENABLE parameter to NO in the NQSConfig.INI file and restarting the Siebel Analytics Server. Disabling caching stops all new cache entries and stops any new queries from using the existing cache. Disabling caching allows you to enable it at a later time without losing any entries already stored in the cache.
Cashe persistence time for specified physical tables :
You can specify a cachable attribute for each physical table; that is, if queries involving the specified table can be added to the cache to answer future queries. To enable caching for a particular physical table, select the table in the Physical layer of the Administration Tool and select the option Make table cachable in the General tab of the Physical Table properties dialog box. You can also use the Cache Persistence Time settings to specify how long the entries for this table should persist in the query cache. This is useful for OLTP data sources and other data sources that are updated frequently, potentially down to every few seconds.
Setting event polling table :
Siebel Analytics Server event polling tables store information about updates in the underlying databases. An application (such as an application that loads data into a data mart) could be configured to add rows to an event polling table each time a database table is updated. The Analytics server polls this table at set intervals and invalidates any cache entries corresponding to the updated tables.
o For event polling table ,It is a standalone table and doesn’t require to be joined with other tables in the physical layer

19. What is Authentication? How many types of authentication.

 Authentication is the process by which a system verifies, through the use of a user ID and password, that a user has the necessary permissions and authorizations to log in and access data. The Siebel Analytics Server authenticates each connection request it receives.

  •  Operaing system autentication
  •  External table authentication
  •  Database authentication
  •  LDAP authentication

20. What is object level security?

There are two types of object level security: Repository level and Web level
 Repository level : In presention layar we can set Repository level security by giving permission or deny permission to users/groups to see particular table or column.
 web level:thisprovides security for objects stored in the siebel anlytics web catlog,such as dashboards,dashboards pages,folder,and reportsyou can only view the objects for which you are authorized. For example,a mid level manager may not be granted access to a dashboard containing summary information for an entire department.

21. What is data level security?

This controls the type an amount of data that you can see in a report.When multiple users run the same report the results that are returned to each depend on their access rights and roles in the organization.For example a sales vice president sees results for alll regions, while a sales representative for a particular region sees onlu datafor that region.

22.  What is the difference between Data Level Security and Object Level Security?

 Data level security controls the type and amount of data that you can see in a reports.Objectlevel security provides security for objects stored in the siebel analytics web catlog, like dashboards,dashboards pages,folder,and reports.

22. How do you implement security using External Tables and LDAP?

Instead of storing user IDs and passwords in a Siebel Analytics Server repository, you can maintain lists of users and their passwords in an external database table and use this table for authentication purposes. The external database table contains user IDs and passwords, and could contain other information, including group membership and display names used for Siebel Analytics Web users. The table could also contain the names of specific database catalogs or schemas to use for each user when querying data

Instead of storing user IDs and passwords in a Siebel Analytics Server repository, you can have the Siebel Analytics Server pass the user ID and password entered by the user to an LDAP(Lightweight Directory Access Protocol ) server for authentication. The server uses clear text passwords in LDAP authentication. Make sure your LDAP servers are set up to allow this.

23.  If you have 2 fact and you want to do report on one with quarter level and the other with month level how do you do that with just one time dimension?

Using levelbase matrics.

24.  Did you work on a stand alone Siebel system or was it integrated to other platforms?

Deploying the Siebel analytics platform without other Siebel applications is called Siebel analytics Stand -Alone .If your deployment includes other siebel Analytics Application it called integrated analytics -You can say Stand-Alone siebel analytics

25. How to sort columns in rpd and web?

Sorting on web column, sort in the rpd its sort order column

26. If you want to create new logical column where will you create (in repository or dashboard) why?

I will create new logical column in repository.because if it is in repository,you can use for any report.If you create new logical column in dashboard then it is going to affect on those reports ,which are on that dashboard.you can not use that new logical column for other dashboard(or request)

27. What is complex join, and where it is used?
o we can join dimention table and fact table in BMM layer using complex join.when there is SCD type 2 we have to use complex join in Bmm layer.

28. If you have dimension table like customer, item, time and fact table like sale and if you want to find out how often a customer comes to store and buys a particular item, what will you do?

write a query as “SELECT customer_name, item_name, sale_date, sum(qty) FROM customer_dim a, item_dim b, time_dim c, sale_fact d WHERE d.cust_key = a.cust_key AND d.item_key = b.item_key AND d.time_key = c.time_key GROUP BY customer_name, item_name, sale_date”

29. You worked on standalone or integrated system?

 Standalone.

30.  If you want to limit the users by the certain region to access only certain data, what would you do?

 using data level security.  Siebel Analytics Administrator: go to Manage -> Security in left hand pane u will find the user, groups, LDAP server, Hierarchy
What you can do is select the user and right click and go to properties, you will find two tabs named as users and logon, go to user tab and click at permission button in front of user name you have selected as soon as u click at permission you will get a new window with user group permission having three tabs named as general ,query limits and filter and you can specify your condition at filter tab, in which you can select presentation table ,presentation columns ,logical table and logical columns where you can apply the condition according to your requirement for the selected user or groups.

31. If there are 100 users accessing data, and you want to know the logging details of all the users, where can you find that?

To set a user.s logging level
1. In the Administration Tool, select Manage > Security.
The Security Manager dialog box appears.
2. Double-click the user.s user ID. The User dialog box appears.
3. Set the logging level by clicking the Up or Down arrows next to the Logging Level field

32.  How do implement event polling table?

Siebel Analytics Server event polling tables store information about updates in the underlying databases. An application (such as an application that loads data into a data mart) could be configured to add rows to an event polling table each time a database table is updated. The Analytics server polls this table at set intervals and invalidates any cache entries corresponding to the updated tables.

33.Can you migrate the presentation layer only to different server

No we can’t do only presentation layer. And ask him for more information and use one of the above answers

  • Create a ODBC connection in the different serve and access the layer.
  • Copy the Rpd and migrate it to other server

34.  Define pipeline. Did you use it in your projects?

Yes, pipelines are the stages in a particular transaction. assessment, finance etc.

35. How do you create filter on repository?

 Where condition on content tab.

36. How do you work in a multi user environment? What are the steps?

  1. Create a shared directory on the network for Multi-user Development (MUD).
  2. Open the rpd to use in MUD. From Tools->Options, setup the MUD directory to point to the above directory.
  3. Define projects within the rpd to allow multiple users to develop within their subject area or Facts.
  4. Save and move the rpd to the shared directory setup in point 1.
  5. When users work in the MUD mode, they open the admin tool and start with
  6. MUD ->Checkout to checkout the project they need to work on (not use the File open as you would usually do).
  7. After completely the development, user checkin the changes back to the network and merge the changes.

37.  Where are passwords for userid? Ldap,external table authentication stored respectively?

passwords for userid are in siebel analytics server repository Ldap authentication in Ldap server external database in a table in external database

38. Can you bypass siebel analytics server security ?if so how?

yes you can by-pass by setting authententication type in NQSCONFIG file in the security section as:authentication_type=bypass_nqs.instanceconfig.xml and nqsconfig.ini are the 2 places

39. Where can you add new groups and set permissions?

you can add groups by going to manage>security>add new groups> You can give permissions to a group for query limitation and filter conditions.

40.what are the things you can do in the BMM layer?

Aggrigation navigation,level base matrics,time series wizard,create new logical column,comlex join.

41. what is Ragged hierarchy? and how do u manage it

Ragged Hierarchy is one of the different kinds of hierarchy.

A hierarchy in which each level has a consistent meaning, but the branches have inconsistent depths because at least one member attribute in a branch level is unpopulated. A ragged hierarchy can represent a geographic hierarchy in which the meaning of each level such as city or country is used consistently, but the depth of the hierarchy varies.

 For example, a geographic hierarchy that has Continent, Country, Province/State, and City levels defined. One branch has North America as the Continent, United States as the Country, California as the Province or State, and San Francisco as the City. However, the hierarchy becomes ragged when one member does not have an entry at all of the levels. For example, another branch has Europe as the Continent, Greece as the Country, and Athens as the City, but has no entry for the Province or State level because this level is not applicable to Greece for the business model in this example. In this example, the Greece and United States branches descend to different depths, creating a ragged hierarchy.

42. What is the difference between Single Logical Table Source and Multiple Logical Table Sources?

If a logical table in BMM layer has only one Table as the source table then it is Single LTS.

If the logical table in BMM layer has more than one table as the sources to it then it is called Multiple LTS.

Ex: Usually Fact table has Multiple LTS’, for which sources will be coming from different Physical tables.


43.Can you let me know how many aggregate tables you have in your project? On what basis have you created them?

As per resume justification document

44. How do you bring/relate the aggregate tables into the Siebel analytics Logical layer?

One way of bringing the Aggregate Tables into the BMM layer is by bringing them as Logical Table sources for the corresponding Fact table.

This is done by dragging and dropping the aggregate table into the corresponding fact table. After doing that establish the column mappings and the set the aggregation levels.

45. How do you know which report is hitting which table, either the fact table or the aggregate table?

After running the report, go to “Administration” tab and go to click on “Manage Sessions”. There you can find the queries that are run and in the “View Log” option in the Session Management you can find which report is hitting which table.

46. Suppose I have report which is running for about 3 minutes typically. What is the first step you take to improve the performance of the query?

Find the sql query of the report in Admin->manage Session-> run the sql query on toad ->read the explain plan output ->modify the SQL based on the explain plan output

47. Suppose you have a report which has the option of running on aggregate table. How does the tool know to hit the Aggregate table and for that what the steps you follow to configure them?

Explain the process of Aggregate navigation

48. Have you heard of Implicit Facts? If, so what are they?

An implicit fact column is a column that will be added to a query when it contains columns from two or more dimension tables and no measures. You will not see the column in the results. It is used to specify a default join path between dimension tables when there are several possible alternatives.

For example, there might be many star schemas in the database that have the Campaign dimension and the Customer dimension, such as the following stars:

  • Campaign History star. Stores customers targeted in campaign.
  • Campaign Response star. Stores customer responses to a campaign.
  • Order star. Stores customers who placed orders as a result of a campaign.


In this example, because Campaign and Customer information might appear in many segmentation catalogs, users selecting to count customers from the targeted campaigns catalog would be expecting to count customers that have been targeted in specific campaigns.


 To make sure that the join relationship between Customers and Campaigns is through the campaign history fact table, a campaign history implicit fact needs to be specified in Campaign History segmentation catalog. The following guidelines should be followed in creating

 segmentation catalogs:
 Each segmentation catalog should be created so that all columns come from only one physical star.

 Because the Marketing module user interface has special features that allow users to specify their aggregations, level-based measures typically should not be exposed to segmentation users in a segmentation catalog.

49. What is aggregate navigation? How do you configure the Aggregate tables in Siebel Analytics?

Aggregate tables store precomputed results, which are measures that have been aggregated (typically summed) over a set of dimensional attributes. Using aggregate tables is a very popular technique for speeding up query response times in decision support systems.

 If you are writing SQL queries or using a tool that only understands what physical tables exist (and not their meaning), taking advantage of aggregate tables and putting them to good use becomes more difficult as the number of aggregate tables increases. The aggregate navigation capability of the Siebel Analytics Server, however, allows queries to use the information stored in aggregate tables automatically, without query authors or query tools having to specify aggregate tables in their queries. The Siebel Analytics Server allows you to concentrate on asking the right business question; the server decides which tables provide the fastest answers.

50.  (Assume you are in BMM layer) We have 4 dimension tables, in that, 2 tables need to have hierarchy, then in such a case is it mandatory to create hierarchies for all the dimension tables?

 No, its not mandatory to define hierarchies to other Dimension tables.

51.  Can you have multiple data sources in Siebel Analytics?

 Yes.

52.  How do you deal with case statement and expressions in siebel analytics?

use expression builder to create case when…then.. end statement

53. Do you know about Initialization Blocks? Can you give me an example where you used them?

Init blocks are used for instantiating a session when a user logs in.

To create dynamic variable you have to create IB to write sql statement.

54. what is query repository tool?

  • It is utility of Seibel/OBIEE Admin tool
  • allows you to examine the repository metadata tool
  •  for example: search for objects based on name,type.
  •  Examine relationship between metadata objects like which column in the presentation layer maps to which table in physical layer

55.  what is JDK and why do we need it?

Java Development Kit (JDK), A software package that contains the minimal set of tools needed to write, compile, debug, and run Java applets.

56. Oracle doesn’t recommend Opaque Views because of performance considerations, so why/when do we use them?

an opaque view is a physical layer table that consists of select statement. an opaque view should be used only if there is no other solution.

57. Can you migrate the presentation layer to a different server.

No we have to migrate the whole web & rpd files

58. How do you identify what are the dimension tables and how do you decide them during the Business/Data modeling?

Dimension tables contain descriptions that data analysts use as they query the database. For example, the Store table contains store names and addresses; the Product table contains product packaging information; and the Period table contains month, quarter, and year values. Every table contains a primary key that consists of one or more columns; each row in a table is uniquely identified by its primary-key value or values

59.  Why do we have multiple LTS in BMM layer?What is the purpose?

to improve the performance and query response time.

60. what is the full form of rpd?

there is no full form for rpd as such, it is just a repository file (Rapidfile Database)

61. how do i disable cache for only 2 particular tables?

in the physical layer, right click on the table there we will have the option which says cacheable

62.  How do you split a table in the rpd given the condition. ( the condition given was Broker and customer in the same table) Split Broker and customer.

 we need to make an alias table in the physical layer.

63.  What type of protocol did you use in SAS?

TCP/IP

Automating "Generate Reporting Relationship" on the Position applet

To Automate "Generate Reporting Relationship" on the Position applet, you could :

1. Create the script as a Siebel business service.
2. Create a workflow process that calls this business service.
3. Schedule this workflow process to run at the interval you desire, by using Siebel's Repeating Component Request feature with the component "Workflow Process Manager".

function Service_PreInvokeMethod (MethodName, Inputs, Outputs)
{
var busobj;
var buscomp;

busobj = TheApplication().GetBusObject("Assignment");
buscomp = busobj.GetBusComp("Assignment Group");
buscomp.InvokeMethod("Release");

return (CancelOperation);
}

Note:Work flow Process Manager (Server Request) Business Service instead. This would fire the workflow process which runs on wfprocmgr component. This will then take the SADMIN username to invoke.

(OR)

Business Service script below:

function Service_PreInvokeMethod (MethodName, Inputs, Outputs)
{

try
{

var AsgnBO = TheApplication().GetBusObject("Assignment");
var AsgnBC = AsgnBO.GetBusComp("Assignment Group");
AsgnBC..InvokeMethod("Release");
}
catch (e)
{
Outputs.SetProperty("Error Message", e.toString())
}

finally
{
AsgnBC = null;
AsgnBO = null;
}

return (CancelOperation);
}

EAI Interview Questions and Answers - Test 1

Total No. of Questions: 20

Time Duration             : 30 Minutes

Answers are highlighted in Bold Green.

 

  1. COM Data server  provides access to Siebel database through

 

  1. ActiveX controls
  2. .DLL and .TLB files
  3. Proxy classes
  4. Application instance

 

  1. If the data volumes are very large and the frequency of changes to the data is very high then you are most likely to use data replication integration strategy.

 

  1. True
  2. False

 

  1. EAI Siebel Wizard is used to create which of the following objects?

 

  1. Internal Integration Object
  2. External Integration Object
  3. Interface Integration Object
  4. Siebel Business Object

 

  1. Synchronize Method is a part of which Business service?

 

  1. EAI XML Converter
  2. EAI Siebel Adapter
  3. XML Hierarchy Converter
  4. EAI File Transport

 

  1. Which Business service converts data from one encoding to another?

 

  1. EAI MIME Hierarchy Converter
  2. XML Hierarchy converter
  3. Transcode
  4. IntObjHierToXMLDoc

 

  1. EAI XML Write to File combines the functionality of which two business services? Choose two.

 

  1. XML Hierarchy converter
  2. EAI XML Converter
  3. EAI XML Read from File
  4. EAI File Transport

 

  1. Integration Workflow if invoked through declarative call, cannot execute asynchronously.
  2. True
  3. False

 

  1. Enterprisewide groupings of parameters that specify how the target application responds to inbound messages are called ______________.

 

  1. Enterpriseserver parameters
  2. EnterpriseSystem Names
  3. Named Subsystems
  4. Named Enterprise systems

 

  1. All incoming EAI requests are handled by _________________

 

  1. Siebel Server
  2. EAI.cfg
  3. EAI object manager
  4. Siebel object manager

 

  1. Incase where Integration component field values differ between source and target application, you would use ________________________

 

  1. EAI value maps
  2. EAI data transformation engine
  3. Data mapper tool
  4. Auto mapper engine

 

  1. A business service that routes the messages based on their content is called _____________

 

  1. EAI Dispatch service
  2. EAI routing service
  3. EAI HTTP transport
  4. EAI XML converter

 

  1. The receiver component in an EAI Queue-based transport uses which two named subsystems? Choose two.

 

  1. Receiver service subsystem
  2. Receiver Data Handling subsystem
  3. Receiver Connection Subsystem
  4. Receiver Queue subsystem

 

  1. Which of the following are the benefits of ASI? Choose two.

 

  1. Are transport independent
  2. Uses data synchronization services
  3. Provides predefined integration interfaces
  4. Provide implicit mapping

 

  1. While creating web services, it is mandatory to specify the URL to be used by the client to access the web service.

 

  1. True
  2. False

 

  1. Reuse of business logic in an external application without reimplementing it is possible in case of data replication strategy.

 

  1. True
  2. False

 

  1. External business component derives data from ___________________

 

  1. EIM tables
  2. Interface tables
  3. External tables
  4. Staging tables

  

  1. Virtual business component cannot refer ____________________

 

  1. Spreadsheets
  2. Flat files
  3. External relational table
  4. Table object definition in Siebel repository

 

  1. Universal Application Network uses _______________ as an intermediary between source and target transformations.

 

  1. Common objects
  2. Web services
  3. Integration server objects
  4. Business Integration solutions

 

  1. Application Objects are used during _______________. Choose two.

 

  1. Integration flow
  2. Source Adapter flow
  3. Source Transformation flow
  4. Source Integration flow

 

  1. In Hub and spoke architecture, a spoke corresponds to _______________

 

  1. Integration flow + Adapter flow
  2. Source Adapter flow +  Target Adapter flow
  3. Adapter flow + Transformation flow
  4. Target transformation flow + Source Transformation flow
Do you have Skill to become Siebel Solution Architect?

If you’re a Siebel Technical consultant for a long time, and want to continue your career growth in technical filed, you would probably decided to become the Siebel solution architect. At least you’re interested if it’s a good fit for you. Most of the Siebel developers and Admins either move up the corporate ladder to become managers or PMs.

If you love the technology and it’s a best fit for you then it’s a good idea to become a solution architect.

In this article we will explore the skills required for a solution architect to be successful in ever changing Siebel world.

 Technical Excellence

General perception in the IT for a solution architect is that of a Guru, people expect expert level of technical skills in our case Siebel technical skills. 

Siebel Architecture

We all know that one can not be an expert in all the areas of Siebel implementation, However to be a solution architect, possessing the overall knowledge of Siebel architecture is essential. When you build a solution it demands you know the big picture. Is your solution scalable, can it perform well with heavy load? Ability to visualize and making sure the required changes in the solution to meet business problem is essential.

 Following are few more traits required for a solution architect –

  • Communication skills

  • Problem Solving Skills

  • Ability to foresee risks

  • Understanding the Business needs

  • Ability to address the Customer needs in technology terms

  • Visualizing design and supervising the development

  • Coordinating the business users and Technical developers

  • Ability assists Enterprise architects to build roadmaps

Siebel EAI Interview Questions
1)      COM Data server  provides access to Siebel database through
 
a)      ActiveX controls
b)     .DLL and .TLB files
c)      Proxy classes
d)     Application instance
 
2)      If the data volumes are very large and the frequency of changes to the data is very high then you are most likely to use data replication integration strategy.
 
a)      True
b)     False
 
3)      EAI Siebel Wizard is used to create which of the following objects?
 
a)      Internal Integration Object
b)      External Integration Object
c)      Interface Integration Object
d)     Siebel Business Object
 
4)      Synchronize Method is a part of which Business service?
 
a)      EAI XML Converter
b)     EAI Siebel Adapter
c)      XML Hierarchy Converter
d)     EAI File Transport
 
5)      Which Business service converts data from one encoding to another?
 
a)      EAI MIME Hierarchy Converter
b)      XML Hierarchy converter
c)      Transcode
d)     IntObjHierToXMLDoc
 
6)      EAI XML Write to File combines the functionality of which two business services? Choose two.
 
a)      XML Hierarchy converter
b)     EAI XML Converter
c)      EAI XML Read from File
d)     EAI File Transport
 
7)      Integration Workflow if invoked through declarative call, cannot execute asynchronously.
a)      True
b)     False
 
8)      Enterprise wide groupings of parameters that specify how the target application responds to inbound messages are called ______________.
 
a)      Enterprise server parameters
b)      Enterprise System Names
c)      Named Subsystems
d)     Named Enterprise systems
 
9)      All incoming EAI requests are handled by _________________
 
a)      Siebel Server
b)      EAI.cfg
c)      EAI object manager
d)     Siebel object manager
 
10)  Incase where Integration component field values differ between source and target application, you would use ________________________
 
a)      EAI value maps
b)      EAI data transformation engine
c)      Data mapper tool
d)     Auto mapper engine
 
11)  A business service that routes the messages based on their content is called _____________
 
a)      EAI Dispatch service
b)      EAI routing service
c)      EAI HTTP transport
d)     EAI XML converter
 
12)  The receiver component in an EAI Queue-based transport uses which two named subsystems? Choose two.
 
a)      Receiver service subsystem
b)     Receiver Data Handling subsystem
c)      Receiver Connection Subsystem
d)     Receiver Queue subsystem
 
13)  Which of the following are the benefits of ASI? Choose two.
 
a)      Are transport independent
b)      Uses data synchronization services
c)      Provides predefined integration interfaces
d)     Provide implicit mapping
 
14)  While creating web services, it is mandatory to specify the URL to be used by the client to access the web service.
 
a)      True
b)      False
 
15)  Reuse of business logic in an external application without reimplementing it is possible in case of data replication strategy.
 
a)      True
b)     False
 
16)  External business component derives data from ___________________
 
a)      EIM tables
b)      Interface tables
c)      External tables
d)     Staging tables
 
17)  Virtual business component cannot refer ____________________
 
a)      Spreadsheets
b)      Flat files
c)      External relational table
d)     Table object definition in Siebel repository
 
18)  Universal Application Network uses _______________ as an intermediary between source and target transformations.
 
a)      Common objects
b)      Web services
c)      Integration server objects
d)     Business Integration solutions
 
19)  Application Objects are used during _______________. Choose two.
 
a)      Integration flow
b)     Source Adapter flow
c)      Source Transformation flow
d)     Source Integration flow
 
20)  In Hub and spoke architecture, a spoke corresponds to _______________
 
a)      Integration flow + Adapter flow
b)      Source Adapter flow +  Target Adapter flow
c)      Adapter flow + Transformation flow
d)     Target transformation flow + Source Transformation flow 
Siebel Interview Questions & Answers - Part 1

Download the word file of Siebel Q&A 1st part

What is difference between Incremental Compile and Full Compile?

Incremental Compile: When we select a single object (BC, Applet etc), several objects (Multiple BC, Applets, BO etc), single project or several projects to compile in an existing SRF file that is known as Incremental Compile.

Full Compile: When you compile all the projects in a SRF file that is known as Full Compile.

: Difference:

SRF File: We do an Incremental compile on an existing SRF file and Full Compile results in creation of a New SRF file.

SRF Size: SRF size is more when we do an Incremental Compile as compared to Full Compile. For example if a Full Compile results in a 28 MB SRF file then an Incremental compile on that file can increase it’s size up to 32 MB

 

2) How to update a field based on change in another field?

How to update a field based on change in another field?

OR

How to update a field when another field is updated?
Scripting

  • On Field Update Set n user property. (This is the answer interviewer is looking for though)

Explanation:

Scripting:

You can write script on SetFieldValue event of buscomp to update the target field. But the problem with this solution is if user UNDO the record then your script won’t revert back the changes that it has done.

One more solution can be to check in SetFieldValue event if that field is being updated through global flag and then on WriteEvent of buscomp execute your script only if that flag is set to true. But again you will have to set global flag to false may be Delete event (this is fired when user undo the record).

These solutions by scripting are really cumbersome. So we generally use On Field Update set n User property for this kind of requirement.

On Field Update Set n:

As the name suggests that this user property is used to set value of another field when a particular field is updated. In this user property n is the incremental number which is 1 more than the number used in the last On Field Update Set user property.

Value:
The value of the On Field Update Set user property consists of three quoted parameters separated by a comma and a space which is as following “FieldToCheck”, “FieldToSet”, “[Value]“

Example:
You want to set TargetField with SourceField value whenever SourceField is updated. So you will specify it like this.

Property: On Field Update Set 1
Value : “SourceField”, “TargetField”, “[SourceField]”

You can also make use of expression in the Value that you specify.

Example:

“SourceField”, “TargetField”, “[SourceField] + [AnotherField]”

 

3) What is the primary purpose of using surrogate key?

  1. What is the primary purpose of using surrogate key?

  2. Will those be used in fact tables? If not then what is the purpose in using it?

Answer:

Surrogate key is used for indexing purpose  i.e. as a primary key for a table.

Reason of using Surrogate Key over Primary Key:
Primary Key may take more or less memory i.e. it may contain characters but Surrogate Key contains only number.  So comparison of numbers is easy when comparing with characters. Yes, Surrogate Key will be used in fact tables to establish a relationship between dimensions.  Surrogate keys are implemented by using the Sequence generator.

 

4) Position and Responsibility relationship – Interview Question

An important question (every question asked in an interview is important isn’t it ) involving quite a few important entities in Siebel such as Position and Responsibilities. This question can come in variety of ways I am just giving a single question, but other flavors might be exist

What kind of relationship exists between Position and Responsibilities?

It is a question that requires a subjective answer, and answer can vary from person to person. I will try to give answer to the above question(s) but before that I would like to give a disclaimer.

The views presented in this post are mine and only mine. No person dead or living has anything to do with it. Please use the answer in interview at your own risk and if somebody is offended by it or feels differently he is free to express his views by the way of comments in this post

Answer or Explanation

There is no direct relationship between Responsibility and Position.
The indirect relationship between Responsibility and Position is of Visibility. Both of them drive Visibility in Siebel.

  • Responsibility restricts access to particular view so that user cannot see those views.

  • Position restricts access to particular set of data.

So, as a result both are used to limit visibility of users of application.

After discussing with my friends and peers about this question I am getting a feeling that I am putting my hand in a bee nest but I think this could end up as a new learning to me and for all.

So guys I beg you to tell me your views what do you think about this question so that this post can become the new answer for all of us.

 

 

5) What will happen if I provide value in both Pre-Default and Post-Default properties?

I will try to explain the answer with the help of an example of  “Status” field.

We will assume the following values have been given for Pre-Default and Post-Default properties of Status Field

Pre-Default Value:  “In Process”
Post-Default Value:  “Complete”

Following are the scenarios which can take place:

User creates a New Record and saves the record without changing value of status field:
Pre-Default value (In Process) will be assigned to Status field.

User creates a New Record and changes the value of Status field to “Planning”
Pre-Default value is going to take effect as soon as user creates a new record but Post-Default value will not take effect. [Corrected as pointed by Gururaj]
User creates a New Record and changes the value of Status field to blank
Post Default Value (“Complete”) will take effect

User copies an existing record where value of status field is “Planning”
Neither Post-Default nor Pre-Default will take effect

User copies an existing record where value of status field is blank
Pre-Default (“In-Process”) Value will take effect

User copies an existing record  and makes the value of the field as blank
Post-Default Value (“Complete”) will take effect

User changes the value of existing record to blank and saves the record.
Neither Post-Default nor Pre-Default will take effect as these values only takes when the record is initially created and saved.

 

6)  Siebel Workflow Step – Missing Query Operation

 Loading ...

Problem:

I had to create a workflow and the first step in the workflow was Query Operation on Opportunity BC.  I dragged the Siebel Operation Step into designer and then started entering Values for this step which were as following

Type: Siebel Operation
Business Component: Opportunity
Operation: Query

But to my utter surprise Query was missing in the Operation field dropdown and only Insert and Update were available.

 When I entered Query manually in the field it accepted the value but started giving error

“Error loading Step Definition: Query Operation not found”
(Not exact error message)

Solution:

After going through the logs and thinking logically I was able to find the solution of the problem. My logical thinking that gave met he answer was.

Drop down is a pick list in Siebel and picklist gets its values from List of Values. I queried with Insert in the Display Value in List of Values view and there was a LOV Type called “WF_SIEBEL_OPER_TYPE_CD” which had Insert and Update as active and “Query” was inactive.
After making “Query” record Active and restarting tools I was able to execute my workflow successfully.
 

Note: Even if you provide LIC of this LOV in small case then also you will get the error. For this LOV Display value has to be in Camel Case and LIC in caps

Hope this will save someone from a lot of hassel and I still have to find the person who made this LOV inactive.

 

7) High Interactivity Framework Problem.

Loading ... Loading ...

We faced this problem quite often in Siebel 7.7. I am yet to face this error in Siebel 7.8 but I think there are lot of people that are still using Siebel 7.7 or even Siebel 7.5 so they might be facing this kind of problem.

Problem:

When clicking on Pick Applet in Siebel 7.7 application the application IE instance used to crash and we had to reopen the application. It happened only in case we were working with Pick Applet.

Reason:

This error was due to High Interactivity Framework files getting corrupt. For those who feel this is new term I will just give a background.

Siebel can operate with two types of framework

  • Standard Interactivity

  • High Interactivity.

The difference between both the frameworks is how Siebel Client communicates with Server. In case of standard interactivity the changes you make to record are not committed automatically to the database and use has to explicitly save the record and in High interactivity even if you step of the record or screen the changes are committed automatically.

Solution:

Solution of this problem is to go and remove the High Interactivity framework files and open the application again. When you open your application Siebel downloads fresh interactivity file from server.

These are steps you can follow to remove and reinstall the interactivity files

Goto Internet Explorer –> Tools Menu –> Internet Options

Click on Settings Button

Click on View Objects Button

Locate High Interactivity Files

 

8) Siebel CRM – How To Call a Workflow Asynchronously?

 Loading ...This Article is about Siebel CRM 7.X Workflows and Runtime Events. It tells you how can we use them to our advantange.
We all want the response time of our Application to be as fast as it can and we do everything that we can to achieve that. I am going to tell you about a way which can help you to reduce the response time without actually reducing any functionality. Siebel can execute workflows in two ways.

  • Synchronous

  • Asynchronous

Synchronous Execution : When workflows are executed Synchronously then user gets the control back only when the workflow has finished it execution.

Asynchronous Execution: When workflows are executed Asynchronously then user gets back the control immediately and the workflow is submitted to workflow process manager (WPM) as a job to be executed. WPM then executes the job later.

Often we have a functionality where large amount of processing needs to be done on an object which user is not going to use access right now. I can explain it with an example.

When user clicks copy button on a opportunity or quote we want certain custom entities to be copied over but which user will not access at that time but later.

So, we can reduce our response time by just copying the quote or opportunity synchronously and placing the code of copying of custom entities in workflow and executing that workflow asynchronously.

There are two way to execute a workflow asynchronously

  • Workflow Policy

  • Runtime Event and Business Service (BS) Combination


Workflow Policy is pretty traditional method of executing a workflow process.
You create a policy. Enter the conditions Specify the workflow to be executed Generate Triggers
I wouldn’t go into details of creating a policy but I will tell you some disadvantages of using Workflow Policy

  1. Slow Execution

  2. Difficult to setup

  3. Not Reliable and Error Prone

But from siebel 7.7 onwards we have another more robust, efficient and quicker way to do that which is Runtime Events and Business Service.

This Article is about Siebel CRM 7.X Workflows and Runtime Events. It tells you how can we use them to our advantange.

In this article I will tell you about the actual process of Setting up Runtime Event and Business Service assuming you have working knowledge of both. If you want to know the basics of these please see other posts of my blog.

Just one important thing that you should know about runtime evetns is that they are executed even before the Business Component Events. To explain it better I am taking an example where our requirement is to execute a workflow when you click Submit Oppty button on Opportunity Form Applet.

  1. Goto Administration ==>Runtime Events Screen

  2. Goto Action Sets View

  3. Create a New Record in the Action Set View of Runtime Events Administration Screen

  4. Enter Any Name in the Name Field of the Action Set List Applet

  5. Create New Record List Applet Below it

  6. Enter

Name = “TestRuntimeEvent” ;
Action Type = “Business Service” ;
Sequence = “1″

  1. In the Form Applet Below Enter the Following Details Business Service = “TestBS” ; Business Service Method = “TestMethod”8. Click Menu ==> Reload Runtime Events Make Sure that you have Active Flag checked in both List Applets.

You are done in Action Set View.

Now Goto Events view and Follow the steps given below

  1. Click New and Enter the Following Information

Sequence = 1 ;
Object Type = “Applet” ;
Object Name = “Opportnity Form Applet” ;
Event = “InvokeMethod” ;
Sub Event = “Submit Oppty” ;
Action Set = “TestRunTimeEvent”

Conditional Expression should be given if you want the restrict the execution of this Runtime Event to certain conditions and Action Set Name is always the name of the action set that we created.

2. Click Menu ==> Reload Runtime Events.

Now we are going to write the code in the busines service which will actually result in the execution of Workflow Process Asynchronously.

  1. Go To Administration ==> Business Service

  2. Create a Business Record with name “TestBS”

  3. Create a Record in List Applet for Service_PreInvokeMethod and choose Programming Langauge as “eScript”

Write the Following code in Code Window inside the function Service_PreInvokeMethod

if(MethodName == “TestMethod”)
{
var svc;
var child;
var input;
var output;
var rowid;
var bo = TheApplication().ActiveBusObject();
var bc = bo.GetBusComp(“Opportunity”); // Change the BusComp name with the name of the BusComp you want to execute the workflow with
svc = TheApplication().GetService(“Asynchronous Server Requests”); // Don’t change this – Actual BS that is responsible for submitting a job to WPM
input = TheApplication().NewPropertySet();
child = TheApplication().NewPropertySet();
output = TheApplication().NewPropertySet();
input.SetProperty(“Component”, “WfProcMgr”);
rowid = bc.GetFieldValue(“Id”);
// We would like to pass the row id of the Current record on which the user is working – You can pass more than one arguments
child.SetProperty(“ProcessName”, “Service Agreement – Agreement Status”); // Workflow process you want to execute
child.SetProperty(“RowId”, rowid); // passing the values
input.AddChild(child);
svc.InvokeMethod(“SubmitRequest”, input, output); /// invoking the business service method
svc = null; // nullfiying the objects
child = null;
output = null;
input = null;
return(CancelOperation);
}

 

9) DefaultAppletFocus user property

Loading ... Loading ...Problem:

In Siebel 7.5 the default focus in Order Detail View was on the Order header applet, however in Siebel 8.1 the default focus was on the line items applet due to which when I used the F9 functionality to send email the dropdown did not show values and sometimes didn’t work at all.

First I checked the settings in the Help > User preferences > Outbound Communications and set the Default Meassage Type to “ HTML” but it didn’t help and finally I was able to solve this problme by using DefaultAppletFocus user property.

Details:

DefaultAppletFocus user property : Allows us to set the applet within a view that should receives focus by default i.e before user changes the focus to any other applet by clicking on it.

As per Siebel the applet to receive the default focus is decided by the “Default Applet Focus” property of a view. If this property is left as blank then the default applet is decided on the basis of the “Type” property in
The Screen > Screen View of the Siebel tools:

  • If the View Type is Detail View, focus is placed on the second applet, if the view consists of two or more applets.

  • If the view type is any other type, or there is only one applet on the view, focus is placed on the first applet..

Usage:

Name: DefaultAppletFocus
Value: The name of an applet in the view, not enclosed in quotes.

After defining this user property on the view F9 functionality started working as expected.

 

10) Use Literals For Like

Loading ... Loading ...While working on Performance issues, I came across a rarely used user property known as ‘Use Literals For Like’.

Purpose:

If you have gone through logs sometime then you might have noticed that if you query with a text in a field then the query generated at backend has lot of like clauses which queries with all the permutations and combinations for that text. For example if I query on the Last Name Field with “SADMIN” in application the query generated at backend might have clause as shown below

((T11.LAST_NAME LIKE :2 OR T11.LAST_NAME LIKE :3 OR T11.LAST_NAME LIKE :4 OR T11.LAST_NAME LIKE :5) AND UPPER(T11.LAST_NAME) = UPPER(:6))

And the bind variables will have values like

Now, this can lead to performance issues in cases if the query is done on long fields such as Comments or Description field in Service Request BC. In that case using this user property might help.

  • 2:= ‘sa%’

  • 3:= ‘Sa%’

  • 4: = ’sA%’

  • 5:= ‘SA%’

  • 6:= ‘SADMIN’

If you use this user property on a particular field then for that field bind variables will not be used, it will be replaced by the values directly.

Usage:

It is a field level user property. Follow the steps given below to define this property.

  • Open Siebel Tools

  • Query for the BC which contains the field on which you want to define the user property

  • Query for the Field

  • Click on the + sign on Field Object in Object Explorer

  • Select Field User Property Object

  • In the Field User Property List Applet create a New Record

  • Provide following detail
    Name: Use Literals For Like
    Value: TRUE

And you are done. After you do that the query generated on backend will not use bind variables for this particualr column and your query will look like

(T11.LAST_NAME LIKE ‘SADMIN%’)

 

11) Limiting Text Field Length – User Property

Loading ... Loading ...

Lot of time we have requirement which involves restricting user input to certain length. Most common way to do that is to specify the Text Length property of the field. I used to do that until recently when I came to know that even after specifying field length user was able to enter more than the allowed limit.

Going through the bookshelf I read a note which said

“Text Length property is usually ignored and the length is retrieved from the underlying column definition”

So, that in effect means that whatever is the column length at the database level is limit at the BC level too. But that is not what we wanted so after further exploration we came across a user property that could help us to limit length without modifying the column at database level.

  • Text Length Override

Text Length Override and it can have a value as TRUE which means enforce the Text Length field property or it can have a different value such as 10 or 20 which means that will become the new limit.

Here is a step by step procedure on how to use this user property.

  • Query for the BC in which the desired field is present

  • Select the field on which you want to enforce the limit

  • In object explorer click on the + sign against field and select User Property option as shown below
  • Create a new record in the Field User Property area

  • Enter the following information

Name: Text Length Override
Value: TRUE
OR
Name: Text Length Override
Value: 10

  •  

Where the number is the limit that you want to enforce and you are done. Compile and see the changes.

Note: This user property can only be used with text type fields.

 

12) Making Record and Fields Read Only

Loading ... Loading ...

A pretty common requirement is to make a specific field or a record read only. In this post I will describe various ways to accomplish that in siebel

Making the Field Read only on UI

  • Set the Read only property on applet object to true for that field. 

Making the Field Read only on Business Component

  • Set the Read Only property of that field to true. (But this property is rarely used and doesn’t make any sense to create a field and then to make it read only… anybody any pointers)

  • Field Read Only Field: fieldname user property is used to make the field read only

Syntax:
Property Name
Field Read Only Field: Status

Value
Status Flag

In this user property value is a name of field 
If the value of the status flag (field name) is True then Status will become read only and if the Status Flag is false then this field will be editable.

Making the Business Component record Read only

  • BC Read only Field user property is used to make the BC Record Read only.

Syntax:

Property Name
BC
Read Only Field

Value
Status

Here value is the name of the field that will determine whether the Record will become read only or not. If the value of the field specified is evaluated to true then Record will be read only otherwise editatble.

 

13) Debugging Workflow – A case study

Loading ... Loading ...Quite a few readers have asked me about real time scenarios of various posts that I have written. I try to explain with examples so that it is easy to understand but I think putting it in real working scenario will make more sense and more understanding. So, today I am going to narrate a story how I debugged a workflow error that we faced in our Development environment.

One fine day I an email with the following content in it

Error Code: (SBL-BPR-00187)–(SBL-BPR-00100)–(SBL-EXL-00151)–(SBL-SCR-00141), Error Message: Error updating business component at step ‘Update Sales Stage’.(SBL-BPR-00187)

This error is returned when the workflow is executing the Siebel Operation business service.(SBL-BPR-00100)

 

What I could figure out from this mail was that there is an error in a workflow which has a step named ‘Update Sales Stage’ but I had to find answer to the questions like

  • Which Workflow?

  • From where it is being invoked?

  • Why it is failing?

So to find the RC (Root Cause) this is what I did.

Went to Administration Server > Server Management > Tasks

Queried for Workflow process manager (WPM) records

Only realized that the log level is too low to get any information

So Went to Administration Server > Server Configuration > Components to increase the log level

Queried for WPM component and increase the log level for the following components

  • Workflow Definition Loading

  • Workflow Engine Invoked

  • Workflow Process Execution

  • Workflow Step Execution

  • SQL Tracing

Went again to Administration Server > Server Management > Tasks. Now I could see enough details of workflow process to figure out which Process is failing.

The name of the process was GEAE Update Quote Sales Stage

So, I went to tools had a look at workflow only to know that It was trying to update the opportunity sales stage and there was a script on the BC that was firing and preventing the status from being updated hence resulting in the workflow failure.

This post is supposed to give you a direction on which you can proceed. It will be only with experience that you will know what exactly needs to be done in different situations.

 

14) How To invoke a Siebel Business Service

Loading ... Loading ...

In this post I will elaborate how we can invoke a business service in various ways. But first just an overview of what business service is.

Business Service (BS): Is a place where you write to code to implement business rules and process.

We can also write the code at Bus Comp and Applet level but that makes our code and business logic to be

  • Distributed

  • Difficult to manage

  • Cannot be reused

Siebel Business service has a slight more overhead than the code at Applet or Bus Comp level but it helps us to make our code

  • Centralized

  • Easier to manage

  • Can be reused

 So general rule of thumb to select where to write the code is

If same business rules are applicable on more than one entity then we write a generalized code at BS level.

You can create business services in

Siebel Tools: Code change is SRF dependent.
Siebel Client: Code change is SRF independent.

We can invoke a business Service through

  1. Runtime Events

  2. eScript

  3. User Property

  • Runtime Events

To call a business service through runtime events

Enter the following information in the Action Set that you are creating

Business Service: Business Service Name
Business Service Method: Method Name
Business Service Context: “Input Argument”, “Value”

And based on the Event that you choose this business service will be invoked

  • eScript

You can use the following Code to invoke a business service from escript

var svc = TheApplication().GetService(“BS Name”);
var Input = TheApplication().NewPropertySet();
var Output = TheApplication().NewPropertySet();
Input.SetProperty(“Type”,this.GetFieldValue(“Status”)); // Input Agruments
svc.InvokeMethod(“BSMethod”, Input, Output);

  • User Property

You can use named method property to invoke a business service from BC but this method is rarely used as it including complex conditions in the User property might not be possible. But it can come quite handy if you just want to invoke BS based on simple conditions

Name: Named Method 1
Value: “New Record”, “INVOKESVC”, “BS Name”, “BS Method”, “‘Input Agrument’”, “Value”, “‘Input Argument 2’”, “Value”

 

15) Multiple Records selection and Pick Applet

Loading ... Loading ...

 

Requirement:

I have a user request that you can select mulitple records in the list applet and then change a value for all records at the same time. The field they want to change uses a pick applet in the form applet, and it is through this pick applet they wish to change all the records to the same value.

Solution

Here is the script that THusvaeg provided that is working for him

function XX_PreSetFieldValue(FieldName, FieldValue)
{
var ActiveViewName = TheApplication().ActiveViewName();

// selecting the views under the BC for which the multiple selection should be available, could repeat this for any view / BC
if(ActiveViewName == “XX Vessel List View” || ActiveViewName == “XX Vessel List View – Admin”)
{
// this if must be reiterated for every field you want to work with multiple selection (why we don’t have it for the entire application)
if(FieldName == “XX Fleet Manager Last Name”)
{
var oThisBO = this.BusObject();
var oXXAssetBC = oThisBO.GetBusComp(“Asset Mgmt – Asset”);
var sConId = oXXAssetBC.GetFieldValue(“XX Fleet Manager Id”);

var bFirstSelected = oXXAssetBC.FirstSelected();
while(bFirstSelected)
{
oXXAssetBC.SetFieldValue(“XX Fleet Manager Id”, sConId);
bFirstSelected = oXXAssetBC.NextSelected();
}
}

if(FieldName == “XX Super Intendent Last Name”)
{
var oThisBO = this.BusObject();
var oXXAssetBC = oThisBO.GetBusComp(“Asset Mgmt – Asset”);
var sConId = oXXAssetBC.GetFieldValue(“XX Super Intendent Id”);

var bFirstSelected = oXXAssetBC.FirstSelected();
while(bFirstSelected)
{
oXXAssetBC.SetFieldValue(“XX Super Intendent Id”, sConId);
bFirstSelected = oXXAssetBC.NextSelected();
}
}
}
}

 

16) A few tricks with setTimeout()

Loading ... Loading ...There is one function that, if used properly, could do some nice stuff on user interface. This function name is setTimeout() and it allows you to execute a browser script at some point in the future.

It takes two parameters:

  • a function to call

  • time to wait in milliseconds.

I’ll show you two ways of using this function, which are both implemented in our app.

Auto refreshing applet:

Let’s say we have a requirement to refresh certain list applet every couple seconds or so. Our shipment manager is rather lazy and is not particularly fond of manual and tedious requerying of pending shipments list applet :)

To reach this goal we might use setTimeout() to refresh the applet at equal intervals.

Open Browser Script editor on your applet and create a function:

function Refresh()
{
var oMyApplet = theApplication().FindApplet ("Your_Applet_Here");
if (oMyApplet) {
oMyApplet.InvokeMethod ("RefreshBusComp");
setTimeout ("Refresh()", 5000);
}
}


This function will find your applet and refresh it. It will also schedule itself to be reinvoked in 5 seconds.

The only thing left is to call this function for the first time. A perfect place to do it – Applet_Load event.

function Applet_Load ()
{
setTimeout ("Refresh()", 5000)
}


Flashing control/label:

Assume the requirement: draw user attention to a critical field if it has invalid or questionable data.
One cool way to do this is by making the field flashing red for example. We’ll start with creating our main function (Browser Script):

function Flash()
{
var oMyApplet = theApplication().FindApplet ("Your_Applet_Here ");
if (oMyApplet) {
var oMyControl = oMyApplet.FindControl ("Your_Control_Here");
if (oMyControl.GetProperty ("FontColor") == "#FF0000")
oMyControl.SetProperty ("FontColor", "#000000");
else
oMyControl.SetProperty ("FontColor", "#FF0000");
setTimeout ("Flash()", 200)
}
}


And to invoke this function for the first time:

function Applet_Load ()
{
Flash();
}

This way the field will flash red 2.5 times a second. You may enhance the script by adding data validation or even use gradient transition

You might as well flash the control’s label rather than the text. In order to do so you will have to add a control user property useLabelID with value TRUE and use oMyControl.SetLabelProperty instead of oMyControl.SetProperty.

 

17) What is the use of return(CancelOperation)?

 

return(CancelOperation) statement is used to send the control back to Siebel or in other words to stop the normal flow of execution of script of a particular event.

This statement is mandatory if we are defining a custom method. For example:

I create a button and give the method name as “CustomMethod”. Now, in BusComp PreInvoke event I write the following script

if(MethodName == “CustomMethod”)
{
My Script
}

If I don’t write the statement return(CancelOperation) at the end then I am going to get error saying: method “CustomMethod” is not supported by BusComp”

So, the correct and complete script when handling a custom method will be

if(MethodName == “CustomMethod”)
{
My Script
return(CancelOperation);

 

Pages

Subscribe to Siebel Interview Q&A