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:

Blogger Widgets