Friday, June 8, 2012

Siebel Architecture Exposed

Siebel Architecture:


Let us start our course with the most important thing in Siebel CRM. Whether you are Siebel Configuration, Siebel Administrator, Siebel EAI , EIM or Siebel Project Manager it is of utmost important that you have a proper understanding of Siebel Architecture thoroughly.

In this session we will discuss step by step what happens inside Siebel and how Siebel interprets and recognizes external requests and their flow inside Siebel right from user entering Siebel request in Login page in his browser to the response received back from Siebel.

A Siebel Enterprise application is a collection of Siebel Servers(Load balancing) grouped into an logical Enterprise Server, a Gateway Name Server,Siebel Web Server Extention, a WebServer and a Relational Database Server.

Let us assume a user following URL in address field of his browser.

http://TESTWebServer/fins_enu/start.swe?


Where HTTP stands for Hypertext Transfer Protocol (HTTP) is an application protocol for distributed, collaborative, hypermedia information systems.[1] HTTP is the foundation of data communication for the World Wide Web.

TESTWebServer is the name of the WebServer you have installed at the time of installing siebel.

fins_enu refers to the Application Object Manager. By entering fins_enu you let WebServer know that a Siebel request has come which is trying to access Object Manager for Siebel Finalcial Services.

SWE stands for Siebel Web Engine and Start.SWE tells WebServer to start a SWE session.

ENU is the language. For multilingual implementation this url might change as per the language and might look like as following.

http://TESTWebServer/callcenter_fra/start.swe?

http://TESTWebServer/callcenter_jpn/start.swe?

Now let us come back to what we were discussing.

Follow the picture as we discuss about the Siebel architecture. This picture is taken from Siebel Bookshelf.

Let us think Mr. John enters the following URL in his local browser to access his customer’s details from Siebel.
http://TESTWebServer/fins_enu/start.swe?

1. The request goes to Webserver TESTWebServer over http. Webserver interprets that request and if it observes that it is a Siebel request it passes that request to SWSE inside Webserver.

SWSE stands for Siebel Webserver Extensions – a Siebel Component that is installed inside Webserver.

2. Webserver has virtual directories which will have entries against all of the application object manager.

Go to Control Panel –>Administrative Tools -> Internet Information Service (IIS) Manager , open it and locate fins_enu.

You will observer IIS(WebServer) having other virtual directories against other object managers.

Local Path for this object manager is d:\sba81\SWEApp\public\enu

If you go to Custom Errors tab you will observe HTTP error like

Which is not in scope of our discussion and there could be a complete blog all together to discuss different HTTP error that may come and how to nail them.

Enough of virtual directories let us come back to the actual flow of Siebel request



3. As soon as a virtual directory finds the object manager the request passes to eapps.cfg file which resides in SWSE and it contains the parameter which controls the information of which request should point to which object manager in turn this configuration file contains the parameters that controls the integration between SWE and SWSE.

4. There is a common myth that Gateway Name Server is responsible for Intra-server load balancing, this is totally wrong. You can bring down the gateway server and still you can login to Siebel and carry out your normal transactions however you can’t navigate to Administration – Server Configuration or Administration Server Management screen as these screens pull their information from Siebns.dat file residing in Gateway Name server. The point to be noted here Gateway Name server is configured as Named Subsystem aka Profile Configuration and its information is stored in sibens.dat file. Gateway name server is connected as a GatewaydataSrc named subsystem.

5. Siebel Connection Broker (SCBrocker) is responsible for intra-server load balancing. It is a server component.` Whenever eapps.cfg receives the request it locates he corresponding object manager in eapps.cfg file and once found it calls SCBrocker Server component and SCBrocker forwards the request to the AOM which has got least number of tasks running on that object manager at that particular time, thereafter SCBrocker forwards all the Siebel request to that object manager for that particular session unless otherwise explicitly asked by Siebel for another object manager like in the case of Server Request or Workflow Policy. We will discuss them in a separate note.

6. AOM receives the request and finds the data source corresponding to the object manager and it could be located under Component parameters ODBC Data Source and makes the connection with the database.

7. For the initial request without username and password, AOM could not figure out the username and password of the request and hence treats the user as guest user and SWE creates guest login page and forwards the request to SWSE.

8. Webserver sends back the results to the user who initiated the request and now he sees a login page as shown follow.

9. Mr. John now enters username and password and step 2 to step6 are repeated till it reaches AOM.

10. Data manager validates the login against database and the connection is established by Application Object Manager Parameter ‘ODBC Data Source’ and passes the results back to AOM. AOM retrieves the Responsibilities and views of the users and establishes the homepage as startup page.

How can you configure which page will by default be the landing page or startup page for a particular application.

11. SWE creates the pages and sends them back to webserver from where users get the home page.

13. In all the subsequent interaction Business Object layer constructs the business logic of the operations requested by users,

14. Data Manager constructs the SQL against that request , forwards that request to database layer (Relational RDBMS) and sends back the results to business object layer. Business Object Layer contacts SWE and SWE constructs the WebPages with the result set which then goes to SWSE to Web server and finally user retrieves them in his local machine.


                           Previous                                                                             Next


Siebel Applicaton User Property

Application User Property:



DisablePDQView

 – To Disable a Pre-Defined Query you can use this user property. Prior to 8.0 release one had to add DisablePDQView = “Name of the view to be disabled” in cfg file.

But yearlong oracle supports effort to minimize configuration file dependency resulted in creation of this Application Level User Property.

To set this up go to Tools – Application -> Application user Property.

Create new record as follows.

Name: DisablePDQView1


Value: “Name of the view to be disabled”`




ClientBusinessService

Before the release of 8.0, to call a business service from browser script you had to enter following entity in cfg file to enable that business service. The reason is that browser Script in compiled by the browser in local machine and Business Service is compiled in the Server SRF file. Hence to let Siebel know about that a browser business service is called you had to make this entry in cfg file.

ClientBusinessService 1 = ‘Name of the Business Service called from Browser Script’.



As in the case of DisablePDQView, Siebel 8.0 onwards that cfg configuration has been revoked and instead Application User Property has been created to perform the same activity to enable a Business Service called from browser script.

Syntax:

Name: ClientBusinessService 1


Value: Name of the business service called from Browser script.

Next

Siebel User Property

User Property.


Siebel user Properties are pre-build functionalities provided by oracle to facilitate user’s configuration and minimize customization.
With proper use of configration and user properties we can acheive all the functionality without the help of scripting.

User Properties are child object type of Applet, Business Component, Integration Object, Business Services or at times Applications.

Let us discuss some important user Properties in Hierarchy.

In the Next subsequent post we will discuss about prominent and daily used Business Component, Field, Integration Object,Application and View level User Properties.

Next

Siebel Applet User Property

Applet User Property


Disable Buscomp Hierarchy

Let us have a discussion in what scenario we might want to use this User Property.

On some of the business component you would see there is a property defined called Hierarchical Parent Field, like in case of Asset or Line Item BC.

This property maintains the parent child relationship between same kinds of object. Like one asset could be the parent of another and vice versa.

Setting Hierarchical parent Field is a way to let Siebel know the Parent ID of a record and hence maintains a parent chilled relation within a business component context.

However this could cause performance issue as an extra SQL query is fired by Siebel to find the parent asset from all-assets hence it fires additional sub-query with ‘/+ ALL_ROWS*/ hint causing performance. If your configuration does not require this you can suppress BC Hierarchy by setting an applet user property.

Disable Buscomp Hierarchy is that user property that allows you do that.

How can you do this?
Lock the Applet object. Click on Applet User Property child object.
Create a new record. Enter the following, Compile the object and you re done.

And after this configurationally chance if you generate the spool you will see ALL_ROWS*/ hint which was causing performance will not be part of the query and query time has reduced drastically as Siebel did not query all assets for each asset record in order to find the parent of that asset.
This is what Siebel Bookshelf has to say on this user property.
This user property allows you to prevent hierarchical relationships from being displayed in list applets.

Value TRUE or FALSE.

Usage Hierarchical list applets are used to show records that have a hierarchical relationship. The hierarchy is implemented in the parent business component by setting the Hierarchy Parent Field property, and rendered by using icons that appear in the first column of the list applet. For more information on hierarchical list applets, see the topic on specialized behavior supported by Web templates in Configuring Siebel Business Applications.

To disable the rendering of hierarchical relationships in a list applet, add this user property to the applet, with the value TRUE.

 Name: Disable Buscomp Hierarchy

 Value: TRUE

This user property can be found on standard list applets such as Asset Mgmt - Asset List Applet.

Parent Object Type: Applet


Functional Area: Hierarchical list applets

Courtesy: Siebel Bookshelf



Default Focus Applet User Property.

Have you ever observed that for a particular list applet the control is on some particular column?
In some list applet the default control when you land into that page lies in 3rd column and for some it is on the 1st column. Can we set our control to the 5th column of a list applet or to the 4th control of a list applet?

The answer is yes we can and we can do this by setting the user property Default Focus.
There are three user properties to set the default focus.



DefaultFocus_Edit

This applet user property sets the field or control within an applet that receives focus when the applet is in Base, Edit, or Edit List mode.

Value: The name of a field or control on the applet, not enclosed in quotes.

Usage For example, this user property could be set to Last Name to give default focus to the Last Name field on an applet in Edit mode.

If the DefaultFocus_Edit user property is not added to an applet, then no field or control typically is default focus when the applet is in Base, Edit, or Edit List mode.

You can inactivate this user property or modify its value. You can create new instances of this user property, but do not create more than one instance for an applet

DefaultFocus_New


This applet user property sets the field or control within an applet that receives focus when the applet is in New mode.

Value The name of a field or control on the applet, not enclosed in quotes.

Usage For example, this user property could be set to NewRecord to give default focus to the New button on an applet being used to add a new record.

If the DefaultFocus_New user property is not added to an applet, then the first field in the applet typically is default focus when the applet is in New mode.

You can inactivate this user property or modify its value. You can create new instances of this user property, but do not create more than one instance for an applet.

DefaultFocus_Query


This applet user property sets the field or control within an applet that receives focus when the applet is in Query mode.

Value The name of a field or control on the applet, not enclosed in quotes.

Usage For example, this user property could be set to First Name to give default focus to the First Name field on an applet in Query mode.

If the DefaultFocus_Query user property is not added to an applet, then the first field in the applet typically is default focus when the applet is in Query mode.

You can inactivate this user property or modify its value. You can create new instances of this user property, but do not create more than one instance for an applet.





Configuration ReadOnly Fields

How can you make a field read-only?
The first thing that comes into mind is that you can use Read Only property of List Column/ Control to Y. or you can do the same in BC level by checking the Read Only flag to Y.

But your business might not want you to do so in certain cases.
Let us take an example.
In Order management, you can configure QTY by hitting Customize button on the Line Item list applet. Configurator checks all configuration rules to make sure that the change in quantity is appropriate. In such scenarios from the UI you should see QTY field read-only.

Configuration ReadOnly Fields BC User Property is a coma delimited list of field of a BC that allows you exactly the same.

In future if your business wants user to be able to edit QTY based on requirement you can take out that Field from that PC User Property.
Syntax:
Name: Configuration ReadOnly Fields
Value: Comma delimited list of Fields



Disable Immediate Post Change Field:

Do you remember the BC Field property of Disable Immediate Post Change?
If not let me remind you.

When the Immediate Post Changes (IPC) property is set to FALSE, which is the default value, changes from the field values to the server do not occur immediately. For example, when a user changes a field value and then tabs to the next field in the same record, the server is not aware of it.

When the Immediate Post Change property is set to TRUE, field value changes are posted to the server immediately when the focus moves off of a field, and then the data is refreshed. The posting causes an immediate round trip to the server, and a PreSetFieldValue browser script event is invoked.
Now you want some applet so drop this behavior. How will you do it~?

Disable Immediate Post Change Field Applet User Property comes handy here.
Just add this Applet User Property as follow to disable immediate Post changes of that BC to that particular applet.

Syntax:
Name: Disable Immediate Post Change Field 1
Value: Quantity Requested


Hide Control

This user property set in Applet allows you to hide some control/List columns at runtime.
Syntax:
Name: Hide Control
Value: Control to hide, Condition

So in the below screenshot configuration NewRecord button will be hidden if Account record is present on that applet.
This User property could be based on class and so far I have explored it works only in Order Management realm. If you want to explore more and found anything interesting outside of Order Management, please let me know.




Previous                                                                                                                                          Next