Monday, November 26, 2012

How to Balance workload for Employee and Positions

In a high volume transactions processing, we need to balance the workload between our employees.
Siebel Assignment Manager assign an owner / position to a business component and also balances the workload by defining the workload distribution rule.

Workload Distribution Rule is a criteria to define scoring for employee / position to determine how much of workload are present at their bucket during assignment process.

the scoring formula are as follows:
Workload Score = Score * (1 - (Current Workload / Maximum Workload)

Example:
Company ABC has 10 Service Request that need to be assigned to three employees which are Andy, Barney and Charlie. Currently All of them have zero service request at their bucket.

A simple Workload Distribution Rule is configured:
Workload Distribution Rule : Processing Service Request
Assignment Object : Service Request
Score : 100
Required : Always
Maximum : 10

Workload Rules are configured as follows:
Name : Processing Service Request
Assignment Object : Service Request
Conditional Field : Status
Comparison Operator : =
Value = Open / In Progress

 Illustration:
If Andy has 2 Service Request on their bucket, then the score will be
Workload Score = 100 * (1- (2/10) = 80

Find below are a simple simulations
-->
Service Request Number Total Service Request Assigned
Andy Barney Charlie Score A Score B Score C Result
0 0 0 100 100 100 Andy
Service Request 1 1 0 0 90 100 100 Barney
Service Request 2 1 1 0 90 90 100 Charlie
Service Request 3 1 1 1 90 90 90 Andy
Service Request 4 2 1 1 80 90 90 Barney
Service Request 5 2 2 1 80 80 90 Charlie
Service Request 6 2 2 2 80 80 80 Andy
Service Request 7 3 2 2 70 80 80 Barney
Service Request 8 3 3 2 70 70 80 Charlie
Service Request 9 3 3 3 70 70 70 Andy
Service Request 10 4 3 3 60 70 70 Barney


Wednesday, November 7, 2012

Enable Assignment Manager on eMail Workflow

Assignment manager has been one of the most important configuration when doing Channel Specific CRM.
In case whereby CRM had Accounts, Trouble Ticket, Service Request and Activities to be assigned. Especially in Telco industries, the transactions per day can easily exceeds more than 15K.

An automation of assigning an owner to a specific business entities should be covered in a CRM systems.

within Oracle Siebel CRM and Oracle CRM On Demand, there are Assignment Manager modules that can be quite easy to learn but somehow painful due to information being scattered in many documents.

this is my personal experience whenever config an assignment manager with email inbound activity
1. Create an Assignment Rule
There are a vanilla assignment rule existing in the sample. However you might need to revise to meet your business needs. it is common that you want to assign the email activity to a specific agent which has a certain set of skills. Compare Object to Person allows you to compare the object attributes with your internal employee skills. Assignment manager will also do the scoring to score each employees to determine which employee is suitable.


2. Create a Communication Profile for INTERNET SMTP/POP3 Server
Before creating communication profile in Siebel, it is mandatory to have POP3 and SMTP Server setup and a valid pop3 username and password. In order to communicate with the email server, siebel need to input this parameter in the profile (shown below).



3. Create a Response Group associated to the Communication Profile / Add Input Argument.
An email inbound is processed with a workflow triggered by Response Groups. Below you can see the input argument required to run the workflow "eMail Response - Process Message".
if you wanted to enable the message route /assignment manager. remember to set "Enable Assignment Manager" Input Arguments to TRUE.



Next I'll share more about Assignment Manager with Service Request

stay tune.

Sales Force Automation (SFA) Magic Quadrant 2012



Sales Force Automation has been an important module inside CRM. SFA enables Sales Team for automation of sales pipeline. Core functionality includes:
1. Account, Contact and Opportunity Management
2. Quote and Contract Management
3. Proposal generation
3. Sales Tracking and Monitoring
4. Sales Quota
5. incentive compensation
6. Territory Management

Oracle Siebel CRM remains strong in Leader Quadrant. with Pre build Integration with other Oracle Products such as Oracle OSM and Oracle BI.

Using Oracle Siebel CRM are very flexible and proven to accommodate SFA functionality.

Friday, October 5, 2012

Guide for EIM Tuning

EIM batch loading always facing with performance problem and always need a tuning process in order to make it work! 
I would like to share some guidelines to tune EIM

  •  Turn off Transaction Logging will improve the performance.  Please try to check with the mobile client users to make sure that they are not impacted during the EIM Run.
  • Limit amount of record per batch number. Usually I use 1000 records per batch for optimum performances.
  • Use Batch Ranges to limit certain amount of batch to be run. Only 1000 Batches can be run per 1 EIM Task.
  • Perform scheduled Index rebuild and Reorganization of Siebel Base and EIM Tables to maintain good performance.  Frequent Insert and Delete operations on Tables can cause fragmentation.Consult your DBA based on the DB Platform that you used.
  • Do not leave old batches in EIM Table after running. Purge old batches on scheduled basis.
  • EIM jobs can be run in parallel, must consider DB Server capabilities in terms of Hardware Spec and Database Features.
  • Set “USING SYNONYMS” parameter in IFB File to FALSE
  • Limit Table and Columns by using “ONLY BASE TABLES/COLUMNS” or “IGNORE BASE TABLES/COLUMNS”  in IFB File in order to minimize the processing time during EIM Run.
  • You can drop indexes that are not being used during EIM Run and rebuild after the EIM Process has finished. This will shorten the time compared to each time the EIM run, the process need to update the indexes.
  • Avoid using Custom Primary MVG Field in Siebel Configurations that might needed for EIM Batch Upload, as it may cause an Implicit Update Primary which can really slow down the performance. 
  • Set “UPDATE STATISTICS” parameter in IFB File to FALSE. The Index statistics can be rebuild in bulk manner afterwards which has proven to be faster.
  • Disable Archive Logging during initial data load. Can enable again after load.

I often use this steps in order to troubleshoot any performance problem:
  1. Try to find out the long running SQL by analyzing the time taken to execute it. There are several ways to do it such as to rerun the EIM process using parameter Trace Flag =1 and SQL Trace Flag = 8. The EIM Log sizes will be larger than usual. There you can see the SQL generated. While the other is using SQLPROFILE parameter in IFB File.
  2. Monitor the DB Server to find out that there might be other activities which consuming the server resources. things i always check is the utilization level, lock dependency, rollback segment and tablespace sizes.
  3. Try to Rebuild Index, Statistics or maybe reorganization if needed.
Finally, hope this might give you an insight to solve the issue.


Guide to Create a Unique Sequence Number in Siebel

How to configure unique running sequence number

Many times in a Business Applications , there is a need to have a running sequence number to represent and keep track of a single and multiple business entities.

In order to achieve this functionality in Siebel CRM Applications, there are two alternatives that can be implemented which are:
1. Use Oracle Database Sequence Object
Firstly, the Database Administrator must create the object. Below are the syntax:

CREATE <SEQUENCE OBJECT NAME> INCREMENT BY <INCREMENT VALUE> START WITH <START RANGE> MIN VALUE <MIN VALUE> MAX VALUE <MAX VALUE> CYCLE ORDER

For Example:
CREATE SEQUENCE customers_seq
 START WITH     1000
 INCREMENT BY   1
 CYCLE ORDER;

The first reference to customers_seq.nextval returns 1000. The second returns 1001. Each subsequent reference will return a value 1 greater than the previous reference.
for more details of Oracle DB Sequence Objects can be found in
http://docs.oracle.com/cd/B13789_01/server.101/b10759/statements_6014.htm

you also need to grant the permission to SSE_ROLE in order for the object to function properly.

Later in Siebel Tools, you need to configure the field properties with name "Oracle Sequence Object" under Business Component > Fields. You put in the specified Oracle DB Sequence Object name that has been configured earlier.

compile and run. you will see the field is going to be populated with running sequence number when a new record is being created.

2. Use a Custom Controlled Table to handle the sequences

You can also create a control table to handle the sequences. Script can be written to handle the uniqueness and session control mechanism to perform as per expected.

In comparison of the two option, using a predefined sequence object is more preferable and has minimum risk.