<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>GeeKs Blogging @ dotCOM &#187; eScript</title>
	<atom:link href="http://geeksbloggingat.com/topics/escript/feed/" rel="self" type="application/rss+xml" />
	<link>http://geeksbloggingat.com</link>
	<description>Let&#039;s share...</description>
	<lastBuildDate>Tue, 30 Aug 2011 21:29:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Siebel &#8211; Autosave Opportunity data &#8211; Sample Code</title>
		<link>http://geeksbloggingat.com/2009/07/28/siebel-autosave-opportunity-data-sample-code/</link>
		<comments>http://geeksbloggingat.com/2009/07/28/siebel-autosave-opportunity-data-sample-code/#comments</comments>
		<pubDate>Tue, 28 Jul 2009 02:37:55 +0000</pubDate>
		<dc:creator>Renuka Ankam</dc:creator>
				<category><![CDATA[Siebel CRM]]></category>
		<category><![CDATA[Configuration]]></category>
		<category><![CDATA[eScript]]></category>
		<category><![CDATA[Siebel]]></category>
		<category><![CDATA[Tricks]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://geeksbloggingat.com/?p=663</guid>
		<description><![CDATA[This is a follow up post on my previous post, Siebel &#8211; Autosave Opportunity data &#8211; The concept where I introduced the concept and analysis of the following problem statement: &#8220;System should have capability to automatically save opportunity (RFPs) data in Draft state after a certain interval.&#8221; Following is the sample code for solving the [...]


<b>Related posts:<b><ol><li><a href='http://geeksbloggingat.com/2009/07/27/siebel-autosave-opportunity-the-concept/' rel='bookmark' title='Permanent Link: Siebel &#8211; Autosave Opportunity data &#8211; The concept'>Siebel &#8211; Autosave Opportunity data &#8211; The concept</a> <small>Requirement: System should have capability to automatically save opportunity(RFPs) data...</small></li>
<li><a href='http://geeksbloggingat.com/2009/04/24/html-code-in-error-message/' rel='bookmark' title='Permanent Link: Siebel &#8211; HTML Code displayed in Error Message'>Siebel &#8211; HTML Code displayed in Error Message</a> <small>There was a requirement in our project to make Account...</small></li>
<li><a href='http://geeksbloggingat.com/2009/05/01/activating-fields/' rel='bookmark' title='Permanent Link: Siebel &#8211; ActivateField() split wide open'>Siebel &#8211; ActivateField() split wide open</a> <small>In Siebel, we generally tend to use the fields on...</small></li>
<li><a href='http://geeksbloggingat.com/2009/04/20/siebel-adding-license-keys-to-sample/' rel='bookmark' title='Permanent Link: Siebel &#8211; Adding License Keys to Sample'>Siebel &#8211; Adding License Keys to Sample</a> <small>I am glad to be associated with Geeks Blogging @...</small></li>
<li><a href='http://geeksbloggingat.com/2009/05/19/siebel-about-srf-window-remove-data/' rel='bookmark' title='Permanent Link: Siebel &#8211; About SRF Window &#8211; Remove data'>Siebel &#8211; About SRF Window &#8211; Remove data</a> <small>Okay. This is something those who like to toy with...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>This is a follow up post on my previous post, <a href="http://geeksbloggingat.com/2009/07/27/siebel-autosave-opportunity-the-concept">Siebel &#8211; Autosave Opportunity data &#8211; The concept</a> where I introduced the concept and analysis of the following problem statement:<br />
&#8220;System should have capability to automatically save opportunity (RFPs) data in Draft state after a certain interval.&#8221;</p>
<p>Following is the sample code for solving the above problem statement.</p>
<p><span id="more-663"></span>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="text-decoration: underline;"><span style="font-size: 12pt; color: red; line-height: 115%; font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><br />
<strong>Applet Browser Scripts:-</span></span></strong></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong><span style="color: #0070c0; font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;">Event: &#8211; Applet_PreInvokeMethod</span></span></strong></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong><span style="color: #0070c0; font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;">Language: &#8211; eScript</span></span></strong></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong><span style="color: #0070c0; font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;"> </span></span></strong></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal;"><span style="font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;">function Applet_PreInvokeMethod (name, inputPropSet)</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal;"><span style="font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;">{</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal;"><span style="font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;"><span style="mso-spacerun: yes;"> </span>if(name == &#8216;NewRecord&#8217;)</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal;"><span style="font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;"><span style="mso-spacerun: yes;"> </span>{</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal;"><span style="font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;"><span style="mso-spacerun: yes;"> </span>var timemsg = setTimeout(&#8220;alert(&#8216;Please Fill up all the field value. Otherwise Autosave of the current record will be done!&#8217;)&#8221;,15000);</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal;"><span style="font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;"><span style="mso-spacerun: yes;"> </span>theApplication().SetProfileAttr(&#8220;AutoSaveNew&#8221;,&#8221;Y&#8221;);</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal;"><span style="font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;"><span style="mso-spacerun: yes;"> </span>}</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal;"><span style="font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;"><span style="mso-spacerun: yes;"> </span>return (&#8220;ContinueOperation&#8221;);</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; line-height: normal;"><span style="font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;">}</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;"> </span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong><span style="color: #0070c0; font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;">Event: &#8211; Applet_Load</span></span></strong></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;">function Applet_Load ()</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;">{</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;">//var aOppty = this.BusComp();</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;">//var oAccount = aOppty.GetFieldValue(&#8220;Account&#8221;);</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;">//var oCurrCd = aOppty.GetFieldValue(&#8220;Currency Code&#8221;);</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;">//var oName = aOppty.GetFieldValue(&#8220;Name&#8221;);</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;">//var oPrRevDt = aOppty.GetFieldValue(&#8220;Primary Revenue Close Date&#8221;);</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;">If (theApplication().GetProfileAttr(&#8220;AutoSaveLoad&#8221;)&lt;&gt;&#8221;Y&#8221;) </span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;">{</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;">var timemsg = setTimeout(&#8220;alert(&#8216;Please Fill up all the field value.Otherwise Autosave of the current record will be done!&#8217;)&#8221;,15000);</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;">theApplication().SetProfileAttr(&#8220;AutoSaveLoad&#8221;,&#8221;Y&#8221;);</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;">}</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-size: small; font-family: Calibri;">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong><span style="text-decoration: underline;"><span style="color: red; font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;">Bus Comp. Server Script:</span></span></span></strong></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong><span style="color: #0070c0; font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;">Event: &#8211; BusComp_SetFieldValue</span></span></strong></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong><span style="color: #0070c0; font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;">Language: &#8211; VBScript</span></span></strong></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;">function BusComp_PreWriteRecord ()<br />
{</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;">
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;">var aOppty = this.BusComp();</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;">var oAccount = aOppty.GetFieldValue(&#8220;Account&#8221;);</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;">var oCurrCd = aOppty.GetFieldValue(&#8220;Currency Code&#8221;);</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;">var oName = aOppty.GetFieldValue(&#8220;Name&#8221;);</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;">var oPrRevDt = aOppty.GetFieldValue(&#8220;Primary Revenue Close Date&#8221;);</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;">this.ActivateField(&#8220;Account&#8221;)</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;">this.ActivateField(&#8220;Currency Code&#8221;)</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;">this.ActivateField(&#8220;Name&#8221;)</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;">this.ActivateField(&#8220;Primary Revenue Close Date&#8221;)</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><strong><span style="color: #00b050; font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;">//These below mentioned ones are the required fields being predefaulted by certain values</span></span></strong></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;">If ((this.GetFieldValue(&#8220;Account &#8220;) &lt;&gt; &#8220;&#8221;) And (this.GetFieldValue(&#8220;Currency Code&#8221;) &lt;&gt; &#8220;&#8221;) And (this.GetFieldValue(&#8220;Name&#8221;) &lt;&gt; &#8220;&#8221;) And (this.GetFieldValue(&#8220;Primary Revenue Close Date&#8221;) &lt;&gt; &#8220;&#8221;) And (TheApplication.GetProfileAttr(&#8220;AutoSaveNew &#8220;) = &#8220;Y&#8221; <span style="mso-spacerun: yes;"> </span>Or TheApplication.GetProfileAttr(&#8220;AutoSaveLoad &#8220;) = &#8220;Y&#8221; ))Then </span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;"><span style="mso-spacerun: yes;"> this</span>.Setfieldvalue( &#8220;Account &#8220;, oAccount);</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;"><span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;"> this</span>.Setfieldvalue (&#8220;Currency Code&#8221;, oCurrCd);</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;"><span style="mso-spacerun: yes;"> this</span>.Setfieldvalue (&#8220;Name&#8221;, oName);</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;"><span style="mso-spacerun: yes;"> this</span>.Setfieldvalue (&#8220;Primary Revenue Close Date&#8221;, oPrRevDt);</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt 1in;"><span style="font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;">TheApplication().SetProfileAttr (&#8221; AutoSaveLoad &#8220;,&#8221;N&#8221;<span style="mso-spacerun: yes;"> ); </span></span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt 1in;"><span style="font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;"><span style="mso-spacerun: yes;">T</span>heApplication().SetProfileAttr (&#8221; AutoSaveNew &#8220;,&#8221;N&#8221;)</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;"><span style="mso-spacerun: yes;"> this</span>.WriteRecord</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;"> </span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;">}</span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt;"><span style="font-family: &quot;Cambria&quot;,&quot;serif&quot;;"><span style="font-size: small;"> </span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt;">
<p>I hope this has been a nice post.</p>


<p><b>Related posts:<b><ol><li><a href='http://geeksbloggingat.com/2009/07/27/siebel-autosave-opportunity-the-concept/' rel='bookmark' title='Permanent Link: Siebel &#8211; Autosave Opportunity data &#8211; The concept'>Siebel &#8211; Autosave Opportunity data &#8211; The concept</a> <small>Requirement: System should have capability to automatically save opportunity(RFPs) data...</small></li>
<li><a href='http://geeksbloggingat.com/2009/04/24/html-code-in-error-message/' rel='bookmark' title='Permanent Link: Siebel &#8211; HTML Code displayed in Error Message'>Siebel &#8211; HTML Code displayed in Error Message</a> <small>There was a requirement in our project to make Account...</small></li>
<li><a href='http://geeksbloggingat.com/2009/05/01/activating-fields/' rel='bookmark' title='Permanent Link: Siebel &#8211; ActivateField() split wide open'>Siebel &#8211; ActivateField() split wide open</a> <small>In Siebel, we generally tend to use the fields on...</small></li>
<li><a href='http://geeksbloggingat.com/2009/04/20/siebel-adding-license-keys-to-sample/' rel='bookmark' title='Permanent Link: Siebel &#8211; Adding License Keys to Sample'>Siebel &#8211; Adding License Keys to Sample</a> <small>I am glad to be associated with Geeks Blogging @...</small></li>
<li><a href='http://geeksbloggingat.com/2009/05/19/siebel-about-srf-window-remove-data/' rel='bookmark' title='Permanent Link: Siebel &#8211; About SRF Window &#8211; Remove data'>Siebel &#8211; About SRF Window &#8211; Remove data</a> <small>Okay. This is something those who like to toy with...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://geeksbloggingat.com/2009/07/28/siebel-autosave-opportunity-data-sample-code/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Siebel &#8211; Autosave Opportunity data &#8211; The concept</title>
		<link>http://geeksbloggingat.com/2009/07/27/siebel-autosave-opportunity-the-concept/</link>
		<comments>http://geeksbloggingat.com/2009/07/27/siebel-autosave-opportunity-the-concept/#comments</comments>
		<pubDate>Mon, 27 Jul 2009 04:33:07 +0000</pubDate>
		<dc:creator>Renuka Ankam</dc:creator>
				<category><![CDATA[Siebel CRM]]></category>
		<category><![CDATA[Configuration]]></category>
		<category><![CDATA[eScript]]></category>
		<category><![CDATA[Siebel]]></category>

		<guid isPermaLink="false">http://geeksbloggingat.com/?p=677</guid>
		<description><![CDATA[Requirement: System should have capability to automatically save opportunity(RFPs) data in Draft state after a certain interval. Presumption: 1) The Business Component to be used for the UI applet should not have any required fields at the Table or BC level itself or All the required fields should be pre-defaulted with some unique values. 2) [...]


<b>Related posts:<b><ol><li><a href='http://geeksbloggingat.com/2009/07/28/siebel-autosave-opportunity-data-sample-code/' rel='bookmark' title='Permanent Link: Siebel &#8211; Autosave Opportunity data &#8211; Sample Code'>Siebel &#8211; Autosave Opportunity data &#8211; Sample Code</a> <small>This is a follow up post on my previous post,...</small></li>
<li><a href='http://geeksbloggingat.com/2009/05/10/siebel-reading-data-directly-from-siebel-srf/' rel='bookmark' title='Permanent Link: Siebel &#8211; Reading data directly from Siebel SRF'>Siebel &#8211; Reading data directly from Siebel SRF</a> <small>SRF or the Siebel Repository File as it is more...</small></li>
<li><a href='http://geeksbloggingat.com/2009/06/22/siebel-make-mvg-field-required/' rel='bookmark' title='Permanent Link: Siebel &#8211; Make MVG Field required'>Siebel &#8211; Make MVG Field required</a> <small>Siebel supports the concept of Multi Valued Fields, or the...</small></li>
<li><a href='http://geeksbloggingat.com/2009/05/19/siebel-about-srf-window-remove-data/' rel='bookmark' title='Permanent Link: Siebel &#8211; About SRF Window &#8211; Remove data'>Siebel &#8211; About SRF Window &#8211; Remove data</a> <small>Okay. This is something those who like to toy with...</small></li>
<li><a href='http://geeksbloggingat.com/2009/04/22/siebel-make-a-field-require-conditionally/' rel='bookmark' title='Permanent Link: Siebel &#8211; Make a field Required, conditionally'>Siebel &#8211; Make a field Required, conditionally</a> <small>There was a requirement in our project to make Account...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><b>Requirement:</b><br />
System should have capability to automatically save opportunity(RFPs) data in Draft state after a certain interval.</p>
<p><b>Presumption:</b> </p>
<p>1) The Business Component to be used for the UI applet should not have any required fields at the Table or BC level itself or All the required fields should be pre-defaulted with some unique values. </p>
<p><span id="more-677"></span>2) There should not be any dependency of setting the field value from any other Siebel Objects like: Applet level Browser/Server scripts, Bus comp Browser/Server scripts, Application Browser/Server scripts to the target Business Components.</p>
<p> 3) The pre-defaulted values of the required fields (if present) will be visible in the applets and the user then can set the field values according to their needs when and wherever required. </p>
<p>4) In our solution, after loading of the applet or after the new record creation a pop up warning message will be thrown to the user after certain duration (say 20 sec) mentioning that the current record will be saved in the database it its current form. The user need to change the field value within this duration, otherwise the record will be saved in the database in its current state.</p>
<p>I have outlined the basic assumptions, as a part of the Case Study. Also, a brief conceptual background is outlined above. I will present the sample code that we used behind the scenes in the following posts. Till then, you can also think of some solutions and start putting them up in this thread.</p>


<p><b>Related posts:<b><ol><li><a href='http://geeksbloggingat.com/2009/07/28/siebel-autosave-opportunity-data-sample-code/' rel='bookmark' title='Permanent Link: Siebel &#8211; Autosave Opportunity data &#8211; Sample Code'>Siebel &#8211; Autosave Opportunity data &#8211; Sample Code</a> <small>This is a follow up post on my previous post,...</small></li>
<li><a href='http://geeksbloggingat.com/2009/05/10/siebel-reading-data-directly-from-siebel-srf/' rel='bookmark' title='Permanent Link: Siebel &#8211; Reading data directly from Siebel SRF'>Siebel &#8211; Reading data directly from Siebel SRF</a> <small>SRF or the Siebel Repository File as it is more...</small></li>
<li><a href='http://geeksbloggingat.com/2009/06/22/siebel-make-mvg-field-required/' rel='bookmark' title='Permanent Link: Siebel &#8211; Make MVG Field required'>Siebel &#8211; Make MVG Field required</a> <small>Siebel supports the concept of Multi Valued Fields, or the...</small></li>
<li><a href='http://geeksbloggingat.com/2009/05/19/siebel-about-srf-window-remove-data/' rel='bookmark' title='Permanent Link: Siebel &#8211; About SRF Window &#8211; Remove data'>Siebel &#8211; About SRF Window &#8211; Remove data</a> <small>Okay. This is something those who like to toy with...</small></li>
<li><a href='http://geeksbloggingat.com/2009/04/22/siebel-make-a-field-require-conditionally/' rel='bookmark' title='Permanent Link: Siebel &#8211; Make a field Required, conditionally'>Siebel &#8211; Make a field Required, conditionally</a> <small>There was a requirement in our project to make Account...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://geeksbloggingat.com/2009/07/27/siebel-autosave-opportunity-the-concept/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Siebel &#8211; Fetch Active view properties &#8211; III</title>
		<link>http://geeksbloggingat.com/2009/07/24/siebel-fetch-active-view-properties-iii/</link>
		<comments>http://geeksbloggingat.com/2009/07/24/siebel-fetch-active-view-properties-iii/#comments</comments>
		<pubDate>Fri, 24 Jul 2009 02:59:53 +0000</pubDate>
		<dc:creator>Nitin Jain</dc:creator>
				<category><![CDATA[Siebel CRM]]></category>
		<category><![CDATA[Client]]></category>
		<category><![CDATA[Configuration]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[eScript]]></category>
		<category><![CDATA[Fundamentals]]></category>
		<category><![CDATA[Siebel]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://geeksbloggingat.com/?p=661</guid>
		<description><![CDATA[I will discuss a practical example, and the corresponding Inputs as a usage example for the &#8220;FINS Data Transfer Utilities&#8221;. If you have not already done so, I would suggest going through the previous posts for a better understanding: Siebel &#8211; Fetch Active view properties Siebel &#8211; Fetch Active view properties &#8211; II I will [...]


<b>Related posts:<b><ol><li><a href='http://geeksbloggingat.com/2009/07/22/siebel-fetch-active-view-properties/' rel='bookmark' title='Permanent Link: Siebel &#8211; Fetch Active view properties'>Siebel &#8211; Fetch Active view properties</a> <small>Hi, Working on a typical requirement recently, I came across...</small></li>
<li><a href='http://geeksbloggingat.com/2009/07/23/siebel-fetch-active-view-properties-ii/' rel='bookmark' title='Permanent Link: Siebel &#8211; Fetch Active view properties &#8211; II'>Siebel &#8211; Fetch Active view properties &#8211; II</a> <small>We discussed about fetching the values from the active view...</small></li>
<li><a href='http://geeksbloggingat.com/2009/04/14/siebel-assets-list-view-performance-issue-cannot-display-records/' rel='bookmark' title='Permanent Link: Siebel Assets List view &#8211; Performance issue / Cannot display records'>Siebel Assets List view &#8211; Performance issue / Cannot display records</a> <small>Assets Screen Load is a major problem in Siebel, and...</small></li>
<li><a href='http://geeksbloggingat.com/2009/05/10/siebel-invokeservicemethod-on-calculated-fields/' rel='bookmark' title='Permanent Link: Siebel &#8211; InvokeServiceMethod() on Calculated Fields'>Siebel &#8211; InvokeServiceMethod() on Calculated Fields</a> <small>InvokeServiceMethod() is used to invoke Business Services and take values...</small></li>
<li><a href='http://geeksbloggingat.com/2009/05/15/siebel-getmilliseconds-usage/' rel='bookmark' title='Permanent Link: Siebel &#8211; getMilliseconds() usage'>Siebel &#8211; getMilliseconds() usage</a> <small>Siebel by default displays all dates in the system accurate...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>I will discuss a practical example, and the corresponding Inputs as a usage example for the &#8220;FINS Data Transfer Utilities&#8221;. If you have not already done so, I would suggest going through the previous posts for a better understanding:<br />
<a href="http://geeksbloggingat.com/2009/07/22/siebel-fetch-active-view-properties/">Siebel &#8211; Fetch Active view properties</a><br />
<a href="http://geeksbloggingat.com/2009/07/23/siebel-fetch-active-view-properties-ii">Siebel &#8211; Fetch Active view properties &#8211; II</a></p>
<p><span id="more-661"></span>I will share a practical usage example for the above vanilla BS here.<br />
Launch your Siebel Client. Navigate to the screen,<br />
<em>Administration &#8211; Business Services -&gt; Scripts<br />
Press &#8216;New&#8217;. I chose the name, &#8220;04 Nitin Test&#8221; for my Test BS.</em></p>
<p>Write a small piece of code in the method, &#8220;Service_PreInvokeMethod&#8221;, and the language as eScript.</p>
<p>Sample code is as follows:<br />
<em></em></p>
<p>function Service_PreInvokeMethod (MethodName, Inputs, Outputs)<br />
{</p>
<p>var Input_ps = TheApplication().NewPropertySet();<br />
var Output_ps = TheApplication().NewPropertySet();</p>
<p>var bs_FINS = TheApplication().GetService(&#8220;FINS Data Transfer Utilities&#8221;);<br />
bs_FINS.InvokeMethod(&#8220;GetActiveViewProp&#8221;, Input_ps, Output_ps);</p>
<p>TheApplication().RaiseErrorText(Output_ps.GetProperty(&#8220;&lt;output arg name&gt;&#8221;) );</p>
<p>return (CancelOperation);<br />
}</p>
<p>You can replace the with the desired parameter one by one, to see the corresponding output. As a sample, I got the following outputs in my Siebel setup:</p>
<table border="0">
<tbody>
<tr>
<th>Output Argument</th>
<th>Value</th>
</tr>
<tr>
<td>BusinessObject</td>
<td>Business Service</td>
</tr>
<tr>
<td>IsAdminMode</td>
<td>N</td>
</tr>
<tr>
<td>Screen</td>
<td> </td>
</tr>
<tr>
<td>ThreadApplet</td>
<td>Business Service Test List Applet</td>
</tr>
<tr>
<td>View</td>
<td>Business Service Test View</td>
</tr>
<tr>
<td>ViewModeCode</td>
<td>4</td>
</tr>
</tbody>
</table>
<p> </p>
<p>There are two strange observations in the table above.<br />
1) The Output Argument, &#8220;Screen&#8221; returns NULL. Now, I am obviously within a screen, which has a name. Why is it NULL?</p>
<p>2) It has returned the ViewMode &#8220;4&#8243;.</p>
<p>A simple Lookup in Siebel Tools F1 help lists the following ViewModes of a view:<br />
SalesRepView (0)<br />
ManagerView (1)<br />
PersonalView (2)<br />
AllView (3)<br />
OrganizationView (5)<br />
GroupView (7)<br />
CatalogView (8)<br />
SubOrganizationView (9)</p>
<p>Notice carefully, 4 is not in the list! <img src='http://geeksbloggingat.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>


<p><b>Related posts:<b><ol><li><a href='http://geeksbloggingat.com/2009/07/22/siebel-fetch-active-view-properties/' rel='bookmark' title='Permanent Link: Siebel &#8211; Fetch Active view properties'>Siebel &#8211; Fetch Active view properties</a> <small>Hi, Working on a typical requirement recently, I came across...</small></li>
<li><a href='http://geeksbloggingat.com/2009/07/23/siebel-fetch-active-view-properties-ii/' rel='bookmark' title='Permanent Link: Siebel &#8211; Fetch Active view properties &#8211; II'>Siebel &#8211; Fetch Active view properties &#8211; II</a> <small>We discussed about fetching the values from the active view...</small></li>
<li><a href='http://geeksbloggingat.com/2009/04/14/siebel-assets-list-view-performance-issue-cannot-display-records/' rel='bookmark' title='Permanent Link: Siebel Assets List view &#8211; Performance issue / Cannot display records'>Siebel Assets List view &#8211; Performance issue / Cannot display records</a> <small>Assets Screen Load is a major problem in Siebel, and...</small></li>
<li><a href='http://geeksbloggingat.com/2009/05/10/siebel-invokeservicemethod-on-calculated-fields/' rel='bookmark' title='Permanent Link: Siebel &#8211; InvokeServiceMethod() on Calculated Fields'>Siebel &#8211; InvokeServiceMethod() on Calculated Fields</a> <small>InvokeServiceMethod() is used to invoke Business Services and take values...</small></li>
<li><a href='http://geeksbloggingat.com/2009/05/15/siebel-getmilliseconds-usage/' rel='bookmark' title='Permanent Link: Siebel &#8211; getMilliseconds() usage'>Siebel &#8211; getMilliseconds() usage</a> <small>Siebel by default displays all dates in the system accurate...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://geeksbloggingat.com/2009/07/24/siebel-fetch-active-view-properties-iii/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Siebel &#8211; Fetch Active view properties &#8211; II</title>
		<link>http://geeksbloggingat.com/2009/07/23/siebel-fetch-active-view-properties-ii/</link>
		<comments>http://geeksbloggingat.com/2009/07/23/siebel-fetch-active-view-properties-ii/#comments</comments>
		<pubDate>Thu, 23 Jul 2009 03:03:27 +0000</pubDate>
		<dc:creator>Nitin Jain</dc:creator>
				<category><![CDATA[Siebel CRM]]></category>
		<category><![CDATA[Client]]></category>
		<category><![CDATA[Configuration]]></category>
		<category><![CDATA[EAI]]></category>
		<category><![CDATA[eScript]]></category>
		<category><![CDATA[Scriptless solutions]]></category>
		<category><![CDATA[Siebel]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[workflows]]></category>

		<guid isPermaLink="false">http://geeksbloggingat.com/?p=658</guid>
		<description><![CDATA[We discussed about fetching the values from the active view in my post yesterday. However, I also felt that it was a very crude way of doing it. We can only get the information we need, by writing a small script for it. Moreover, the information was very limited. I also came across an alternative [...]


<b>Related posts:<b><ol><li><a href='http://geeksbloggingat.com/2009/07/24/siebel-fetch-active-view-properties-iii/' rel='bookmark' title='Permanent Link: Siebel &#8211; Fetch Active view properties &#8211; III'>Siebel &#8211; Fetch Active view properties &#8211; III</a> <small>I will discuss a practical example, and the corresponding Inputs...</small></li>
<li><a href='http://geeksbloggingat.com/2009/07/22/siebel-fetch-active-view-properties/' rel='bookmark' title='Permanent Link: Siebel &#8211; Fetch Active view properties'>Siebel &#8211; Fetch Active view properties</a> <small>Hi, Working on a typical requirement recently, I came across...</small></li>
<li><a href='http://geeksbloggingat.com/2010/05/17/siebel-admin-mode-flag-ii-issue-log/' rel='bookmark' title='Permanent Link: Siebel Admin Mode Flag &#8211; II &#8211; Issue Log'>Siebel Admin Mode Flag &#8211; II &#8211; Issue Log</a> <small>In the last post I described about Admin Mode Flag....</small></li>
<li><a href='http://geeksbloggingat.com/2009/04/14/siebel-assets-list-view-performance-issue-cannot-display-records/' rel='bookmark' title='Permanent Link: Siebel Assets List view &#8211; Performance issue / Cannot display records'>Siebel Assets List view &#8211; Performance issue / Cannot display records</a> <small>Assets Screen Load is a major problem in Siebel, and...</small></li>
<li><a href='http://geeksbloggingat.com/2009/06/15/siebel-forcing-user-logoff/' rel='bookmark' title='Permanent Link: Siebel &#8211; Forcing User Logoff'>Siebel &#8211; Forcing User Logoff</a> <small>Hi all, Somebody recently asked me if there is a...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>We discussed about fetching the values from the active view in <a href="Siebel - Fetch Active view properties">my post yesterday</a>. </p>
<p>However, I also felt that it was a very crude way of doing it. We can only get the information we need, by writing a small script for it. Moreover, the information was very limited.</p>
<p><span id="more-658"></span>I also came across an alternative method to get the details from the Active View. Try searching for the Business Service, <i>&#8220;FINS Data Transfer Utilities&#8221;</i> in your Siebel Tools. It has a method, <i>&#8220;GetActiveViewProp&#8221;</i>, which can help us achieve our objectives. Moreover, it supports our point of view of Scriptless Solutions!</p>
<p>Usage:<br />
The BS, &#8220;FINS Data Transfer Utilities&#8221; does not take in any Input Arguments for the method, &#8220;GetActiveViewProp&#8221;. We can, thus, directly call this BS in Scripts or Workflows as the requirement may be.</p>
<p>There are a number of outputs, however, that return the corresponding data for the logged in user.<br />
<b>BusinessObject</b><br />
This would return the Business Object of the view active at the time of invoking this Business Service.</p>
<p><b>IsAdminMode</b><br />
This would determine if the current view works in Admin Mode. Admin Mode gives you extra priviledges on a particular view.<br />
The Admin Mode is defined by the &#8220;Admin Mode Flag&#8221; on the property corresponding to the View in the Siebel Tools Object Explorer.</p>
<p><b>Screen</b><br />
The name of the screen that the current view is a part of.</p>
<p><b>ThreadApplet</b><br />
Name of the Thread Applet in the current focus.</p>
<p><b>View</b><br />
The name of the active view.</p>
<p><b>ViewModeCode</b><br />
This is returned in the form of a Code (a number). This defines the View Mode of the current view in focus.</p>
<p>I feel this post is getting too long. I&#8217;ll post a follow-up post with a practical example.</p>


<p><b>Related posts:<b><ol><li><a href='http://geeksbloggingat.com/2009/07/24/siebel-fetch-active-view-properties-iii/' rel='bookmark' title='Permanent Link: Siebel &#8211; Fetch Active view properties &#8211; III'>Siebel &#8211; Fetch Active view properties &#8211; III</a> <small>I will discuss a practical example, and the corresponding Inputs...</small></li>
<li><a href='http://geeksbloggingat.com/2009/07/22/siebel-fetch-active-view-properties/' rel='bookmark' title='Permanent Link: Siebel &#8211; Fetch Active view properties'>Siebel &#8211; Fetch Active view properties</a> <small>Hi, Working on a typical requirement recently, I came across...</small></li>
<li><a href='http://geeksbloggingat.com/2010/05/17/siebel-admin-mode-flag-ii-issue-log/' rel='bookmark' title='Permanent Link: Siebel Admin Mode Flag &#8211; II &#8211; Issue Log'>Siebel Admin Mode Flag &#8211; II &#8211; Issue Log</a> <small>In the last post I described about Admin Mode Flag....</small></li>
<li><a href='http://geeksbloggingat.com/2009/04/14/siebel-assets-list-view-performance-issue-cannot-display-records/' rel='bookmark' title='Permanent Link: Siebel Assets List view &#8211; Performance issue / Cannot display records'>Siebel Assets List view &#8211; Performance issue / Cannot display records</a> <small>Assets Screen Load is a major problem in Siebel, and...</small></li>
<li><a href='http://geeksbloggingat.com/2009/06/15/siebel-forcing-user-logoff/' rel='bookmark' title='Permanent Link: Siebel &#8211; Forcing User Logoff'>Siebel &#8211; Forcing User Logoff</a> <small>Hi all, Somebody recently asked me if there is a...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://geeksbloggingat.com/2009/07/23/siebel-fetch-active-view-properties-ii/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Siebel &#8211; Fetch Active view properties</title>
		<link>http://geeksbloggingat.com/2009/07/22/siebel-fetch-active-view-properties/</link>
		<comments>http://geeksbloggingat.com/2009/07/22/siebel-fetch-active-view-properties/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 08:10:39 +0000</pubDate>
		<dc:creator>Nitin Jain</dc:creator>
				<category><![CDATA[Siebel CRM]]></category>
		<category><![CDATA[Application]]></category>
		<category><![CDATA[Client]]></category>
		<category><![CDATA[Configuration]]></category>
		<category><![CDATA[eScript]]></category>
		<category><![CDATA[Fundamentals]]></category>
		<category><![CDATA[Siebel]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://geeksbloggingat.com/?p=656</guid>
		<description><![CDATA[Hi, Working on a typical requirement recently, I came across a need to fetch the properties from the user&#8217;s active view. This was an attempt to recognize the user, and the details about the Siebel view/screen he was in. On research we can see that there are a number of Application level methods which we [...]


<b>Related posts:<b><ol><li><a href='http://geeksbloggingat.com/2009/07/23/siebel-fetch-active-view-properties-ii/' rel='bookmark' title='Permanent Link: Siebel &#8211; Fetch Active view properties &#8211; II'>Siebel &#8211; Fetch Active view properties &#8211; II</a> <small>We discussed about fetching the values from the active view...</small></li>
<li><a href='http://geeksbloggingat.com/2009/07/24/siebel-fetch-active-view-properties-iii/' rel='bookmark' title='Permanent Link: Siebel &#8211; Fetch Active view properties &#8211; III'>Siebel &#8211; Fetch Active view properties &#8211; III</a> <small>I will discuss a practical example, and the corresponding Inputs...</small></li>
<li><a href='http://geeksbloggingat.com/2009/04/14/siebel-assets-list-view-performance-issue-cannot-display-records/' rel='bookmark' title='Permanent Link: Siebel Assets List view &#8211; Performance issue / Cannot display records'>Siebel Assets List view &#8211; Performance issue / Cannot display records</a> <small>Assets Screen Load is a major problem in Siebel, and...</small></li>
<li><a href='http://geeksbloggingat.com/2010/05/02/siebel-admin-mode-flag/' rel='bookmark' title='Permanent Link: Siebel &#8211; Admin Mode Flag'>Siebel &#8211; Admin Mode Flag</a> <small>In my last project,we had a requirement of Admin Views,...</small></li>
<li><a href='http://geeksbloggingat.com/2009/06/25/siebel-popup-update-only/' rel='bookmark' title='Permanent Link: Siebel &#8211; Popup Update Only'>Siebel &#8211; Popup Update Only</a> <small>Hi all, I was working with Siebel Multi Valued Links...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Hi,</p>
<p>Working on a typical requirement recently, I came across a need to fetch the properties from the user&#8217;s active view. This was an attempt to recognize the user, and the details about the Siebel view/screen he was in.</p>
<p>On research we can see that there are a number of Application level methods which we have at our disposal.</p>
<p><span id="more-656"></span>We see that we can get the <b>active Business Object</b> name using the format:<br />
<i>TheApplication().ActiveBusObject();</i></p>
<p>Also, the <b>active view name</b> may be fetched using:<br />
<i>TheApplication().ActiveViewName();</i></p>
<p>The <b>Login Id</b> of the user logged in may be fetched using:<br />
<i>TheApplication().LoginId();</i></p>
<p>The <b>Name of Logged in user</b> (the one that is typed into the Login box) may be fetched using:<br />
<i>TheApplication().LoginName();</i></p>
<p>The <b>Position ID</b> may be fetched using:<br />
<i>TheApplication().PositionId();</i></p>
<p>The <b>position name</b> of the user logged in may be fetched using:<br />
<i>TheApplication().PositionName();</i></p>
<p>.. and maybe some more, in case I missed out on any.</p>
<p>However, this is very limited information (though may be sufficient for some requirements). More so, if we notice, the information is mostly User oriented rather than being Siebel session oriented. </p>
<p>We will explore further if there is a way to get more detailed information of the current view. Even simple topics turn into series of posts. There is so much to explore and share in Siebel..!! <img src='http://geeksbloggingat.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>


<p><b>Related posts:<b><ol><li><a href='http://geeksbloggingat.com/2009/07/23/siebel-fetch-active-view-properties-ii/' rel='bookmark' title='Permanent Link: Siebel &#8211; Fetch Active view properties &#8211; II'>Siebel &#8211; Fetch Active view properties &#8211; II</a> <small>We discussed about fetching the values from the active view...</small></li>
<li><a href='http://geeksbloggingat.com/2009/07/24/siebel-fetch-active-view-properties-iii/' rel='bookmark' title='Permanent Link: Siebel &#8211; Fetch Active view properties &#8211; III'>Siebel &#8211; Fetch Active view properties &#8211; III</a> <small>I will discuss a practical example, and the corresponding Inputs...</small></li>
<li><a href='http://geeksbloggingat.com/2009/04/14/siebel-assets-list-view-performance-issue-cannot-display-records/' rel='bookmark' title='Permanent Link: Siebel Assets List view &#8211; Performance issue / Cannot display records'>Siebel Assets List view &#8211; Performance issue / Cannot display records</a> <small>Assets Screen Load is a major problem in Siebel, and...</small></li>
<li><a href='http://geeksbloggingat.com/2010/05/02/siebel-admin-mode-flag/' rel='bookmark' title='Permanent Link: Siebel &#8211; Admin Mode Flag'>Siebel &#8211; Admin Mode Flag</a> <small>In my last project,we had a requirement of Admin Views,...</small></li>
<li><a href='http://geeksbloggingat.com/2009/06/25/siebel-popup-update-only/' rel='bookmark' title='Permanent Link: Siebel &#8211; Popup Update Only'>Siebel &#8211; Popup Update Only</a> <small>Hi all, I was working with Siebel Multi Valued Links...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://geeksbloggingat.com/2009/07/22/siebel-fetch-active-view-properties/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Siebel &#8211; millisecond dates on Applet</title>
		<link>http://geeksbloggingat.com/2009/05/16/siebel-millisecond-dates-on-applet/</link>
		<comments>http://geeksbloggingat.com/2009/05/16/siebel-millisecond-dates-on-applet/#comments</comments>
		<pubDate>Sat, 16 May 2009 05:00:34 +0000</pubDate>
		<dc:creator>Prachi Sharma</dc:creator>
				<category><![CDATA[Siebel CRM]]></category>
		<category><![CDATA[Applet]]></category>
		<category><![CDATA[Date]]></category>
		<category><![CDATA[eScript]]></category>
		<category><![CDATA[Siebel]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://geeksbloggingat.com/?p=263</guid>
		<description><![CDATA[I had discussed in my previous posts about invoking a BS in a calculated field for complex calculated calculations, and, about finding out dates accurate to milliseconds. You can read about them from the links below: Invoking a BS in a calculated field finding out dates accurate to milliseconds Today, I will discuss as to [...]


<b>Related posts:<b><ol><li><a href='http://geeksbloggingat.com/2009/05/15/siebel-getmilliseconds-usage/' rel='bookmark' title='Permanent Link: Siebel &#8211; getMilliseconds() usage'>Siebel &#8211; getMilliseconds() usage</a> <small>Siebel by default displays all dates in the system accurate...</small></li>
<li><a href='http://geeksbloggingat.com/2009/05/06/siebel-custom-applet-title/' rel='bookmark' title='Permanent Link: Siebel &#8211; Custom Applet Title'>Siebel &#8211; Custom Applet Title</a> <small>There is an Applet title on the top of the...</small></li>
<li><a href='http://geeksbloggingat.com/2009/05/08/siebel-number-of-rows-displayed-in-list-applet/' rel='bookmark' title='Permanent Link: Siebel &#8211; Number of rows displayed in List Applet'>Siebel &#8211; Number of rows displayed in List Applet</a> <small>Siebel Web Client by default shows only the first 7...</small></li>
<li><a href='http://geeksbloggingat.com/2009/05/10/siebel-invokeservicemethod-on-calculated-fields/' rel='bookmark' title='Permanent Link: Siebel &#8211; InvokeServiceMethod() on Calculated Fields'>Siebel &#8211; InvokeServiceMethod() on Calculated Fields</a> <small>InvokeServiceMethod() is used to invoke Business Services and take values...</small></li>
<li><a href='http://geeksbloggingat.com/2009/07/15/siebel-refresh-applet-retaining-existing-context/' rel='bookmark' title='Permanent Link: Siebel &#8211; Refresh Applet retaining existing context'>Siebel &#8211; Refresh Applet retaining existing context</a> <small>RefreshRecord() does not work in all cases, does it? This...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>I had discussed in my previous posts about invoking a BS in a calculated field for complex calculated calculations, and, about finding out dates accurate to milliseconds. You can read about them from the links below:</p>
<p>Invoking a BS in a calculated field<br />
finding out dates accurate to milliseconds</p>
<p>Today, I will discuss as to how we can show dates on Applets with upto millisecond accuracy. This could be of immense importance in EAI projects as one example, wherein we need to calculate the time spent on each step. Performance debugging could be really enhanced by using this method. </p>
<p><span id="more-263"></span>I will extend the concepts introduced previously. We will take the Problem statement to be, &#8220;Showing the &#8216;Created&#8217; time of the Applet, accurate to the closest millisecond&#8221;.</p>
<p>For this we would need to create a new custom column of type string in the corresponding table and the Business Component. Whenever a new record is entered in this table, we will populate this new column as well. I will call it &#8220;Created_ms&#8221;.</p>
<p>I extended the script which I had used in my previous examples like this -</p>
<p>function Service_PreInvokeMethod (MethodName, Inputs, Outputs)<br />
{</p>
<p>if (MethodName == &#8220;md_getMS_Created&#8221;)<br />
{<br />
var d_test01 = new Date();<br />
var d_test03 = d_test01.getMilliseconds();<br />
var d_test02 = d_test01.toString()  + &#8221; : &#8221; + d_test03 ;</p>
<p>Outputs.SetProperty ( &#8220;out_get_ms_created&#8221;, d_test02 );</p>
<p>return (CancelOperation);<br />
}</p>
<p>	return (CancelOperation);<br />
}</p>
<p>I have used the methodname, &#8220;md_getMS_Created&#8221; in this case.<br />
Instead of outputting the value, we can use this script within some other code where we are creating new records. Now, when we expose this column on an Applet, the user will be able to see the time accurate to milliseconds.</p>
<p>I hope this helps somebody some day.</p>


<p><b>Related posts:<b><ol><li><a href='http://geeksbloggingat.com/2009/05/15/siebel-getmilliseconds-usage/' rel='bookmark' title='Permanent Link: Siebel &#8211; getMilliseconds() usage'>Siebel &#8211; getMilliseconds() usage</a> <small>Siebel by default displays all dates in the system accurate...</small></li>
<li><a href='http://geeksbloggingat.com/2009/05/06/siebel-custom-applet-title/' rel='bookmark' title='Permanent Link: Siebel &#8211; Custom Applet Title'>Siebel &#8211; Custom Applet Title</a> <small>There is an Applet title on the top of the...</small></li>
<li><a href='http://geeksbloggingat.com/2009/05/08/siebel-number-of-rows-displayed-in-list-applet/' rel='bookmark' title='Permanent Link: Siebel &#8211; Number of rows displayed in List Applet'>Siebel &#8211; Number of rows displayed in List Applet</a> <small>Siebel Web Client by default shows only the first 7...</small></li>
<li><a href='http://geeksbloggingat.com/2009/05/10/siebel-invokeservicemethod-on-calculated-fields/' rel='bookmark' title='Permanent Link: Siebel &#8211; InvokeServiceMethod() on Calculated Fields'>Siebel &#8211; InvokeServiceMethod() on Calculated Fields</a> <small>InvokeServiceMethod() is used to invoke Business Services and take values...</small></li>
<li><a href='http://geeksbloggingat.com/2009/07/15/siebel-refresh-applet-retaining-existing-context/' rel='bookmark' title='Permanent Link: Siebel &#8211; Refresh Applet retaining existing context'>Siebel &#8211; Refresh Applet retaining existing context</a> <small>RefreshRecord() does not work in all cases, does it? This...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://geeksbloggingat.com/2009/05/16/siebel-millisecond-dates-on-applet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Siebel &#8211; getMilliseconds() usage</title>
		<link>http://geeksbloggingat.com/2009/05/15/siebel-getmilliseconds-usage/</link>
		<comments>http://geeksbloggingat.com/2009/05/15/siebel-getmilliseconds-usage/#comments</comments>
		<pubDate>Fri, 15 May 2009 04:50:33 +0000</pubDate>
		<dc:creator>Prachi Sharma</dc:creator>
				<category><![CDATA[Siebel CRM]]></category>
		<category><![CDATA[Date function]]></category>
		<category><![CDATA[eScript]]></category>
		<category><![CDATA[Siebel]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://geeksbloggingat.com/?p=255</guid>
		<description><![CDATA[Siebel by default displays all dates in the system accurate to the seconds place. However, at times, especially in EAI based projects or performance intensive projects, it is often a requirement to calculate accuracy down to the last millisecond. Siebel provides a ready made function called getMilliseconds() for this functionality. I wrote a simple script [...]


<b>Related posts:<b><ol><li><a href='http://geeksbloggingat.com/2009/05/16/siebel-millisecond-dates-on-applet/' rel='bookmark' title='Permanent Link: Siebel &#8211; millisecond dates on Applet'>Siebel &#8211; millisecond dates on Applet</a> <small>I had discussed in my previous posts about invoking a...</small></li>
<li><a href='http://geeksbloggingat.com/2009/05/10/siebel-invokeservicemethod-on-calculated-fields/' rel='bookmark' title='Permanent Link: Siebel &#8211; InvokeServiceMethod() on Calculated Fields'>Siebel &#8211; InvokeServiceMethod() on Calculated Fields</a> <small>InvokeServiceMethod() is used to invoke Business Services and take values...</small></li>
<li><a href='http://geeksbloggingat.com/2009/07/24/siebel-fetch-active-view-properties-iii/' rel='bookmark' title='Permanent Link: Siebel &#8211; Fetch Active view properties &#8211; III'>Siebel &#8211; Fetch Active view properties &#8211; III</a> <small>I will discuss a practical example, and the corresponding Inputs...</small></li>
<li><a href='http://geeksbloggingat.com/2009/05/03/siebel-eai-queue-usage/' rel='bookmark' title='Permanent Link: Siebel &#8211; EAI Queue &#8211; Usage'>Siebel &#8211; EAI Queue &#8211; Usage</a> <small>I had introduced the concept of Siebel EAI Queues in...</small></li>
<li><a href='http://geeksbloggingat.com/2009/08/13/siebel-symbolic-strings-usage/' rel='bookmark' title='Permanent Link: Siebel &#8211; Symbolic Strings &#8211; Usage'>Siebel &#8211; Symbolic Strings &#8211; Usage</a> <small>Symbolic Strings appear directly in Siebel Tools&#8217; Object Explorer, an...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Siebel by default displays all dates in the system accurate to the seconds place. However, at times, especially in EAI based projects or performance intensive projects, it is often a requirement to calculate accuracy down to the last millisecond.</p>
<p>Siebel provides a ready made function called getMilliseconds() for this functionality.</p>
<p>I wrote a simple script in Siebel Local Client to demostrate this functionality. The contents of the script, &#8220;Dummy Get_MS Test&#8221; is:</p>
<p><span id="more-255"></span>function Service_PreInvokeMethod (MethodName, Inputs, Outputs)<br />
{</p>
<p>if (MethodName == &#8220;md_getMS&#8221;)<br />
{<br />
var d_test01 = new Date();<br />
TheApplication().RaiseErrorText( d_test01.getMilliseconds() );</p>
<p>return (CancelOperation);<br />
}<br />
	return (CancelOperation);<br />
}</p>
<p>This returned me the value 895 in my tests. To be precise, I received the following output:<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
Siebel<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
895(SBL-EXL-00151)<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
OK<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>This cannot be hours, minutes or seconds. It has to be milliseconds.</p>
<p>Hence proven!</p>


<p><b>Related posts:<b><ol><li><a href='http://geeksbloggingat.com/2009/05/16/siebel-millisecond-dates-on-applet/' rel='bookmark' title='Permanent Link: Siebel &#8211; millisecond dates on Applet'>Siebel &#8211; millisecond dates on Applet</a> <small>I had discussed in my previous posts about invoking a...</small></li>
<li><a href='http://geeksbloggingat.com/2009/05/10/siebel-invokeservicemethod-on-calculated-fields/' rel='bookmark' title='Permanent Link: Siebel &#8211; InvokeServiceMethod() on Calculated Fields'>Siebel &#8211; InvokeServiceMethod() on Calculated Fields</a> <small>InvokeServiceMethod() is used to invoke Business Services and take values...</small></li>
<li><a href='http://geeksbloggingat.com/2009/07/24/siebel-fetch-active-view-properties-iii/' rel='bookmark' title='Permanent Link: Siebel &#8211; Fetch Active view properties &#8211; III'>Siebel &#8211; Fetch Active view properties &#8211; III</a> <small>I will discuss a practical example, and the corresponding Inputs...</small></li>
<li><a href='http://geeksbloggingat.com/2009/05/03/siebel-eai-queue-usage/' rel='bookmark' title='Permanent Link: Siebel &#8211; EAI Queue &#8211; Usage'>Siebel &#8211; EAI Queue &#8211; Usage</a> <small>I had introduced the concept of Siebel EAI Queues in...</small></li>
<li><a href='http://geeksbloggingat.com/2009/08/13/siebel-symbolic-strings-usage/' rel='bookmark' title='Permanent Link: Siebel &#8211; Symbolic Strings &#8211; Usage'>Siebel &#8211; Symbolic Strings &#8211; Usage</a> <small>Symbolic Strings appear directly in Siebel Tools&#8217; Object Explorer, an...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://geeksbloggingat.com/2009/05/15/siebel-getmilliseconds-usage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Siebel &#8211; Looping multiple records &#8211; Query and Process</title>
		<link>http://geeksbloggingat.com/2009/05/12/siebel-looping-multiple-records-query-and-process/</link>
		<comments>http://geeksbloggingat.com/2009/05/12/siebel-looping-multiple-records-query-and-process/#comments</comments>
		<pubDate>Tue, 12 May 2009 05:10:40 +0000</pubDate>
		<dc:creator>Nitin Jain</dc:creator>
				<category><![CDATA[Siebel CRM]]></category>
		<category><![CDATA[eScript]]></category>
		<category><![CDATA[problems]]></category>
		<category><![CDATA[Siebel]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://geeksbloggingat.com/?p=286</guid>
		<description><![CDATA[In my last post, I discussed as to how we can query and update multiple records in Siebel Database. You can find it in the link below: Siebel &#8211; Looping multiple records &#8211; Update. Today, let&#8217;s see if there are some good ways to loop through multiple records in Siebel in Query mode, and process [...]


<b>Related posts:<b><ol><li><a href='http://geeksbloggingat.com/2009/05/11/siebel-looping-multiple-records-update-records/' rel='bookmark' title='Permanent Link: Siebel &#8211; Looping multiple records &#8211; Update records'>Siebel &#8211; Looping multiple records &#8211; Update records</a> <small>Hi, We often come across a requirement where we need...</small></li>
<li><a href='http://geeksbloggingat.com/2009/07/08/siebel-looping-multiple-records-iii/' rel='bookmark' title='Permanent Link: Siebel &#8211; Looping Multiple Records &#8211; III'>Siebel &#8211; Looping Multiple Records &#8211; III</a> <small>Looping through multiple records is a requirement we come across...</small></li>
<li><a href='http://geeksbloggingat.com/2009/07/09/siebel-eai-siebel-adapter-looping-multiple-records/' rel='bookmark' title='Permanent Link: Siebel &#8211; EAI Siebel Adapter &#8211; Looping Multiple Records'>Siebel &#8211; EAI Siebel Adapter &#8211; Looping Multiple Records</a> <small>This is a follow-up post on the post, Siebel &#8211;...</small></li>
<li><a href='http://geeksbloggingat.com/2009/05/13/siebel-sia-bc-utility-service-loop-multiple-records/' rel='bookmark' title='Permanent Link: Siebel &#8211; SIA BC Utility Service &#8211; Loop multiple records'>Siebel &#8211; SIA BC Utility Service &#8211; Loop multiple records</a> <small>This is a vanilla business service which provides an extensive...</small></li>
<li><a href='http://geeksbloggingat.com/2010/04/07/eai-siebel-adapter-bs-upsert-multiple-child-records/' rel='bookmark' title='Permanent Link: EAI Siebel Adapter BS &#8211; Upsert Multiple Child Records'>EAI Siebel Adapter BS &#8211; Upsert Multiple Child Records</a> <small>EAI Siebel Adapter finds its usage in almost all integration...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>In my last post, I discussed as to how we can query and update multiple records in Siebel Database. You can find it in the link below:<br />
<a href="http://geeksbloggingat.com/2009/05/11/siebel-looping-multiple-records-update-records/" target="_blank">Siebel &#8211; Looping multiple records &#8211; Update</a>.</p>
<p>Today, let&#8217;s see if there are some good ways to loop through multiple records in Siebel in Query mode, and process the data in each of the records one by one. Let&#8217;s assume the requirement statement is, &#8220;To query for these multiple records and send them to external interface one by one&#8221;.</p>
<p><span id="more-286"></span>One of the easiest solutions, use scripts! I am extending the example I used in the previous post:</p>
<p>var bo_Order = TheApplication().GetBusObject ( &#8220;Order Entry (Sales)&#8221; );<br />
var bc_Order = bo_Order.GetBusComp ( &#8220;Order Entry &#8211; Orders&#8221; );</p>
<p>with (bc_Order)<br />
{<br />
ClearToQuery();<br />
SetViewMode(AllView);<br />
ActivateField ( &#8220;Status&#8221; );<br />
SetSearchSpec ( &#8220;Account&#8221;, &#8220;Nitin Test Account&#8221; );<br />
ExecuteQuery ( ForwardOnly );</p>
<p>var IsRecord = FirstRecord();</p>
<p>while (IsRecord)<br />
	{</p>
<p>	// Call another workflow / BS to process the data.. send to external interface in this case..</p>
<p>	IsRecord = NextRecord();<br />
	}<br />
}<br />
return (CancelOperation);</p>
<p>Anybody who can possibly think of a better solution?</p>


<p><b>Related posts:<b><ol><li><a href='http://geeksbloggingat.com/2009/05/11/siebel-looping-multiple-records-update-records/' rel='bookmark' title='Permanent Link: Siebel &#8211; Looping multiple records &#8211; Update records'>Siebel &#8211; Looping multiple records &#8211; Update records</a> <small>Hi, We often come across a requirement where we need...</small></li>
<li><a href='http://geeksbloggingat.com/2009/07/08/siebel-looping-multiple-records-iii/' rel='bookmark' title='Permanent Link: Siebel &#8211; Looping Multiple Records &#8211; III'>Siebel &#8211; Looping Multiple Records &#8211; III</a> <small>Looping through multiple records is a requirement we come across...</small></li>
<li><a href='http://geeksbloggingat.com/2009/07/09/siebel-eai-siebel-adapter-looping-multiple-records/' rel='bookmark' title='Permanent Link: Siebel &#8211; EAI Siebel Adapter &#8211; Looping Multiple Records'>Siebel &#8211; EAI Siebel Adapter &#8211; Looping Multiple Records</a> <small>This is a follow-up post on the post, Siebel &#8211;...</small></li>
<li><a href='http://geeksbloggingat.com/2009/05/13/siebel-sia-bc-utility-service-loop-multiple-records/' rel='bookmark' title='Permanent Link: Siebel &#8211; SIA BC Utility Service &#8211; Loop multiple records'>Siebel &#8211; SIA BC Utility Service &#8211; Loop multiple records</a> <small>This is a vanilla business service which provides an extensive...</small></li>
<li><a href='http://geeksbloggingat.com/2010/04/07/eai-siebel-adapter-bs-upsert-multiple-child-records/' rel='bookmark' title='Permanent Link: EAI Siebel Adapter BS &#8211; Upsert Multiple Child Records'>EAI Siebel Adapter BS &#8211; Upsert Multiple Child Records</a> <small>EAI Siebel Adapter finds its usage in almost all integration...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://geeksbloggingat.com/2009/05/12/siebel-looping-multiple-records-query-and-process/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Siebel &#8211; Looping multiple records &#8211; Update records</title>
		<link>http://geeksbloggingat.com/2009/05/11/siebel-looping-multiple-records-update-records/</link>
		<comments>http://geeksbloggingat.com/2009/05/11/siebel-looping-multiple-records-update-records/#comments</comments>
		<pubDate>Mon, 11 May 2009 13:56:51 +0000</pubDate>
		<dc:creator>Nitin Jain</dc:creator>
				<category><![CDATA[Siebel CRM]]></category>
		<category><![CDATA[eScript]]></category>
		<category><![CDATA[problems]]></category>
		<category><![CDATA[Scriptless solutions]]></category>
		<category><![CDATA[Siebel]]></category>

		<guid isPermaLink="false">http://geeksbloggingat.com/?p=283</guid>
		<description><![CDATA[Hi, We often come across a requirement where we need to loop through multiple records satisfying a certain search spec on a particular BC. Let&#8217;s assume a simple search spec, for eg. to update the Status of all Sales Orders to Submitted which have their Account as &#8220;Nitin Test Account&#8221;. One easy way to do [...]


<b>Related posts:<b><ol><li><a href='http://geeksbloggingat.com/2009/05/12/siebel-looping-multiple-records-query-and-process/' rel='bookmark' title='Permanent Link: Siebel &#8211; Looping multiple records &#8211; Query and Process'>Siebel &#8211; Looping multiple records &#8211; Query and Process</a> <small>In my last post, I discussed as to how we...</small></li>
<li><a href='http://geeksbloggingat.com/2009/07/08/siebel-looping-multiple-records-iii/' rel='bookmark' title='Permanent Link: Siebel &#8211; Looping Multiple Records &#8211; III'>Siebel &#8211; Looping Multiple Records &#8211; III</a> <small>Looping through multiple records is a requirement we come across...</small></li>
<li><a href='http://geeksbloggingat.com/2009/07/09/siebel-eai-siebel-adapter-looping-multiple-records/' rel='bookmark' title='Permanent Link: Siebel &#8211; EAI Siebel Adapter &#8211; Looping Multiple Records'>Siebel &#8211; EAI Siebel Adapter &#8211; Looping Multiple Records</a> <small>This is a follow-up post on the post, Siebel &#8211;...</small></li>
<li><a href='http://geeksbloggingat.com/2009/05/13/siebel-sia-bc-utility-service-loop-multiple-records/' rel='bookmark' title='Permanent Link: Siebel &#8211; SIA BC Utility Service &#8211; Loop multiple records'>Siebel &#8211; SIA BC Utility Service &#8211; Loop multiple records</a> <small>This is a vanilla business service which provides an extensive...</small></li>
<li><a href='http://geeksbloggingat.com/2010/04/07/eai-siebel-adapter-bs-upsert-multiple-child-records/' rel='bookmark' title='Permanent Link: EAI Siebel Adapter BS &#8211; Upsert Multiple Child Records'>EAI Siebel Adapter BS &#8211; Upsert Multiple Child Records</a> <small>EAI Siebel Adapter finds its usage in almost all integration...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Hi,</p>
<p>We often come across a requirement where we need to loop through multiple records satisfying a certain search spec on a particular BC.</p>
<p>Let&#8217;s assume a simple search spec, for eg. to update the Status of all Sales Orders to Submitted which have their Account as &#8220;Nitin Test Account&#8221;.</p>
<p><span id="more-283"></span>One easy way to do it through Siebel scripts is maybe a pseudocode as follows:</p>
<p>var bo_Order = TheApplication().GetBusObject ( &#8220;Order Entry (Sales)&#8221; );<br />
var bc_Order = bo_Order.GetBusComp ( &#8220;Order Entry &#8211; Orders&#8221; );</p>
<p>with (bc_Order)<br />
{<br />
ClearToQuery();<br />
SetViewMode(AllView);<br />
ActivateField ( &#8220;Status&#8221; );<br />
SetSearchSpec ( &#8220;Account&#8221;, &#8220;Nitin Test Account&#8221; );<br />
ExecuteQuery ( ForwardOnly );</p>
<p>var IsRecord = FirstRecord();</p>
<p>while (IsRecord)<br />
	{<br />
	SetFieldValue ( &#8220;Status&#8221;, &#8220;Submitted&#8221; );<br />
	IsRecord = NextRecord();<br />
	}<br />
}<br />
return (CancelOperation);</p>
<p>Or, a more elegant approach which I personally prefer for the above solution, use a workflow. Use the step Siebel Operation.<br />
The Siebel Operation, Update operation, will automatically update all the records satisfying that particular Search Spec fed in as Input.</p>
<p>One line solution to nearly 10-15 lines of script!</p>


<p><b>Related posts:<b><ol><li><a href='http://geeksbloggingat.com/2009/05/12/siebel-looping-multiple-records-query-and-process/' rel='bookmark' title='Permanent Link: Siebel &#8211; Looping multiple records &#8211; Query and Process'>Siebel &#8211; Looping multiple records &#8211; Query and Process</a> <small>In my last post, I discussed as to how we...</small></li>
<li><a href='http://geeksbloggingat.com/2009/07/08/siebel-looping-multiple-records-iii/' rel='bookmark' title='Permanent Link: Siebel &#8211; Looping Multiple Records &#8211; III'>Siebel &#8211; Looping Multiple Records &#8211; III</a> <small>Looping through multiple records is a requirement we come across...</small></li>
<li><a href='http://geeksbloggingat.com/2009/07/09/siebel-eai-siebel-adapter-looping-multiple-records/' rel='bookmark' title='Permanent Link: Siebel &#8211; EAI Siebel Adapter &#8211; Looping Multiple Records'>Siebel &#8211; EAI Siebel Adapter &#8211; Looping Multiple Records</a> <small>This is a follow-up post on the post, Siebel &#8211;...</small></li>
<li><a href='http://geeksbloggingat.com/2009/05/13/siebel-sia-bc-utility-service-loop-multiple-records/' rel='bookmark' title='Permanent Link: Siebel &#8211; SIA BC Utility Service &#8211; Loop multiple records'>Siebel &#8211; SIA BC Utility Service &#8211; Loop multiple records</a> <small>This is a vanilla business service which provides an extensive...</small></li>
<li><a href='http://geeksbloggingat.com/2010/04/07/eai-siebel-adapter-bs-upsert-multiple-child-records/' rel='bookmark' title='Permanent Link: EAI Siebel Adapter BS &#8211; Upsert Multiple Child Records'>EAI Siebel Adapter BS &#8211; Upsert Multiple Child Records</a> <small>EAI Siebel Adapter finds its usage in almost all integration...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://geeksbloggingat.com/2009/05/11/siebel-looping-multiple-records-update-records/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Siebel &#8211; InvokeServiceMethod() on Calculated Fields</title>
		<link>http://geeksbloggingat.com/2009/05/10/siebel-invokeservicemethod-on-calculated-fields/</link>
		<comments>http://geeksbloggingat.com/2009/05/10/siebel-invokeservicemethod-on-calculated-fields/#comments</comments>
		<pubDate>Sun, 10 May 2009 02:45:56 +0000</pubDate>
		<dc:creator>Prachi Sharma</dc:creator>
				<category><![CDATA[Siebel CRM]]></category>
		<category><![CDATA[Business Component]]></category>
		<category><![CDATA[Configuration]]></category>
		<category><![CDATA[eScript]]></category>
		<category><![CDATA[Siebel]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://geeksbloggingat.com/?p=253</guid>
		<description><![CDATA[InvokeServiceMethod() is used to invoke Business Services and take values from it in case of Calculated Fields. I actually wanted to post on something else, but, I guess this has to be a precursor to it. All of us know of Calculated Fields in Siebel Business Components. I am sure they must have solved some [...]


<b>Related posts:<b><ol><li><a href='http://geeksbloggingat.com/2009/05/16/siebel-millisecond-dates-on-applet/' rel='bookmark' title='Permanent Link: Siebel &#8211; millisecond dates on Applet'>Siebel &#8211; millisecond dates on Applet</a> <small>I had discussed in my previous posts about invoking a...</small></li>
<li><a href='http://geeksbloggingat.com/2009/05/01/activating-fields/' rel='bookmark' title='Permanent Link: Siebel &#8211; ActivateField() split wide open'>Siebel &#8211; ActivateField() split wide open</a> <small>In Siebel, we generally tend to use the fields on...</small></li>
<li><a href='http://geeksbloggingat.com/2009/06/22/siebel-make-mvg-field-required/' rel='bookmark' title='Permanent Link: Siebel &#8211; Make MVG Field required'>Siebel &#8211; Make MVG Field required</a> <small>Siebel supports the concept of Multi Valued Fields, or the...</small></li>
<li><a href='http://geeksbloggingat.com/2009/06/23/siebel-make-mvg-field-required-ii/' rel='bookmark' title='Permanent Link: Siebel &#8211; Make MVG Field required &#8211; II'>Siebel &#8211; Make MVG Field required &#8211; II</a> <small>Hi friends, This is a follow-up post of the post...</small></li>
<li><a href='http://geeksbloggingat.com/2009/05/15/siebel-getmilliseconds-usage/' rel='bookmark' title='Permanent Link: Siebel &#8211; getMilliseconds() usage'>Siebel &#8211; getMilliseconds() usage</a> <small>Siebel by default displays all dates in the system accurate...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>InvokeServiceMethod() is used to invoke Business Services and take values from it in case of Calculated Fields.</p>
<p>I actually wanted to post on something else, but, I guess this has to be a precursor to it.</p>
<p>All of us know of Calculated Fields in Siebel Business Components. I am sure they must have solved some very big problems for you at times, as they have for me. However, not all of us know that we can actually invoke Business Service scripts from within the Calculated Fields, rather than just calling some in built functions or playing around with the other fields in the BC. This functionality enhances the already huge functionality of the Calculated Fields in Siebel.</p>
<p><span id="more-253"></span>For demonstration, I will first create a new Dummy Business Service, and then invoke it from BC.</p>
<p>Create a new Business Service in Siebel Tools by the name, &#8220;Dummy InvokeServiceMethod Test BS&#8221;.<br />
Define a method in this BS, &#8220;md_SumVals()&#8221;. Following is a sample code snippet:</p>
<p>function Service_PreInvokeMethod (MethodName, Inputs, Outputs)<br />
{<br />
if(MethodName == &#8220;md_SumVals&#8221;)<br />
{<br />
var num1 = Inputs.GetProperty(&#8220;Num1&#8243;);<br />
var num2 = Inputs.GetProperty(&#8220;Num2&#8243;);<br />
var Out_Sum = num1 + &#8220;,&#8221; + num2;<br />
Outputs.SetProperty(&#8220;Out_Sum&#8221;, Out_Sum);<br />
return(CancelOperation);<br />
}</p>
<p>return (CancelOperation);<br />
}</p>
<p>Client side BS also works in this case.<br />
This BS is now ready to return the Sum of the two input values in the Output Property, &#8220;Out_Sum&#8221;.</p>
<p>Now, add a new field, &#8220;SumVals&#8221; in the BC where this value needs to be exposed. Tick mark the &#8220;Calculated&#8221; property to TRUE for this field. In the column for Calculated Value, enter the expression:</p>
<p>InvokeServiceMethod(&#8220;Dummy InvokeServiceMethod Test BS&#8221;,&#8221;md_SumVals&#8221;,&#8221;num1=3, num2=4&#8243;, &#8220;Out_Sum&#8221;)</p>
<p>The general syntax for invoking this method is:<br />
InvokeServiceMethod (&#8220;[ServiceName]&#8220;, &#8220;[MethodName]&#8220;, &#8220;[InputProp1=val1, InputProp2=val2]&#8220;, &#8220;[OutputProp]&#8220;)</p>
<p>This will now return the sum of the two input numbers. This example can be expanded in a variety of ways for complex Siebel operations.</p>
<p>I would like to emphasize for one and all to minimize scripting since Scripts are not recommended as part of Siebel Best practices. It is very rare that you would run out of all the other options and have to use InvokeServiceMethod on a Calculated Field. The requirement has to be really really complex in this case, I guess!</p>


<p><b>Related posts:<b><ol><li><a href='http://geeksbloggingat.com/2009/05/16/siebel-millisecond-dates-on-applet/' rel='bookmark' title='Permanent Link: Siebel &#8211; millisecond dates on Applet'>Siebel &#8211; millisecond dates on Applet</a> <small>I had discussed in my previous posts about invoking a...</small></li>
<li><a href='http://geeksbloggingat.com/2009/05/01/activating-fields/' rel='bookmark' title='Permanent Link: Siebel &#8211; ActivateField() split wide open'>Siebel &#8211; ActivateField() split wide open</a> <small>In Siebel, we generally tend to use the fields on...</small></li>
<li><a href='http://geeksbloggingat.com/2009/06/22/siebel-make-mvg-field-required/' rel='bookmark' title='Permanent Link: Siebel &#8211; Make MVG Field required'>Siebel &#8211; Make MVG Field required</a> <small>Siebel supports the concept of Multi Valued Fields, or the...</small></li>
<li><a href='http://geeksbloggingat.com/2009/06/23/siebel-make-mvg-field-required-ii/' rel='bookmark' title='Permanent Link: Siebel &#8211; Make MVG Field required &#8211; II'>Siebel &#8211; Make MVG Field required &#8211; II</a> <small>Hi friends, This is a follow-up post of the post...</small></li>
<li><a href='http://geeksbloggingat.com/2009/05/15/siebel-getmilliseconds-usage/' rel='bookmark' title='Permanent Link: Siebel &#8211; getMilliseconds() usage'>Siebel &#8211; getMilliseconds() usage</a> <small>Siebel by default displays all dates in the system accurate...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://geeksbloggingat.com/2009/05/10/siebel-invokeservicemethod-on-calculated-fields/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Siebel &#8211; EAI Queue &#8211; a Critique&#8217;</title>
		<link>http://geeksbloggingat.com/2009/05/04/siebel-eai-queue-a-critique/</link>
		<comments>http://geeksbloggingat.com/2009/05/04/siebel-eai-queue-a-critique/#comments</comments>
		<pubDate>Mon, 04 May 2009 13:38:40 +0000</pubDate>
		<dc:creator>Nitin Jain</dc:creator>
				<category><![CDATA[Siebel CRM]]></category>
		<category><![CDATA[Configuration]]></category>
		<category><![CDATA[Critique]]></category>
		<category><![CDATA[EAI]]></category>
		<category><![CDATA[eScript]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Scriptless solutions]]></category>
		<category><![CDATA[Siebel]]></category>

		<guid isPermaLink="false">http://geeksbloggingat.com/?p=220</guid>
		<description><![CDATA[I had introduced the Siebel EAI Queue and its usage in my last articles. Though Siebel EAI Queue is a very good Siebel feature, there are some serious shortcomings as well. An architect would, thus, need to critically evaluate all the pros and cons before deciding to implement the OOB EAI Queue or a custom [...]


<b>Related posts:<b><ol><li><a href='http://geeksbloggingat.com/2009/05/01/siebel-eai-queue/' rel='bookmark' title='Permanent Link: Siebel &#8211; EAI Queue'>Siebel &#8211; EAI Queue</a> <small>Okay, what are you thinking about? Is it Middlewares in...</small></li>
<li><a href='http://geeksbloggingat.com/2009/05/03/siebel-eai-queue-usage/' rel='bookmark' title='Permanent Link: Siebel &#8211; EAI Queue &#8211; Usage'>Siebel &#8211; EAI Queue &#8211; Usage</a> <small>I had introduced the concept of Siebel EAI Queues in...</small></li>
<li><a href='http://geeksbloggingat.com/2009/05/26/siebel-enableserviceargtracing-logging-messages/' rel='bookmark' title='Permanent Link: Siebel &#8211; EnableServiceArgTracing &#8211; Logging Messages'>Siebel &#8211; EnableServiceArgTracing &#8211; Logging Messages</a> <small>Hi, We have already discussed at quite a length the...</small></li>
<li><a href='http://geeksbloggingat.com/2009/10/07/query-on-the-long-column-or-field/' rel='bookmark' title='Permanent Link: Query on the Long Column or Field'>Query on the Long Column or Field</a> <small>A typical problem in any EAI project. Others too!! One...</small></li>
<li><a href='http://geeksbloggingat.com/2009/06/05/eai-jms-transport/' rel='bookmark' title='Permanent Link: Siebel &#8211; EAI JMS Transport'>Siebel &#8211; EAI JMS Transport</a> <small>Hi All, After being a mere spectator and a regular...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>I had introduced the Siebel EAI Queue and its usage in my last articles. Though Siebel EAI Queue is a very good Siebel feature, there are some serious shortcomings as well. An architect would, thus, need to critically evaluate all the pros and cons before deciding to implement the OOB EAI Queue or a custom solution in a Siebel EAI project.</p>
<p>First let&#8217;s look at all the areas where Siebel EAI Queues stand strong.</p>
<p>1) No customisation needed<br />
This is an OOB fucntionality. So, no custom coding is necessary. The vanilla BS can directly be called from the WF to help operate the EAI Queues. Custom code comes with its own sets of problems &#8211; dedicated human resources, architecting, implementing, testing,  debugging, performance, scalability, expandability, robustness.</p>
<p><span id="more-220"></span>2) Reduced Implementation time<br />
Implementation time is zero for Logging module. The only effort is to call the vanilla BS at all the places where we want to log messages.</p>
<p>3) Almost no debugging needed.<br />
It is a Siebel OOB functionality. So, I can be sure there are no code glitches and resulting mishaps. If something doesn&#8217;t work as it says in the Bookshelf, either my usage is faulty, or it is a Siebel Product Defect</p>
<p>4) Lesser Team size as no concentrated effort on this module of the project.<br />
Why have dedicated human resources working on the Logging and Error Handling mechanism?</p>
<p>5) Robustness<br />
Extremely robust. It works with the file system. So, I don&#8217;t think there is a limit on as to how big a file can be stored here. The BS should ideally not fail unless some Siebel Server component itself is down.</p>
<p>6) Performance<br />
Best performance you can ever get I guess. Mother knows best! If Siebel has designed and developed this, I guess, this is as good as it gets.</p>
<p>Do drop in some comments in case you feel I have not done justice to the positives part, and that there are points that I have missed out on. I will update the post accordingly.</p>
<p>But then, as with everything else on Earth, nothing is perfect. I am looking at a very simple requirement &#8211; I need to point out as to which message is an Inbound message, and which one, and Outbound. How do I implement it with the EAI Queue architecture?</p>
<p>Think, think, think&#8230;</p>
<p>The best I can think of is to extend the corresponding table for the EAI Queue, and the corresponding Business Components. I can also expose them on the UI for better handling. Question &#8211; After extending the Siebel objects, how do I use them. How do I populate this new flag called &#8220;Inbound Message&#8221; for eg, to TRUE or FALSE? The Logging of messages is being done through the vanilla BS. There is no code exposed. Now, if I have to populate this new column, I may be able to do it by scripting the vanilla BS &#8211; &#8220;EAI XML Queuing Service&#8221; after some work with the BS analysing Inputs and Outputs. Maybe, better still, just use a Siebel Operation step after the vanilla BS to update all the custom columns. But then, double query on the same record of the same BC, it&#8217;s a performance issue.</p>
<p>This is only one example when I could need to extend the objects with many different custom columns.</p>
<p>Let&#8217;s start playing! I want to link the Inbound and the Outbound messages. In a sense, there was an Outbound response to an Inbound request to Siebel. We should map which Inbound maps to which Outbound. Else, we may just be drowned in a deluge of messages. More custom columns, Siebel Links, MVLs, etc. as a solution to this. Maybe with some effort, it&#8217;s feasible.</p>
<p>I want to store many different types of files and many different types of messages &#8211; as in Erroneous Messages, Error Messages, Log Messages. More extensions.</p>
<p>Generally, all projects have a retry mechanism for all the erronous messages. I have seen SAP Business Services being integrated directly with Siebel EAI Queues. But, for custom queues, customization is the answer I guess.</p>
<p>With time, lots of useful and non useful data gets cluttered up in the Queue. A custom cleaning-up and archiving mechanism is thus inevitable.</p>
<p>Single most important issue I personally see with the vanilla EAI Queue approach is the fact that it interacts with the Siebel Filesystem and not the Siebel Database! The messages are stored in form of files in the Siebel Filesystem, eventually with the large number of Siebel messages coming in, the valuable hard disk space will be cluttered quickly. The Siebel FS size will increase. If there is a Siebel project I am working on, I would not mind having a slightly bigger database. But, unnecassary increase in the Siebel Filesystem is the last thing in the world that I would recommend. Don&#8217;t even get me started on the many of the file handling issues with many different flavours of UNIX in the market. I once ran into an implementation wherein I had to change the complete architecture from File based to DB based because the OS as a limitation could only accept at max 256 open file handles! Ridiculous as it may seem, it entailed many sleepless nights on my part to get everything up and woring within a week without any glitches &#8211; just can&#8217;t forget those!</p>
<p>All in all, my point of view is that, though you may use this implementation as an immediate quick fix, or a nice to have feature, Siebel EAI Queues feature fares horrendously on the Scalability and Expandability front.</p>
<p>If you are willing to play around with Siebel vanilla objects and extend them to suit you requirement no end, this may just be the solution for you. However, please do a deep insight and analysis of your requirements and other available options (basically custom, I guess) to get over this. It is more of an Analysts&#8217; point of view to go with either of the two approaches.</p>
<p>Let me see if I can rope in somebody to explain in detail a nice custom Logging, Error Handling, Retry and clean-up / archiving mechanism.</p>


<p><b>Related posts:<b><ol><li><a href='http://geeksbloggingat.com/2009/05/01/siebel-eai-queue/' rel='bookmark' title='Permanent Link: Siebel &#8211; EAI Queue'>Siebel &#8211; EAI Queue</a> <small>Okay, what are you thinking about? Is it Middlewares in...</small></li>
<li><a href='http://geeksbloggingat.com/2009/05/03/siebel-eai-queue-usage/' rel='bookmark' title='Permanent Link: Siebel &#8211; EAI Queue &#8211; Usage'>Siebel &#8211; EAI Queue &#8211; Usage</a> <small>I had introduced the concept of Siebel EAI Queues in...</small></li>
<li><a href='http://geeksbloggingat.com/2009/05/26/siebel-enableserviceargtracing-logging-messages/' rel='bookmark' title='Permanent Link: Siebel &#8211; EnableServiceArgTracing &#8211; Logging Messages'>Siebel &#8211; EnableServiceArgTracing &#8211; Logging Messages</a> <small>Hi, We have already discussed at quite a length the...</small></li>
<li><a href='http://geeksbloggingat.com/2009/10/07/query-on-the-long-column-or-field/' rel='bookmark' title='Permanent Link: Query on the Long Column or Field'>Query on the Long Column or Field</a> <small>A typical problem in any EAI project. Others too!! One...</small></li>
<li><a href='http://geeksbloggingat.com/2009/06/05/eai-jms-transport/' rel='bookmark' title='Permanent Link: Siebel &#8211; EAI JMS Transport'>Siebel &#8211; EAI JMS Transport</a> <small>Hi All, After being a mere spectator and a regular...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://geeksbloggingat.com/2009/05/04/siebel-eai-queue-a-critique/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Siebel &#8211; ActivateField() split wide open</title>
		<link>http://geeksbloggingat.com/2009/05/01/activating-fields/</link>
		<comments>http://geeksbloggingat.com/2009/05/01/activating-fields/#comments</comments>
		<pubDate>Fri, 01 May 2009 04:16:56 +0000</pubDate>
		<dc:creator>Himanshu Bajpai</dc:creator>
				<category><![CDATA[Siebel CRM]]></category>
		<category><![CDATA[Business Component]]></category>
		<category><![CDATA[Configuration]]></category>
		<category><![CDATA[eScript]]></category>
		<category><![CDATA[Siebel]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://geeksbloggingat.com/?p=186</guid>
		<description><![CDATA[In Siebel, we generally tend to use the fields on the BC level in a number of ways, one of them being their use in Siebel scripts. The most common functions for operating on BC fields are GetFieldValue() and SetFieldValue() used for getting a value, or setting a value of the corresponding field in the [...]


<b>Related posts:<b><ol><li><a href='http://geeksbloggingat.com/2009/06/22/siebel-make-mvg-field-required/' rel='bookmark' title='Permanent Link: Siebel &#8211; Make MVG Field required'>Siebel &#8211; Make MVG Field required</a> <small>Siebel supports the concept of Multi Valued Fields, or the...</small></li>
<li><a href='http://geeksbloggingat.com/2009/08/17/siebel-run-case-insensitive-queries/' rel='bookmark' title='Permanent Link: Siebel &#8211; Run Case Insensitive queries'>Siebel &#8211; Run Case Insensitive queries</a> <small>This is a nice tip I ran across. All the...</small></li>
<li><a href='http://geeksbloggingat.com/2009/07/23/siebel-fetch-active-view-properties-ii/' rel='bookmark' title='Permanent Link: Siebel &#8211; Fetch Active view properties &#8211; II'>Siebel &#8211; Fetch Active view properties &#8211; II</a> <small>We discussed about fetching the values from the active view...</small></li>
<li><a href='http://geeksbloggingat.com/2009/05/10/siebel-invokeservicemethod-on-calculated-fields/' rel='bookmark' title='Permanent Link: Siebel &#8211; InvokeServiceMethod() on Calculated Fields'>Siebel &#8211; InvokeServiceMethod() on Calculated Fields</a> <small>InvokeServiceMethod() is used to invoke Business Services and take values...</small></li>
<li><a href='http://geeksbloggingat.com/2009/05/17/siebel-defaultfocus-user-property/' rel='bookmark' title='Permanent Link: Siebel &#8211; DefaultFocus &#8211; User Property'>Siebel &#8211; DefaultFocus &#8211; User Property</a> <small>In Siebel Application, whenever you navigate to a screen, the...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>In Siebel, we generally tend to use the fields on the BC level in a number of ways, one of them being their use in Siebel scripts. The most common functions for operating on BC fields are GetFieldValue() and SetFieldValue() used for getting a value, or setting a value of the corresponding field in the BC. However, Siebel requires using ActivateField() before operating on any field of the BC.</p>
<p>Fields that are not active at runtime should not be used in script. Runtime errors, flawed logic and lost data may be the result of such a practice.</p>
<p><span id="more-186"></span>Following are the fields that are active by default.<br />
• System fields (Id, Created, Created By, Updated, Updated By)<br />
• Fields with their Link Spec property (on the business component object) set to TRUE<br />
• Fields with their Force Active property (on the business component object) set to TRUE<br />
• Fields included in the definition of an applet on the active view, even if the field’s Show In List property (for List Applets in Siebel 7.x) or its Visible property (for Form Applets in Siebel 7.x) is set to FALSE (on the applet object). </p>
<p>Note that a list column must be bound to a web template to actually be included in the SQL. Simply defining the column in the applet’s definition will not make a field active as of 7.5.2.200.<br />
• Fields activated with BusComp.ActivateField(“”) are active for the lifetime of the BusComp object variable or until deactivated explicitly by the DeactivateFields method.<br />
• Fields that are used as part of a calculated field calculation when the calculated field is retrieved for use on the active applet.</p>
<p>If any of the above circumstances is not true then the field will not be retrieved in the SQL statement for the business component. This means that no value is available to GetFieldValue and subsequent updates with WriteRecord will not have a database column to update since it was not included in the original SQL statement. </p>
<p>Both cases have a severe impact. Whether<br />
• The ActivateField() method is used incorrectly, or<br />
• The ActivateField() method causes the specified field to be included in the SQL statement for the subsequent ExecuteQuery() method call. A call to ActivateField() is relevant only if followed by a call to the ExecuteQuery() method.</p>
<p>Retrieving and updating fields using BC.GetFieldValue() or BC.SetFieldValue() methods before a query has been executed will not work as expected. If the script calls GetFieldValue before a field has been properly activated and retrieved, GetFieldValue will return a runtime error will occur for the use of GetFieldValue or SetFieldValue where a field has not been activated.</p>
<p>While working with the Siebel Data Server from an external VB/Java application, for example, the Siebel Data Server is not aware of any applet definitions and, therefore, will not include the fields defined on an applet. Script must use the ActivateField method to retrieve the desired fields in a query in this case. This is also true when interacting with the Siebel Database using the Siebel Business Objects Interface Type Library.</p>
<p>Let&#8217;s wait for more on ActivateField().</p>


<p><b>Related posts:<b><ol><li><a href='http://geeksbloggingat.com/2009/06/22/siebel-make-mvg-field-required/' rel='bookmark' title='Permanent Link: Siebel &#8211; Make MVG Field required'>Siebel &#8211; Make MVG Field required</a> <small>Siebel supports the concept of Multi Valued Fields, or the...</small></li>
<li><a href='http://geeksbloggingat.com/2009/08/17/siebel-run-case-insensitive-queries/' rel='bookmark' title='Permanent Link: Siebel &#8211; Run Case Insensitive queries'>Siebel &#8211; Run Case Insensitive queries</a> <small>This is a nice tip I ran across. All the...</small></li>
<li><a href='http://geeksbloggingat.com/2009/07/23/siebel-fetch-active-view-properties-ii/' rel='bookmark' title='Permanent Link: Siebel &#8211; Fetch Active view properties &#8211; II'>Siebel &#8211; Fetch Active view properties &#8211; II</a> <small>We discussed about fetching the values from the active view...</small></li>
<li><a href='http://geeksbloggingat.com/2009/05/10/siebel-invokeservicemethod-on-calculated-fields/' rel='bookmark' title='Permanent Link: Siebel &#8211; InvokeServiceMethod() on Calculated Fields'>Siebel &#8211; InvokeServiceMethod() on Calculated Fields</a> <small>InvokeServiceMethod() is used to invoke Business Services and take values...</small></li>
<li><a href='http://geeksbloggingat.com/2009/05/17/siebel-defaultfocus-user-property/' rel='bookmark' title='Permanent Link: Siebel &#8211; DefaultFocus &#8211; User Property'>Siebel &#8211; DefaultFocus &#8211; User Property</a> <small>In Siebel Application, whenever you navigate to a screen, the...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://geeksbloggingat.com/2009/05/01/activating-fields/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Siebel &#8211; Make a field Required, conditionally</title>
		<link>http://geeksbloggingat.com/2009/04/22/siebel-make-a-field-require-conditionally/</link>
		<comments>http://geeksbloggingat.com/2009/04/22/siebel-make-a-field-require-conditionally/#comments</comments>
		<pubDate>Wed, 22 Apr 2009 10:51:29 +0000</pubDate>
		<dc:creator>Madhvi Arora</dc:creator>
				<category><![CDATA[Siebel CRM]]></category>
		<category><![CDATA[Calculated Function]]></category>
		<category><![CDATA[Configuration]]></category>
		<category><![CDATA[eScript]]></category>
		<category><![CDATA[Scriptless solutions]]></category>
		<category><![CDATA[Siebel]]></category>
		<category><![CDATA[User Property]]></category>

		<guid isPermaLink="false">http://geeksbloggingat.com/?p=124</guid>
		<description><![CDATA[There was a requirement in our project to make Account Field required in Quote entity conditionally. Had it not been optional, we would have done this by the setting the &#8216;Required&#8217; property to TRUE for the field in the applet. But, then it would not be conditional, and would always be required. So, we used [...]


<b>Related posts:<b><ol><li><a href='http://geeksbloggingat.com/2009/04/23/siebel-showing-red-asterisk-on-a-conditional-required-field/' rel='bookmark' title='Permanent Link: Siebel &#8211; Showing red asterisk on a conditionally required field'>Siebel &#8211; Showing red asterisk on a conditionally required field</a> <small>In Siebel vanilla Application, we see a red asterisk (...</small></li>
<li><a href='http://geeksbloggingat.com/2009/06/22/siebel-make-mvg-field-required/' rel='bookmark' title='Permanent Link: Siebel &#8211; Make MVG Field required'>Siebel &#8211; Make MVG Field required</a> <small>Siebel supports the concept of Multi Valued Fields, or the...</small></li>
<li><a href='http://geeksbloggingat.com/2009/06/23/siebel-make-mvg-field-required-ii/' rel='bookmark' title='Permanent Link: Siebel &#8211; Make MVG Field required &#8211; II'>Siebel &#8211; Make MVG Field required &#8211; II</a> <small>Hi friends, This is a follow-up post of the post...</small></li>
<li><a href='http://geeksbloggingat.com/2009/04/24/html-code-in-error-message/' rel='bookmark' title='Permanent Link: Siebel &#8211; HTML Code displayed in Error Message'>Siebel &#8211; HTML Code displayed in Error Message</a> <small>There was a requirement in our project to make Account...</small></li>
<li><a href='http://geeksbloggingat.com/2010/05/02/siebel-admin-mode-flag/' rel='bookmark' title='Permanent Link: Siebel &#8211; Admin Mode Flag'>Siebel &#8211; Admin Mode Flag</a> <small>In my last project,we had a requirement of Admin Views,...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>There was a requirement in our project to make Account Field required in Quote entity conditionally. Had it not been optional, we would have done this by the setting the &#8216;Required&#8217; property to TRUE for the field in the applet. But, then it would not be conditional, and would always be required.</p>
<p><span id="more-124"></span>So, we used an BC field level User Property, &#8216;Required&#8217;. We created an expression which conditionally evaluated to TRUE or FALSE as per our requirement, and we used this against the Required User Property.</p>
<p>Thus, we were able to set the field to required successfully. Though this solved our problem initially, it brought with itself another set of problems which I will discuss in the posts to come.</p>


<p><b>Related posts:<b><ol><li><a href='http://geeksbloggingat.com/2009/04/23/siebel-showing-red-asterisk-on-a-conditional-required-field/' rel='bookmark' title='Permanent Link: Siebel &#8211; Showing red asterisk on a conditionally required field'>Siebel &#8211; Showing red asterisk on a conditionally required field</a> <small>In Siebel vanilla Application, we see a red asterisk (...</small></li>
<li><a href='http://geeksbloggingat.com/2009/06/22/siebel-make-mvg-field-required/' rel='bookmark' title='Permanent Link: Siebel &#8211; Make MVG Field required'>Siebel &#8211; Make MVG Field required</a> <small>Siebel supports the concept of Multi Valued Fields, or the...</small></li>
<li><a href='http://geeksbloggingat.com/2009/06/23/siebel-make-mvg-field-required-ii/' rel='bookmark' title='Permanent Link: Siebel &#8211; Make MVG Field required &#8211; II'>Siebel &#8211; Make MVG Field required &#8211; II</a> <small>Hi friends, This is a follow-up post of the post...</small></li>
<li><a href='http://geeksbloggingat.com/2009/04/24/html-code-in-error-message/' rel='bookmark' title='Permanent Link: Siebel &#8211; HTML Code displayed in Error Message'>Siebel &#8211; HTML Code displayed in Error Message</a> <small>There was a requirement in our project to make Account...</small></li>
<li><a href='http://geeksbloggingat.com/2010/05/02/siebel-admin-mode-flag/' rel='bookmark' title='Permanent Link: Siebel &#8211; Admin Mode Flag'>Siebel &#8211; Admin Mode Flag</a> <small>In my last project,we had a requirement of Admin Views,...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://geeksbloggingat.com/2009/04/22/siebel-make-a-field-require-conditionally/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Siebel &#8211; LookUpName() and LookUpValue()</title>
		<link>http://geeksbloggingat.com/2009/04/17/siebel-lookupname-and-lookupvalue/</link>
		<comments>http://geeksbloggingat.com/2009/04/17/siebel-lookupname-and-lookupvalue/#comments</comments>
		<pubDate>Fri, 17 Apr 2009 03:47:21 +0000</pubDate>
		<dc:creator>Nitin Jain</dc:creator>
				<category><![CDATA[Siebel CRM]]></category>
		<category><![CDATA[Calculated Function]]></category>
		<category><![CDATA[eScript]]></category>
		<category><![CDATA[Scriptless solutions]]></category>
		<category><![CDATA[Siebel]]></category>

		<guid isPermaLink="false">http://geeksbloggingat.com/?p=66</guid>
		<description><![CDATA[Hi all, I was working for a multi lingual implementation recently. This means, the Status on the Order Header was in English if the language selection of logged in user was English, and in Swedish if the language of the logged in user was Swedish. I came across this problem that at times when the [...]


<b>Related posts:<b><ol><li><a href='http://geeksbloggingat.com/2009/06/24/siebel-lov-number-limitation/' rel='bookmark' title='Permanent Link: Siebel &#8211; LOV Number Limitation'>Siebel &#8211; LOV Number Limitation</a> <small>Siebel List of Values is probably the most commonly used...</small></li>
<li><a href='http://geeksbloggingat.com/2009/05/11/siebel-looping-multiple-records-update-records/' rel='bookmark' title='Permanent Link: Siebel &#8211; Looping multiple records &#8211; Update records'>Siebel &#8211; Looping multiple records &#8211; Update records</a> <small>Hi, We often come across a requirement where we need...</small></li>
<li><a href='http://geeksbloggingat.com/2010/03/20/siebelsis-om-pmt-service/' rel='bookmark' title='Permanent Link: Siebel &#8211; SIS OM PMT Service'>Siebel &#8211; SIS OM PMT Service</a> <small>There are lots of vanilla business services available in Siebel...</small></li>
<li><a href='http://geeksbloggingat.com/2009/07/09/siebel-eai-siebel-adapter-looping-multiple-records/' rel='bookmark' title='Permanent Link: Siebel &#8211; EAI Siebel Adapter &#8211; Looping Multiple Records'>Siebel &#8211; EAI Siebel Adapter &#8211; Looping Multiple Records</a> <small>This is a follow-up post on the post, Siebel &#8211;...</small></li>
<li><a href='http://geeksbloggingat.com/2009/05/03/siebel-eai-queue-usage/' rel='bookmark' title='Permanent Link: Siebel &#8211; EAI Queue &#8211; Usage'>Siebel &#8211; EAI Queue &#8211; Usage</a> <small>I had introduced the concept of Siebel EAI Queues in...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Hi all,</p>
<p>I was working for a multi lingual implementation recently. This means, the Status on the Order Header was in English if the language selection of logged in user was English, and in Swedish if the language of the logged in user was Swedish.</p>
<p>I came across this problem that at times when the user invoked my custom method on the Orders screen by clicking a button, the Order Status value was passed in his native language &#8211; English (ENU) or Swedish (SVE). </p>
<p><span id="more-66"></span><br />
The requirement was to<br />
1) read the existing status,<br />
2) do some processing based on as to what the status was, and<br />
3) then reset the Order Status to some new value.</p>
<p>The setting of the Status (3) was not a major issue, as I directly used LookUpValue() function for that which is used very commonly in the Siebel community. </p>
<p>The LookUpValue() function in Siebel queries the S_LST_OF_VAL table in Siebel DB with a combination of TYPE and the LIC (Language Independent Code), and returns the Display Value of that particular LOV.</p>
<p>Step (2) was also not a major issue, achieved through custom workflows.</p>
<p>However, when reading the value in the step (1) to do some processing, it became difficult. The problem was that the Status field could return either of the Swedish or the English value when invoking the custom workflow in step (2). The only option that seemed to be working at the moment was to hard code the values from both the languages, both ENU and SVE. I felt this as a very bad solution. That is when I came across this vanilla Siebel function called LookUpName() which in principle works exactly opposite to LookUpValue().</p>
<p>The function LookUpName() queries on S_LST_OF_VAL table with a combination of TYPE and Display Value (or LIC Code too) and returns the LIC Code in return. This meant, I need not hard code the Order status values in my workflow processing in step (2) for branching. I just started running a LookUpName() on the Order Status received in the beginning, which returned me the LIC code corresponding to that Status. </p>
<p>This LIC code is Language Independent and thus, same in all languages. Thus, I can now do all branching in my custom workflow based on only one LIC code value, and thus it becomes much cleaner! </p>
<p>This also had an added advantage that if the client (CRM owner) decides to implement more languages to this multilingual application, he just needs to apply the corresponding language pack. No changes to script or Workflows are needed.</p>
<p>Please note that I did this using Workflow Output step which meant no Scripting was needed.</p>
<p>Thus, my problem was resolved.</p>


<p><b>Related posts:<b><ol><li><a href='http://geeksbloggingat.com/2009/06/24/siebel-lov-number-limitation/' rel='bookmark' title='Permanent Link: Siebel &#8211; LOV Number Limitation'>Siebel &#8211; LOV Number Limitation</a> <small>Siebel List of Values is probably the most commonly used...</small></li>
<li><a href='http://geeksbloggingat.com/2009/05/11/siebel-looping-multiple-records-update-records/' rel='bookmark' title='Permanent Link: Siebel &#8211; Looping multiple records &#8211; Update records'>Siebel &#8211; Looping multiple records &#8211; Update records</a> <small>Hi, We often come across a requirement where we need...</small></li>
<li><a href='http://geeksbloggingat.com/2010/03/20/siebelsis-om-pmt-service/' rel='bookmark' title='Permanent Link: Siebel &#8211; SIS OM PMT Service'>Siebel &#8211; SIS OM PMT Service</a> <small>There are lots of vanilla business services available in Siebel...</small></li>
<li><a href='http://geeksbloggingat.com/2009/07/09/siebel-eai-siebel-adapter-looping-multiple-records/' rel='bookmark' title='Permanent Link: Siebel &#8211; EAI Siebel Adapter &#8211; Looping Multiple Records'>Siebel &#8211; EAI Siebel Adapter &#8211; Looping Multiple Records</a> <small>This is a follow-up post on the post, Siebel &#8211;...</small></li>
<li><a href='http://geeksbloggingat.com/2009/05/03/siebel-eai-queue-usage/' rel='bookmark' title='Permanent Link: Siebel &#8211; EAI Queue &#8211; Usage'>Siebel &#8211; EAI Queue &#8211; Usage</a> <small>I had introduced the concept of Siebel EAI Queues in...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://geeksbloggingat.com/2009/04/17/siebel-lookupname-and-lookupvalue/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

