December 28, 2013

Google Analytics with Siebel

I have seen couple of questions regarding use of Google Analytics with Siebel CRM, but no one seems to answer completely. This article is created to answer those questions.

When it comes to web analytics there is no parallel to Google Analytics, I am not selling Google Analytics, but people who have already used GA before can understand the need of powerful web analytics tools and how Google Analytics fills the gap.

This article will give you steps to create Google Analytics account and to embed the tracking code in Siebel.

Google Analytics can be used with Siebel CRM applications for both internal like Siebel Financial Services and external customer facing applications like eService or eSales. Only requirements from Google to use tracking are:
  • User must be able to reach the ga.js/analytics.js JavaScript file at or
  • Intranet Application must be accessible through a fully qualified domain name such as, application need not to be internet hosted application to use google analytics.

If your application can satisfy these requirements then you can create GA code and embed it to the Siebel Application.Once it is setup one can report on user behaviour demographic and many more metrics in GA.

I have used GA's Universal Analytics(newer version of GA) and created custom dimensions to store Active View Name, Application Name and Login User on Google.

Additionally I created events to capture the user interaction application. You can create event to business specific needs like: product configurator or service request creation or tasks.

How to embed Google Analytics tracker in Siebel Open UI?

Add the following code in postload.js file under the public directory, this code will be executed always when ever view is refreshed in Open UI. Code shown in bold is added after creation of dimension shown above.

  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  ga('create', 'YOUR_CODE', 'yoursitename');
  ga('send', 'pageview');
ga('set', 'dimension2', theApplication().GetProfileAttr("Login Name"));
ga('set', 'dimension1', theApplication().GetProfileAttr("ActiveViewName"));

ga('set', 'dimension3', theApplication().GetProfileAttr("ApplicationName"));
ga('send', 'event', theApplication().GetProfileAttr("ActiveViewName"), 'click', theApplication().GetProfileAttr("Login Name"));

How to embed Google Analytics with Siebel HI? 

Add following code to the  swecommon.js for high interactive applications, this js is also executed allways after page refresh in HI applications. 

  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  ga('create', 'YOURCODE', 'yoursitename');
  ga('send', 'pageview');
ga('set', 'dimension2', theApplication().GetProfileAttr("Login Name"));
ga('set', 'dimension1', theApplication().GetProfileAttr("ActiveViewName"));
ga('set', 'dimension3', theApplication().GetProfileAttr("ApplicationName"));
ga('send', 'event', theApplication().GetProfileAttr("ActiveViewName"), 'click', theApplication().GetProfileAttr("Login Name"));

Caution : Do not track customer information such as user details using custom dimesions and metrics as it is against the google analytics policy and could be against the organisation policy as well.

After all this is done you would be able to see the analytics information in your google account.

Now you can do full fledged analytics on your user interactions. My favorite is real time analytics, which one is your favorite??

Happy Analytics :)

December 26, 2013

Getting Started with Siebel Order Management

This is the first article in series of Siebel Order Management Tutorials. These tutorials will consists of short articles in form of questions and answers on Siebel Order Management particularly Siebel Product Configurator and Siebel Pricing.

I will be tracking the complete Siebel Order Management tutorials here, you can refer to it as index.

What is Siebel Order Management?

Order Management is one of the most successful CRM vertical to help telecom operator to manage customer base and order management. It consists of customer creation, order creation and tracking and modification of the assets.

Most important parts of Order Management is Product Configurator and Pricing engine which helps users to configure the product offering for the end customer and provide them the service.

How to get started with Order Management?

Technical name of the Siebel Order Management Application is Siebel Power Communications and cfg name is scomm.cfg. I will be using sample database on Siebel with Open UI turned on for all the tutorials.

Order Management is a complex application it does not work out of the box even with Sample database. Please follow these steps to get started. I recommend to follow these steps before starting with the upcoming tutorials.

Step 1: Activate all the workflows related to Order Management , Product Configurator and Pricing.
Bookshelf provides list of workflow which should be activated, however the list is not exhaustive thus I usually activate the following workflows:
If you try to activate all the product related workflows you might get the following error:
[1]Cannot register runtime event for branch 'Cancel.DECISION' in step 'Get User Name & Password'.(SBL-BPR-00116)
[2]Cannot register action for runtime event.(SBL-BPR-00115)
[3]Invalid operation when not executed.(SBL-DAT-00471)
Please ignore the error and try to proceed with the workflow activation from the next available workflow.

Step 2: Fix all the issues with OOB sample database by following instruction on support web article. Doc ID 788942.1
You might see these errors if the signals and variable maps are not resolved in this step:
We detected an Error which may have occurred for one or more of the following reasons:
 Error invoking service 'Context Service', method 'GetRowSetData' at step 'Get Row Set'.(SBL-BPR-00162) 
 If you are facing the same issue again even after following the steps in support web article then go to CalculatePrice_Configurator signal and release the workspace a new version.

Step 3: Go to Administration Product View and try to validate any customizable product.
If you are successful then you should see screen something like this:

Product Configurator with Auto Reprice Templates

Product Configurator with Manual Reprice Template

Comments are welcome.

Next in series: Order Management Entities  - HUG


December 14, 2013

EAI JSON Converter

Siebel does not provide any out of the box functionality to convert Siebel data into JSON string or vice versa. Developers end up with string manipulations or giving up on integration. I have created custom EAI JSON Converter business service which uses Java capabilities and Siebel-Java integration EAI Java Business Service to produce fully compliant JSON strings and convert the external JSON into Siebel Property Sets.

The service built on the lines of methods of EAI XML Converter which converts Property set to XML Doc and XML Doc to property set.
Methods available in EAI JSON Converter are:

  1. JSONToPropSet
  2. PropSetToJSON

Input data to this service is sent to EAIJSONConvert java class using Siebel API(Siebel.jar) which converts the data in required format using GSON 2.2.4 Java API . The Gson library was originally developed for internal purposes of Google, and Version 1.0 was later released on May 22, 2008 under the terms of Apache License 2.0. The latest version, 2.2.4, is used for the service.

How to set up:

1. Download and place java files in the CLASSES folder of Siebel Client the binaries 

2. Download the sif file for EAI JSON Converter from github
3. Update the cfg file to include gson-2.2.4.jar file. My cfg file look like:
DLL = C:\Program Files\java\jre6\bin\client\jvm.dll
CLASSPATH = C:\Siebel\8.1\Tools_1\CLASSES\Siebel.jar;C:\Siebel\8.1\Tools_1\CLASSES\SiebelJI_enu.jar;C:\Siebel\8.1\Tools_1\CLASSES\gson-2.2.4.jar;C:\Siebel\8.1\Tools_1\CLASSES\.
VMOPTIONS = -Xrs -Djava.compiler=NONE -Djms.log=C:\logs\

4. Simulate the service

How to use:

Service can simply be used in place of EAI XML converter to convert the Siebel message into JSON or convert back JSON to property set.

Please feel free to use comments for any questions or to post any difficulty faced in using the service.

Hope it helps.


December 09, 2013

100 Siebel Interview Questions: Workflows

This article has been added on reader's request, and these are not the 100 questions as of now ( ideally there should not be 100 question in an interview :) ). My intention with this article is to point all the minor doubts of Siebel Consultants regarding workflows. Feel free to suggest any other question on this topic, I will be more than happy to add it to the list.

Question: What are the different ways to invoke workflows in Siebel?

Answer: Some of the known ways of executing workflows are:
1. Named Method User Property
2. Calculated Field expression
3. Script on BusComp, Applet, Application, Business Services
4. Workflow Policy
5. RCR & Server Requests
6. Asynchronous Server Request - Business Service
7. Run Time Events
8. Command line using Server Manager
9. Web services & Receiver components(JMS,MQ)
10. Through Siebel URL 
11. Commands
12. Order Management Signals

Question: How to invoke workflow on specific server?

Answer: Workflows executed through workflow process manager business service are executed on the same server where request is made. Asynchronous Server Request and Server request business service can send request to other servers for workflow execution; this can be done by specifying server name as input argument.

Question: What are different ways of error handling in workflow process?

Answer: There are two ways of error handling in Siebel workflows. Most popular to handle error in workflows are exception branches(the red arrows :) ), they can be created for each step in workflow to handle error for the step.Secondly  we can use Error Process Name property of workflows to call another workflow process to handle in case of any error.

Question: How to configure a workflow policy?

1. Ensure Workflow Policy column is created in Siebel tools & Added in workflow policy object
2. Create workflow policy action to execute workflow
3. Create workflow policy record and create conditions and associate action to the workflow policy.
4. Execute “Generate Trigger” task to create triggers
5. Restart Workflow Monitor Agent

Question: What is the difference between Synchronous and Asynchronous workflow execution?

Answer: Synchronous workflow is executed in user session and user has to wait till workflow is executed. Workflow is executed synchronously usually through button click or record operations like set field value or write record, where user need to know the outcome of the workflow.

Asynchronous workflow requests are executed by server in background and does not requires user to wait for the outcome. These type of workflows are usually interface workflows.

Question: What is the difference between Stop step and End Step?

Answer: Stop step sets the status of workflow to “In Error” and End step set the status to “Completed”
Stop steps should be avoided in integration workflows and workflow policies as they may cause server component to error out.

Question: What is the difference between Workflow policy and Run time events?

Answer: Workflow policy adds the workflow execution request to the queue and executes the workflow from server components.
Runtime event executes workflows as and when requested and process is executed in user session user has to wait for the workflow to complete.

Questions: Is it possible to create Workflow without Business Object ? If yes how ?

Answer: Yes it is possible to create workflow without business object. Business Object is not a required field on Workflow. It is only required when workflow need to use any siebel operation.

Question: How to get current date in Siebel Workflow?

Answer:  Property can be populated with current date by using Timestamp() in Siebel Workflow. Syntax of Timestamp in Siebel Workflow.

Question: What is stored in Siebel Operation Object Id when Query method from Siebel operation step returns more than one record?

Answer: Siebel Operation Object Id contains * if more that one records or updated are queried using Siebel operation.

Question: How to pass hierarchical property set from custom business service to Workflow?

Answer: To pass hierarchy from custom business service to workflow, type of property set should be the same as the name of output argument.
Download Siebel Interview Question eBook

See Part :2 of Siebel Workflow Interview Questions

See more EAI Interview Questions here.

December 04, 2013

Siebel EAI Interview Questions

Question: How to generate XML in Siebel?

Answer: Use EAI Siebel Adapter Business Service Query method and then EAI XML Converter Service Method HierToDoc to generate XML Doc.

Question What is the difference between External & Internal Integration Object? 

Answer: Internal Integration Object refers to Siebel Business Object for querying and saving data.
External Integration Object refers to XML schema, one can not use query or insert operation on external integration object.
To create external integration object, either XSD or DTD document is required.

Question: How to change the XML tag in an Siebel Message?

Answer :  Find the Integration object from the xml and then go to the desired integration component and update the XML Tag of desired integration component field.

Question: How to change the source field of XML tag in Siebel XML?

Answer : Find the Integration Component Field and update the External Field name to the new field name.

Question: What is the significance of Name of Integration Component Field?

Answer: Name of Integration Component Field is used to create the Siebel Message property set, It is essential to know the ICF name if script is used to get value from XML.

Question: What is the use of XML Container Element?

Answer: XML container element if specified on IC then Siebel adapter will always create an XML tag before the start of child IC records, and it will always be present in XML even if no records are returned by query method.

Question: What is XSD? How to create XSD in Siebel?

Answer: XSD is an XML Schema Definition document. It is a type of XML document which defines the structure of an XML document. It contains the structure of the XML and the data type and length of XML.
Siebel tools can generated by Generate XML Schema wizard by clicking Generate Schema Button.

Question: What DTD? How to generate DTD of an Siebel Integration Object?

 Answer: DTD is Document Type Definition, it is another form of document which describes the structure and data types of an XML document. It can also be generated through Generate Schema Button on the Siebel Integration Object.

Question: What is a WSDL?

Answer: WSDL stands for Web Services Descriptive Language. It is an XML file which describes everything about a web server. 
Typically it contains:
  • Web service end point (URL)
  • Methods web service Support
  • Input and output arguments.
WSDL is technology/platform independent syntax thus it is widely accepted way of describing web services definition.

Question: How to import WSDL in Siebel?

Answer: Importing WSDL in Siebel is two step process.
First, WSDL is imported into Siebel Tools using WSDL Import Wizard. It creates Integration objects and proxy business service from WSDL definition, and generates XML for run time data creation.

Secondly, XML generated  is then imported in to web client. Process is outlined in bookshelf here.

Question: How to convert incoming Data to uppercase before importing in Siebel?

Answer: Siebel does not support changing the case of through EAI, however it is possible to call a custom business service through data maps which can convert the case.
InvokeServiceMethod ("CustomDataMapper", "UpperCase", "InputStr='"+[Integration Field Name]+"'", "OutputStr")

See more EAI Siebel Adapter Interview Questions.
See more Siebel Workflow Interview Questions.

December 03, 2013

Siebel Configuration Interview Questions - Picklists

This post focusses on the interview questions that are related to picklists fields in Siebel. I have tried to list all the possible questions and will keep updating it in future.

Question: What is the difference between dynamic picklist and static picklist?

Answer:Static picklist always show a static list of values which are store in List of Values buscomp. Values in static picklists can only be modified by Siebel Administrator from Administration Data> List of Values view. Example: Salutation pick list on contact form applet.

Static Pick list in siebel
Static Pick list in Siebel
Dynamic Picklist in Siebel
Dynamic Pick list in Siebel

Dynamic picklist source its data from user buscomp such as contact, account and product.
1. Product pick applet on Order line item
2. Account pick applet on contact form applet

*** Static picklist are generally dropdown and dynamic picklists are configured through pick applet.

Question: How to create a new static picklist in Siebel?

1. Create new LOV_TYPE by creating record in Administration Data> List of Values view. Keep:
Type :  LOV_TYPE
Language Independent Code : CUSTOM_PICKLIST
Language : English-American
Active : Y
2. Create List of values by using newly created LOV_TYPE in step 1. Set the following values:
Language Independent Code : Value1
Display Value : Display Value1
Language : English-American
Active : Y
3. Create new picklist in tools and set:
BusComp :  PickList Generic
Static : Y
TypeField : Type
4. Associate picklist to the field, by selecting this new picklist on the field. And set the PickMap as:
Field: "New Field Name"
Picklist Field : Value
5. Place the field on to the applet and set runtime=true

Question: What is the difference between bounded picklist and unbounded picklist?

Answer:Bounded picklist allows user to select value only from the list. User can not type in new value into the field.
On the other side Unbounded picklist field can accept values which are not available in dropdown.User is allowed to type in new value and can save the record.

**Both Static and Dynamic pick list can be bounded or unbounded.



Question : What is the difference between Picklist and MVG?

Picklist allow user to select on value from list of valid values.
Example : Account Field on Opportunity BusComp.

MVG stands for multi value group is used to associate multiple values to a record. MVG show relationship of one entity to other multiple entities.
For Example: Contacts on opportunity, each opportunity record can be related to multiple contacts records, however it can only be related to one account.



Question: What is the difference between Constraint pick map and Copy pick map in Siebel?

Answer: Copy pick map copies the selected value to the field. This type of picklist shows all the values from the pick list buscomp.

Constraint pick map is used when there is requirement is to limit the values which are shown on UI. Field value of constraint pick map is used to filter values shown in picklist.
For Example:  Contact Field on Sales Order only shows the contacts of the selected account, this is because account id in mapped as constraint pickmap in account.

Question: How Multilingual LOV works in Siebel ?

Answer: When Multilingual LOV is configured, Siebel save LIC (Language independent code) on the database and shows Display value on the UI depending upon the language of the object manager.
For Example: Event Status will show "Zugewiesen" if user is using German application and for same record English application will show value as "Assigned" and the database column will have "Assigned" value.

Multilingual LOV

Popular Interview Questions:
More to come...

please feel free to use comments to share any question that you had difficulty in answering?

November 14, 2013

Siebel EAI Interview Questions - EAI Siebel Adapter

Question: Explain the methods of EAI Siebel Adapter

Answer: EAI Siebel Adapter is pre-build business service which interacts with Siebel Object manager to perform CRUD operations on Siebel Database. Following methods are available on the service:


  1. Query method is used to query data from Siebel, output of this method is Integration Object instance.
  2. Query can be executed using :
    1. Row id of the primary BusComp
    2. Search spec consisting of parent and child buscomp fields.
    3. Integration object instance - which is also known as Query By Example
  3. Only required input argument of this method is Output Integration Object Name which is the name of integration object which is queried by the service.

November 07, 2013

Whats wrong with EAI Java Business Service?

What is wrong with EAI Java Business Service?? This was my reaction after struggling with EAI Java Business Service and trying to execute small Java code from Siebel. Actually there is nothing wrong with the service, it is our lack of knowledge and less experience with Java development which makes it difficult to configure.

I am going to list down steps required to get the Sample bookshelf code working with Siebel web client.

1. Siebel is not compatible with Java 1.7.
If you compile from Java 1.7 or above you will get the following error while calling service from Siebel

Class name incorrect or does not extend SiebelBusinessService : AddBusinessService -- JVM Exception:java.lang.UnsupportedClassVersionError: AddBusinessService : Unsupported major.minor version 51.0(SBL-EAI-05010)
For workaround Siebel Tools comes with a older version of jdk which can help you to compile and get rid of the above error.

November 01, 2013

JSON and Siebel

JSON(JavaScript Object Notation) is a new lightweight integration message format which is replacing XML in thin client integrations. There are no meta tags and data description in JSON as in XML, it is just a string representation of JavaScript Object, it is designed to help javascript code to convert data to string and string to data without considerable overhead.


Many companies have started replacing XML with JSON in APIs. All the APIs of Google (Maps,Mail,Calendar, plus etc are now serving JSON), Twitter API,  Facebook apps and interfaces are built using JSON.
Read more on JSON on :

Siebel lacks in support of JSON on server side. Oracle support recommends use of workarounds such as using custom scripting to parse JSON response received by Siebel.

So how to interpret json in Siebel? Answer lies in the escript engine of Siebel. Siebel eScript as we know is actually ECMA script which was basis of Javascript. That is why the syntax of Javascript and eScript closely matches each other.
ECMA adopted JSON before it became standard in javascript. Thus our well known Siebel eScript also have some support.

October 19, 2013

How to Pre-populate CC or BCC in Siebel F9 Functionality?

Siebel F9 Email Client no doubt is one of best out of the box functionality of Siebel. It has lot of its logic built into the classes thus presents some limitations. In our previous post we saw how we can bring data from child business component data into email body.

In this posts lets see how we can pre-default CC or BCC recipients using some scripting. Out of the box
when ever Send Email method is invoked from on any Siebel Applet, Send Communication Applet is opened, and "To" email field is populated with the value of the field specified in Recipient Email Address Field  user property on the BC.

However there is no way we can pre-default CC and BCC fields out of the box. With the help of small script on  Send Communication Applet can set the value of To Email, CC, BCC and Email Body as well. This can be useful little customization that can help to pre-populate data which can not be achieved using email templates and recipient groups.

function WebApplet_Load ()
    var oBC = this.BusComp();
    oBC.SetFieldValue("Email BCC Line","");

Siebel Email Client - Siebel 7.8
Hope it helps


October 18, 2013

Property Set Value is marked as binary data - SBL-EXL-00109

Error: PropertySet GetValue call failed. PropertySet Value is marked as binary data, starting with: 'PropertySet GetValue call failed. PropertySet Value is marked as binary data, starting with: '(SBL-EXL-00109)

This error occurs when Siebel script tries to manipulate the data from external interface which is not UTF-16, as GetValue or GetProperty Methods are build to return on UTF-16 data. I was getting this error when I was trying to GET some data using EAI HTTP Transport Service.

There are two solutions which can be used to resolve this issue.
First: Use Transcode Service, Convert Method, and using EncodingToString and SourceEncoding as CP1252. Read more on:

Second: EAI HTTP Service provides conversion directly from the service. We can provide
CharSetConversion input property to convert the output to required encoding. I was successful using following code:

function Service_PreInvokeMethod (MethodName, Inputs, Outputs)
var bs = TheApplication().GetService("EAI HTTP Transport");
var inp = TheApplication().NewPropertySet();
var op = TheApplication().NewPropertySet();
return (CancelOperation);

Hope it helps.

Part4: Patching Siebel Client

This step is the  last and simplest step of the Siebel installation.The only two point to make sure in this step are:
Select the right oracle home for patching, by default it create another oracle home and might not complete as installation file does not contain all the data.
Second verify Summary which is shown just before installation,  it should read as below.

See the complete list of steps : Installing Siebel on Windows 8

Part 3:Installing Siebel 8.1.1 Client on Windows 8

After downloading the jar files and creating Siebel Install Image, task that remains is to install Siebel 8.1.1 Tools and client and patching  with There are only few hiccups with this installation.

Pre-Installation steps:
1. Create Siebel folder, and share this folder with every user with full access. - although it is not required but it helps to avoid file write errors.
2. Change oui.exe comapatibility setting to run it in Windows XP(Service Pack 3) mode.

Installation steps:
1. Run oui.exe and select Run as administrator option, select the folder created for installation.
2. Installer might report some warnings as part of Pre-requisite checks, check the flags to skip them.
3. Select Developer web client in next prompt.
4. After this step, installer asks for parameters for server configuration, which is used for server management screens of the application. These parameters are not required to populate now, one can safely skip to next steps keeping the “CHANGE_ME” value.
5. In final step installer displays all your inputs to confirm your responses, and provide option to install.
6. To install Active X, installer opens up the internet explorer, if installation of Active X fails, installation can get corrupted and you can get the following error, to avoid this error click allow button on ie for installation of active x and close the browser when requested.

Errors you might face:
SSACommonDllInit failed for enu(SBL-GEN-02505)
Click play to view screencast for the installation

Steps to download Siebel Tools