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.

123Siebel

Search 123Siebel