Do you want to Search Something?

Those who opened the gates

Tuesday, August 28, 2012

Verifying Classpath in Siebel

It has been observerd that lot of time is spent in issues related to troubleshooting classpath issues.

After configuring the classpath values open the Business service Simulator and use the 'EAI JMS

Transport'


There are a couple of handy methods in this Business Service.

eg: method : CheckClasspath


On running this  you get an ouput telling the result.

<?xml version="1.0" encoding="UTF-8" ?>
  <?Siebel-Property-Set EscapeNames="true"?>
  <PropertySet>Input property set: > Value = > Type = > SendPassword = > ConnectionPassword = > CommitTransaction = true > ReceiveUsername = > TopicUsername = > PreserveString = true > ConnectionUsername = > ConnectionFactory = > ReceivePassword = > TopicPassword = > SendUsername = java.class.path = /u01/app/siebel/jms:/u01/app/siebel/jms/Siebel.jar:/u01/app/siebel/jms/SiebelJI_enu.jar:/u01/app/siebel/jms/jndi.jar:/u01/app/siebel/jms/adminclient.jar:/u01/app/siebel/jms/bcel.jar:/u01/app/siebel/jms/dms.jar:/u01/app/siebel/jms/ejb.jar:/u01/app/siebel/jms/jms.jar:/u01/app/siebel/jms/optic.jar:/u01/app/siebel/jms/pcl.jar:/u01/app/siebel/jms/oc4jclient.jar:/u01/app/siebel/jms/javax77.jar:/u01/app/siebel/jms/ojdbc14dms.jar:/u01/app/siebel/jms/mail.jar:/u01/app/siebel/jms/jta.jar:. Found directory /u01/app/siebel/jms NOTE: A jndi.properties file is present in /u01/app/siebel/jms Found jar file /u01/app/siebel/jms/Siebel.jar with 638 entries. Found jar file /u01/app/siebel/jms/SiebelJI_enu.jar with 25 entries. Found jar file /u01/app/siebel/jms/jndi.jar with 123 entries. Found jar file /u01/app/siebel/jms/adminclient.jar with 1307 entries. Found jar file /u01/app/siebel/jms/bcel.jar with 399 entries. Found jar file /u01/app/siebel/jms/dms.jar with 192 entries. Found jar file /u01/app/siebel/jms/ejb.jar with 37 entries. Found jar file /u01/app/siebel/jms/jms.jar with 61 entries. Found jar file /u01/app/siebel/jms/optic.jar with 32 entries. Found jar file /u01/app/siebel/jms/pcl.jar with 270 entries. Found jar file /u01/app/siebel/jms/oc4jclient.jar with 850 entries. Found jar file /u01/app/siebel/jms/javax77.jar with 39 entries. Found jar file /u01/app/siebel/jms/ojdbc14dms.jar with 638 entries. Found jar file /u01/app/siebel/jms/mail.jar with 259 entries. Found jar file /u01/app/siebel/jms/jta.jar with 20 entries. Found directory /u01/app/siebel/siebsrvr/bin/. SUCCESSFUL TEST</PropertySet>

Wednesday, July 25, 2012

Cleaning the File System in Siebel


During normal operation of Siebel Business Applications software, it is likely that orphaned files will be stored in the Siebel File System and that orphaned records will exist in the Siebel Database.

Here comes in the handy SFS cleanup utility.....

Periodically run the SFSCLEANUP utility to remove orphaned files from the Siebel File System. This utility is located in the bin subdirectory within the Siebel Server root directory.

Run this and be a best practice compliant and responsible siebel  consultant :)

Cheers

Wednesday, July 4, 2012

Fix C028: “Unable to Connect to the Siebel Gateway Name Server”

Symptoms

The Server Configuration wizard has logged the following error message:
C028: Unable to Connect to the Siebel Gateway Name Server

Cause
Database Authentication failed.
Gateway authentication is a new feature in Siebel 8.1.1.  If the Configuration Wizard fails due to authentication it will log the error messages, above.

Solution

Follow these steps to resolve the issue:

1. In the ‘$SIEBEL_ROOT/gtwysrvr/siebenv.sh’ environment sourcing script, check the following environment variables and  set them appropriately before starting the Gateway server.
1a. For all servers: ORACLE_HOME must be declared before any library paths are declared.
Example:
ORACLE_HOME=/export/home/ora10g/10203 ; export ORACLE_HOME
1b. NOTE: For the following library paths, Oracle 32-bit libraries must be referenced before 64-bit libraries. An example is provided for each library path per Unix system, as follows:
For AIX: LIBPATH
LIBPATH=${SIEBEL_ROOT}/lib:${MWHOME}/lib:${SQLANY}/lib:/usr/lib:${LIBPATH}:${ORACLE_HOME}/lib32:${ORACLE_HOME}/lib
For HP-UX:  SHLIB_PATH
SHLIB_PATH=/usr/lib/hpux32:${SIEBEL_ROOT}/lib:${MWHOME}/lib:${SQLANY}/lib:${ORACLE_HOME}/lib32:${ORACLE_HOME}/lib
For Linux and Solaris:  LD_LIBRARY_PATH
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${ORACLE_HOME}/lib32:
${ORACLE_HOME}/lib
2. Open the ‘gateway.cfg’ file, which is located in the ‘$SIEBEL_ROOT/gtwysrvr/bin’ directory.
Check the ‘ServerDataSrc’ section and confirm the parameters are correct, particularly:
ConnectString
TableOwner
GatewayAddress
EntepriseServer
3. Test Siebel database connectivity using the Oracle odbcsql utility for the ‘sadmin’ user.  This is typically located in the ‘$IEBEL_ROOT/siebsrvr/bin’ directory.
For example:
odbcsql /s sia811_DSN /u sadmin /p sadmin
where:
/s = the source ODBC DSN (the Siebel ConnectString parameter) for the database connection.
/u = the user ID.
/p = the password.
If connection is possible, continue with step 4.
4. Restart the Gateway server, and then try configuring the Siebel Server.

Hope that helps !!!! have a nice day

Monday, June 4, 2012

Measuring the performance of Workflows in Siebel

You can get performance tracing of workflows by setting the event WfPerf for the component in which your workflow is running.

Setting the event to level 4 gives timing for the execution of the overall process.

Setting the event to level 5 provides timing for each step as well.

You can set this event level for any Siebel Server component that invokes a workflow process as part of Siebel eAI functionality. For example, to set this event level for the MQ Receiver using srvmgr, enter the following:

change evtloglvl WfPerf=5 for comp MqSeriesSrvRcvr

These events can be useful not just for measuring workflow performance but also for measuring the performance of business services executed within these workflows.

Hope this helps!!!!!

Tuesday, May 15, 2012

How to stop a Workflow Process Instance via eScript

This can be achieved using the  _StopInstance method of Worflow Process Manager BS

An example usage of this technique occurs when you have an interactive workflow which needs to be cancelled but which is suspended in a Wait step. In this scenario, the Process Instance Id is already known.

To stop a workflow process instance from script

Invoke the _StopInstance method on the Workflow Process Manager business service, as in the following example, which uses a hard-coded Process Instance Id:


var bs = TheApplication().GetService("Workflow Process Manager");
var ps_inputs = TheApplication().NewPropertySet();
var ps_outputs = TheApplication().NewPropertySet();
ps_inputs.SetProperty("ProcessInstanceId", "1-IIT");
bs.InvokeMethod("_StopInstance" , ps_inputs, ps_outputs);

Comes in handy while you want to dliberately stop that annoying instance:)

Wednesday, March 14, 2012

Playing with the SOUNDEX function


Hi All

Have you ever tried the SOUNDEX function for finding phonetically similar words such as querying First Name you vaguely remeber.I read about this in Alex's Siebel Essentials and after a bit of trial/POC I am writing this post.

So I typed in this query and ....


 








got the following results




so here we can see that the soundex value for all the results are same.

The Soundex algorithm is as follows:

1.The soundex return value will always begin with the first letter of string.'P' in our case.
2.The soundex function uses only the first 5 consonants to determine the NUMERIC portion of the return value, except if the first letter of string is a vowel.
3.The soundex function is not case-sensitive. What this means is that both uppercase and lowercase characters will generate the same soundex return value.

Applies to :Oracle 8i, Oracle 9i, Oracle 10g, Oracle 11g

Have a nice day ahead.....



Wednesday, February 29, 2012

Reading Input and Output of Vanilla Business Service and logging them.

Hello Everyone

Have you ever guessed what are the input and output property sets and methods called while a vanilla  business is executing....


well here is the step to log them in a readable and logical way...


for eg lets take the BS: Search External Service

Enter  the following lines of code in the declaration section.....

/*----------------------------This is the Declaration Section --------------------------------------------------*/
var OutPutFileName = 'C:\\SearchExternal_Dump.txt'; //Your fav Location and name:)
var IndentAmount = 2; // Indent child prop sets listing this many spaces // to the right for each level down for readability


Now comes our 2 handy function

1.LogMe ( writes down every input provided to a text file path declared in declaration)


2.DumpPropSets(Dumps the property sets)


Code of both these functions follows

1.LogMe Function

  // Writes what is feeded.

 function LogMe(LogThis)
{
  var MyFile = Clib.fopen(OutPutFileName, 'at');
  var sTime = Clib.ctime(Clib.time());
  sTime = sTime.replace('\n',' '); // Remove trailing Newline.
  Clib.fputs(sTime + ': ' + LogThis + '\n', MyFile);
  Clib.fclose(MyFile);
}


2.DumpPropSet Function

/*------Premjit Vidyadharan:Function to collect property sets and feed to LogMe for printing-*/
/*--------------------Print out the contents of a property set--------------------------------*/
function DumpPropSet(Inputs)
{   
 PSDepth++;
 var InpValue;
 var InpType;
 var InpChildCount;
 var inprop;
 var inpropval;
 var inpropcnt;
 var BlankLine = ' '; 
 /*--------------------------Build a string to indent the Listing------------------*/ 


 var IndentSpaces = ''; // [Number of spaces to indent to]
 for (var SpaceCount = 0; SpaceCount < IndentAmount * PSDepth; SpaceCount++)
 {
  IndentSpaces = IndentSpaces + ' ';
 }
 var IndentLevel = ToString(PSDepth);
 if (PSDepth < 10)
 {
  IndentLevel = '0' + IndentLevel;
 }
 // Indent by a number of indents, then level number as nn, then two spaces
 var Indent = IndentSpaces + IndentLevel + '  ';


 LogMe(BlankLine);
 LogMe(BlankLine);
 LogMe(Indent + '---- Starting a new property set ----');
 LogMe(BlankLine);




 // Now do main value and type


 InpValue = Inputs.GetValue();
 InpType  = Inputs.GetType();


 InpChildCount = Inputs.GetChildCount();
 LogMe(Indent + 'Value is ........ : "' + InpValue + '"');
 LogMe(Indent + 'Type is  ........ : "' + InpType + '"');
 LogMe(Indent + 'Child count ..... : ' + ToString(InpChildCount));


 // Dump the properties of this property set


 var PropCounter = 0;
 inprop = Inputs.GetFirstProperty();
 while (inprop != "")
 {
  PropCounter++;
  inpropval = Inputs.GetProperty(inprop);

  LogMe(BlankLine);
  var PropCountStr = ToString(PropCounter);
  if (PropCounter < 10)
  {
   PropCountStr = '0' + PropCountStr;
  }
  LogMe(Indent + 'Property ' + PropCountStr + '  name : "' + inprop + '"');
  LogMe(Indent + 'Property ' + PropCountStr + ' value : "' + inpropval + '"');
  inprop = Inputs.GetNextProperty();
 }//while (inprop != "") ends
 /*-----------------------------------Dump the children of this PropertySet-----------------------------*/
 if (InpChildCount == 0)
 {
  LogMe(BlankLine);
  LogMe(Indent + '(No children exist below this property set.)');
 }
 else 
 {
  for (var ChildNumber = 0; ChildNumber < InpChildCount; ChildNumber++)
  {
   LogMe(BlankLine);
   LogMe(Indent + 'Child Property Set ' + ToNumber(ChildNumber + 1) + ' of ' + ToNumber(InpChildCount) + ' follows below.');
   LogMe(Indent + 'This child is on level ' + ToNumber(PSDepth));
  
   // Recursive call for children, grandchildren, etc.
   DumpPropSet(Inputs.GetChild(ChildNumber));
  }
 }


 PSDepth--; // We are about to pop up a level
}




Now Call this functon at the evnt of your choice


eg given below


function Service_PreInvokeMethod (MethodName, Inputs, Outputs)
{
    LogMe('---- Method Called PreInvoke ----'+ MethodName);
    LogMe('---- Method Called PreInvoke-----INPUTS ----'+ MethodName);
    LogMe(Inputs);
    LogMe('---- Method Called PreInvoke----- OUTPUTS ---'+ MethodName);   
    LogMe(Outputs);
    LogMe('---- PreInvoke Ends Here---------------------'+ MethodName);   
 return (ContinueOperation);
}

Below is the result which we get....A long story to read for the debuggers ot there

Wed Feb 22 05:12:57 2012 : ---- Method Called PreInvoke ----GetParams
Wed Feb 22 05:12:57 2012 : ---- Method Called PreInvoke-----INPUTS ----GetParams
Wed Feb 22 05:12:57 2012 : PropertySet [ ]
Wed Feb 22 05:12:57 2012 : ---- Method Called PreInvoke----- OUTPUTS ---GetParams
Wed Feb 22 05:12:57 2012 : PropertySet [ ]
Wed Feb 22 05:12:57 2012 : ---- PreInvoke Ends Here---------------------GetParams
Wed Feb 22 05:12:57 2012 : ---- Method Called Invoke ----GetParams
Wed Feb 22 05:12:57 2012 : ---- Method Called Invoke INPUTS ----------------------GetParams
Wed Feb 22 05:12:57 2012 : PropertySet [ ]
Wed Feb 22 05:12:57 2012 : ---- Method Called Invoke OUTPUTS ---------------------GetParams
Wed Feb 22 05:12:57 2012 : PropertySet [ ]
Wed Feb 22 05:12:57 2012 : ---- Invoke Ends Here----------------------------------GetParams
Wed Feb 22 05:12:57 2012 : ---- Method Called PreInvoke ----SetSamePage
Wed Feb 22 05:12:57 2012 : ---- Method Called PreInvoke-----INPUTS ----SetSamePage
Wed Feb 22 05:12:57 2012 : PropertySet [ ]
Wed Feb 22 05:12:57 2012 : ---- Method Called PreInvoke----- OUTPUTS ---SetSamePage
Wed Feb 22 05:12:57 2012 : PropertySet [ ]
Wed Feb 22 05:12:57 2012 : ---- PreInvoke Ends Here---------------------SetSamePage
Wed Feb 22 05:12:57 2012 : ---- Method Called Invoke ----SetSamePage
Wed Feb 22 05:12:57 2012 : ---- Method Called Invoke INPUTS ----------------------SetSamePage
Wed Feb 22 05:12:57 2012 : PropertySet [ ]
Wed Feb 22 05:12:57 2012 : ---- Method Called Invoke OUTPUTS ---------------------SetSamePage
Wed Feb 22 05:12:57 2012 : PropertySet [ ]
Wed Feb 22 05:12:57 2012 : ---- Invoke Ends Here----------------------------------SetSamePage
Wed Feb 22 05:12:57 2012 : ---- Method Called PreInvoke ----FindOnly
Wed Feb 22 05:12:57 2012 : ---- Method Called PreInvoke-----INPUTS ----FindOnly
Wed Feb 22 05:12:57 2012 : PropertySet [ ]
Wed Feb 22 05:12:57 2012 : ---- Method Called PreInvoke----- OUTPUTS ---FindOnly
Wed Feb 22 05:12:57 2012 : PropertySet [ ]
Wed Feb 22 05:12:57 2012 : ---- PreInvoke Ends Here---------------------FindOnly
Wed Feb 22 05:12:57 2012 : ---- Method Called Invoke ----FindOnly
Wed Feb 22 05:12:57 2012 : ---- Method Called Invoke INPUTS ----------------------FindOnly
Wed Feb 22 05:12:57 2012 : PropertySet [ ]
Wed Feb 22 05:12:57 2012 : ---- Method Called Invoke OUTPUTS ---------------------FindOnly
Wed Feb 22 05:12:57 2012 : PropertySet [ ]
Wed Feb 22 05:12:57 2012 : ---- Invoke Ends Here----------------------------------FindOnly


Be sure to remove the code when u are done with the debugging.........


Enjoy!!!!!!!!!!!!!!!!

Wednesday, February 22, 2012

A faster way to Open Support Web :)

Friends

This might be known to many but still I would recommend to use

https://supporthtml.oracle.com/

This has got a cool loading time w.r.t the flash based one https://support.oracle.com/CSP/ui/flash.html

specially if you are on Android Cupcake v 1.5....errr sorry did i mention a very outdated OS...whel i am a victim.

Happy debugging!!!!!

Friday, February 17, 2012

Allow Object Locking for Projects in Siebel.


For each project you can specify whether or not developers are allowed to check out and check in individual objects within the project. To allow developers to check out and check in objects, you set the project's Allow Object Locking property to TRUE. To modify the Allow Object Locking property, you must use the SADMIN user ID to log in, and you must be logged into a server data source. You cannot set the Allow Object Locking property in your local repository.

To set the Allow Object Locking property
In the Object Explorer, choose Project.

In the Projects window, choose the desired Project object, then right-click and choose Toggle Allow Object Locking.

NOTE: You can only change the Allow Object Locking flag on the Server database using the SADMIN login ID.

Important:If a project has the Allow Object Locking configuration file parameter set to TRUE, and the user is logged in to the server using the SADMIN user ID, the Toggle Allow Object Locking menu option is enabled. When the SADMIN user chooses this option for a project that is already set to allow object locking, a check is performed to determine whether any objects are locked on the server within the project. If there are objects locked within the project, the system administrator receives an error message. If the project is locked on the server by someone else, the menu option for Toggle Allow Object Locking does not appear.

Tuesday, February 14, 2012

Setting The JVM Classpath and JVM DLL Name in Siebel


Parameter
Value
JVM Classpath
<SIEBSRVR_ROOT>/classes/Siebel.jar;<SIEBSRVR_ROOT>/classes/SiebelXMLP.jar;<SIEBSRVR_ROOT>/classes/wlfullclient.jar
where:
SIEBSRVR_ROOT is the actual path where the Siebel Server is installed.
NOTE:  For UNIX, replace <SIEBSRVR_ROOT> with ${SIEBEL_HOME}.

Alternatively, you can set the CLASSPATH using the Siebel Server Manager (srvrmgr program). For information about using the srvrmgr program to set the CLASSPATH, see Troubleshooting the CLASSPATH Settings Using Siebel Server Manager.

CAUTION:  An error might occur if the value of the CLASSPATH parameter is too long (must be less than 1024 characters). To avoid this, copy the CLASSPATH folder to the root directory, and then point CLASSPATH to this path.
JVM DLL Name
For AIX, Linux, and Oracle Solaris:
<path to libjvm.so_file>
For HP-UX:
<path to libjvm.sl_file>
For Windows:
<path to jvm.dll >
For example, c:\Program Files\Java\jdk1.6.0_xx\jre\client\bin\jvm.dll
NOTE:  For Windows, the path to the JVM DLL file is automatically read from the Windows registry setting of the JRE installed on the Siebel Server.
For more information on setting the values of the JVM DLL Name and JVM Options parameters, see Transports and Interfaces: Siebel Enterprise Application Integration.

Tuesday, February 7, 2012

Siebel CRM version 8.2.2

Siebel CRM version 8.2.2 Industry Target Guidance

Siebel CRM version 8.2.2 (SIA 8.2.2) delivers enhanced functionality in the areas of Public Sector; Loyalty for Travel, Transportation, Retail and Coalitions; and Financial Services for integration to Oracle FLEXCUBE Universal Banking.

SIA 8.2.2 is intended specifically for Public Sector; Loyalty for Travel, Transportation, Retail and Coalitions; and Financial Services for FLEXCUBE Universal Banking customers who want to integrate with Siebel.
Siebel CRM version 8.1.x (currently SIA 8.1.1.6) remains the primary code line for all other Siebel products. Innovations, enhancements and patches will be delivered on a priority basis to the base code line for the affected products. Customers should work with their account team to review any questions on appropriate code lines for their implementation.

The software packages released with Siebel CRM version 8.2.2 are the following:

  • Siebel Business Applications for Public Sector Media Pack for Microsoft Windows x64 (64-bit) - Oracle Software Delivery cloud part number B65190-01, software translations available as B65244-01.
  • Siebel Business Applications for Travel, Transportation, Retail and Coalitions Media Pack for Microsoft Windows x64 (64-bit) - Oracle Software Delivery cloud part number B65192-01, software translations available as B65247-01.
  • Siebel Business Applications for Financial Services Integration with FLEXCUBE Media Pack for Microsoft Windows x64 (64-bit) - Oracle Software Delivery cloud part number B65194-01, software translations available as B65241-01.

These software packages are only applicable to the specified industry groups. All other Siebel products will continue primary development on the SIA 8.1.x code line.

The Siebel code line was split to deliver significant enhancements to specific industries without disrupting other product areas. In the near future, the Siebel code lines will be merged allowing both 8.1.x and 8.2.x customers to continue with their implementations without significant migration costs.

Example Scenarios:

I am a Loyalty customer from Telco or Financial Services looking for the 'latest' Siebel Loyalty release, what should I do?
You should target Siebel Loyalty version SIA 8.1.x.

I am a Siebel Financial Services customer not implementing the Oracle FLEXCUBE Universal Banking integration, wanting to migrate to the latest Siebel CRM products, what should I do?
You should target Siebel Financial Services version SIA 8.1.x.

I am a Siebel 7.8x / 8.0x Public Sector customer looking for the 'latest' Siebel Public Sector release, what should I do?
You should target Siebel Public Sector version SIA 8.2.2.

All industries not specifically listed above can continue on the SIA 8.1.x code line with no need for upgrade to obtain innovations. More information is available in the 'Readme' files in the above listed SIA 8.2.2 media packages on the Oracle Software Delivery cloud and from your account representative.

Tuesday, January 31, 2012

SRBroker and SRProc in a gist

Server Request Broker (SRBroker)

1.Used to start synchronous Siebel Server tasks
2.Server Request Broker & Server Manager are the only components which directly start tasks.
3.Introduced in in Siebel 7
4.Background component
5.Multi-threaded component
6.Need to set MaxTasks as per the needs.

Server Request Processor (SRProc)

1.Used to start asynchronous Siebel Server tasks
2.Manages queued requests
3.Calls SRBroker to manage task execution
4.Background component

This is a high level explanation which would be very helpful when you sit next time to debug logs;cheers

Wednesday, January 11, 2012

How to enable Customize Button

Enabling the Customize Button


The user can select a configurable product and click the Customize button to customize the product. However, the Customize button is only enabled when the user's responsibilities include one of the appropriate views that allows users to customize products. The following views of the Quotes screen are examples of views that enable the customize button:
  • Complex Product Runtime Instance View
  • Complex Product Runtime Instance View - Order
  • Complex Product Runtime Instance View - Shopping Cart
Within these views, the Customize button is enabled only when the type of the product is Customizable.
To find a complete list of the views that enable the Customize button
  1. Open Oracle's Siebel Tools.
  2. In the Views tab, search for views that match the following:
    Complex Product Runtime Instance View*

Monday, January 9, 2012

Did you Know these personalities in Siebel:)

Demo Users for Siebel Call Center
Username / Password
Name / Title
Application
Primary Responsibility
Role
CCHENG
Casey Cheng / Universal Agent
Siebel Call Center
Universal Agent
Cheng handles service requests of all types: emails, inbound calls, and Web collaboration session requests. In addition, he executes outbound call campaigns.
TARNOLD
Ted Arnold / Telesales Representative
Siebel Call Center
Telesales Representative
Arnold primarily executes inbound and outbound telemarketing and telesales calls.
VTAYLOR
Vic Taylor / VP Call Center
Siebel Call Center
Call Center Manager
Taylor's responsibilities for the day-to-day operations of a Call Center make him a regular user of Siebel Call Center Administration functions. He uses the Siebel Analytics function to evaluate performance and ROI and to make strategic decisions based on the analyses.
EMODI
Emily Modi /Engagement Manager
Siebel Call Center
Consulting Manager
Modi is responsible for managing a consulting practice business, including opportunity management, client relationships, contracts and agreements, and financial reporting and management.
GABBO
Glen Abboline / Information Technologist
Siebel Professional Services
Consultant
Abboline is responsible for day-to-day project management, including staffing requests.
GCLARK
Gary Clark / Consultant
Siebel Professional Services
Consulting Manager
Clark is responsible for managing a consulting practice business.

Thursday, January 5, 2012

How Siebel Workflow Interacts with Siebel Server Components..

Siebel Server Components

The Workflow Engine interacts with other server components through the Server Request Broker. Working as a business service, the Workflow Engine calls server components. To call a server component that is exposed as a specialized service, the Workflow Engine calls the signature for the service. For example, to send an email, the Workflow Engine calls the Communications Server as the Outbound Communications Manager business service. To assign an object to a user, it calls the Assignment Manager component as the Synchronous Assignment Manager Requests business service.
To call a server component that is not exposed as a specialized service, the Workflow Engine uses the predefined Server Requests Business Service. This business service sends a generic request to the Server Request Broker.

Server Request Broker
The Workflow Engine sends a request to the Server Request Broker, synchronously or asynchronously, and the Server Request Broker brokers the request to the appropriate component. The following work is performed:

1.Sending asynchronous messages from an interactive server component to the Workflow Engine

2.Communicating, synchronously and asynchronously, between the Workflow Engine and batch components

3.Scheduling repeated server tasks that are executed periodically in the Workflow Engine
The Server Request Broker also performs load balancing. If the Server Request Broker receives a request, then it routes the request to the server component in the current server. For a workflow process, if the component is not available in the current server, then the Server Request Broker sends it to other servers on a round robin basis where the Workflow Process Manager component is activated.
A workflow process also uses Server Request Broker to resume a waiting workflow process. The Server Request Broker queries a database table on a regular basis in order to identify server tasks that must be resumed.

Personalization Engine

The Personalization engine handles run-time events, such as application events, applet events, and business component events. A workflow process handles run-time events through integration with the Personalization engine. A workflow started or resumed by a run-time event registers itself with the Personalization engine when the process is activated. If a run-time event occurs in a user session, then the Personalization engine calls Siebel Workflow in the local object manager.