June 03, 2016

Siebel Integration Interview Questions - JMS Transport

This article only covers Siebel integration interview questions related to EAI JMS Transport , see Siebel EAI Interview Questions for other Integration interview questions.

Question 1: When should JMS be used over web services in Siebel integration requirement?

Answer: JMS queues are based on store and forward guaranteed delivery mechanism. That means source system sends the message to middleware which holds the message in queue until Siebel server reads it thus message is never lost.

However on other side web services doesn't have retry mechanism in architecture. In case of heavy load or server unavailability message can be lost if source system can't resend it. Benefit of using web services is that they are faster to develop, setup and maintain.

Question 2: How does JMS integration works in Siebel?

Answer : Siebel has JMS receiver server component which can pull XML messages from JMS queue for data transfer. For JMS components to get messages from JMS server Siebel needs to have JAVA installed on Siebel server.

Question 3 : What is the difference between queue and a topic of JMS?

Answer: Queue is is implementation of first in first out data structure, and can be used only between one source and one consumer. Once XML message is consumed by consumer it is deleted from the queue.


Topics also have queue like store and forward mechanism but with the difference that they do not delete XML messages immediately after it has been read, the same message can be read by another consumer (application). Thus well suited for 1 to many integration scenario.

Questions 4 : What steps are involved in JMS component setup in Siebel?

Answer:  Siebel JMS setup involves minimum three items :
- Setup of JVM (Java) subsystem
This tells where is Java files and server details of JMS server.
- Setup of JMS subsystem
This contains queue or topic information
- Setup of receiver component
This component pulls XML messages from JMS server mentioned in JVM sub system from queue mentioned in JMS subsystem.

Question 5: What is jndi.properties file? What it is necessary?

Answer: Java subsystem required for JMS integration required JMS server location information such IP address and port. This information is kept in jndi.properties file in Siebel filesystem.
It looks something like this: https://docs.oracle.com/javase/jndi/tutorial/beyond/env/src/jndi.properties

Questions 6: what kind of logging is available for JMS transport?

Answer:  EAI JMS Transport  provides two logging methods, first one is the traditional Siebel logs which can be turned on by increasing log level of receiver component.

Second type of logs are Java logs which generated by Java virtual machine installed on Siebel server , they can get turned on by setting VMOptions in Java subsystem.

See more Siebel EAI Interview Question

[Download] EAI JSON Converter v2

Pleased to bring you the complete EAI JSON Converter v2. It happened a lot sooner than I expected.
Siebel EAI JSON Converter

Below is the code which converts JSON string to property set. The heart of the code is eval statement, which converts the JSON string into eScript Object. 
Siebel eval statement

Remaining code is just the recursive traversing to convert object into property set. I have tested the code for couple JSON strings, it passed everytime with flying colours every time. Feel free to change the code as required. 

You can download the complete sif from git hub. https://github.com/Jimjson/eScript-based-EAI-JSON-Converter-


EAI JSON Converter Demo: 

How to force shutdown siebel server < 2ms

This is in continuation to my earlier post on How to shutdown Siebel server in less than 5 secs

And is suggested by a reader of this blog, who seems to be even more impatient than me(in a good way), and had automated the step to query Siebel server and step to use task kill command to bring down Siebel server as mentioned on my earlier post.

Final batch file looks something like : 

FOR /F "tokens=3" %%A IN ('sc queryex siebel_service_name  ^| findstr "PID"') DO (SET pid=%%A)
IF "!pid!" NEQ "0" (
taskkill /pid %pid% /f 
)


taskkill /im siebmtshmw.exe /f
taskkill /im siebmtsh.exe /f
taskkill /im siebsess.exe /f
taskkill /im siebprocmw.exe /f
taskkill /im siebproc.exe /f
Once executed with admin privileges, it brings down Siebel server at very instant. I have tested this, and it works beautifully.
Memory Release

Why this is faster than usual way? 
Usual way of bringing down service does memory cleanup and waits for long running processes to complete, gives some time to gracefully complete the tasks I think it copies the log files around as well.

However this batch file just pulls the trigger and knock down the server in one shot. There is a risk of data corruption, use it at your own risk!


If you have done something like this with Siebel which is not recommended but saves you time then please share it with us in comments section below.

June 01, 2016

Siebel EAI Interview questions - Web services

View latest 2020 Interview questions here:
Siebel REST API Interview Questions
Siebel EAI Interview Questions - JMS Transport

Question 1: What is the difference between outbound and inbound web services?

Answer: Inbound web services are hosted/served by Siebel and is invoked by external application to send data or to query data from Siebel.
Siebel Inbound Web Service

Outbound web services are web services which are hosted by external applications like SAP or Middle-ware and is invoked by Siebel workflows/business services to send or query data from external system.
Siebel Outbound Webservice


Question 2: What is WSDL?

Answer: WSDL stands for Web Service Definition Language. It's a standard for describing web service end point, it contains information about what all methods external system can call and what are input and output arguments for the service.
For Inbound web services Siebel dev team needs to provide WSDL, which is created from Adminstration Integration> Inbound Webservices view.
For outbound web-services external system like a billing system provides WSDL which is imported into Siebel.
Generate WSDL in Siebel

Question 3 : How WSDL is imported into Siebel?

Answer : Siebel inputs WSDL in two steps. Firstly WSDL is imported into Siebel tools which creates proxy business service and IOs for arguments.
WSDL Import in Siebel Tools

Second step involves creating web service end point in Administration integration> outbound web service which is done by imported by xml generated in first step.

Question 4 : What is filter business service in Siebel?

Answer: Filter business service is a custom business service which can be configured to be invoked at web service invocation just before or after actual workflow call. This service is used to handle custom soap headers of web service .

Question 5: What is SOAP Message? Which version of SOAP is supported by Siebel ?

Answer : SOAP Stands for Simple Object Access Protocol it is a XML format which exchanged by web services, SOAP 1.1 is supported by Siebel.

Question 6: When would you recommend using web services over queue based integration?

Answer: Web services should be used when business process can not wait for response from external system. For example : Order can not proceed without checking the inventory and user cannot wait before submitting order.

Question 7: What is the difference between EAI HTTP Transport and web services?

Answer : Web services is a HTTP based standard which uses WSDL to describe structure of input and output arguments and methods which can be invoked on server.
HTTP Transport can also be use to transfer data in and out if Siebel server however there is no description of input and output data structure and types.

Question 8: Can workflow be published as inbound web services?

Answer: Yes workflow and business service both can be published as web service in  Siebel.

Question 9: What is proxy business service in Siebel? and How does proxy BS works internally in Siebel?

Answer : Proxy business services are business services in Siebel which are created for each WSDL import in Siebel tools. Proxy business service converts in the input arguments into SOAP message and invokes HTTP transport to send data to external system.


EAI JSON Converter - v2 (No Java)

I published EAI JSON Converter business service based on Siebel Java business service back in 2013, and many people seemed to like it and implemented it. See the old post here. It was great to see that code getting implemented in production by many people. Surprisingly equal number of people faced difficulty in implementing the Java business service which is required to get EAI JSON Converter working.

Thus I started working towards removing dependency on JAVA business service and created complete eScript based solution as ver2 of EAI JSON Converter business service.
Generate JSON in Siebel without Java


This service will have the same methods and arguments, and will outputs similar JSON string and property set as previous version did but without the need of JDK. It is complete plug and play service, just copy paste the code and start using the service.

function CreateJSON(Inputs){
/*********
Created By: Jim
Support: http://howtosiebel.blogspot.com
*********/
    var str,j;
    var propName = "";
    var propVal = "";
   
    str = "{";
   
    propName = Inputs.GetFirstProperty();   
   
    //Type and value
    if(Inputs.GetValue() != null && Inputs.GetValue() != ""){
        str = str + '"' + Inputs.GetType()  + '"' + ":"  + '"' + Inputs.GetValue() + '"';   
        if(propName != "") str= str + ",";
    }
   
   
    //Properties
    while (propName != "") {
        propVal = Inputs.GetProperty(propName);
        str = str + '"' + propName +  '"' + ":" + '"' +propVal + '"';
        propName = Inputs.GetNextProperty();
        if(propName != "") str = str + ",";
       
    }
    propName = Inputs.GetFirstProperty();
    if(propName != "" && Inputs.GetChildCount()> 0)str = str + ",";
   
    //Loop for child
    if(Inputs.GetChildCount()> 0){
    if(Inputs.GetChildCount()> 1)str = str + '"Object"' + ":" + "{";
    for (var i = 0; i < Inputs.GetChildCount(); i++){
            j = Inputs.GetChild(i);
            str = str + '"' + j.GetType() + i + '"' + ":" + CreateJSON(j);// + ",";
            if(i+1<Inputs.GetChildCount()) str =str + ",";
    }
    if(Inputs.GetChildCount()> 1)str = str + "}";
    }
    str = str + "}";
    return str;   
}
Hope the code is self explanatory. Feel free to edit it for your implementation. I have tested the output and validated for RFC4627.

Creating JSON string from property set was easy I traversed through the property set using out of the box Siebel methods and created the string. Creating propset from JSON proved difficult, I am still working on solution for interpreting JSON and converting it into property set, I have made some progress will post it as soon as it is working satisfactorily.

If you want to contribute in nobel cause then contact me via comments below and don't forget to plus one this post on Google. All comments are welcome.