April 24, 2014

Does HeartBleed effects Siebel?

Does HeartBleed effects Siebel?

Siebel Heartbleed?
Heartbleed and Siebel?
Heartbleed is an OpenSSL implementation vulnerability which was discovered earlier this month and has global impact. It was discovered by OpenSSL, who in turn credits Riku, Antti and Matti at Codenomicon and Neel Mehta of Google Security.

By exploiting this flaw users could steal the private keys and can do all sorts of nasty stuff like man in the middle or forging attacks which seems to be possible only in theory.

It was the worst nightmare for the system engineers and many are still in process to determine the impact to their machines and patching them. According to the list all major web service provider (amazon to google ) were impacted.

As a Siebel customer how does it impacts you? Do you need to worry about your customer's or partner's accounts? 

Answer is a Yes!

Although this problem only impacts the Open SSL implementation on Linux environments, Oracle has still not certified Siebel CRM product as safe from the bug.
Read oracle link for HeartBleed certification:
http://www.oracle.com/technetwork/topics/security/opensslheartbleedcve-2014-0160-2188454.html

Do you need to worry, even if Siebel is not interfaced with any other system?

Probably Yes, with stolen private key (which are usually common for most of the systems in an organisation) hackers can hack other systems. Try to answer these questions for your implementation then plan your strategy:

  1. Is siebel available to customers online? 
  2. Does siebel use SSL?
  3. Have you implemented Siebel on Windows or Linux? OOB Windows is safe from Heartbleed.
  4. Does your implementation communicates with other systems over SSL? for integrating any banking transactions? 
  5. Any third party client used to integrate with SSL? Putty or etc?

How to be safe?

  • Upgrade the Open SSL version : https://access.redhat.com/site/solutions/781793
  • Change your security certificates and keys.
  • Ask your users to change passwords.
  • Subscribe to security updates from Oracle : http://www.oracle.com/technetwork/topics/security/alerts-086861.html
For those who are unware of the bug refer:


Hope it helps.

February 14, 2014

Quiz: How to change the destination field of MVG?

This could be one of the most difficult Siebel Configuration Interview Question, it took me some time to understand it and found it quite amusing. Let us see how many of us could answer this. :)

Requirement: To change the destination field of an MVG. Siebel Provides option to change the source field of an MVG so that child records for some other key field can be fetched.

From Siebel tools help: 
MVG Source field Definition

Source Field (O)
Specifies the name of a source field that Siebel CRM uses to link the child business component with the source business component. The source business component is the business component that includes the object definition for the multivalue link. If the source field is different from the Id, then the Source Field property is required.

Requirement is to change the destination field, please bear in mind the MVG is based on M:M relation using a inter table. 


Update:  Sorry guys to being so late in responding to the comments.


Answer to the question is: Source Field and Destination Field of the M:M links can be modified just like 1: M link. Siebel supports having source and destination fields as well as inter-table on a link, this makes the links most configurable.



I have explained all the links in my latest post : Links Demystified

February 01, 2014

Siebel - Twitter Integration - Part 1: Authentication

This is post is second in series of Siebel Twitter Integration and will talk about logging in to twitter as an application.

Twitter has support two form of authentication, O-Auth Authentication and Application only authentication. For pulling tweets in Siebel we need Application only authentication, luckily which is technically easier than O-Auth and have more generous rate limits.






Before starting with Siebel configuration follow these steps:
  1. Create account on http://dev.twitter.com by agreeing to terms and conditions.
  2. Request to create your access token, and copy your Consumer Key and Consumer Secret.

Now copy paste following code to your repository, I prefer client side scripting as it easy to change.

StringToBase64 encoder

http://www.siebel-tech.com/2013/07/escript-base64-encoder/
This is piece of code is required for encoding the Client Key and Client Secret to Base64 before sending it to twitter. Developers at siebel-tech.com has done wonderful work in converting String to Base64, which saved me lot of time. Thanks Iain.

function StringToBase64(Inputs, Outputs)
{
  // *************************************************************************
  // Purpose: Encodes to a Base64 string
  // Author: Iain Ollerenshaw
  // Date: 30-Jul-2013
  //
  // Inputs: InString - string to be encoded
  // Outputs: Base64String - string in Base64
  //
  // Modification History
  //
  // Date          By                Details
  // 25-Jul-2013   Iain Ollerenshaw   Created
  // 2-Feb-2014    Jim  Updated
  // **************************************************************************

  try
  {

    // Define the Base64 codex
    var sCodex = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
    var sOutput = "";
    var sInput = Inputs.GetProperty("InString");
    var iLen = sInput.length;
    // Parse input string
    var iPos = 0;
    while (iPos < iLen)
    {
      var sChr1 = sInput.charCodeAt(iPos);
      iPos++;
      var sChr2 = sInput.charCodeAt(iPos);
      iPos++;
      var sChr3 = sInput.charCodeAt(iPos);
      // Shift bytes
      var iEnc1 = sChr1 >> 2;
      var iEnc2 = ((sChr1 & 3) << 4) | (sChr2 >> 4);
      var iEnc3 = ((sChr2 & 15) << 2) | (sChr3 >> 6);
      var iEnc4 = sChr3 & 63;
      if (isNaN(sChr2))
      {
        iEnc3 = iEnc4 = 64;
      }
      else if (isNaN(sChr3))
      {
        iEnc4 = 64;
      }
      sOutput +=(sCodex.charAt(iEnc1) + sCodex.charAt(iEnc2)+ sCodex.charAt(iEnc3) + sCodex.charAt(iEnc4));
      iPos++;
    }
    Outputs.SetProperty("Base64String", sOutput);  }
  catch(e)
  {    throw(e);  }
}

Get Description / Set Description

This is a small piece of code which helps to get the description of any LOV value, I have used LOV as scratch pad to store access token in this example, I will explain to store an maintain these in custom Twitter dashboard. I thought of saving them in system preferences first, but it only has 100 char limit thus had to switch over to LOV Description column.

function GetDescription (sType,sName)
{
var boListOfVal = TheApplication().GetBusObject("List Of Values");
var bcListOfVal = boListOfVal.GetBusComp("List Of Values");
bcListOfVal.ClearToQuery();   
bcListOfVal.ActivateField("Description");
bcListOfVal.SetSearchSpec("Name",sName);
bcListOfVal.SetSearchSpec("Type",sType);
bcListOfVal.ExecuteQuery();
if(bcListOfVal.FirstRecord()){
return(bcListOfVal.GetFieldValue("Description"));
}else return("none");
}


function SetDescription (sType,sName,sDesc)
{
var boListOfVal = TheApplication().GetBusObject("List Of Values");
var bcListOfVal = boListOfVal.GetBusComp("List Of Values");
bcListOfVal.ClearToQuery();   
bcListOfVal.ActivateField("Description");
bcListOfVal.SetSearchSpec("Name",sName);
bcListOfVal.SetSearchSpec("Type",sType);
bcListOfVal.ExecuteQuery();
if(bcListOfVal.FirstRecord()){
bcListOfVal.SetFieldValue("Description",sDesc);
bcListOfVal.WriteRecord();
}
}
LOVs look like:

Main code for Twitter login is as follows:


//Get Consumer Key and consumer Secret from LOV Description
var sConsumerKey = GetDescription("TWITTER_TOKEN","ConsumerKey");
var sConsumerSecret = GetDescription("TWITTER_TOKEN","ConsumerSecret");

//Encode Key and Secret into Base64
var inp = TheApplication().NewPropertySet();
var op = TheApplication().NewPropertySet();
inp.SetProperty("InString",sConsumerKey + ":" + sConsumerSecret);
StringToBase64(inp,op);


//Use EAI HTTP Transport to call Twitter API to login.
var httpSvc= TheApplication().GetService("EAI HTTP Transport");
var httpIn = TheApplication().NewPropertySet();
httpIn.SetProperty("HTTPRequestURLTemplate","https://api.twitter.com/oauth2/token?grant_type=client_credentials");
httpIn.SetProperty("HTTPRequestMethod","POST");
httpIn.SetProperty("HTTPIsSecureConn","TRUE");
httpIn.SetProperty("HTTPContentType","application/x-www-form-urlencoded;charset=UTF-8");
httpIn.SetProperty("HDR.Authorization","Basic " + op.GetProperty("Base64String"));
httpIn.SetProperty("HDR.Accept-Encoding","identity");
httpIn.SetProperty("HDR.User-Agent","something");
httpSvc.InvokeMethod("SendReceive", httpIn, Outputs);


//Transcode the JSON response into UTF-8
var oTransService = TheApplication().GetService("Transcode Service");
var oTransOutputs = TheApplication().NewPropertySet();
Outputs.SetProperty("ConversionMode", "EncodingToString");
Outputs.SetProperty("TargetEncoding", "UTF-16");
Outputs.SetProperty("SourceEncoding", "UTF-8");
oTransService.InvokeMethod("Convert", Outputs, oTransOutputs);
var sResponse = oTransOutputs.GetValue();


//Convert the JSON response to property set
var oJSONConverter = TheApplication().GetService("EAI JSON Converter");
oJSONConverter.InvokeMethod("JSONToPropSet",oTransOutputs,Outputs);

//extract access_token and clip
var token = Outputs.GetChild(0).GetProperty("access_token");
token = token.substring(1,token.length-1);


//Save the token for future use
SetDescription("TWITTER_TOKEN","EncodedTokenCredentials",token);


This access token will be used in all the future communications with twitter as authorization code.
Post version: Draft :) keep checking for more updates on explanations over the HTTP transport.

January 24, 2014

Siebel Twitter Integration - Overview


What is Siebel?

Siebel is Oracle's CRM(Customer Relationship Management) product suite, which offer to manage customer relationships through various touchpoints. Siebel suite is designed mostly for all industry verticals and horizontals, and help business to manage customer data, order information, partner information, sales force automation, customer self service and many more customer interactions.

With its powerful integration capabilities Siebel can interact with other enterprise systems (like billing, back office systesms) on many protocols(like MQ Series, JMS, HTTP, Webservices, database connections, COM, Java, DLL and more..).


What is Twitter?

Does anybody need introduction? Twitter is first and biggest microblogging platform having billions of users accross the world. Some features like verified accounts, hash tagging and trending has made it one of the biggest social network platform.

User can vent their spleen out to the world lietrally about any topic and can follow any user or topic accross the world. From couple of years people have started venting about the poor customer service and problems on twitter. Business are forced to act on the complaints and provide response to keep the brand image. Recently angry customer's tweet about his lost baggage forced British airways to conduct a massive search operation, and helped passenger to get his lost baggage.

Does Siebel Provides Out of the box way to integrate with twitter? No!
Siebel recommends a third party product Buzzinet to handle the twiiter interaction and provide processed information back to Siebel. Which is a very tacttical solution and provides some benefits too. Thus it comes with premium licensing cost and service agreement.

Siebel Twitter Integration

In this series we will discuss a solution which can be implemented to integrate Siebel with twitter without the need of any another enterprise application or middleware.
Twitter only support REST API 1.1 for integration with other applications, current Twiiter API only accepts and provide response in JSON strings. That does not mean Siebel can not integrate Twitter. By using Java based EAI JSON Converter Siebel can create JSON strings and convert back string to data. Follow these links to understand more about EAI JSON Converter..

Twitter REST API v1.1 (@twitterapi) have three major ways of pulling and posting tweets into the cloud.

1. O-Auth User authentication


This method is used by mobile application and third party websites to allows users to acccess twiter features without leaving their environment.

2. Applicaton Only authentication


This type of authentication allows application to execute search queries on twitter and follow topics. With this type of authentication Twitter provides little more generous rate limits for querying twitter, and are best suited for CRM applications.

3. Streaming API


This is firehose of twitter tweets, and it streams live tweets to the applcation using long lived open HTTP connections. This feature should only be implemented if some serious research of user analytics need to be performed.


For the purpose of this series we will demonstrate a solutions which will help organizations having, to follow topics on twitter and post replies to the tweets all by using Siebel on premise application.



Later in this series:
 Stay tuned for coming up posts.

January 09, 2014

What does Google says about Siebel?

In recent weeks we have been reading many new articles across the web talking about Siebel's future. Initially it started with a community poll, and then couple of guest posts flared the discussion over blog-sphere, there were surveys  and conclusions done by well known authors: @lex and BruceDaley

 After some months Adam Honig warned consultants that Siebel is dead end there are many cloud services which are proving an alternative to enterprise installed Siebel application and recommended to switchover to other technologies. Bruce Daley however opposed the viewpoint, he was supported by Richard which pointed out few good things about Siebel. Both however could not completely ruled out the facts regarding the continuing loss of oracle business due to the cloud CRM systems. I recommend to read the discussion on this link.and link
 
Earlier during the year on other extreme @lex technical trainer from oracle recommended to learn Siebel technology even if it is the last day, It felt a bit of an emotional post. Everyone in Siebel developer community had same feelings.

Nothing actually changed my mind except the post from sugar crm sales team, they published and article showcasing selection of sugar crm as replacement of biggest Siebel call center implementation in IBM. Collectively all these forced me to do my own research.

I am not a veteran Siebel researcher like Bruce and don't have any data from the customers world wide. So I started with Google. Found couple of videos and interviews from Siebel product management found that everyone is defending Siebel(links to come).

Then I turned over to Google trends, and found a very interesting facts, In this post I am just sharing my understanding over these graphs. The first comparison I performed was of Siebel & Salesforce in which you can easily see that Salesforce is gaining the momentum and Siebel losing it.

Next Graph shows comparisons of all the leading customer relationship management applications.

They show easily that interest in Siebel is declining and Saleforce is becoming popular, this is also displayed in siebel/salesforce job search and interviews.

Next graphs shows the similarity of Siebel graph with the downfall of s60 over iOS and Android



Next I turned on to another Google tool : Google Adwords which tells how much other advertisers are bidding to rank their ads on google search terms.



One could easily see Siebel search terms have lower cost, and Salesforce is significantly higher than Siebel!

I appreciate the efforts of everyone who is promoting year 2014 as great year for Siebel, but stats doesn't seems to agree. I am strong believer of keeping the spirit and momentum high, but this had to be shared. 


-Jim

December 28, 2013

Google Analytics with Siebel

I have seen couple of questions regarding use of Google Analytics with Siebel CRM, but no one seems to answer completely. This article is created to answer those questions.

When it comes to web analytics there is no parallel to Google Analytics, I am not selling Google Analytics, but people who have already used GA before can understand the need of powerful web analytics tools and how Google Analytics fills the gap.


This article will give you steps to create Google Analytics account and to embed the tracking code in Siebel.

Google Analytics can be used with Siebel CRM applications for both internal like Siebel Financial Services and external customer facing applications like eService or eSales. Only requirements from Google to use tracking are:
  • User must be able to reach the ga.js/analytics.js JavaScript file at http://www.google-analytics.com/ga.js or https://www.google-analytics.com/ga.js.
  • Intranet Application must be accessible through a fully qualified domain name such as http://intranet.example.com, application need not to be internet hosted application to use google analytics.

If your application can satisfy these requirements then you can create GA code and embed it to the Siebel Application.Once it is setup one can report on user behaviour demographic and many more metrics in GA.

I have used GA's Universal Analytics(newer version of GA) and created custom dimensions to store Active View Name, Application Name and Login User on Google.






Additionally I created events to capture the user interaction application. You can create event to business specific needs like: product configurator or service request creation or tasks.

How to embed Google Analytics tracker in Siebel Open UI?

Add the following code in postload.js file under the public directory, this code will be executed always when ever view is refreshed in Open UI. Code shown in bold is added after creation of dimension shown above.

(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
  ga('create', 'YOUR_CODE', 'yoursitename');
  ga('send', 'pageview');
ga('set', 'dimension2', theApplication().GetProfileAttr("Login Name"));
ga('set', 'dimension1', theApplication().GetProfileAttr("ActiveViewName"));

ga('set', 'dimension3', theApplication().GetProfileAttr("ApplicationName"));
ga('send', 'event', theApplication().GetProfileAttr("ActiveViewName"), 'click', theApplication().GetProfileAttr("Login Name"));

How to embed Google Analytics with Siebel HI? 

Add following code to the  swecommon.js for high interactive applications, this js is also executed allways after page refresh in HI applications. 

(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
  ga('create', 'YOURCODE', 'yoursitename');
  ga('send', 'pageview');
ga('set', 'dimension2', theApplication().GetProfileAttr("Login Name"));
ga('set', 'dimension1', theApplication().GetProfileAttr("ActiveViewName"));
ga('set', 'dimension3', theApplication().GetProfileAttr("ApplicationName"));
ga('send', 'event', theApplication().GetProfileAttr("ActiveViewName"), 'click', theApplication().GetProfileAttr("Login Name"));

Caution : Do not track customer information such as user details using custom dimesions and metrics as it is against the google analytics policy and could be against the organisation policy as well.

After all this is done you would be able to see the analytics information in your google account.










Now you can do full fledged analytics on your user interactions. My favorite is real time analytics, which one is your favorite??

Happy Analytics :)

December 26, 2013

Getting Started with Siebel Order Management

This is the first article in series of Siebel Order Management Tutorials. These tutorials will consists of short articles in form of questions and answers on Siebel Order Management particularly Siebel Product Configurator and Siebel Pricing.

I will be tracking the complete Siebel Order Management tutorials here, you can refer to it as index.

What is Siebel Order Management?

Order Management is one of the most successful CRM vertical to help telecom operator to manage customer base and order management. It consists of customer creation, order creation and tracking and modification of the assets.

Most important parts of Order Management is Product Configurator and Pricing engine which helps users to configure the product offering for the end customer and provide them the service.

How to get started with Order Management?

Technical name of the Siebel Order Management Application is Siebel Power Communications and cfg name is scomm.cfg. I will be using sample database on Siebel 8.1.1.10 with Open UI turned on for all the tutorials.

Order Management is a complex application it does not work out of the box even with Sample database. Please follow these steps to get started. I recommend to follow these steps before starting with the upcoming tutorials.

Step 1: Activate all the workflows related to Order Management , Product Configurator and Pricing.
Bookshelf provides list of workflow which should be activated, however the list is not exhaustive thus I usually activate the following workflows:
*Product*
*Pric*
*SIS*
*Asset*
*Order*
*Quote*
If you try to activate all the product related workflows you might get the following error:
[1]Cannot register runtime event for branch 'Cancel.DECISION' in step 'Get User Name & Password'.(SBL-BPR-00116)
[2]Cannot register action for runtime event.(SBL-BPR-00115)
[3]Invalid operation when not executed.(SBL-DAT-00471)
Please ignore the error and try to proceed with the workflow activation from the next available workflow.

Step 2: Fix all the issues with OOB sample database by following instruction on support web article. Doc ID 788942.1
You might see these errors if the signals and variable maps are not resolved in this step:
We detected an Error which may have occurred for one or more of the following reasons:
 Error invoking service 'Context Service', method 'GetRowSetData' at step 'Get Row Set'.(SBL-BPR-00162) 
 If you are facing the same issue again even after following the steps in support web article then go to CalculatePrice_Configurator signal and release the workspace a new version.

Step 3: Go to Administration Product View and try to validate any customizable product.
If you are successful then you should see screen something like this:

Product Configurator with Auto Reprice Templates

Product Configurator with Manual Reprice Template


Comments are welcome.

Next in series: Order Management Entities  - HUG

-Jim

December 14, 2013

EAI JSON Converter


Siebel does not provide any out of the box functionality to convert Siebel data into JSON string or vice versa. Developers end up with string manipulations or giving up on integration. I have created custom EAI JSON Converter business service which uses Java capabilities and Siebel-Java integration EAI Java Business Service to produce fully compliant JSON strings and convert the external JSON into Siebel Property Sets.

The service built on the lines of methods of EAI XML Converter which converts Property set to XML Doc and XML Doc to property set.
Methods available in EAI JSON Converter are:

  1. JSONToPropSet
  2. PropSetToJSON


Input data to this service is sent to EAIJSONConvert java class using Siebel API(Siebel.jar) which converts the data in required format using GSON 2.2.4 Java API . The Gson library was originally developed for internal purposes of Google, and Version 1.0 was later released on May 22, 2008 under the terms of Apache License 2.0. The latest version, 2.2.4, is used for the service.

How to set up:

1. Download and place java files in the CLASSES folder of Siebel Client the binaries 
Files:
EAIJsonConverter.class
gson-2.2.4.jar
Siebel.jar

2. Download the sif file for EAI JSON Converter from github
3. Update the cfg file to include gson-2.2.4.jar file. My cfg file look like:
[JAVA]
DLL = C:\Program Files\java\jre6\bin\client\jvm.dll
CLASSPATH = C:\Siebel\8.1\Tools_1\CLASSES\Siebel.jar;C:\Siebel\8.1\Tools_1\CLASSES\SiebelJI_enu.jar;C:\Siebel\8.1\Tools_1\CLASSES\gson-2.2.4.jar;C:\Siebel\8.1\Tools_1\CLASSES\.
VMOPTIONS = -Xrs -Djava.compiler=NONE -Djms.log=C:\logs\

4. Simulate the service

How to use:

Service can simply be used in place of EAI XML converter to convert the Siebel message into JSON or convert back JSON to property set.




Please feel free to use comments for any questions or to post any difficulty faced in using the service.

Hope it helps.

-Jim

December 09, 2013

100 Siebel Interview Questions: Workflows

 You are reading, the most read article of this entire blog. Please share in comments if it helped you, if you would like to any other question to the list. 💙

This article has been added on reader's request, and these are not the 100 questions as of now ( ideally there should not be 100 question in an interview :) ). My intention with this article is to point all the minor doubts of Siebel Consultants regarding workflows. Feel free to suggest any other question on this topic, I will be more than happy to add it to the list.


Question: What are the different ways to invoke workflows in Siebel?

Answer: Some of the known ways of executing workflows are:
1. Named Method User Property
2. Calculated Field expression
3. Script on BusComp, Applet, Application, Business Services
4. Workflow Policy
5. RCR & Server Requests
6. Asynchronous Server Request - Business Service
7. Run Time Events
8. Command line using Server Manager
9. Web services & Receiver components(JMS,MQ)
10. Through Siebel URL 
11. Commands
12. Order Management Signals

Question: How to invoke workflow on specific server?

Answer: Workflows executed through workflow process manager business service are executed on the same server where request is made. Asynchronous Server Request and Server request business service can send request to other servers for workflow execution; this can be done by specifying server name as input argument.

Question: What are different ways of error handling in workflow process?

Answer: There are two ways of error handling in Siebel workflows. Most popular to handle error in workflows are exception branches(the red arrows :) ), they can be created for each step in workflow to handle error for the step.Secondly  we can use Error Process Name property of workflows to call another workflow process to handle in case of any error.

Question: How to configure a workflow policy?

Answer:
1. Ensure Workflow Policy column is created in Siebel tools & Added in workflow policy object
2. Create workflow policy action to execute workflow
3. Create workflow policy record and create conditions and associate action to the workflow policy.
4. Execute “Generate Trigger” task to create triggers
5. Restart Workflow Monitor Agent

Question: What is the difference between Synchronous and Asynchronous workflow execution?

Answer: Synchronous workflow is executed in user session and user has to wait till workflow is executed. Workflow is executed synchronously usually through button click or record operations like set field value or write record, where user need to know the outcome of the workflow.

Asynchronous workflow requests are executed by server in background and does not requires user to wait for the outcome. These type of workflows are usually interface workflows.

Question: What is the difference between Stop step and End Step?

Answer: Stop step sets the status of workflow to “In Error” and End step set the status to “Completed”
Stop steps should be avoided in integration workflows and workflow policies as they may cause server component to error out.

Question: What is the difference between Workflow policy and Run time events?

Answer: Workflow policy adds the workflow execution request to the queue and executes the workflow from server components.
Runtime event executes workflows as and when requested and process is executed in user session user has to wait for the workflow to complete.

Questions: Is it possible to create Workflow without Business Object ? If yes how ?

Answer: Yes it is possible to create workflow without business object. Business Object is not a required field on Workflow. It is only required when workflow need to use any siebel operation.

Question: How to get current date in Siebel Workflow?

Answer:  Property can be populated with current date by using Timestamp() in Siebel Workflow. Syntax of Timestamp in Siebel Workflow.

Question: What is stored in Siebel Operation Object Id when Query method from Siebel operation step returns more than one record?

Answer: Siebel Operation Object Id contains * if more that one records or updated are queried using Siebel operation.


Question: How to pass hierarchical property set from custom business service to Workflow?

Answer: To pass hierarchy from custom business service to workflow, type of property set should be the same as the name of output argument. 



http://howtosiebel.blogspot.com/2015/10/download-siebel-interview-questions-pdf.html
Download Siebel Interview Question eBook

See Part :2 of Siebel Workflow Interview Questions

See more EAI Interview Questions here.