Friday, July 21

How to Clear the Integration Data Map cache in Siebel ?

Is it needed to clear the integration Data Map cache after making changes to it?

Yes, when we inactivate an Integration field mapping on integration data map (or any changes to data map) the changes will not reflect immediately and results in error when the interface is invoked.


To solve this we have to Clear the data map cache but there is no easy way of doing it like clicking the 'Clear Cache' button that we usually do clearing LOV values cache or Application data map cache.


Oracle did not provide 'Clear Cache' button so far at Administration > Integration > Data Maps however we can Clear the integration Data Map cache invoking EAI Vanilla business service as shown below

-  Create a workflow with 3 steps 1) Start 2) Business Service 3) End


Business Service: EAI Data Transformation Engine
Method:                 Purge
Input Argument:     MapName (Data Map name)

After developing and validating the workflow, simulate the workflow from Administration Business Service screen which would Clear the Data Map cache.

Hope this is useful for someone :)


Monday, July 10

Performance Issue on Employee Skills View

Querying Employee details on Employee Skills View Causing Performance Issue:

Reason: Product bug in IP 15.6 and can be resolved with PS 13



Thursday, April 16

Siebel Integration

Hi Readers, As promised I am starting with siebel integration basics. I believe this would be helpful for developers looking for Siebel integration knowledge.please provide your feedback and enjoy reading :)

1) What are the common patterns of siebel integration ?

- Peer Application Integration
- Consumer Of Services
- Alternate user interfaces


2) Example of converting data between siebel proprietary format and Industry standard format ?

- XML Documents

3) What is the strategy in which applications exchange data using explicit business processing ?

- Data Exchange

4) what are the key parts of XML ?

- XML Documents
- XML Schema Definition (XSD)
- XML namespaces

5) What is Integration Component key ?

-   Integration Component Key is a field or set of fields that uniquely identify a record being exchanged

6) How to describe External Integration Object ?

- External Integration Object is often described by an XSD or Document Type Definition file.

7)  What is Siebel Message ?

- Integration Object instances are referred as Siebel Messages

8) Explain about 'EAI Siebel Adapter' business service 'Update' method ?

-  Is used when external application knows the record exists
- Uses the user keys in the incoming message to locate the records to be updated

9) Explain about 'EAI XML Converter' business service ?

- Converts a Siebel Message to an XML String
- Converts an XML String to a Siebel Message

10)  What are the advantages of workflow policy invocation ?

- Offers a batch mode
- Can be checked at a set interval
- Executes asynchronously

11) What is Integration Workflow ?

- Integration Workflow assembles business services into a flow to access, convert and transport data.

12) Explain about 'session mode' of  'EAI HTTP Transport' business service ?

- Session persists longer than a single request 


Tuesday, March 3

Siebel Integration - Coming soon

Hi Readres,

I am going to post all about siebel integration from April, Stay tuned :)

Thanks
 

Friday, April 13

How to change the font,size,color of the field / control caption

Hi All,Sometimes we need to change the properties of siebel applet controls and below is the solution

Solution:

For the field for which we have to change the Font / Size / Color set the following HTML tags in the caption [string override] of the field properties.

1. "label style"
2. "span style"
3. "font face" & "color"
4. <b> & </b> to bold the text
5. font onmouseover & onmouseout
6. <br/> for line break in case of long captions

Examples:

<label style="background-color:red">fieldname</label>
<span style="background-color: red">fieldname</span>
<font face="fontname" size=26 color=yellow>fieldname</font>
<font onmouseover="style.color='green'" onmouseout="style.color='red'">fieldname or controlname</font>
field<br/>name<br/>is too long

Integrating Siebel with Fax server:

Hi Readers, here is an interesting topic which will be helpful to many of you at least in future :)

The objective of this post is to describe the steps involved in integrating Siebel Application with Fax Server to send the Fax messages to the customer when a Fax Campaign is launched in Siebel.

1.   Requirement overview :  In this scenario, we need to install the following

  1. Siebel eCommunications– Used by the internal employees to launch the campaigns.
  1. Microsoft Exchange Server – Used to receive the fax message in the form of the Email to a dedicated email address of the MS Exchange. The format of the Email Address is Fax Number + Domain.
  2. Faxination Server – Faxination Server connects to email box on MS exchange server and receives the email messages. It converts email message to Fax message and sends the fax to the customer through Fax server. 
  3. Fax Server – Used for delivering the Fax messages to the targeted recipient.

Roll up - Business Component User Property

 
The main functionality of the RollUp user property is to reflect the sum of the value under one control for a form applet against the values entered for a particular list column on the list applet. The value can be either integer or a decimal point number upto any decimal places. This property holds good for any of the Business Component Classes.

Thursday, August 11

How to debug browser script in Siebel ?

Generally we will debug browser script using alert() method,but recently I came to know that an interesting feature in IE8 - which is very useful in debugging browser script,I thought many of developers not aware of this useful feature from IE so writing this as a post.

 We can debug a browser script using IE8 (Internet Explorer 8) developer tool instead of alert() method,The Developer tool is available as free plug-in for IE and Firefox of other versions and its a in-built  feature for IE8

Follow the below steps to happily debug your browser script.

1) Compile your script and run genbscript utility for your script,if you are not aware of running genbscript see below example.  

Ex:  Go to commandpromopt and run below command by changing parameters as per your environment.

C:\Siebel\8.1\Client_1\BIN\genbscript.exe C:\Siebel\8.1\Client_1\BIN\esn\scommwireless_ESN.cfg C:\Siebel\8.1\Client_1\public\esn


2) Login to your local or dedicated client.

3) Navigate to the view where your browser script is written.

4) Select Tools --- > Developer Tools on your IE 8 explorer. (or press F12),Developer Tool window will open

Monday, July 11

Siebel Sequential Merge and Standard Merge

Sequential Merge and Standard Merge

Siebel provides options for matching and merging the duplicate records to maintain high quality data in the application. Matching (also called as DeDuplication) can be done using Data Quality functionality provided out of the box. After the potential duplicate records are identified using Data Quality functionality, they can be merged using Sequential Merge.
There can be instances where duplicates can be identified manually and required to be merged. This can be done using Standard Merge.

Take a note of following points:

·    Sequential Merge can be done only from Administration – Data Quality Screen where as Standard Merge can be performed against standard entities like Account/Contact from their respective screens.
·    Sequential Merge merges fields at the Parent level wherein Standard Merge Parent level fields are not merged. e.g. if Contact mobile number is populated on Losing record and not populated on Winning record, it will not be carried to the Winning record in Standard Merge.
·    Only exposed and force active fields are merged in Sequential Merge
·    If hidden fields are to be merged, set list column user property as ForceActive Y
·    In Sequential Merge, record with lowest sequence number is Winning record whereas last selected record is the Winning record in Standard Merge
·    If there are any business validations before Merge, those can be put on PreInvokeMethod of the applet
·    If there is any processing after Merge, it can be put on InvokeMethod of the applet
·    It is recommended to skip all code on respective entities in all events while Merge is happening. This can be achieved through setting profile attribute on PreInvokeMethod and resetting it in error handling and InvokeMethod

Siebel Loyalty : Changing Transaction Status

Loyalty : Changing Transaction Status

If the transactions are created in the batch mode by the Loyalty engine, the status of the transactions will be in "Queued" status. When you click on the process button manually, this will not be processed. This OOTB behavior can be modified by changing the user property OrderToTxn:Transaction Status as below.

Business Service Name: LOY Customer Action Business Service

Business Service User Property:
   
    Old Value: LOY_TXN_STATUS_CD|Queued
   
    New Value: LOY_TXN_STATUS_CD|Acceptable

Use:
This allows us to manually process the Loyalty Transactions which are created by the batch mode.

Tuesday, June 28

Problem: Applying Siebel tables erroring out on DB2 Database


Problem: Applying Siebel Tables failing erroring out on a DB2 Database

Analysis:

We had created more than 200 new custom columns in  S_EVT_ACT table and were trying to apply schema changes to Database. However every time we tried to apply the schema changes it failed with below error.


54010 (-670): [IBM][CLI Driver][DB2/NT] SQL0670N The row length of the table exceeded a limit of "16293" bytes. (Table space "SIEBEL_16K".) SQLSTATE=54010

On Investigation it was found that the table concerned was a part of Table space SIEBEL_16K. There is a restriction on DB2 wherein while introducing new columns DB2 checks if the total length of all the columns added together doesn't exceed the maximum row length limit defined by the tablespace. In our case the total length was exceeding this limit of 16293 for SIEBEL_16K tablespace and hence it was erroring out.

Once the length of various new columns was reduced to a value such that existing as well as the new columns added upto a figure less than  16293, the new columns were created successfully on the DB.

The other possible option also would be to move the table to a larger tablespace, wherein the current table needs to be renamed and a new table with same name needs to be created on a larger tablespace alongwith indexes.

Hope this helps for some one

Monday, June 27

How to create multiple users on siebel local database

To create multiple Users on a local database:

Login to dbisqlc, which is located in the <Siebel Client>\bin directory.
This will bring up a query screen. Type a SQL statement and then click on the EXECUTE button. 

Grant permissions for users to use the Siebel application:

 grant connect to SSE_ROLE

grant connect to <USER_ID> identified by <PASSWORD>

grant group to SSE_ROLE

grant membership in group SSE_ROLE to <USER_ID>


NOTES:


<USER_ID> should be same as Login Id in S_USER table. 
<group name> must be SSE_ROLE.
The <USER_ID> and <PASSWORD> in the grant command must be in UPPERCASE.

Limitations:


The data in the local database is restricted to the user for which it was extracted.
The local database cannot be synchronized against the server as the local database is accessed using different logins.
If data is subsequently changed on the server, it will be necessary to do another database extract and local database initialization with re-executing the steps to create multiple users.
If the newly created users receive a message that they do not have rights to access Home-Page view, reconnect to the Local Database using the original extracted user and recreate them in the User Administration screen. This is necessary because some records might be missing related to these users in the intersection tables and recreating the users would populate them. 

Friday, June 24

How to Delete selected records in a List applet ?

In List applet,as per vanilla it is not possible to delete the selected records at a time.To achieve this add the below code in applet level then it will allow to delete the selected records.

var oBusComp = this.BusComp();

     with(oBusComp)
       {
            var iRecord = FirstSelected();    
                
                while (iRecord)
                        {
                             this.InvokeMethod("DeleteRecord");
                              iRecord = NextSelected();
                    }
    }

Wednesday, June 22

Drilldown: Setting focus on parent applet

How to set focus on Applets:

As per Siebel vanilla if we click on any hyper link (Drill down) field then it will navigates to another view but after navigates to that view the focus always on child applets instead of “Parent Applet”.

Set the following properties :

Tools Level Changes:

1)    View Level we have “Default Applet Focus” property. Set “Applet name” for this property.

2)    View User Property (Child object of View):
Name :DefaultAppletFocus
Value : “Applet Name” 

After setting above properties also if focus still remains on child applet then we have to verify the following parameters.

Verify cfg file Parameter

3)    In cfg file we have “EnableSIFocusTracking” property; this property should have value as “TRUE”.

Application Side Changes:
 
4)    Application – Server Configuration – Enterprises:
  
·    Query with your “Enterprise Server” name and Query with “ObjMgrName” in “Component Definitions”
·    We have “Component Parameters” under “Component Definitions”, Query with “Enable SIFocusTracking” parameter.
·    Set “Enable SIFocusTracking” parameter to “True”.

Monday, June 20

How to retrieve the List of Profile Attributes available in a Session ?

Sometimes we have a requirement of retrieving the value of Profile Attributes set in a Siebel User's session. However we are not sure of the exact name of that Attribute. To retrieve a list of available Profile Attribute in a user's session, follow the below process:

Navigate to Administration - Personalization - Test. Enter your login and password (both Case Sensitive) and click on the load button. This will give you a list of all system profile attributes that get set upon logging in to the Siebel Application. These profile attributes are available throughout the application. In addition, you can also set your own profile attributes, depending on the business requirements.
As always, use the following syntax to get and set a Profile Attribute:

Setting:
TheApplication().SetProfileAttr("XXXX","Y");  // Where XXXX is the name of Profile Attribute

Getting:
var attr = TheApplication().GetProfileAttr("XXXX");  // Where XXXX is the name of Profile Attribute

Friday, June 17

Getting Task status using scripting

Requirement: Retrieving Task running status using BUSCOMP script

There are requirements where it is required to check in BusComp script if the Task is in running status and put the logic depending on the task running status

Solution:

Write a function on the BC as follows which will return a value to indicate if the task is running:

function GetTaskUIStatus()
{
    try
    {
        var bsTaskUI:Service= TheApplication().GetService("Task UI Service (SWE)");
        var psInput:PropertySet     = TheApplication().NewPropertySet();
        var psOutput:PropertySet = TheApplication().NewPropertySet();   
        var iReturlValue:float = 1;

        bsTaskUI.InvokeMethod("IsNotInTask", psInput, psOutput);   
        iReturlValue =  ToInteger(psOutput.GetProperty("IsNotInTask"));
    }
    catch (e)
    {
    //error handling logic
    }
    finally
    {
    // Destroy variables
    }
    return iReturlValue;   
}

Call this function where ever you want to check if Task is running as given in example below:



function BusComp_PreWriteRecord ()
{
    try   
    {
        if (GetTaskUIStatus() != 0 )
        {
        //Specific actions to be performed if Task UI is not running
        }
    }
    catch(e)
    {
    //error handling block
      }
      finally
      {
    //destroy variables
      }
     return ContinueOperation;
}
If the Task is running value returned is 0 and otherwise it is 1.

Invoking Task from button when no records in the applet

We may get a requirement to invoke TBUI from button click. However, if there are no records on the applet and you click button, error message is shown as below

“An error has occurred while initializing task '<Task Name>'.(SBL-BPR-00535)
A context business component record is required for task 'SWC Create Customer Account'(SBL-BPR-00542)”


there is a SR in metalink but its clueless to resolve this error

You can do following to get this working.

1.    Create one dummy record and store it’s row Id at Application Level.
       E.g. in System Preference or LOV.
       This will have to be done and deployed on all environments as part of migration activities.

2.    Invoke custom method on button click
3.    In that method, Retrieve record using the row id stored in system preference or LOV.
4.    Invoke Task using method LaunchTaskFromScript of the business service Task UI Service (SWE)

Hope this helps :)

Audit trail functionality limitation with Assignment manager

As per Siebel bookshelf,Audit Trail functionality have one constraint that "The record updates that are performed through Assignment manager cannot be audited".

You can achieve this with some scripting and the example is given below

Example: In case of Service Request assignment, where it is interactive assignment.

>> On Interactive Assignment Pick Applet (Assignment Results (Employee) List Applet), we can have a code on PreInvokeMethod of Assign method as below which will hold Old and New values of Owner:

function WebApplet_PreInvokeMethod (MethodName)
{
    try
     {
        if(MethodName=="Assign")//if Assign is clicked
        {
        TheApplication().SetProfileAttr("SROldOwner", TheApplication().ActiveBusObject().GetBusComp("Service Request").GetFieldValue("Owner"));
        TheApplication().SetProfileAttr("SRNewOwner", this.BusComp().GetFieldValue("Login"));       
          }
         
    }//end of try
    catch(e)
    {
    //Error Handling Code
    }//end of catch
    finally
    {
    //Destroy Variables
    }//end of finally
    return (ContinueOperation);
}

On InvokeMethod of Assign Method, we can have following code which will create Audit Trail record after assignment is done:

boSR = TheApplication().GetBusObject("Service Request");
bcAudit = boSR.GetBusComp("Audit Trail Item - Data");

Friday, June 3

Siebel High Interactivity Framework – Problem

Siebel High Interactivity Framework – Simple Solution:
Sometimes we get the below error message when we login to Siebel for the first time where the Siebel High
Interactivity Framework will not be available and Siebel will take us to Login Page again after hitting the OK
button on the error message.

Your version of the Siebel High Interactivity Framework for IE, required for use of this Siebel application,
may not be current. In order to download a current version of the Siebel High Interactivity Framework,
please ensure that your browser security settings are correct and then log in to the application again. Consult
your system administrator for details about the Siebel High Interactivity Framework and correct browser
settings


There is a simple solution in order to overcome this issue:

Friday, May 27

SQL query for unlocking BC in local database

There are times where siebel BC will be locked in the local database and you are not able to work on it,the reason for this is you have done a get of that object when the object is checkedout by some other user.

So now your requirement is to unlock the object,for this open your dbisqlc connecting to local database and run the below query

Ex:I am unlocking 'Account' BC in my local DB

QUERY: UPDATE SIEBEL.S_BUSCOMP SET OBJ_LOCKED_FLG='N' WHERE NAME = 'Account'
QUERY: COMMIT

Note: Don't forget to commit changes after you run the sql quey

Hope this helps someone
Blogger Widgets