Wednesday, September 28, 2016

Siebel: Product Administration - EligibilityDisplayMode

Eligibility is checked before the Product or Promotion is displayed in a catalog or Product Pick Applet.
Eligibility information is displayed when we try to add a product in a Quote, Order or an Agreement. The visibility of the product and the information displayed can be controlled by setting the Eligibility Display Mode parameter value. This value controls the Eligibility and Compatibility procedure as below:

  • If set to 0, the procedure is not run.
  • If set to 1, the procedure runs and ineligible products are displayed in red text in configurator.
  • If set to 2, the procedure is run and ineligible products are not displayed.






The Eligibility and Compatibility procedure looks for the display mode value in the following locations and in the following order:
  1. Display Mode workflow process property
    • Workflow Name: Product Eligibility & Compatibility - Default
    • Property Name: Display Mode
  2. The EligibilityDisplayMode property on the applet
    • Applet Name : Product Pick Applet (Eligibility)
    • Applet User Property : EligibilityDisplayMode
  3. The Eligibility Display Mode server parameter
    • Set the parameter "EligibilityDisplayMode" accordingly to either 0 or 1 or 2 for the Application Object manager component or the Server.
    • To define how eligibility output displays on the mobile or dedicated client, edit the CFG file for the application.
      • In the [PSPEngine] section, set the value of the parameter EligibilityDisplayMode to one of the following values:
        • EligibilityDisplayMode=0. All Products appear in product selection applets.
        • EligibilityDisplayMode=1. Default value. Ineligible products appear in the product selection applets with the eligibility status of N and with comments explaining why they are ineligible.
        • EligibilityDisplayMode=2. Only eligible products appear in the product selection applets, so the user cannot see and pick ineligible products.
  4. The Eligibility Display Mode default value (1 – show all products with messages)

Siebel: Diccache.dat and Dicdata.dat

Diccache.dat file is used by the Siebel server to increase the performance when loading the Siebel Repository. It contains a subset of the Siebel Repository which is called as the Dictionary which has information about tables, columns, indexes and docking Objects. Diccache.dat is located in SIEBSRVR_HOME\bin directory. This is accessed whenever a server program is started. The file gets created automatically if it does not exist.






Dicdata.dat file is a subset of diccache.dat file that is downloaded to mobile clients and used by the synchronization process whenever transactions are applied to the local database. The Generate New Database component creates this subset of the diccache.dat and copies it to siebel_server_root\DBTEMPL\<Schema Version>\dicdata.dat. When a mobile client synchronizes, the dicdata.dat is copied to the siebel_client_root\LOCAL\dicdata.dat on the client machine.

Monday, June 20, 2016

Siebel: Purge Workflow Instance Monitor Data

The first step to debug a workflow process in the runtime environment is by increasing the "Monitoring Level" of the workflow process in Administration Business Process > Workflow Deployment > Active Workflow processes view.
When Siebel CRM creates a workflow process instance, it reads the monitoring level from the workflow process. This level remains constant throughout the lifetime of the instance unless Siebel CRM pauses it. If Siebel CRM pauses an instance, then it rereads the monitor level from the workflow process when it resumes this instance.

The "Monitoring Level" has 5 values:

0 - None
1 - Status
2 - Progress
3 - Detail
4 - Debug

Depending on what value is selected for a workflow process, the amount of data collected varies as described below:




Once, the workflow process is executed, we can view the results in the Administration Business Process > Workflow Instance Monitor view.
All the data related to the Workflow Process Instance, Workflow Step Instance and Workflow Process Properties Instance are recorded in their respective tables which are:

Workflow Process Instance Monitor  =  S_WFA_INST_LOG
Workflow Step Instance Monitor  =  S_WFA_INSTP_LOG
Workflow Process Properties Instance Monitor  =  S_WFA_STPRP_LOG

If there is no need to monitor the process at all, set the value "0 - None" which prevents any data to be written into these tables.
If the workflow processes that the monitoring is set on are frequently executed, the amount of data written can be excessively large. Therefore, it is possible that the size of the above tables may increase to several gigabytes of data.
If monitoring level is enabled, regularly use the "Purge" button located in Site Map > Administration - Business Process > Workflow Instance Monitor >   Process Instances applet, to keep only the relevant data in these tables.

If due to incorrect settings of the "Monitoring Level" leads to the tables reaching very critical stage and also could lead to the database failure. In that case, purging may not help to recover and the 3 tables have to be entirely cleared directly connecting to the database.





Wednesday, June 15, 2016

Siebel: "PRM ANI Utility Service" Business Service

"PRM ANI Utility Service" Business service is widely used by EAI developers in creating empty SiebelMessage using the "CreateEmptyPropSet" method, Set a Property value in the SiebelMessage using the "SetProperty" method and to get a value of  a property from the SiebelMessage using the "GetProperty" method. For information on the "Query Business Component" Method, click here.

Let us discuss in detail with an example using the vanilla Integration Object -- "Account_EMR"

"Account_EMR" Integration object has 4 Integration components--
Parent Integration component -- "Account" and 3 child Integration components -- "Related Contact", "Related Opportunity" and "Related Service Request"






CreateEmptyPropSet

Navigate to Administration - Business service>Simulator view and then simulate the "PRM ANI Utility Service" Business service -- "CreateEmptyPropSet" method.

Input Arguments:

Property Name = Hierarchy Name
Property Value = Account_EMR


The output xml will look like below:


This is an empty SiebelMessage.




SetProperty

We can now use the "SetProperty" method of the "PRM ANI Utility Service" Business Service to set values.
Move the SiebelMessage from the Output Arguments applet to Input Arguments applet by clicking the "Move to Input" button.

Business Service Name = PRM ANI Utility Service
Method = SetProperty

Input Arguments:
"Hierarchy Path:" Input argument takes the values of = "<Parent IC>.<Child IC>.<Grandchild IC>"
Hierarchy Path: = Account
Property Name = Alias
Property Value = Test Alias


The Output xml will look like below:



If we want to set a Property value in the child IC, then:

Hierarchy Path: = Account.Related Contact
Property Name = First Name
Property Value = Test Contact
The resulting xml will look like below:





GetProperty
We can use the "GetProperty" to get a value of a property in the SiebelMessage same like the "SetProperty" method.

Move the xml from the output arguments applet from the previous step to input arguments applet by clicking the "Move to Input" button.

Business Service Name = PRM ANI Utility Service
Method = GetProperty

Input arguments:
Hierarchy Path: = Account.Related Contact
Property Name = First Name

the resulting output arguments will look like below:

Limitations:


  1. "GetProperty" will throw error message ("Error Running Method 'Execute'.(SBL-PRM-00104)") when you are trying to get a value from the child IC and if there are more than 1 instances of records in the input SiebelMessage.
    1. The error message can be suppressed by using an additional input argument:                      ReturnBlankIfNull = Y
  2. "HierarchyPath:" can be of max 255 chars
  3. You can get the value of only 1 property at a time. We can get values of multiple properties at a time using the "Workflow Utilities" Business service which will be discussed later. 

Thursday, June 9, 2016

Siebel: Create and Release Products through EAI

Siebel has provided some vanilla business services which can be used to either create or update existing products in Siebel.

  1. There is a "product Import" web service which can be readily used.This is based on the Business service "SWI Product Import".We can create a simple or complex product with this Business service.
  2. To create a simple product, we can use the business service "Siebel Simple Product".
  3. You can also use the Integration Object "Internal Simple Product Interface" with the "EAI Siebel Adapter" business service to insert products.
Apart from these 3 vanilla options, I have found creating a custom Integration Object to be very easy to create simple products in Siebel.

Steps to:
  1. create an Integration Object on the Business Object -- "Admin ISS Product Definition" and select the parent Integration Component on Business component-- "Internal Product - ISS Admin". (This is the same BO and BC on which the Administration - Product Screen>Product Definitions view is based on).
  2. "Name" is the only required field to be populated and is the one available in the Integration Component Key also.
  3. Use the "EAI Siebel Adapter" Business service -- "Insert" method to insert the record.
  4. This will create the Product record in the S_PROD_INT table and also the related version records in S_VOD and S_VOD_VER. (Without records in the version Table, we cannot use the product (or) lock (or) release it.)
  5. To "Release" the product, we can use the "ISS Authoring Import Export Service" Business service and "ReleaseSingleObject" method.




Below is an Example workflow, which takes input as the <ProductName> and then creates and releases a simple product:

  1. Create an Integration Object based on Business Object -- "Admin ISS Product Definition" and select the parent Integration Component on Business component-- "Internal Product - ISS Admin".
  2. Inactivate the Integration Component Keys, except for the one which just has the "Name" Integration Component Key Field.
  3. Inactivate the Integration Component User Properties -- "NoDelete", "NoInsert" and "NoUpdate"
  4. Add a new Integration Object user Property "AdminMode" & value = "Y" and compile.
  5. Create a Workflow Process with 2 process properties. 
    1. vName -- to pass the Product name as input
    2. vSiebelMessage -- based on the Integration Object to create the hierarchy.
  6. Add 4 Business Service steps.
  7. Step 1 is to create empty hierarchy based on the Integration Object.
    1. Business Service: "PRM ANI Utility" and Method:"Create Empty Hierarchy"
    2. Inputs:
      1.  Hierarchy Name =  <Name of Integration Object>
    3. Outputs: save the SiebelMessage in the process property
  8. Step 2 is to set Property and populate the Product name.
    1. Business Service: "PRM ANI Utility" and Method:"Set Property"
    2. Inputs:
      1. Hierarchy Path: --- IO.IC path
      2. Property Name -- <Name of the field to set>
      3. Property Value --- <Value of the property to be set>
      4. SiebelMessage -- <input the siebel message where the changes are to be made>
    3. Outputs: Save the modified SiebelMessage into a process property
  9. Step 3 is to insert the Product record.
    1. Business Service: "EAI Siebel Adapter" and Method: "Insert"
    2. Inputs: Pass the Siebel message as input
    3. Outputs: Capture the ROW_ID of the created record.
  10. Step 4 is to release the Product.
    1. Business Service: "ISS Authoring Import Export Service" and Method: "ReleaseSingleObject". This method will not be visible in the dropdown and has to be typed in literally.
    2. Inputs:
      1. RootObjectType --- ISS_PROD_DEF
      2. RootObjectId --- <ROW_ID of the product to be released>



Friday, May 20, 2016

Siebel Error: SBL-SVR-00005: Stale or invalid Task handle

This error is recorded when the Siebel server is unable to start up.
Below could be the cause for the failure:

  1. When a Siebel server starts, it will create a shared memory file in the "admin" folder in the Siebel server root directory.The naming convention is [<$EnterpriseName>.<$ServerName>.shm]. It is built upon server startup, and destroyed upon shutdown. If this file cannot be created successfully upon server startup the above error message can be reported. The file cannot be created if:
    1. The file is not deleted successfully because of not shutting down the siebel server properly.
    2. Less disk space available to create the file during start up.
    3. Lack of permissions for the Siebel service owner account on the directory to create the file.
  2. Corrupt siebns.dat file.






Troubleshooting Steps:
  1. Ensure the Siebel server is properly shut down and only before the gateway server is brought down.Follow the specific order to shutdown: Database server,Web Server, Siebel server and Gateway server. Follow the specific order to start: Database Server, Gateway server, Siebel server and Web Server.
  2. Check if the *.shm file is deleted once the Siebel server is shut down and is successfully created when starting up. If the *.shm file is still available after the Siebel server shutdown, then make a copy of it and delete the file. Then try starting the server.
  3. The Siebel service owner account has enough privileges.
  4. Use a good backup of the siebns.dat file to start the Siebel server.

Siebel Error: SBL-SSM-00006: error sending message

This error is recorded in the web server logs when there is a communication failure between the SWSE and the Siebel server.

Below are some of the causes for the communication failure between the SWSE and the Siebel server:

  1. SWSE has incorrect information on how to connect to the Object Manager on the Siebel server.
  2. The Object manager on the siebel server is not running or cannot create a new task.
  3. Possible incorrect settings for parameters in the [ServerDataSrc] section of the application cfg file residing on the application server or from the Named Subsystem specified by the parameter 'OM – Data Source' ('ServerDataSrc' by default). look at the Connect String which will be stored in the DSConnectString parameter of the Named Subsystem. The Application Name will be stored in the parameter 'Application Name' of the Server Component and the Repository Filename in the parameter 'Application Repository File' of the Server Component.
  4. Incorrect configuration in the third party load balancer if any.
  5. If LDAP/ADSI authentication is used, then the credentials could be wrong.






Troubleshooting Steps:
  1. Check if the Connect String details are correct in the eapps.cfg file in SWSE. check for the information like - host names, enterprise server name, ports, VIP/IP addresses etc in eapps.cfg file.
  2. Check if the Object manager is up and running in the specific Siebel server. also check for the parameters MaxTasks, MinMTServers and MaxMTServers. for more information on how to set these parameters, click here
  3. Verify the application cfg files have correct information in them (specifically the following sections [ServerDataSrc], [GatewayDataSrc].) Or check the information in the ServerDataSrc and GatewayDataSrc Named Subsystems.
  4. Try to connect to the specific component in the specific Siebel server directly without external authentication and load balancing.
  5. Then add each element and try to narrow down the issue.

Siebel Error: SBL-SSM-00004: SISNAPI Hello failed. The server component could be down.

This error message suggests there is a failure communicating the siebel server component.
The request to connect to the said component can be either from a user request (or) another component (or) external application.

The reasons for this error could be any of the below:

  1. The Siebel server is down.
  2. The component is not enable, running (or) available on this server.
  3. If the server and the component are both running, then the connection information to connect to the component might be incorrect.
  4. Network connectivity issues.






If none of these help, then look for any accompanying error messages in the logs which could lead to the failure.

Troubleshooting steps:
  1. Verify the Siebel server and the component are enabled and Running.
  2. Verify the connectivity information (ConnectString) to this component in the eapps.cfg file.
  3. Verify if all Siebel SWSE, Gateway server, Siebel servers and the database can communicate.

Siebel Error: SBL-SMI-00204: Internal: The maximum number of Work Queue threads (%1) cannot exceed the maximum number of concurrent tasks (%2)

This error is recorded by Siebel server components that utilize worker queue threads to carry out its work such as Parallel Database Extract server component.
This error occurs when the component is configured in such a manner that the number of worker queue threads is more than the maximum number of concurrent tasks the above message is reported.






Check the settings for the following parameters for the above component:
  • Maximum Number of WorkQ Threads (MaxWorkQThreads)
  • Maximum Tasks (MaxTasks)
  • Maximum MT Servers (MaxMTServers)
The value for the parameter "MaxWorkQThreads" is not greater than the maximum number of concurrent tasks.
The maximum number of concurrent tasks = (MaxTasks / MaxMTServers)

Note: In the case of Parallel Database Extract, users would need to add one additional task to the result obtained above since it has one ancillary task of its own.


Siebel Error: SBL-SMI-00126: The session timed out

This error is recorded in either the Siebel server component log or in the SWSE logs, when a session is terminated (or) closed due to time out.

The different types of time out settings are specified in the eapps.cfg file.






These parameters can be found in the "[defaults]" section of this file and the unit of measure is in seconds and below is the default values:

  • AnonSessionTimeout = 900
  • GuestSessionTimeout = 300
  • SessionTimeout = 900
If the error persists for a user trying to initiate a new session, then it could be due to some stale cookies/temporary objects still on his machine.
In such cases, clear the Temporary internet files, cookies, temporary objects and then initiate a new browser session.


Siebel Error: SBL-SMI-00116: The minimum number of multithreaded server processes (%1) cannot be larger than the maximum number of multithreaded server processes (%2)

This error is recorded in the Siebel server component log file when you try to start the component which has incorrect values for the parameters MaxMTServers and MinMTServers where MinMTServers is set to a value greater than MaxMTServers.






Verify and correct the values for the below component parameters:


  • MinMTServers 
  • MaxMTServers
Ensure the values are MaxMTServers >= MinMTServers 
Restart the Siebel server services for the changes to take affect.

Click here for more information the parameters - MaxMTServers and MinMTServers.

Siebel Error: SBL-SMI-00107: Internal: The context for the given task was not found

The error message "SBL-SMI-00107: Internal: The context for the given task was not found" appears when a session is closed (or) terminated due to time out.

When a user logs in the Siebel thin client, a cookie is assigned to the session, which is used to keep track of the session while the user is actively working. When the session ends due to time out and if the user still tries to work on the Siebel application, they will experience this error as the context is lost due to time out.
The error merely indicates that the application is timed out due to inactivity.







The different types of time out settings are specified in the eapps.cfg file.
These parameters can be found in the "[defaults]" section of this file and the unit of measure is in seconds and below is the default values:

  • AnonSessionTimeout = 900
  • GuestSessionTimeout = 300
  • SessionTimeout = 900



Siebel Error: SBL-SMI-00101: The server is busy, please try again later.

This error is recorded in the Siebel Application Object manager component logs.

This error appears when the Object manager is unable to create any new tasks or has maxed out.






We need to recheck and modify the below parameters:
  1. MinMTServers
  2. MaxMTServers
  3. MaxTasks
Click here for more information on how to modify these 3 parameters and how they work.

Siebel Error: SBL-SMI-00062: Internal: No more process (multi-threaded server) slots available

This error is reported in the specific Siebel server component logs, indicating the component is maxed out.
It means, the component is running at full capacity and can no more create a new task in a multi threaded process to cater any new requests.






We need to recheck and modify the below parameters:
  1. MinMTServers
  2. MaxMTServers
  3. MaxTasks
Click here for more information on how to modify these 3 parameters and how they work.

Siebel Error: SBL-NET-01023: Peer disconnected

This error is reported when there is a problem with the network connectivity between the Siebel Web Server - Siebel gateway Server (or) Siebel Web Server - Siebel Server (or) Siebel Server - Database.

There could be many reasons causing this error message, which might not be restricted to just below:


  1. Hostname to IP address resolution.
  2. Network issues.
  3. Some services are not running on Web Server.






We need to involve the network team to resolve this error depending on where we found this error.
  • If the error appeared in the Siebel server logs, then the issue is with the connectivity between Siebel Server - Database.
  • If the error appeared in the Web server logs, then the issue is with connectivity between Siebel Web Server - Siebel gateway Server (or) Siebel Web Server - Siebel Server.


Tuesday, May 17, 2016

Siebel: How to convert a long running Web Service call to Asynchronous

We often have Siebel inbound web services, which take a lot of time to complete and finally time out.
We can create a web service which will accept the request for processing and then free the client instead of waiting for a response.

The basic thought is to convert the Synchronous call to an Asynchronous call.

Assume we have a workflow "Create Contact wf" which takes a long time and we want to call it Asynchronously.
We create a wrapper workflow in which we call a custom business service.
This custom business service will have the code to invoke "Server Requests" and submit a WfProcMgr job to run "Create Contact wf" asynchronously.
"Server Requests" business service can be used to submit a job to Workflow Process Manager Component (or any other component that accepts jobs) with one of the asynchronous modes: DirectDb / Async / Schedule
Find more details on how the Asynchronous server requests work here






Below is the sample code for the custom business service to take a workflow process property named "ContactIO" containing an IO named "EAI Contact" and pass it to an inner workflow that is called asynchronously and which has the same input process property "ContactIO" also containing an IO named "EAI Contact".


function Service_PreInvokeMethod (MethodName, Inputs, Outputs)

if (MethodName == "CallAsynchronousWf")
{

// instantiate the Business service "server requests" 
var svc = TheApplication().GetService("Server Requests"); 

// create the variables for "server request" Business service input and output

var SRBSInputsPS= TheApplication().NewPropertySet(); 
var SRBSOutputsPS= TheApplication().NewPropertySet(); 

// set the input arguments for the "Server Requests" business service

SRBSInputsPS.SetProperty("Component", "WfProcMgr"); 
SRBSInputsPS.SetProperty("Method", "RunProcess"); 
SRBSInputsPS.SetProperty("Mode", "Async"); 


// set the inner workflow input and output
// the top level of inputs is empty 
// child 0 is the IO instance

var wfInputsPS =  Inputs.Copy();
wfInputsPS.SetProperty("ProcessName", "Create Contact wf"); 

/***********************
you have to set the type of the propertyset at the level where the integration object starts as the workflow process property name, so the workflow is able to read the integration object and you do not get the error  "Input message is missing header properties.(SBL-EAI-04024)".
To make it simple, name the processproperty the same name as the IO.
********************/
wfInputsPS.GetChild(0).SetType("ContactIO");

var wfOutputsPS = TheApplication().NewPropertySet();

// workflow inputs is the IO instance and the process name and is a child of Server requests business service input.
SRBSInputsPS.AddChild(wfInputsPS); 

// invoke the  workflow 
svc.InvokeMethod("SubmitRequest", SRBSInputsPS, SRBSOutputsPS);

}
return (CancelOperation);
}



Tuesday, May 3, 2016

Siebel IP16 - Steps to Install Tools, Web Client and Sample database

Below are the detailed Steps to Install Tools, Web Client and Sample database of Siebel IP 16.

After you create the installables from the extracted zip files, you will see 2 folders for Client and Tools in the Client directory of the installables.
There is no separate directory for Sample database. It comes integrated with Siebel Client.
From Siebel IP 16, it uses Oracle XE database for both local and sample databases.
The software comes bundled with both Siebel Client and Tools installation.






Siebel Client Installation

Navigate to the Windows/Client/Siebel_Web_Client/Disk1/install folder and double click the setup.bat file.
Navigate to the Windows/Client/Siebel_Web_Client/Disk1/install folder and double click the setup.bat file.



Select "Next" in the Welcome Screen.

Optionally enter email

Select "New Installation"

Specify the Oracle Home Name and Location

Select "Language"

Select the type of Client

Specify the hostname of the Remote Server
Select 32 - bit Oracle Client for Sample and Local database.

Review and confirm the installation summary


This will automatically install the Oracle XE database and configure it.



This ends the installation of Client.


Siebel Tools Installation

Navigate to the Windows/Client/Siebel_Tools/Disk1/install folder and double click the setup.bat file.

double click the setup.bat file.

Click "Next" at the Welcome Screen.

Optionally enter email address.
Select "New Installation"
Enter Oracle Home Name and Location
Select "Language"
Select Database server

Specify path to File system



Specify path to Oracle 32 - bit client
Review and confirm the installation

This finishes the installation

123Siebel

Search 123Siebel