tag:blogger.com,1999:blog-1595181353092229172024-03-10T00:35:13.733-08:00How to Siebel?One of the last Siebel Blogs. It has how to siebel guides, Siebel Tutorials, Open UI Solutions, Tips and Tricks, Solution for Siebel Errors, Interview Questions and more.Unknownnoreply@blogger.comBlogger120125tag:blogger.com,1999:blog-159518135309222917.post-35127807959889383252020-04-16T19:09:00.001-07:002020-04-16T19:09:32.448-07:00Siebel EAI Interview Questions 2020<b>Question 1: How would you debug a inbound web service which is not returning data for correct record id?</b><br>
Answer: First thing to check would be to log SQL which service is executing. This will explain what filters are applied by the web service. And why records are not being returned.
Issue could also be due to limited access provided to integration user executing the web service. Checking responsibilities and position of the integration user can also help in understanding the visibility issue.<br>
<br>
<a href="http://howtosiebel.blogspot.com/2020/04/siebel-eai-interview-questions-2020.html#more">Continue reading »</a>Jimhttp://www.blogger.com/profile/12540305358376025735noreply@blogger.com0tag:blogger.com,1999:blog-159518135309222917.post-76864193737473733982020-04-07T05:35:00.001-07:002020-04-07T05:57:01.766-07:00How to crash test a Siebel server?Yes you heard it right, this series is to find out what things developers can do to crash test the siebel server<br>
<br>
<div style="text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigTR8FNabRKQFr_qtpPLefV8tscLPSmk4qnvsOku88bRoHf-44-2MqvSYYDJW5L6kthk8yrq1rS2z0tTAMJ4emgXAuiS9zF7zSKXfke8MbHlPdkwgtMBEd1af5tNGdKtPzLq7d-OqsjBLo/s1600/tesla_crash_test.0.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="270" data-original-width="480" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigTR8FNabRKQFr_qtpPLefV8tscLPSmk4qnvsOku88bRoHf-44-2MqvSYYDJW5L6kthk8yrq1rS2z0tTAMJ4emgXAuiS9zF7zSKXfke8MbHlPdkwgtMBEd1af5tNGdKtPzLq7d-OqsjBLo/s640/tesla_crash_test.0.gif" width="640"></a></div>
<br>
<br>
Siebel unlike salesforce server has governor limits, it keeps on going until you ask it to stop. That's it's one of the key strength that I love, but not great when given it in hands of cowboys...<br>
<br>
<br>
<a href="http://howtosiebel.blogspot.com/2020/04/how-to-crash-test-siebel-server.html#more">Continue reading »</a>Jimhttp://www.blogger.com/profile/12540305358376025735noreply@blogger.com0tag:blogger.com,1999:blog-159518135309222917.post-41214328709836386352020-03-21T01:25:00.000-07:002020-03-21T01:29:36.416-07:00Siebel is generating offensive ROW_ID's in productionThis is an original Siebel service request posted in Oracle support. It has been a laughing stock for many many years and now it has been archived on the Oracle support.<br>
<br>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTXVuo0bD4hXOQApZmOAI7KNhoVFsUvCW4zdgg_HWO8MyiAQAagQ4a-CI6q5jBXmsnUwsD6rdQwlj0wDfwKfONbamf5KTjBSzDjMQSR9vC_sHeO389IY9M5EpUjYAbXP5CvdJJ216ayaj9/s1600/My+Post.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1067" data-original-width="1600" height="213" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTXVuo0bD4hXOQApZmOAI7KNhoVFsUvCW4zdgg_HWO8MyiAQAagQ4a-CI6q5jBXmsnUwsD6rdQwlj0wDfwKfONbamf5KTjBSzDjMQSR9vC_sHeO389IY9M5EpUjYAbXP5CvdJJ216ayaj9/s320/My+Post.jpg" width="320"></a></div>
<br>
Customer found a row_id created in their production environment which got offensive words in the row_id such as, "1-190F**K". So, they would like to know whether Siebel have any internal validation to avoid offensive words in ROW_ID generation.<br>
<a href="http://howtosiebel.blogspot.com/2020/03/siebel-is-generating-offensive-rowids.html#more">Continue reading »</a>Jimhttp://www.blogger.com/profile/12540305358376025735noreply@blogger.com0tag:blogger.com,1999:blog-159518135309222917.post-36061718630982400482020-02-14T05:06:00.000-08:002020-02-14T05:06:18.676-08:00How to create cookies from server side?Yes, you read it correctly, you can create cookies in the browser from the server side, and get your browser script to access them. This is enabled via Web Engine HTTP TXN business service. <br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4RfJlIqD_ZD5DX1QSUbkXUFwLRVqoF5_6b5ZKNg9_RyYXahRyJnKPzH5maUG282Oi_0ZNUnO4F8aeTHBmLwlCCgTOumCqtsDPrgEWOwkGRaKFXf_5AerlU5Av8Mu9ZAweQtQzp3Q3nfGK/s1600/cookies.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img alt="Siebel Cookies" border="0" data-original-height="494" data-original-width="445" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg4RfJlIqD_ZD5DX1QSUbkXUFwLRVqoF5_6b5ZKNg9_RyYXahRyJnKPzH5maUG282Oi_0ZNUnO4F8aeTHBmLwlCCgTOumCqtsDPrgEWOwkGRaKFXf_5AerlU5Av8Mu9ZAweQtQzp3Q3nfGK/s320/cookies.png" title="Siebel Cookies" width="288" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Siebel Cookies</td></tr>
</tbody></table>
<br />
<blockquote class="tr_bq">
var oBS = TheApplication().GetService("Web Engine HTTP TXN");<br />
<br />
var Inputs = TheApplication().NewPropertySet();<br />
var Outputs = TheApplication().NewPropertySet();<br />
<br />
var psCookie = TheApplication().NewPropertySet();<br />
psCookie.SetType("Cookie");<br />
psCookie.SetValue("Value of Cookie");<br />
psCookie.SetProperty "Path", "/";<br />
Inputs.AddChild(psCookie);<br />
<br />
oBS.InvokeMethod("SetResponseCookies", Inputs, Outputs);</blockquote>
<br />
Keep in mind that this method can be called from any other event in Siebel except application start(Application_Start) event due to product limitation .<br />
<br />
Not just that one can use this service to get IP address of the client which is used to access Siebel. I will highly recommend to go through all the methods of Web Engine HTTP TXN business service in your free time. <br />
<br />Jimhttp://www.blogger.com/profile/12540305358376025735noreply@blogger.com0tag:blogger.com,1999:blog-159518135309222917.post-18147311219377750072020-02-14T04:33:00.000-08:002020-02-14T04:42:13.424-08:00How caching work in Siebel?In any online transaction processing system like CRM most of the processing time is taken in finding the right record in database. No matter what database optimization technique you implement, your db processing time would be the highest among the time spent in web server and application server.<br>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNMTCl6RtC8CDJfju8fH9GE7CUzBnkejJ9N6DalvPZpocwgMP9ioLz8TTb17uquxp_0GmWbgvzEatHP_flLlTeweJA0aDOjOLUNV-pmEK7cGTN432RwH6l4wU-MTRQwrQfPLHAxg_04Xdy/s1600/OracleDB.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="484" data-original-width="351" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNMTCl6RtC8CDJfju8fH9GE7CUzBnkejJ9N6DalvPZpocwgMP9ioLz8TTb17uquxp_0GmWbgvzEatHP_flLlTeweJA0aDOjOLUNV-pmEK7cGTN432RwH6l4wU-MTRQwrQfPLHAxg_04Xdy/s320/OracleDB.png" width="232"></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Siebel Database</td></tr>
</tbody></table>
<br>
<a href="http://howtosiebel.blogspot.com/2020/02/how-caching-works-in-siebel.html#more">Continue reading »</a>Jimhttp://www.blogger.com/profile/12540305358376025735noreply@blogger.com0New York, NY, USA40.7127753 -74.005972839.9423093 -75.296866299999991 41.483241299999996 -72.7150793tag:blogger.com,1999:blog-159518135309222917.post-44803275488077202132020-02-09T04:57:00.001-08:002020-02-09T12:19:25.134-08:00How to update bulk records in Siebel using eScript?The best suggestion anyone can give to update records in bulk in Siebel is to use Siebel EIM. However sometimes developers don't have time to create EIM job, test it in lower environments and get it working in some days, and business can't wait for that long, And pesky admin team won't give developers the SQL access to production.<br>
<br>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBWqfCdzmeuFX3Bl-63UNp2o50ADIM2e5y3WuUJteyTA_1l0PzbYC47H_eSVMV7TCzzQ11Wg5sZzIyUhht6w1aK2vXt4B6sE489NE_YFQTzDGAvWGjxNjMbD9356hZcTdYl0Ki48raCQUt/s1600/SiebelScripting.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1080" data-original-width="1080" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBWqfCdzmeuFX3Bl-63UNp2o50ADIM2e5y3WuUJteyTA_1l0PzbYC47H_eSVMV7TCzzQ11Wg5sZzIyUhht6w1aK2vXt4B6sE489NE_YFQTzDGAvWGjxNjMbD9356hZcTdYl0Ki48raCQUt/s320/SiebelScripting.jpg" width="320"></a></div>
<br>
<br>
Then this is the last solution. Write a dirty little script and run it in business service simulator.<br>
<br>
<a href="http://howtosiebel.blogspot.com/2020/02/SBL-DAT-00523-how-to-update-bulk-records-in-siebel.html#more">Continue reading »</a>Jimhttp://www.blogger.com/profile/12540305358376025735noreply@blogger.com1New York, NY, USA40.7127753 -74.005972839.9423093 -75.296866299999991 41.483241299999996 -72.7150793tag:blogger.com,1999:blog-159518135309222917.post-39054070979818284612020-02-06T07:02:00.001-08:002020-02-06T07:03:29.235-08:00How to disable anonymous browsing in Siebel REST API?This is one of the most funny bug registered by Oracle. (Just after the obscene ROW IDs) .<br />
Although this is applicable only for IP15, but do keep this in mind in case you are doing POCs on any customer.<br />
<br />
Oracle left partially built config in the Java container sub system thus all the traffic coming through the system is passthrough. Kudos to the product team to get the feature out of the door :)<br />
<br />
To disable this all you need to do is to delete the JavaContainerPropSub in named subsystems. This will cause authentication error in the component thus it won't turn on and you can in turn switch off the anonymous browsing.Jimhttp://www.blogger.com/profile/12540305358376025735noreply@blogger.com0tag:blogger.com,1999:blog-159518135309222917.post-61942431645024706772020-02-06T06:35:00.003-08:002020-02-09T03:26:54.979-08:00Siebel REST API Interview Questions<h4>
Question 1 : What are REST APIs? </h4>
Answer: REST stands for Representational state transfer. It is a protocol for data transfer using HTTP methods.<br>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/7YcW25PHnAA/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/7YcW25PHnAA?feature=player_embedded" width="320"></iframe></div>
<br>
<br>
Usually REST API uses JSON format to communicate as it is simpler and lightweight than XML. <br>
<br>
<br>
<a href="http://howtosiebel.blogspot.com/2020/02/siebel-rest-api-interview-questions.html#more">Continue reading »</a>Jimhttp://www.blogger.com/profile/12540305358376025735noreply@blogger.com0New York, NY, USA40.7127753 -74.005972839.9423093 -75.296866299999991 41.483241299999996 -72.7150793tag:blogger.com,1999:blog-159518135309222917.post-17368747719747485502020-01-19T05:22:00.003-08:002020-01-19T05:34:31.246-08:00How to calculate age from date of birth using calculated fields?Hi Readers,<br />
<br />
This is a new series, where I will show you how things are done in Siebel and how the same thing can be done in Salesforce. Will leave the decision upto you to tell me which one is easier and which one is better.<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<ul>
</ul>
Step 1: Create first calculated field to output date in YYYYMMDD
Field Type: <b>DTYPE_NUMBER</b><br />
<ul>
<blockquote>
ToChar(Today(),’YYYY’) + ToChar(Today(),’MM’) + ToChar(Today(), ‘DD’)</blockquote>
</ul>
Step 2: Create second calculated field to convert birth date field in YYYYMMDD : Field Type: <b>DTYPE_NUMBER</b><br />
<ul>
<blockquote>
ToChar([Date Of Birth], ‘YYYY’) + ToChar([Date Of Birth], ‘MM’) + ToChar([Date Of Birth], ‘DD’) </blockquote>
</ul>
Step 3 : Create another field to use the fields created above as : Field Type: <b>DTYPE_TEXT</b> <br />
<ul>
<blockquote>
The Under Age flag : IIf(([Step1] – [Step2]) < “180000”, “Y”, “N”)</blockquote>
</ul>
<br />
We are doing these three steps mainly because :<br />
<ol>
<li>Siebel does not have good list of functions supported in calculated fields. </li>
<li>Siebel does not have data type conversion in calculated fields. </li>
</ol>
Lets don't refer to invoke service method due to its own complication and performance issues it can cause.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEic_qIqgw7p9OUaQNxE_V4Np9a-m_GmHVn7XKfl08i9c_s0D3fAWxuKXw-lUfy7P9F-dAX5M6562QhO-P_cj9_R3pnauIAwwzOiyW0z53Gk_14BF5RhTz1C6OuamMAV9eZr4DFGpvWLca-U/s1600/InvokeServiceMethod_Siebel.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="254" data-original-width="698" height="145" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEic_qIqgw7p9OUaQNxE_V4Np9a-m_GmHVn7XKfl08i9c_s0D3fAWxuKXw-lUfy7P9F-dAX5M6562QhO-P_cj9_R3pnauIAwwzOiyW0z53Gk_14BF5RhTz1C6OuamMAV9eZr4DFGpvWLca-U/s400/InvokeServiceMethod_Siebel.png" width="400" /></a></div>
<br />
In Salesforce if you have to do this activity, you just need one formula field with following calculation.<br />
<br />
<blockquote class="tr_bq">
IF( NOT( ISBLANK( Birthdate ) ) ,<br />
IF( DATE( 2000 , MONTH( Birthdate ) , DAY( Birthdate ) ) <= DATE( 2000 , MONTH( TODAY() ) , DAY( TODAY() ) ),<br />
YEAR (Today()) - YEAR ( Birthdate ),<br />
YEAR (Today()) - YEAR ( Birthdate ) -1 ),<br />
null)</blockquote>
<br />
<br />
Learn more about list of functions available in Siebel here: <a href="https://docs.oracle.com/cd/B40099_02/books/ToolsDevRef/ToolsDevRef_Operators8.html">https://docs.oracle.com/cd/B40099_02/books/ToolsDevRef/ToolsDevRef_Operators8.html</a><br />
<br />
and Full list of salesforce functions are here: <a href="https://help.salesforce.com/articleView?id=customize_functions.htm&type=5">https://help.salesforce.com/articleView?id=customize_functions.htm&type=5</a><br />
<br />
<br />Jimhttp://www.blogger.com/profile/12540305358376025735noreply@blogger.com2tag:blogger.com,1999:blog-159518135309222917.post-68740267750794119882020-01-16T01:04:00.002-08:002020-01-17T18:39:53.296-08:00State of Siebel in 2020?Hello Readers,<br />
<br />
It has been a while since I have posted on this blog. I have moved on from Siebel the second time. Still see some of my friends working in Siebel and keep getting furious.<br />
<br />
Just wondering what are my readers are doing in 2020? Please take some time out and let us know the actual state of Siebel this year.<br />
<br />
<iframe frameborder="0" height="562" marginheight="0" marginwidth="0" src="https://docs.google.com/forms/d/e/1FAIpQLSfcdKxZOnS9iPDt3Tuw1T-nvrvAenIxQTM-T_2x2um6CrmpFQ/viewform?embedded=true" width="640">Loading…</iframe>
<br />
Live results<br />
<br /><iframe width="600" height="371" seamless frameborder="0" scrolling="no" src="https://docs.google.com/spreadsheets/d/e/2PACX-1vTxozI0RLg4gux7fHu14nyK4mbNfuloLARaDbcvjibdcPl32JriJT7xv97u5J7vw7Or2ZZLibHT3Reo/pubchart?oid=453889516&format=interactive"></iframe>
<br />
<br />
<br />
<br />
Many things have happened since I last posted.<br />
Siebel unleashed vanished :(<br />
<iframe allowfullscreen="" class="giphy-embed" frameborder="0" height="272" src="https://giphy.com/embed/2WxWfiavndgcM" width="480"></iframe><br />
<a href="https://giphy.com/gifs/crying-2WxWfiavndgcM">via GIPHY</a><br />
<br />
No more posts on Impossible Siebel :(<br />
<iframe allowfullscreen="" class="giphy-embed" frameborder="0" height="480" src="https://giphy.com/embed/pynZagVcYxVUk" width="480"></iframe><br />
<a href="https://giphy.com/gifs/the-office-michael-heartbreak-pynZagVcYxVUk">via GIPHY</a><br />
<br />
No more posts on Siebel Mantra :(<br />
<iframe allowfullscreen="" class="giphy-embed" frameborder="0" height="382" src="https://giphy.com/embed/3ohzdMk3uz9WSpdTvW" width="480"></iframe><br />
<a href="https://giphy.com/gifs/crying-omg-kid-3ohzdMk3uz9WSpdTvW">via GIPHY</a><br />
<br />
And such a once a wonderful blogging community just vanished.<br />
<br />
I have stopped reading siebelhub.com, hope it is doing great. I hope you all are doing great. Would love to read your comments and connect.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjM2P2rtzEr2v2hPBa19HomfreobcKQEWb3A5JGThcpkkAIe3Sl6dFmjK1r5sTtiauqft-tQaYdsrMiioIr1KjEMwA5dRA6N7Fq0rwwc_Ke-CnZ0uTnHeuIi668cxfWag1044Wu14I7GTS1/s1600/2020.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1280" height="1" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjM2P2rtzEr2v2hPBa19HomfreobcKQEWb3A5JGThcpkkAIe3Sl6dFmjK1r5sTtiauqft-tQaYdsrMiioIr1KjEMwA5dRA6N7Fq0rwwc_Ke-CnZ0uTnHeuIi668cxfWag1044Wu14I7GTS1/s200/2020.jpg" width="1" /></a></div>
<br />
<br />
<br />
<br />
<br />
-JimJimhttp://www.blogger.com/profile/12540305358376025735noreply@blogger.com2Port Jersey Blvd, Jersey City, NJ 07305, USA40.676661278966066 -74.05109213281252839.906195278966067 -75.341985632812523 41.447127278966065 -72.760198632812532tag:blogger.com,1999:blog-159518135309222917.post-32587987605720572602016-12-21T05:08:00.001-08:002016-12-29T19:44:01.729-08:00Gift yourself salesforce skills this holiday season!Either you are seasoned Siebel developer or just starting struggling with Siebel, I am sure learning salesforce would have crossed your mind. No doubt Siebel is the best full fledged CRM product out there, but there is no harm is learning new stuff.<br />
<br />
I have set a challenge for myself to learn salesforce this holiday season and seriously try for salesforce consulting job roles in the new year. I want to invite all How To Siebel readers to join me in journey and learn salesforce together.<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://salesforce-unleashed.blogspot.com/" imageanchor="1" style="margin-left: auto; margin-right: auto;" target="_blank"><img border="0" height="204" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZN7zLcewsXupqJRaMfQ_VmYpVWISP39yI4B3lyj3UKlrn7qMOHZ-8Tj4Ujq7_v77rAbspMkfL8NwC0aWCdOfoZgxMyGUhq-OKEDUQBFxDFhwnLz5ny6FGBprDqjoYAZaeUBig4uZIs00h/s320/salesforce-unleashed.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><span style="font-size: small;"><b><a href="http://salesforce-unleashed.blogspot.com/" target="_blank">Salesforce Unleashed</a></b></span></td></tr>
</tbody></table>
<br />
I am going to learn salesforce by myself by going through trail head and online tutorials, and going to share my progress on my new blog<br />
<a href="http://salesforce-unleashed.blogspot.com/" target="_blank">http://salesforce-unleashed.blogspot.com </a><br />
<br />
To make it easy please follow my latest posts :<br />
<a href="https://salesforce-unleashed.blogspot.com/2016/12/getting-started.html" target="_blank">How to get started with salesforce</a><br />
<a href="https://salesforce-unleashed.blogspot.com/2016/12/how-to-earn-your-first-salesforce-badge.html" target="_blank">Screen cast of earning first trail head badge.</a><br />
<a href="http://salesforce-unleashed.blogspot.com/p/question-and-answers.html" target="_blank">Question and Answers</a><br />
<br />
At last I will leave you with a quote from Dr Seuss<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgRc_KK-vn7trTKmIQj8dgghHk-RpoD5aj-QDOL9GiR1mWbrQm-YLahSm1ZwYZh09xcQI4nL9_HcMt6RU24vEItCQtTDS5cIqsTX51kcYegO2DyzE0q9D_b4CCDFoO2OAVKEsGbwh8PHUI/s1600/DrSeuss.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="317" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgRc_KK-vn7trTKmIQj8dgghHk-RpoD5aj-QDOL9GiR1mWbrQm-YLahSm1ZwYZh09xcQI4nL9_HcMt6RU24vEItCQtTDS5cIqsTX51kcYegO2DyzE0q9D_b4CCDFoO2OAVKEsGbwh8PHUI/s400/DrSeuss.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<br />
And recommend you to come and follow me on my new Salesforce Unleashed blog and keep up with my salesforce learning plan.Jimhttp://www.blogger.com/profile/12540305358376025735noreply@blogger.com1tag:blogger.com,1999:blog-159518135309222917.post-44787759948444891002016-12-21T04:57:00.002-08:002016-12-21T04:57:55.613-08:00Override windows idle timeout!As a Siebel Consultant you must have come across windows machines with extremely short idle timeout. I guess I am not the only one who hates to type in password again and again, situation becomes worst when machine logs off or gets powered off due to idle session timeout!!<br>
<br>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhL-x9G9hjDubOi2O5nVpaIcz5PNbRfO_EVkyD67j_of5J4R1QQDolAby5CZ6GwhIx_dKC4j5SfoX9IUPoJeptS4ZDhbWKjvvbgH3adhWFd1zxnD8rceDiBU2Ff5pfe6umFBCgp9kZSR_PM/s1600/Windows+Timeout.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhL-x9G9hjDubOi2O5nVpaIcz5PNbRfO_EVkyD67j_of5J4R1QQDolAby5CZ6GwhIx_dKC4j5SfoX9IUPoJeptS4ZDhbWKjvvbgH3adhWFd1zxnD8rceDiBU2Ff5pfe6umFBCgp9kZSR_PM/s400/Windows+Timeout.jpg" width="400"></a></div>
Out of frustration, I started to hunt for a solution. Keep in mind I don't have privileges to change setting on the OS.<br>
<br>
<a href="http://howtosiebel.blogspot.com/2016/12/override-windows-idle-timeout.html#more">Continue reading »</a>Jimhttp://www.blogger.com/profile/12540305358376025735noreply@blogger.com0tag:blogger.com,1999:blog-159518135309222917.post-50418311920827432992016-12-12T05:50:00.000-08:002016-12-13T05:52:58.590-08:00How to hide an applet conditionally in Siebel Open UI??While working on Siebel Open UI - UX improvement projects numerous times we need to access data through PM and PR layer without showing data to user.<br>
For such requirements you just wish if it was possible to have applet in view with all the required fields and methods you need, but just shouldn't show up on UI.<br>
<br>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnBjfstMshexrAnyJURtoEk3wkcJ4ZqaCtgoJVXMJ6A6GVx_Gcy3YQScec2dxrSPGBoXl5jH9EnB9wciAXx2bZmpU_HO_XKxFbQddmJ8hD9qAhQyEhwK0vhXxLXXubUL0_oalJL3qTK-AX/s1600/tmp_30431-Hide+applet+in+siebel-878907938.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnBjfstMshexrAnyJURtoEk3wkcJ4ZqaCtgoJVXMJ6A6GVx_Gcy3YQScec2dxrSPGBoXl5jH9EnB9wciAXx2bZmpU_HO_XKxFbQddmJ8hD9qAhQyEhwK0vhXxLXXubUL0_oalJL3qTK-AX/s400/tmp_30431-Hide+applet+in+siebel-878907938.jpg" width="400"></a></div>
<br>
Well that is possible, there are two ways to handle this on the client side.<br>
<br>
<a href="http://howtosiebel.blogspot.com/2016/12/how-to-hide-applet-in-siebel-open-ui.html#more">Continue reading »</a>Jimhttp://www.blogger.com/profile/12540305358376025735noreply@blogger.com1tag:blogger.com,1999:blog-159518135309222917.post-91310779023184568642016-12-08T04:14:00.000-08:002016-12-08T04:14:10.101-08:00How to find the siebel log files using command line?While working on Siebel projects you must have come across numerous occasions where you need to find specific log with specific error or any one user name or any one xml value which is causing trouble.<br>
<br><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCnFRPP85Dd62U3gmg_Ie0V_ZYgbU18bQzZWRfn441i8paYZNgRHpVNiLc0errctRZUGRfId2yDjbPsxRL9bM8D9x7z-k8JinP-D0RnKkAsQ8GE-wja8e7MNIyUiYhMjm8I1j2vqASQ6sB/s1600/Find+siebel+log+file+using+command+line.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="225" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCnFRPP85Dd62U3gmg_Ie0V_ZYgbU18bQzZWRfn441i8paYZNgRHpVNiLc0errctRZUGRfId2yDjbPsxRL9bM8D9x7z-k8JinP-D0RnKkAsQ8GE-wja8e7MNIyUiYhMjm8I1j2vqASQ6sB/s400/Find+siebel+log+file+using+command+line.jpg" width="400"></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRDA-7rc5DTD2bdW-_9Krrww9OuVc0-9Jc5afCq3nGIG2t3cM3eQkDWaogEZswe7wArQ8U0O2exJQT0PjyxTmIZ7fjp5dJvb1jGnAa-Or4LG1sMpX_1qaLsEAwb4SSWuzq_h3AQlNDJSql/s1600/Siebel+EAI+Log+Files.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br></a></div>
<br>
Usually this type of task involve tedious task of opening all the log files during the time duration one by one. <br>
<br>
<a href="http://howtosiebel.blogspot.com/2016/12/how-to-find-log-files-command-line.html#more">Continue reading »</a>Jimhttp://www.blogger.com/profile/12540305358376025735noreply@blogger.com3tag:blogger.com,1999:blog-159518135309222917.post-48553038343093787472016-11-11T02:23:00.001-08:002016-11-11T02:23:50.382-08:00Date Manipulation in Siebel eScriptWe have seen how to<a href="http://howtosiebel.blogspot.com/2013/06/date-manipulation-in-siebel-workflows.html" target="_blank"> manipulate date values in Siebel Workflows</a>. In this post we will see how can we work with date variables in Siebel eScript and use them to work with date fields.<br />
<br />
I am not the author of these functions, It is just collection of useful functions that I have implemented in few projects. Please feel free to share your coding tricks for date variables in comments below.<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhK-kjJvDW6mMnBS3XKsvIb5MpBo0mvd7xB-hJFH18PL9zoJ6AFz2rkAKjLG3jbsPOvfQhSve0UEJ2ICFoxrasm1t0jmSFz-nD7yvitEhU2QhfE4QlSu-VcMq8FDIdgMeRxWvgcIWeo_eeV/s1600/Date+Functions.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img alt="Date Functions in Siebel eScript" border="0" height="185" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhK-kjJvDW6mMnBS3XKsvIb5MpBo0mvd7xB-hJFH18PL9zoJ6AFz2rkAKjLG3jbsPOvfQhSve0UEJ2ICFoxrasm1t0jmSFz-nD7yvitEhU2QhfE4QlSu-VcMq8FDIdgMeRxWvgcIWeo_eeV/s400/Date+Functions.png" title="" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Date Functions in Siebel eScript</td></tr>
</tbody></table>
<br />
<h3>
How to add days to a date?</h3>
<br />
<blockquote class="tr_bq">
<span><span>function AddToDate(sourceDate, nDays, nHours, nMinutes, nSeconds, nsign)<br clear="none" />
{<br clear="none" /> // sourceDate : Date object<br clear="none" />
// nDays, nHours , nMinutes , nSeconds : Integer numbers<br clear="none" />
// nsign : Can have two values : 1 or 1<br clear="none" />
// 1 indicates to ADD to the sourceDate<br clear="none" />
// 1 indicates to SUBTRACT from the sourceDate<br clear="none" />
// Returns : A date object, after adding/subtracting<br clear="none" />
// ndays,hNours,nMinutes<br clear="none" />
// and nseconds to the sourceDate.<br clear="none" />
var retDate = sourceDate;<br clear="none" />
retDate.setDate(retDate.getDate()+nsign*nDays);<br clear="none" />
retDate.setHours(retDate.getHours()+nsign*nHours);<br clear="none" />
retDate.setMinutes(retDate.getMinutes()+nsign*nMinutes);<br clear="none" />
retDate.setSeconds(retDate.getSeconds()+nsign*nSeconds);<br clear="none" />
return (retDate);<br clear="none" />
}</span></span>
</blockquote>
<h3>
How to find difference of days between two dates?</h3>
<blockquote class="tr_bq">
function DiffDays(date1, date2)<br />{// date1 : Date object<br />// date2 : Date object<br />// Returns : Number of days between date1 and date2<br />return ((date2.getTime() - date1.getTime())/(1000*60*60*24));<br />}</blockquote>
<br />
<h3>
How to convert date object to String?</h3>
<blockquote class="tr_bq">
<span><span>function DateToString(dDate)</span></span><br clear="none" /><span><span>
{</span></span><br clear="none" /><span><span>
</span></span><span><span> // dDate : Date object</span></span><br clear="none" /><span><span>
// Returns : A string with the format "mm/dd/yyyy" or "mm/dd/yyyy</span></span><br clear="none" /><span><span>
hh:mm:ss"</span></span><br clear="none" /><span><span>
var sMonth = ToString(dDate.getMonth() + 1);</span></span><br clear="none" /><span><span>
if (sMonth.length == 1) {sMonth = "0" + sMonth;}</span></span><br clear="none" /><span><span>
var sDay = ToString(dDate.getDate());</span></span><br clear="none" /><span><span>
if (sDay.length == 1) {sDay = "0" + sDay;}</span></span><br clear="none" /><span><span>
var sHours = ToString(dDate.getHours());</span></span><br clear="none" /><span><span>
if (sHours.length == 1) {sHours = "0" + sHours;}</span></span><br clear="none" /><span><span>
var sMinutes = ToString(dDate.getMinutes());</span></span><br clear="none" /><span><span>
if (sMinutes.length == 1) {sMinutes = "0" + sMinutes;}</span></span><br clear="none" /><span><span>
var sSeconds = ToString(dDate.getSeconds());</span></span><br clear="none" /><span><span>
if (sSeconds.length == 1) {sSeconds = "0" + sSeconds;}</span></span><br clear="none" /><span><span>
if (sHours == "00" && sMinutes == "00" && sSeconds == "00")</span></span><br clear="none" /><span><span>
return (sMonth +"/"+ sDay +"/" + dDate.getFullYear())</span></span><br clear="none" /><span><span>
else</span></span><br clear="none" /><span><span>
return (sMonth +"/"+ sDay +"/" + dDate.getFullYear() +"</span></span><br clear="none" /><span><span>
"+sHours+":"+sMinutes+":"+sSeconds);</span></span><br clear="none" /><span><span></span></span><br clear="none" /><span><span>
}</span></span><br clear="none" /><span><span></span></span></blockquote>
<h3>
How to convert String to Date Object?</h3>
<blockquote class="tr_bq">
<br />
<span><span>function StringToDate(sDate)<br clear="none" />
{<br clear="none" />
// sDate : A string with the format "mm/dd/yyyy" or "mm/dd/yyyy<br clear="none" />
hh:mm:ss"<br clear="none" />
// Returns : a Date object<br clear="none" />
var ArDateTime = sDate.split (" ");<br clear="none" />
var ArDate = ArDateTime[0];<br clear="none" />
var splitDate = ArDate.split ("/");<br clear="none" />
var nDay = ToNumber(splitDate[1]);<br clear="none" />
ar nMonth = ToNumber(splitDate[0]);<br clear="none" />
var nYear = ToNumber(splitDate[2]);<br clear="none" />
if (ArDateTime.length == 1)<br clear="none" />
return (new Date(nYear, nMonth1 , nDay))<br clear="none" />
else<br clear="none" />
{ var ArTime = ArDateTime[1];<br clear="none" />
var splitTime = ArTime.split(":");<br clear="none" />
if (splitTime[0]=="00" && splitTime[1]=="00" && splitTime[2]=="00"<br clear="none" />
)<br clear="none" />
return (new Date(nYear, nMonth1 , nDay))<br clear="none" />
else<br clear="none" />
{<br clear="none" />
var nHours = ToNumber(splitTime[0]);<br clear="none" />
var nMinutes = ToNumber(splitTime[1]);<br clear="none" />
var nSeconds = ToNumber(splitTime[2]);<br clear="none" />
return (new Date(nYear,nMonth1,nDay, nHours, nMinutes,<br clear="none" />
nSeconds))<br clear="none" />
}<br clear="none" />
}<br clear="none" />
}</span></span></blockquote>
<br />
<h3>
How to find records created in past 5 days? </h3>
<blockquote class="tr_bq">
<span><div>
<span>var dToday = new Date();</span></div>
</span><span><div>
<span>var FiveDaysAgo = AddToDate(today,5,0,0,0,1);</span></div>
</span><span><div>
<span>var bo = TheApplication().GetBusObject("Service Request");</span></div>
</span><span><div>
<span>var bc = bo.GetBusComp("Service Request");</span></div>
</span><span><div>
<span>bc.ActivateField("Description");</span></div>
</span><span><div>
<span>bc.ClearToQuery();</span></div>
</span><span><div>
<span>bc.SetViewMode(AllView);</span></div>
</span><span><div>
<span>bc.SetSearchSpec ("Created", ">= " + "'" + DateToString(FiveDaysAgo)</span></div>
</span><span><div>
<span>+ "'");</span></div>
<div>
<span>bc.ExecuteQuery();</span></div>
<div>
<span>TheApplication().RaiseErrorText(bc.CountRecords());</span></div>
</span></blockquote>
<h3>
How to compare two dates?</h3>
<blockquote class="tr_bq">
<span><span>function CompareDates(dte_from,dte_to)<br clear="none" />
{<br clear="none" />
/* Function to compare two dates.. will return 1 if dte_from is greater than dte_to else will return 0 */<br clear="none" />
var myM = ToInteger(dte_from.getMonth()+1);<br clear="none" />
var myD = ToInteger(dte_from.getDate());<br clear="none" />
var myY = ToInteger(dte_from.getFullYear());<br clear="none" />
var toM = ToInteger(dte_to.getMonth()+1);<br clear="none" />
var toD = ToInteger(dte_to.getDate());<br clear="none" />
var toY = ToInteger(dte_to.getFullYear());<br clear="none" />
if ((myY < toY)||((myY==toY)&&(myM < toM))||((myY==toY)&&(myM==toM)&&(myD < = toD)))<br clear="none" />
{<br clear="none" />
return(0);<br clear="none" />
}<br clear="none" />
else<br clear="none" />
{<br clear="none" />
return(1);<br clear="none" />
}<br clear="none" />
}</span></span>
</blockquote>
<h3>
How to find if date is a future date?</h3>
<blockquote class="tr_bq">
<br />
<span><span>function IsFutureDate(mydate)<br clear="none" />
{<br clear="none" />
/*<br clear="none" />
* Function to check if a date is greater than today<br clear="none" />
* Returns 0 if Current Date is larger<br clear="none" />
* 1 if Passed Variable is larger<br clear="none" />
*/<br clear="none" /><br clear="none" />
var istoday = new Date(); <br clear="none" />
var myM = ToInteger(mydate.getMonth()+1);<br clear="none" />
var myD = ToInteger(mydate.getDate());<br clear="none" />
var myY = ToInteger(mydate.getFullYear());<br clear="none" />
var toM = ToInteger(istoday.getMonth()+1);<br clear="none" />
var toD = ToInteger(istoday.getDate());<br clear="none" />
var toY = ToInteger(istoday.getFullYear());<br clear="none" />
if ((myY < toY)||((myY==toY)&&(myM < toM))||((myY==toY)&&(myM==toM)&&(myD < = toD)))<br clear="none" />
{<br clear="none" />
return(0);<br clear="none" />
}<br clear="none" />
else<br clear="none" />
{<br clear="none" />
return(1);<br clear="none" />
}<br clear="none" />
}</span></span></blockquote>
<br />
<b>** Code is provided for conceptual purpose only, please test the code explained throughly before implementing in production environment.</b>Jimhttp://www.blogger.com/profile/12540305358376025735noreply@blogger.com0tag:blogger.com,1999:blog-159518135309222917.post-22554049467467709482016-07-09T02:12:00.000-07:002016-07-09T02:12:10.723-07:00How to add delay in Siebel eScript/Workflow?<div>
<u>Disclaimer: Ideally you should never have to create delay in Siebel, you must be doing something absolutely wrong or something amazingly innovative if you have to add delay in Siebel script or Siebel workflows.</u></div>
<div>
</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEge3tATT6TDQEJdTBsBpX0rRAGv3KG48PHXEwT1KHsLjV_NQDxH3xjDA1oWBMD2N0MXQgxZ7B7AdDSrnWuosXuGVrpCYxW7Xoqwt47Ha3NFFTybNL4lTWw3hujnu3wQxFJaf3Ga__oNV0wf/s1600/Add+delay+in+Script.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="235" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEge3tATT6TDQEJdTBsBpX0rRAGv3KG48PHXEwT1KHsLjV_NQDxH3xjDA1oWBMD2N0MXQgxZ7B7AdDSrnWuosXuGVrpCYxW7Xoqwt47Ha3NFFTybNL4lTWw3hujnu3wQxFJaf3Ga__oNV0wf/s400/Add+delay+in+Script.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">How to add some delay in Siebel Script?</td><td class="tr-caption" style="text-align: center;"><br /></td></tr>
</tbody></table>
<div>
</div>
<div>
<br /></div>
<div>
Let's assume for some(god forbid) reason you need to create delay of some seconds in Siebel escript or workflow, then how will you do it? </div>
<div>
<br /></div>
<div>
Siebel provides sleep step in workflows that can be used to create delay for interactive workflows, but there is no way (documented) to create delay for service workflows or in scripts. Let's see what workarounds do we have.</div>
<div>
<br /></div>
<div>
<u><b>Solution 1: User operating system timeout in script. </b></u></div>
<div>
<u><b></b></u></div>
<br />
Siebel can invoke operating system commands by Clib.system function, these functions wait till time command is successfully completed by operating system. <br />
<blockquote class="tr_bq">
<div>
Clib.System("timeout 2"); // Two second delay in windows hosted environment</div>
</blockquote>
<br />
<div>
</div>
<div>
or </div>
<div>
</div>
<blockquote class="tr_bq">
Clib.system("sleep 2"); // Two second Linux hosted environment.</blockquote>
<br />
<div>
</div>
<div>
This instruction will call operating system timeout command to create delay and Siebel will wait for command to finish and only after the specified time Siebel will continue with rest of the code. </div>
<div>
<br /></div>
<div>
</div>
<div>
<u><b>Solution 2: Use EAI File Transport service to read an non existent file and with FileSleepTime parameter to create delay.</b></u></div>
<div>
<br /></div>
<div>
This will cause Siebel to wait for file for at least time specified before timing out, an then proceed with workflow. Make sure you use exception branch in for this step to proceed.</div>
<div>
<br /></div>
<div>
<u><b>Solution 3: Use asynchronous server request business service to execute subprocess at specified time in future. </b></u></div>
<div>
This solution doesn't garuntee the execution on that time, but works perfectly fine incase there is some degree of tolerance.</div>
<div>
<br /></div>
Jimhttp://www.blogger.com/profile/12540305358376025735noreply@blogger.com4tag:blogger.com,1999:blog-159518135309222917.post-6256362513729619302016-07-07T06:44:00.000-07:002016-11-18T15:49:34.516-08:00How to customize siebel error messages?<br />
<div>
With IP14 Oracle has provided ErrorObjectRenderer.js to replace browser based dialogs with jQuery based dialogs. Problem with browser based dialogs is that users can accidently disable them. Thus it is not a good place to show error messages or important instructions to the user. </div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnFGIRb9PWg64OieP_3n5EDLuIHqbYi7wB4xQxvGTnhtOYG9FutufFJLSpnxk9M4ClyX1WlC9uEfTVxjvKqpefp29ZkgsDe2b_VJUZFFauvtrn7OZ1zLCPq_M5J-g-y5TVLLpcBWX9Dnqk/s1600/Standard+Alert.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="160" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhnFGIRb9PWg64OieP_3n5EDLuIHqbYi7wB4xQxvGTnhtOYG9FutufFJLSpnxk9M4ClyX1WlC9uEfTVxjvKqpefp29ZkgsDe2b_VJUZFFauvtrn7OZ1zLCPq_M5J-g-y5TVLLpcBWX9Dnqk/s400/Standard+Alert.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Standard alert()</td></tr>
</tbody></table>
<div>
</div>
<div>
However jQuery based dialogs always shows up on the screen and user have to click ok always to get past them.</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjz9VtWLyk3tj3jf5-L9BemZrPkKcbOTYQ7JMMyxbASOQ-6xFK6iVs44jmhGiRMqleyIwZe3FngB-xwe0zb00n0wOA2Y3NH3mmkXtIajYZcdlGeofr8gwFGsjDCAMm2rkCwVGzSFqMo-owH/s1600/Dialog.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjz9VtWLyk3tj3jf5-L9BemZrPkKcbOTYQ7JMMyxbASOQ-6xFK6iVs44jmhGiRMqleyIwZe3FngB-xwe0zb00n0wOA2Y3NH3mmkXtIajYZcdlGeofr8gwFGsjDCAMm2rkCwVGzSFqMo-owH/s1600/Dialog.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">jQuery Dialog</td></tr>
</tbody></table>
<div>
<br /></div>
<div>
Lets see how we can achieve the same functionality in IP13. </div>
<div>
<br />
Open UI framework uses browser alert() function to popup error messages. In Javascript it is possible to override any function including browser native functions like alert and change it according to the business needs.<br />
<br />
Simplest way to override alert is to define a function alert() in your code, this will force your browser to call your custom function all the time whenever Siebel calls alert() instead of browser's native function. .</div>
<blockquote class="tr_bq">
<div>
<br /></div>
<div>
function alert(str){</div>
<div>
$("<div id='my_error'>" + str + "</div>").dialog({<br />
<b>modal: true,</b></div>
<div>
buttons: [{ id: "btn-accept",</div>
<div>
text: "Ok",</div>
<div>
click: function () { <b>$(this).dialog("close"); </b>} </div>
<div>
}]</div>
<div>
});</div>
<div>
}</div>
</blockquote>
<div>
<br /></div>
<div>
Just add the above code in post load file and job done, after executing this code all the error messages will shown in jQuery dialog which will always pop-up. See it in action on <a href="http://codepen.io/howtosiebel/pen/kXoxrw" rel="nofollow" target="_blank">codepen</a><br />
<br />
Happy alerting ! </div>
<div>
</div>
<div>
</div>
<div>
<div>
<i><u>This is trick is shared by avid reader TJ, please share your tips and tricks in comments below.<b> </b></u></i></div>
</div>
Jimhttp://www.blogger.com/profile/12540305358376025735noreply@blogger.com4tag:blogger.com,1999:blog-159518135309222917.post-38778824194174226142016-07-03T05:00:00.000-07:002016-07-05T23:22:36.328-07:00WebServices Performance Tuning<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSCQgLF39GetOFv_2AruEMSBr58lDS2-BiWnqHdUmMe54FDSr7Z88cAc6LDLKc6LKQDn66ye0wBIn7DXHJS7KjTuLAonLA6pZ65IaQkTaMHFhiWJlNHo7pOtERVInLz1UCQkhUXSzj8hf-/s1600/Performance+Tuning.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="315" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSCQgLF39GetOFv_2AruEMSBr58lDS2-BiWnqHdUmMe54FDSr7Z88cAc6LDLKc6LKQDn66ye0wBIn7DXHJS7KjTuLAonLA6pZ65IaQkTaMHFhiWJlNHo7pOtERVInLz1UCQkhUXSzj8hf-/s640/Performance+Tuning.png" width="640" /></a></div>
<br />
<br />
<div>
Recently I have been working on high traffic and highly available web service which is hosted by Siebel. I was asked to improve performance of it. I checked all the places for any performance degradation clues, there was hardly any, all queries were on indexed columns and thin BC's were used, there was no fat whatsoever.</div>
<div>
<br /></div>
<div>
With all the logs and spool generation my focus went to these two problems. </div>
<div>
<br /></div>
<div>
1. Before every web service call Siebel was requesting file system to write read user preference file which was taking fair bit of time due to contention at file system. You might see following in logs, if user preference file is corrupted.</div>
<div>
<br /></div>
<br />
<blockquote class="tr_bq">
<br />
<div>
<span style="color: black;">ObjMgrLog Debug 5 0 2016-06-29 06:50:56 SharedFileReader: \SiebelFS\userpref\EAIUSER&Siebel Sales Enterprise.spf: Open iteration 0 failed. errcode = 2.</span></div>
</blockquote>
<br />
<div>
<br /></div>
<div>
This file read was absolutely unnecessary, luckily there was a way to turn off by setting "<b>OM - Save Preferences</b>" to <b>FALSE </b>for EAI object manager. This will make all logins to avoid looking up for user preference file.</div>
<div>
<br /></div>
<div>
2. Another useless transaction I noticed was with database. It was when Siebel tries to update the last login date on S_USER record. </div>
<div>
In logs you can see queries like these:</div>
<div>
</div>
<br />
<div>
<blockquote class="tr_bq">
UPDATE SIEBEL.S_USER SET<br />
LAST_LOGIN_TS = :7,<br />
MODIFICATION_NUM = :8,<br />
LAST_UPD_BY = :9,<br />
LAST_UPD = :10,<br />
DB_LAST_UPD = current_date,<br />
DB_LAST_UPD_SRC = :11<br />
WHERE<br />
ROW_ID = :12 AND MODIFICATION_NUM = :14;</blockquote>
</div>
<div>
</div>
<div>
This can also be turned off in recent Siebel versions by setting <b>DisableLastLoginTS</b> = <b>TRUE </b></div>
<div>
<b><br /></b></div>
<div>
Its a new parameter introduced by Oracle, you can read more about this parameter on oracle support <span style="color: black; font-family: "tahoma" , "verdana" , "helvetica" , sans-serif; font-size: 14.3px; padding: 0px 6px 0px 0px; text-align: right;">1665762.1</span></div>
<div>
<br /></div>
<div>
Hope it helps. If you have come across any such parameter which can improve performance then please share it in comments below.</div>
Jimhttp://www.blogger.com/profile/12540305358376025735noreply@blogger.com3New York, NY, USA40.7127837 -74.00594130000001840.3275957 -74.651388300000022 41.0979717 -73.360494300000013tag:blogger.com,1999:blog-159518135309222917.post-69103863431006002232016-06-23T05:39:00.000-07:002016-06-23T05:42:32.432-07:00Just one Elastic applet?<div>
Oracle introduced wonderful elastic list applets with IP16, this feature shrinks list applet size if there are no or less records needs to be displayed. However this doesn't always looks nice, specially in MVG applets and pick applets.</div>
<div>
</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZfzo2CFWJ1BiVNjOC2Gp3lJUeJrvW6ImWUIH5WTC-D4qCnMs4cZD4kMEuATUEOJmtA3QtLeUcQfQoebihIC16jsNeA3owSTcANS6EQOqCIKjX3sfQq4nPVjWX35J5KlY7EqtC0bWCgFOh/s1600/Elastic+Applet+MVG.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="237" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZfzo2CFWJ1BiVNjOC2Gp3lJUeJrvW6ImWUIH5WTC-D4qCnMs4cZD4kMEuATUEOJmtA3QtLeUcQfQoebihIC16jsNeA3owSTcANS6EQOqCIKjX3sfQq4nPVjWX35J5KlY7EqtC0bWCgFOh/s400/Elastic+Applet+MVG.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Default Elastic Applets in IP16</td></tr>
</tbody></table>
<div>
<br />
<div>
This feature can be turned off by setting <a href="http://docs.oracle.com/cd/E74890_01/books/ConfigOpenUI/customizing006.htm" rel="nofollow" target="_blank">"Enable Elastic Grid" system preference</a>, but it is turned off for entire application. That makes me think is there any way we can make only one applet as elastic applet? Answer is yes :)<br />
<br />
</div>
<div>
</div>
<div>
<div>
Neel on <a href="http://siebelunleashed.com/elastic-list-applets-siebel-ip-2015/" rel="nofollow" target="_blank">Siebel Unleashed </a>published beautiful trick to back port elastic applets into IP15. Absolutely splendid! This trick can be extended to make only few applets Elastic. </div>
<br />
</div>
<div>
To make all list applets Elastic add following in custom CSS file:<br />
<blockquote class="tr_bq">
<b>.ui-jqgrid-bdiv{max-height:340px !important; height:auto !important;}</b></blockquote>
</div>
<div>
To make only one applet Elastic (After turning of the<a href="http://docs.oracle.com/cd/E74890_01/books/ConfigOpenUI/customizing006.htm" rel="nofollow" target="_blank"> system preference</a>) add following CSS :<br />
<blockquote>
div[title="<b>Line Items List Applet</b>"] div.ui-jqgrid-bdiv { <b>height: auto !important</b>}</blockquote>
<br />
By preceding another div selector to the CSS rule we can instruct browser to apply CSS style only if applet name is : "Line Items List Applet". One can use this trick to change other UI attributes for specific applets and apply different styling.
</div>
<div>
</div>
<div>
<br />
<br />
Happy Styling :)</div>
</div>
Jimhttp://www.blogger.com/profile/12540305358376025735noreply@blogger.com5New York, NY, USA40.7127837 -74.00594130000001840.3275957 -74.651388300000022 41.0979717 -73.360494300000013tag:blogger.com,1999:blog-159518135309222917.post-54102326879652425132016-06-21T06:55:00.000-07:002016-06-21T06:55:02.239-07:00Siebel Tools and Windows 10Those who have been following blog closely would know from my <a href="http://howtosiebel.blogspot.com/2016/06/download-eai-json-converter-v2.html" target="_blank">latest demo video</a> that I have been using windows 10 and Siebel IP16 for experimentation. <br />
<br />
One can easily install Siebel Tools and client on windows 10 and run it on Oracle XE with Sample database, however Siebel IP16 being a new release it has some quirks which are not very developer friendly.<br />
<br />
Here are some problems that I get everytime: <br />
<br />
1. All workflows by default are not valid :(<br />
Workflow simulator will error out straight away even if there is nothing wrong with workflow. Validator might say workflow is not fully connected. <br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgde6sIYZFKGhALEezj5tmyhI4nQfmwfk5PFJnYk2XBUjUKZAntN07FcCbcn2yqWLRjIoflkYp3DQFsO-9yizj5q4iETHjItJefUkLE_D-VlFGFXRpds03CUj95SD1gq3AKvRcz1sAOkI1C/s1600/Invalid+workflow.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgde6sIYZFKGhALEezj5tmyhI4nQfmwfk5PFJnYk2XBUjUKZAntN07FcCbcn2yqWLRjIoflkYp3DQFsO-9yizj5q4iETHjItJefUkLE_D-VlFGFXRpds03CUj95SD1gq3AKvRcz1sAOkI1C/s1600/Invalid+workflow.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Workflow simulation on Windows 10</td></tr>
</tbody></table>
<br />
What's the fix? Just edit the workflow once and move around workflow steps. And then simulate again, this time it will work just fine.<br />
<br />
2. Tools wont boot and authentication subsystem will reject your login.<br />
<blockquote>
<b>An internal error has occurred within the authentication subsystem for the Siebel application. Please contact your system administrator for assistance.(SBL-DAT-00565)</b></blockquote>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLaGJ_8I9wKxKvgc4VtRKvt499VxcGSXDzPjesyZc-iYM80ElYsKtt5Y7kZpnZGI-of_M4iJPSe4vKY_HNNfxoYcxcC-wtJa1pST0h7WAp7ds3GN88rEpg0cJCrxuBOxwND9a7GtGbW385/s1600/SBL-DAT-00565.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLaGJ_8I9wKxKvgc4VtRKvt499VxcGSXDzPjesyZc-iYM80ElYsKtt5Y7kZpnZGI-of_M4iJPSe4vKY_HNNfxoYcxcC-wtJa1pST0h7WAp7ds3GN88rEpg0cJCrxuBOxwND9a7GtGbW385/s1600/SBL-DAT-00565.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">SBL-DAT-00565</td></tr>
</tbody></table>
<br />
Oracle XE is either crashed or booting up just give it few minutes have a coffee or something.<br />
<br />
<br />
3. Dedicated client wont start<br />
<blockquote>
<b>A system error occurred trying to start the command 'siebel.exe /c "C:\Siebel\16.0.0.0.0\Client\BIN\enu\scomm.cfg" /b "C:\Program Files (x86)\Mozilla Firefox\firefox.exe" /u SADMIN /p SADMIN /d SAMPLE_XE /h'.(SBL-DEV-00127)</b></blockquote>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFNT-fKpgC5SnBxj8gLwvQCNS0_M3D1kYIGXJ8zhPONBjJC58IoVkh3MqBil8qPcK2Ihso-kW9pu8rgkVPVgvl8kyTlvVxM-bBXFrwbXpyFgCowaahlhaOvucduqhyphenhyphenTnPCM7-MKzp3KDld/s1600/SBL-DEV-00127.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFNT-fKpgC5SnBxj8gLwvQCNS0_M3D1kYIGXJ8zhPONBjJC58IoVkh3MqBil8qPcK2Ihso-kW9pu8rgkVPVgvl8kyTlvVxM-bBXFrwbXpyFgCowaahlhaOvucduqhyphenhyphenTnPCM7-MKzp3KDld/s1600/SBL-DEV-00127.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Cant start dedicated client.</td></tr>
</tbody></table>
<br />
Just run tools as administrator and you will be fine.<br />
<br />
Hope it helps.<br />
<br />
My current setup includes: Windows 10, Siebel IP16, Oracle XE, Oracle Virtual Box containing : Windows 2008 Server which is hosting > MSSQL Server + IIS + Siebel Server IP16. Jimhttp://www.blogger.com/profile/12540305358376025735noreply@blogger.com0tag:blogger.com,1999:blog-159518135309222917.post-82651367821795997532016-06-17T06:41:00.000-07:002016-06-17T06:41:49.911-07:00Scriptless Challenge : How to constrain association list applet dynamically?<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRm5t3i5rqDIhUCw_Nqkk-aUkXgxRKRgnx5xd80PV3YG6N-VlN1OtICL7ETYf4_tdxCp8afWJQaekzMLjqz5lPP0BUlIENQ8KJW4I1a2kbNqEr8TFyPbDXSszvmTdl7vDxF_IgXgE_5XRF/s1600/scriptless+challenge.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="244" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRm5t3i5rqDIhUCw_Nqkk-aUkXgxRKRgnx5xd80PV3YG6N-VlN1OtICL7ETYf4_tdxCp8afWJQaekzMLjqz5lPP0BUlIENQ8KJW4I1a2kbNqEr8TFyPbDXSszvmTdl7vDxF_IgXgE_5XRF/s320/scriptless+challenge.png" width="320" /></a></div>
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.<br />
<br />
<u><b>Consider scenario:</b></u> 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.<br />
<br />
<u><b>Challenge: </b></u>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.<br />
<br />
Can you suggest any script less alternative?<br />
<br />
<blockquote class="tr_bq">
function WebApplet_Load () <br />
{ <br />
var BO; <br />
var ParentBC; <br />
var BC; <br />
var AccountId; <br />
BO = TheApplication().ActiveBusObject(); <br />
ParentBC = BO.GetBusComp("Opportunity"); <br />
if(ParentBC.Name = "Opportunity") <br />
{<br />
AccountId = ParentBC.GetFieldValue ("Account Id"); <br />
BC = this.BusComp(); <br />
with (BC) <br />
{ <br />
ClearToQuery(); <br />
ActivateField("Account Id"); <br />
SetSearchSpec ("Account Id", AccountId); <br />
ExecuteQuery(); <br />
}<br />
} <br />
ParentBC = null; <br />
BC = null; <br />
BO = null; <br />
}</blockquote>
<br />
<br />Jimhttp://www.blogger.com/profile/12540305358376025735noreply@blogger.com10New York, NY, USA40.7127837 -74.00594130000001839.942317700000004 -75.296834800000013 41.4832497 -72.715047800000022tag:blogger.com,1999:blog-159518135309222917.post-7306400512189043442016-06-16T04:45:00.000-07:002016-06-17T06:16:09.858-07:00How 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.<br />
<br />
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. <br />
<br />
<blockquote class="tr_bq">
button.appletButtonDis {<br />
display: none;<br />
}</blockquote>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjii0yjzLDrhy3sVWH5SzsYJy8ZgUXvG5c9glOxDd3dvFe1uOuIV7scYcMNF-ReItHrxXPAmcL6P5txhjDyIv7OtqiLD9UhkmWeBk9kJmXxLkCpnBj7WvRLjl7S1ugfoHLZW7DRZXdJZkv/s1600/Visible+Buttons2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="116" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjii0yjzLDrhy3sVWH5SzsYJy8ZgUXvG5c9glOxDd3dvFe1uOuIV7scYcMNF-ReItHrxXPAmcL6P5txhjDyIv7OtqiLD9UhkmWeBk9kJmXxLkCpnBj7WvRLjl7S1ugfoHLZW7DRZXdJZkv/s640/Visible+Buttons2.png" width="640" /></a></div>
<br />
Further on to hide disabled menu items add : <br />
<br />
<blockquote class="tr_bq">
li[aria-disabled=true]{<br />
display: none;<br />
}</blockquote>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfRHAAuiKyUNj77WfMQrzDrIVk6hG_LK6xyBQK1s6LXRA7tFlHIxUjHKnAorSFGtliZXC6EY68pjAaXq4bYVaBbnSvQ2ff2lrJHfUjijLPMvybvulu0NfP8aCj5Y-f4_kiHdntHKp1nROQ/s1600/SIEEL+MENU.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="368" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfRHAAuiKyUNj77WfMQrzDrIVk6hG_LK6xyBQK1s6LXRA7tFlHIxUjHKnAorSFGtliZXC6EY68pjAaXq4bYVaBbnSvQ2ff2lrJHfUjijLPMvybvulu0NfP8aCj5Y-f4_kiHdntHKp1nROQ/s640/SIEEL+MENU.png" width="640" /></a></div>
<br />
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.<br />
<br />
This post is contributed by esteem reader from down under via siebel-developers slack community. <a href="http://howtosiebel.blogspot.com/2015/11/lets-slack.html">Register today </a>to read more discussion like this.Jimhttp://www.blogger.com/profile/12540305358376025735noreply@blogger.com0New York, NY, USA40.7127837 -74.00594130000001840.3275957 -74.651388300000022 41.0979717 -73.360494300000013tag:blogger.com,1999:blog-159518135309222917.post-49692063693546474692016-06-06T03:40:00.000-07:002016-06-12T05:23:45.238-07:00Siebel Admin [Cheat Sheet] I see many Siebel consultants(including me) searching web everytime to get correct syntax for Siebel server manager commands.<br />
<div>
<br /></div>
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.<br />
<div>
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghQD0z55NEpC8GlQRbatY36SaF6vBtwPjoKTHOYOfxKlXMgTKE_2ag0LHvOJEqJzUw0KPd4elNqvUALaA0NMZCxgzWwRkDx7rWSf08y865-hrZX-3CbtQGIxmyhvvTveClCX4gsrFKOezR/s1600/server-manager-commands.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="1px" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEghQD0z55NEpC8GlQRbatY36SaF6vBtwPjoKTHOYOfxKlXMgTKE_2ag0LHvOJEqJzUw0KPd4elNqvUALaA0NMZCxgzWwRkDx7rWSf08y865-hrZX-3CbtQGIxmyhvvTveClCX4gsrFKOezR/s200/server-manager-commands.png" width="1px" /></a></div>
<br /></div>
Feel free to download and print one for your desk.<a href="https://slack-files.com/T0ECJR8QH-F1ECNM2CD-38038f8ed3" rel="nofollow" target="_blank">Download Here</a><br />
<br />
Hopefully no more searching for commands to increase log level of siebel components :) cheers!<br />
<br />
<iframe height="1000px" src="https://docs.google.com/document/d/1AHSLy8nHbRRiiK7OAdizobiayRS0aL7Ln8jvGWLUMWE/pub?embedded=true" width="650px"></iframe>
Jimhttp://www.blogger.com/profile/12540305358376025735noreply@blogger.com0New York, NY, USA40.7127837 -74.00594130000001840.3275957 -74.651388300000022 41.0979717 -73.360494300000013tag:blogger.com,1999:blog-159518135309222917.post-70681844219305167872016-06-03T04:58:00.002-07:002016-06-17T06:16:22.493-07:00Siebel Integration Interview Questions - JMS Transport<u>This article only covers Siebel integration interview questions related to EAI JMS Transport , see <a href="http://howtosiebel.blogspot.com/search/label/Siebel%20EAI%20Interview%20Questions">Siebel EAI Interview Questions</a> for other Integration interview questions.</u><br />
<br />
<h3>
Question 1: When should JMS be used over web services in Siebel integration requirement?</h3>
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.<br />
<br />
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.<br />
<br />
<h3>
Question 2: How does JMS integration works in Siebel?</h3>
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. <br />
<br />
<h3>
Question 3 : What is the difference between queue and a topic of JMS?</h3>
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.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBcxHb_WDO0bRFaxj0X1gVswOmsiZrEeg3YSZZW_MlLY_WfgHsGFZnewqglPF0cCgEeXsQvnGZNMGWpo2bbisnhvPVcS8XexIE2b1amECpd_XxB9ZJSjI2DFlsHbYjqsLqispivcrQW2Pv/s1600/Queue+Vs+Topic.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="288" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBcxHb_WDO0bRFaxj0X1gVswOmsiZrEeg3YSZZW_MlLY_WfgHsGFZnewqglPF0cCgEeXsQvnGZNMGWpo2bbisnhvPVcS8XexIE2b1amECpd_XxB9ZJSjI2DFlsHbYjqsLqispivcrQW2Pv/s640/Queue+Vs+Topic.png" width="640" /></a></div>
<br />
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.<br />
<br />
<h3>
Questions 4 : What steps are involved in JMS component setup in Siebel?</h3>
Answer: Siebel JMS setup involves minimum three items :<br />
<b>- Setup of JVM (Java) subsystem </b><br />
This tells where is Java files and server details of JMS server.<br />
<b>- Setup of JMS subsystem </b><br />
This contains queue or topic information<br />
<b>- Setup of receiver component</b><br />
This component pulls XML messages from JMS server mentioned in JVM sub system from queue mentioned in JMS subsystem.<br />
<br />
<h3>
Question 5: What is jndi.properties file? What it is necessary?</h3>
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.<br />
It looks something like this: <a href="https://docs.oracle.com/javase/jndi/tutorial/beyond/env/src/jndi.properties">https://docs.oracle.com/javase/jndi/tutorial/beyond/env/src/jndi.properties</a><br />
<br />
<h3>
Questions 6: what kind of logging is available for JMS transport?</h3>
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. <br />
<br />
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. <br />
<br />
See more <a href="http://howtosiebel.blogspot.com/search/label/Siebel%20EAI%20Interview%20Questions">Siebel EAI Interview Question </a>Jimhttp://www.blogger.com/profile/12540305358376025735noreply@blogger.com0tag:blogger.com,1999:blog-159518135309222917.post-67135200644548768442016-06-03T04:36:00.001-07:002016-06-16T04:35:02.842-07:00[Download] EAI JSON Converter v2 <div>
Pleased to bring you the complete EAI JSON Converter v2. It happened a lot sooner than I expected.</div>
<div>
</div>
<div>
</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkJ64P1-AtVVGec0ykVbExSLomYhV1vfajUM7dx2READj285rzGZeVb7_Lp9h_smtaXoQlMAnMGlVSKb_BMdYrcchH3sxwkEfSetSfprBQi3YI5cEGC9oWc-AQtxxxppycWgQEHBkpiLA3/s1600/Siebel+EAI+JSON+Converter.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkJ64P1-AtVVGec0ykVbExSLomYhV1vfajUM7dx2READj285rzGZeVb7_Lp9h_smtaXoQlMAnMGlVSKb_BMdYrcchH3sxwkEfSetSfprBQi3YI5cEGC9oWc-AQtxxxppycWgQEHBkpiLA3/s1600/Siebel+EAI+JSON+Converter.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Siebel EAI JSON Converter</td></tr>
</tbody></table>
<div>
<br /></div>
<div>
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. </div>
<div>
</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOxoUihauzduVdpSDT0H1JwgXyd-YAHiXF0H_PfgvdCmYOWLR_tWNPQwOkIvzK2Y-vek9z4lt2N0TB2oRfl-PphFfmjfPKjyPNqbngSXWxNM2UVFOj1gtGcRWgB07LxLoGU6TJDEODg1sE/s1600/JSON+to+Property+Set.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOxoUihauzduVdpSDT0H1JwgXyd-YAHiXF0H_PfgvdCmYOWLR_tWNPQwOkIvzK2Y-vek9z4lt2N0TB2oRfl-PphFfmjfPKjyPNqbngSXWxNM2UVFOj1gtGcRWgB07LxLoGU6TJDEODg1sE/s1600/JSON+to+Property+Set.png" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Siebel eval statement</td></tr>
</tbody></table>
<div>
</div>
<div>
<br /></div>
<div>
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. </div>
<div>
<br /></div>
<div>
You can download the complete sif from git hub. <a href="https://github.com/Jimjson/eScript-based-EAI-JSON-Converter-">https://github.com/Jimjson/eScript-based-EAI-JSON-Converter-</a><br />
<h3>
<b><br /></b></h3>
</div>
<h3>
<b>EAI JSON Converter Demo: </b></h3>
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/B2a6mGxQwzU" width="560"></iframe>
Jimhttp://www.blogger.com/profile/12540305358376025735noreply@blogger.com31