June 17, 2016

Scriptless Challenge : How to constrain association list applet dynamically?

Association applet let's you associate records from an existing list of records. Unlike pick applets these association list applets doesn't have any out of the box way of constraining records.

Consider scenario: When opportunity type is internal, system should only show internal marketed products for opportunity in product association list applet and for opportunity type external system should show only external marketed products. Products are marked as internal and external by product type field.

Challenge: According to oracle there is no other way then scripting on web load of association applet to filter the records. Script can look something like following. And it works flawlessly.

Can you suggest any script less alternative?

function WebApplet_Load ()
{
var BO;
var ParentBC;
var BC;
var AccountId;
BO = TheApplication().ActiveBusObject();
ParentBC = BO.GetBusComp("Opportunity");
if(ParentBC.Name = "Opportunity")
{
    AccountId = ParentBC.GetFieldValue ("Account Id");
    BC = this.BusComp();
    with (BC)
    {
        ClearToQuery();
        ActivateField("Account Id");
        SetSearchSpec ("Account Id", AccountId);
        ExecuteQuery();
    }
}
ParentBC = null;
BC = null;
BO = null;
}


June 16, 2016

How to hide disabled buttons in Siebel Open UI?

With IP 15 and 16 Open UI themes have inclined towards bigger controls and more blank space on page, which is not bad thing but too much of it is making UI cluttered specially on small screens.

To fix this issue one can hide all disabled controls and all the white space around it. this can be done by simply adding following CSS and Open UI framework takes care of the rest.

button.appletButtonDis {
    display: none;
}

Further on to hide disabled menu items add :

li[aria-disabled=true]{
    display: none;
}

Siebel adds these classes and attributes to all the buttons on all applets and menus including new/query/delete icons to show them as disabled. Thus this change effects the entire application.

This post is contributed by esteem reader from down under via siebel-developers slack community. Register today to read more discussion like this.

June 06, 2016

Siebel Admin [Cheat Sheet]

I see many Siebel consultants(including me) searching web everytime to get correct syntax for Siebel server manager commands.

Although the syntax is so simple we still somehow manage to forget it :) I have created this cheat sheet from list of commands which I use day in day out. List contains command to increase log levels, shutdown startup components, creating components, starting server manager.

Feel free to download and print one for your desk.Download Here

Hopefully no more searching for commands to increase log level of siebel components :) cheers!

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: