Saturday, January 1, 2011

Exception Handling using EAI Queue Business Service

Hello My Dear Friends, A Very Happy New Year to all of you. 

Let's start this new year with post on a Business Service(BS) - EAI XML Queuing Service, I recently got to know about this BS while I was getting one Knowledge Transfer session from my friend cum colleague Rishikesh Bhise. Rishikesh is a Siebel EAI Consultant. He is a very passionate guy for his work.

As the name suggest, this BS is used as a queue to store messages. These message can be temporarily stored or permanently based on requirement. Primarily, this BS is used for logging the message in a transaction with external system. Moreover, you can also use this BS and the table underneath as an Error/Exception Handling System, totally out of box functionality. In the Siebel Application, you can view these queue and error messages at Administration Integration->EAI Queues. The upper list applet will show you the Queue Name and below applet will show you the Queue Messages.


This business service can be very handy for logging error/exceptions. In one of my earlier project, we did not know about this BS and we created a new table and new BS to log the exceptions and errors. Now, after knowing about this BS, I learn one thing how a small piece of information can make a big change in Design. Nobody can do anything in this regard, only experience and reading can help you.

Now, let me tell you how you can use this BS to log exceptions. We have used this BS in a workflow. We have taken out one error exception connector from our Siebel Operation Steps, Subprocess  step, Business Service step etc. These exception steps combines to go to one Business Service Step.The properties for this step are as below:
Name: Log Error Message
Business Service Name: EAI XML Queuing Service
Business Service Method: Add Message

The Input Arguments for this step are as below:
Comments: User Error Message Process Property of the Workflow 
QueueName: Name of the Queue You want to add the message into.This is the queue name under which all your message will get stored.
ReferenceID: Expression as "GetUserProfile_"+[&Process Instance Id]
ReferenceValue2: Any message, you can get this message by catching the error in the script(Try and Catch blocks)
SiebelMessage: Process Property for Siebel Message, this must be of data type Hierarchy. You can use BS "PRM ANI Utility Service" and method "CreateEmptyPropSet" to create an Blank Property Set. The input for the BS method is Hierarchy Name(this can be a Literal)
Status: Error in Processing

The Output Arguments can be as below:
ActivityId: Row Id of the new Queue Entry
FileName: File name of the Siebel Message XML Created.

There are some blogs which also talks about this Business Service. EAI-Queue-For-Error-Handling

Monday, August 16, 2010

Oracle Siebel CRM Book

I would like to inform you that recently a book titled "Oracle Siebel CRM 8 Installation and Management" written by Alexander Hansal is published. This book helps Install, configure and manage a robust Customer Relationship Management system using Siebel CRM. This book helps in understanding Siebel Web Architecture and ways to plan and prepare Siebel CRM infrastructure.

Alexander Hansal has worked as an IT professional in small, medium, and global corporations. Since 2001, Alexander works as a technical instructor and consultant for Siebel CRM and Oracle Business Intelligence in Europe. He enjoys teaching, and shares his knowledge and expertise in his classes at Oracle University and in his weblog, http://siebel-essentials.blogspot.com/

Sharing is the Power.

Wednesday, June 9, 2010

Local Database - For Multiple Users

We had to show a demo to the Client, our server got some issues and was getting restarted every now and then. We had only one environment set up at that time. We needed something if Server will not be up then how can we show demo to the client. The option was Local Database. We needed something like what we can do with the sample database where multiple users can login into the application using same database.

In our application, we were using Position and Organization based visibility for the Cases. Call Center user creates a record and assign it to an Organization and Position. Then the users who have that position has to work on that case. We needed to show the functionality where multiple users can login into the application.

How we can create multiple users login into Local Database. One of co-author of this blog and my friend Nikhil found something. On behalf of him, I am writing down steps to run some sql commands and multiple users can login into Local databases.
  1. Open the dbisqlc with User ID Siebel and password of the user with whose Id local was extracted.
  2. Then in dbisqlc, Grant permissions for users to use the Siebel application.
  3. Run SQL 'grant connect to SSE_ROLE'.
  4. Run SQL 'grant connect to identified by '.
  5. Run SQL 'grant group to SSE_ROLE'.
  6. Run SQL 'grant membership in group SSE_ROLE to '.
 NOTES:
  • The must already exist in the database and the must be SSE_ROLE.
  • The and in the grant command must be in UPPERCASE
Now you can grant multiple users the access to the Database. 

Sharing is the power.

Tuesday, June 1, 2010

Incremental Compile - Popup Visibility Auto All Issue

I have heard many times that there could be problem with the Incremental Compile Issue of the SRF.
I have also seen some times that there are some inconsistent issues because of Incremental Compile. Today , I saw it having issues with Incremental Compile and it has also been documented on Oracle Support aka metalink.

As we know that on BC level, there are two of the properties like Popup Visibility Auto All and Popup Visibility Type. 
Ideally, It should work like if Popup Visibility Auto All is TRUE and the Login User has responsibility to see All Across Organization View, then "Popup Visibility Auto All" will override the Popup Visibility Type value.

For eg. Let's say User ANWALIA(myself) has responsibility to see All Contact Across Organization View. The Contact BusComp has Popup Visibility Auto All as TRUE and Popup Visibility Type as Organization.
Now because I have All Contact Across Organization View, in any popup applet used by Siebel like Associate Applet, Pick Applet etc. I should be able to see all contacts across organizations.

Here is a catch of Incremental Compile, If any buscomp has the above kind of configurations and you lets say recompilation of the Contact Screen is done, hen Popup Visibility Auto All would not work as expected. It will work based on Popup Visibility type.

This can be avoided if you compile the whole project or do a full compile.

Sharing is the power.

Tuesday, May 18, 2010

Case sensitive and Insensitive Query

Siebel earlier used to have one Field Level Property Use Default Senstivity. This property is obsolete now.

To provide Case Insensitive Query on the Fields, Siebel 8.1 version has introduced a CIAI (Case and Accent Insensitive). Accent Insensitive does not work in Siebel 8.1.1.2 vesrion. You can use SoundsLike Operator for the Accent based query.
On the column level, right click at Column.
Siebel will run you through a wizard and create a new column and indexes to support the Case Insensitive Query.

Note: You need to lock the project to run through the wizard.

Calculate Commit Time using Business Hours

 This post is a supplement to one of my previous post Calculate Business Hours

I had one requirement where I need to calculate the Date Time, user has to finish the work.
The time taken should not include the Holidays. It should only consider Working Hours to calculate the time taken.

As I told you in my previous post that the Business Service 'FS Holiday API Service' provides 3 methods:
   1. GetElapsedBusinessTime
   2. GetResponseTime
   3. IsHoliday

GetElapsedBusinessTime: It majorly requires input as the below:
  • Service Calender Id
  • Start Time
  • End Time
As the result it provides you the time spent in between the Start and End Time excluding Holiday and including only working hours.
Note: This method has a bug in Siebel 8.1.1.2 (21215):
Defined our Schedule from Sunday to Thursday, time from 7 AM to 7 PM. The timezone is (GMT+04:00) Abu Dhabi, Muscat. It is observed that whenever there is data like:
Start Time: 4/15/2010 10:31:34
Schedule Time Zone: (GMT+04:00) Abu Dhabi, Muscat
Calender Id: <>
End Time: 4/18/2010 08:31:33
Time Unit: Hours.
And the end time is coming on Sunday. like April 18, 2010, April 25, 2010 or 2 May 2010.
It is failing and crashing the server.

GetResponseTime: It majorly requires input as the below:
  • Service Calender Id
  • Start Time
  • Response Time
As the result it provides you the Date time or Commit Time, for example time till which user has to finish the work excluding Holiday and including only working hours.

IsHoliday: 
  • Calender Id
  • Date Time
As a result, it gives if that Date Time is lying on Holiday.

Oracle does not provide any OOTB functionality in OBIEE 10.1.3.4.1 (reporting) to cater this requirement. Our OBIEE team has to write a Procedure.

Sharing is the power.

Saturday, May 1, 2010

SoundsLike Operator

Searching for exact Contacts in Call Centre with First and Last Names is not that much easier as we may think.Different people uses different spelling for their names for example John can be spelled like Joan, Jon, Joanne, Joann.

How to search a contact with similar pronouncing name. This was one of the requirement I came across. One of my friend Jalaj suggested SoundsLike Operator. Siebel provides a SoundsLike Operator which can be used to find the similar pronouncing names.
Let me show you how it works, you need to query in the Applet Field with SoundsLike('John').
In return or clicking on Go, it will give results like in below.
This Operator can also be used to BusComp Prequery event to modify the searchexpr with SoundsLike Operator.

Sharing is the power