<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5142999544415381934</id><updated>2012-01-03T11:22:52.470+05:30</updated><category term='EIM'/><category term='cfg File'/><category term='Ecology'/><category term='Mapping'/><category term='Siebel Logs'/><category term='List of Values'/><category term='Siebel CRM'/><category term='Back to Basics'/><category term='Web Services'/><category term='Remote Server'/><category term='PL/SQL'/><category term='SQL Plus'/><category term='I Wish I Knew'/><category term='Logging'/><category term='eScript'/><category term='Harvest'/><category term='Files'/><category term='Check In -Check Out'/><category term='Signals'/><category term='Firewall'/><category term='Oracle'/><category term='Best Practices'/><category term='Configuration'/><category term='Siebel Tools'/><category term='SQLNavigator'/><category term='Copy'/><category term='Siebel'/><category term='How - To'/><category term='Workflows'/><category term='Debug'/><category term='Case Study'/><category term='Tunning'/><category term='ANSI SQL'/><title type='text'>All About Siebel</title><subtitle type='html'>All information about Siebel, Siebel interview questions  and answers</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>57</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-2615357398307562056</id><published>2009-01-07T10:38:00.000+05:30</published><updated>2009-01-07T10:39:48.722+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Copy'/><category scheme='http://www.blogger.com/atom/ns#' term='Files'/><category scheme='http://www.blogger.com/atom/ns#' term='Remote Server'/><title type='text'>How to deploy files in a remote server?</title><content type='html'>&lt;p&gt;It's easy you say, just share your drives when you connect through &lt;a href="http://technet2.microsoft.com/windowsserver/en/library/f47ce263-f72e-469d-bf14-6605b7f4cce51033.mspx?mfr=true"&gt;rdp --&gt; &lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;http://technet2.microsoft.com/windowsserver/en/library/f47ce263-f72e-469d-bf14-6605b7f4cce51033.mspx?mfr=true&lt;/span&gt;&lt;/a&gt;. Ok, let's talk about worse case scenario, you can't share drives and you can even share a drive from your remote server.&lt;br /&gt;So you can use a very usefull tool named &lt;a href="http://en.wikipedia.org/wiki/WordPad"&gt;WordPad --&gt; &lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;http://en.wikipedia.org/wiki/WordPad&lt;/span&gt;&lt;/a&gt;. Surprised ?&lt;br /&gt;It's even easier than sharing you drives, watch it :&lt;br /&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Zip all your files into a single file;&lt;/li&gt;&lt;li&gt;Open a wordpad in your local machine;&lt;/li&gt;&lt;li&gt;Copy zip file into wordpad (WordPad would serialize your file);&lt;/li&gt;&lt;li&gt;Copy object that appears inside Wordpad;&lt;/li&gt;&lt;li&gt;Open wordpad in your remote machine and paste your object into it;&lt;/li&gt;&lt;li&gt;Finally copy your recent pasted object into remote server.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Enjoy.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-2615357398307562056?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/2615357398307562056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=2615357398307562056' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/2615357398307562056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/2615357398307562056'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2009/01/how-to-deploy-files-in-remote-server.html' title='How to deploy files in a remote server?'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-3482456359154689139</id><published>2009-01-07T10:37:00.002+05:30</published><updated>2009-01-07T10:38:25.237+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='Tunning'/><title type='text'>Oracle : Reduce your parsing times</title><content type='html'>&lt;p&gt;All the queries that you execute in an Oracle database are parsed and then executed. However, is a nonsense(and a time wastefulness) to parse over and over the same query, even if executed by different users.&lt;br /&gt;&lt;br /&gt;So, to avoid this, Oracle uses a 'Shared pool' area where all the cursors are cached after being parsed.&lt;br /&gt;&lt;br /&gt;How it works? It's easy:&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Your query is hashed;&lt;/li&gt;&lt;li&gt;Oracle searchs shared pool for the matching hash value;&lt;/li&gt;&lt;li&gt;Is it there? If so, execute the cursor;&lt;/li&gt;&lt;li&gt;Otherwise parse your query, hash it and put it in shared pool for future executions;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;To take advantage of this feature of Oracle engine, we have to take care for:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Hashing is executed over all your query, so Case is important. &lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;Select * from emp&lt;/strong&gt; is different from &lt;strong&gt;Select * from EMP&lt;/strong&gt; and therefore you will not take advantage of shared pool in your second execution; So, it's important that your developers team agree in Naming and Case conventions to take greater advantage of Oracle Shared Pool.&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Where clauses are hashed too;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;Select * from emp where emp_no = 1 &lt;/strong&gt;is different from &lt;strong&gt;Select * from emp where emp_no = 2&lt;/strong&gt;, use global variables and procedures whenever you can.&lt;/p&gt;&lt;p&gt;If you follow this rules, you will not solve all the performance problems from your application but will give a little step toward the perfection.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-3482456359154689139?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/3482456359154689139/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=3482456359154689139' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/3482456359154689139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/3482456359154689139'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2009/01/oracle-reduce-your-parsing-times.html' title='Oracle : Reduce your parsing times'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-2658893779122395981</id><published>2009-01-07T10:37:00.001+05:30</published><updated>2009-01-07T10:37:44.227+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><title type='text'>Oracle : SQLCODE and SQLERRM in Inserts</title><content type='html'>Today I came across an unexpected problem when executing an exception block inside a procedure :&lt;br /&gt;&lt;br /&gt;My code was something like this :&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial; font-size: 85%; color: rgb(255, 0, 0); font-weight: bold;"&gt;insert into dc_errors (error_message,error_date) values (SQLERRM, SYSDATE);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;and I allways obtain an annoying PL/SQL: ORA-00984: column not allowed here.&lt;br /&gt;&lt;br /&gt;To solve this problem I've changed my code into :&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial; font-size: 85%; color: rgb(255, 0, 0); font-weight: bold;"&gt;v_exception := substr(SQLERRM, 1, 256);&lt;br /&gt;insert into dc_errors (error_message,error_date) values (v_exception, SYSDATE);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Arial; font-size: 85%; color: rgb(51, 102, 255);"&gt;&lt;/span&gt;&lt;br /&gt;with v_exception as varchar2(256) .&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-2658893779122395981?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/2658893779122395981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=2658893779122395981' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/2658893779122395981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/2658893779122395981'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2009/01/oracle-sqlcode-and-sqlerrm-in-inserts.html' title='Oracle : SQLCODE and SQLERRM in Inserts'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-5650757081955507942</id><published>2009-01-07T10:36:00.000+05:30</published><updated>2009-01-07T10:37:15.111+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Plus'/><title type='text'>SQL * Plus Tip  - 1</title><content type='html'>To change the previous query, just type EDIT, this command will redirect you into an editor so you can edit previous SQL command, short name : ED.&lt;br /&gt;&lt;br /&gt;Then type /  and the new SQL command will be executed&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-5650757081955507942?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/5650757081955507942/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=5650757081955507942' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/5650757081955507942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/5650757081955507942'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2009/01/sql-plus-tip-1.html' title='SQL * Plus Tip  - 1'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-5780329489272404656</id><published>2009-01-07T10:34:00.000+05:30</published><updated>2009-01-07T10:36:41.653+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='PL/SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Tunning'/><title type='text'>Oracle : Reducing join execution time</title><content type='html'>After executing a join over two tables, whith 4 million rows each and indexes in join columns, I realized that 4 minutes it's too much time waiting for results. So I decided to watch for the execution plan :&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255); font-weight: bold;font-size:78%;" &gt;select columns from tableA join TableB on tableA.id = tableB.id&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;font-size:78%;" &gt;Execution Plan---------------------------------------------------------- &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;font-size:78%;" &gt;0 SELECT STATEMENT Optimizer=RULE &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;font-size:78%;" &gt;1 0 FILTER &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;font-size:78%;" &gt;2 1 SORT (GROUP BY) &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;font-size:78%;" &gt;3 2 TABLE ACCESS (BY INDEX ROWID) OF 'TABLEA' &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;font-size:78%;" &gt;4 3 NESTED LOOPS &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;font-size:78%;" &gt;5 4 TABLE ACCESS (FULL) OF 'TABLEB' &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;font-size:78%;" &gt;6 4 INDEX (RANGE SCAN) OF 'TABLEA_U1' (UNIQUE)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;All seems to be correct, after all I'm using Rule Base Optimizer. In order to reduce execution time I force the execution of an hash join instead of a Nested Loops.&lt;br /&gt;Execution time droped to about 2 minutes and execution plan looks like this :&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;font-size:78%;" &gt;Execution Plan---------------------------------------------------------- &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;font-size:78%;" &gt;0 SELECT STATEMENT Optimizer=RULE (Cost=624 Card=40000 Bytes=2 800000)&lt;br /&gt;1 0 FILTER &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;font-size:78%;" &gt;2 1 SORT (GROUP BY) (Cost=624 Card=40000 Bytes=2800000) &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;font-size:78%;" &gt;3 2 HASH JOIN (Cost=172 Card=40000 Bytes=2800000) &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;font-size:78%;" &gt;4 3 TABLE ACCESS (FULL) OF 'TABLEA' (Cost=35 Card=2000 Bytes=62000)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;font-size:78%;" &gt;5 3 TABLE ACCESS (FULL) OF 'TABLEB' (Cost=136 Card=2000 Bytes=78000)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And all I've to do is change my query to :&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:78%;" &gt;select /*+ USE_HASH (tableA tableB ) */ columns from tableA join TableB on tableA.id = tableB.id&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Why is this happening? why RBO this choose this plan? The answer is simple, RBO doesn't consider hash joins has a valid execution path, so you have to force it.&lt;br /&gt;This specific join is used when a large amount of data needs to be joined or when a large fraction of the the table needs to be joined, however this is a very memory expensive operation and need to be carefully analised.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-5780329489272404656?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/5780329489272404656/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=5780329489272404656' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/5780329489272404656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/5780329489272404656'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2009/01/oracle-reducing-join-execution-time.html' title='Oracle : Reducing join execution time'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-128050993850231229</id><published>2009-01-07T10:33:00.002+05:30</published><updated>2009-01-07T10:34:24.015+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='PL/SQL'/><title type='text'>PL/SQL Tip  - 1</title><content type='html'>Query v$parameter view for BD parameters checking.&lt;br /&gt;In this example I'm looking for the selected optimizer mode.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial; font-weight: bold; color: rgb(255, 0, 0);"&gt;&lt;span style="font-size: 85%;"&gt;select value from v$parameter where name = 'optimizer_mode';&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Enjoy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-128050993850231229?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/128050993850231229/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=128050993850231229' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/128050993850231229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/128050993850231229'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2009/01/plsql-tip-1.html' title='PL/SQL Tip  - 1'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-1036328310148307094</id><published>2009-01-07T10:33:00.001+05:30</published><updated>2009-01-07T10:33:55.780+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='PL/SQL'/><title type='text'>PL/SQL : Show locked objects</title><content type='html'>Today, after trying unsuccessfully to drop my temporary tables, and subsequent fails due to object locks, I tried to find who's locking my table.&lt;br /&gt;Not an easy task, so I dig a little and found this amazing script that solved my problem. If you have the same problem, read here --&gt; &lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;http://www.orafaq.com/scripts/performance/lockall.txt&lt;/span&gt; how to list all locked objects.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-1036328310148307094?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/1036328310148307094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=1036328310148307094' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/1036328310148307094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/1036328310148307094'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2009/01/plsql-show-locked-objects.html' title='PL/SQL : Show locked objects'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-6915290151604020020</id><published>2009-01-07T10:32:00.004+05:30</published><updated>2009-01-07T10:33:03.779+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='PL/SQL'/><title type='text'>PL/SQL : How to update using select</title><content type='html'>This "problem" came across me when I needed to update an entire temporary table column. One option is to loop all table rows, boring and time consumer task. After some background searchs I've adopted this method:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;font-family:arial;font-size:78%;"  &gt;UPDATE TABLEA&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;font-family:arial;font-size:78%;"  &gt;SET &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;font-family:arial;font-size:78%;"  &gt;(TABLEA.COLUMNA, TABLEA.COLUMNB) = &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0); font-weight: bold;font-family:arial;font-size:78%;"  &gt;(SELECT TABLEB.COLUMNA, TABLEB.COLUMNB FROM TABLEB WHERE TABLEB.ID = TABLEA.ID)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I've basically do one inner select and join the two tables in the inner select's WHERE clause.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-6915290151604020020?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/6915290151604020020/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=6915290151604020020' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/6915290151604020020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/6915290151604020020'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2009/01/plsql-how-to-update-using-select.html' title='PL/SQL : How to update using select'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-8944462966658763288</id><published>2009-01-07T10:32:00.001+05:30</published><updated>2009-01-07T10:32:33.708+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='EIM'/><title type='text'>EIM : Shell execution order</title><content type='html'>When running an EIM process with a shell type process section, it will be executed from top to bottom. In this example, first process to run will be &lt;strong&gt;Assess&lt;/strong&gt; followed by &lt;strong&gt;Contact&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 78%; color: rgb(255, 0, 0); font-weight: bold;"&gt;[Siebel Interface Manager] &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 78%; color: rgb(255, 0, 0); font-weight: bold;"&gt;PROCESS = P1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 78%; color: rgb(255, 0, 0); font-weight: bold;"&gt;USER NAME = "XXXX"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 78%; color: rgb(255, 0, 0); font-weight: bold;"&gt;PASSWORD = "XXXX"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 78%; color: rgb(255, 0, 0); font-weight: bold;"&gt;[Lancar] &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 78%; color: rgb(255, 0, 0); font-weight: bold;"&gt;TYPE=SHELL&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 78%; color: rgb(255, 0, 0); font-weight: bold;"&gt;INCLUDE = "ASSESS"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 78%; color: rgb(255, 0, 0); font-weight: bold;"&gt;INCLUDE = "CONTACT"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 78%; color: rgb(255, 0, 0); font-weight: bold;"&gt;[CONTACT]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 78%; color: rgb(255, 0, 0); font-weight: bold;"&gt;TYPE = DELETEBATCH = 3999&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 78%; color: rgb(255, 0, 0); font-weight: bold;"&gt;TABLE = EIM_CONTACT&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 78%; color: rgb(255, 0, 0); font-weight: bold;"&gt;ONLY BASE TABLES = S_PARTY,S_CONTACT&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 78%; color: rgb(255, 0, 0); font-weight: bold;"&gt;DELETE MATCHES = S_CONTACT, (COLUMN= 'DELETED')&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 78%; color: rgb(255, 0, 0); font-weight: bold;"&gt;[ASSESS]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 78%; color: rgb(255, 0, 0); font-weight: bold;"&gt;TYPE = DELETE&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 78%; color: rgb(255, 0, 0); font-weight: bold;"&gt;BATCH = 3998&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 78%; color: rgb(255, 0, 0); font-weight: bold;"&gt;TABLE = EIM_ASSESS&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 78%; color: rgb(255, 0, 0); font-weight: bold;"&gt;ONLY BASE TABLES = S_ASSESS,S_ASSESS_VAL&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 78%; color: rgb(255, 0, 0); font-weight: bold;"&gt;DELETE MATCHES = S_ASSESS, (COLUMN = 'DELETED')&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-8944462966658763288?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/8944462966658763288/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=8944462966658763288' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/8944462966658763288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/8944462966658763288'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2009/01/eim-shell-execution-order.html' title='EIM : Shell execution order'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-4633971513422253400</id><published>2009-01-07T10:31:00.003+05:30</published><updated>2009-01-07T10:31:59.338+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='PL/SQL'/><title type='text'>PL/SQL : Scripting for table drop</title><content type='html'>I came from MS SQLServer and I miss a lot of nice functionalities, like for instance, If exists.&lt;br /&gt;Why am I talking about this? Simple, I want to run a script that "only" drops a few tables that I'don't no if they already exists.&lt;br /&gt;&lt;br /&gt;Easy to say, hard to find. So here's a script for doing that, without returning any errors.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 85%; color: rgb(255, 0, 0); font-weight: bold;"&gt;set echo off;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 85%; color: rgb(255, 0, 0); font-weight: bold;"&gt;set heading off;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 85%; color: rgb(255, 0, 0); font-weight: bold;"&gt;spool run.sql;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 85%; color: rgb(255, 0, 0); font-weight: bold;"&gt;select 'drop table 'table_name';' from dba_tables where UPPER(table_name) in ('TABLEA', 'TABLEB', 'TABLEC');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 85%; color: rgb(255, 0, 0); font-weight: bold;"&gt;spool off;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 85%; color: rgb(255, 0, 0); font-weight: bold;"&gt;@run.sql;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 85%; color: rgb(51, 255, 51);"&gt;&lt;/span&gt;&lt;br /&gt;Enjoy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-4633971513422253400?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/4633971513422253400/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=4633971513422253400' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/4633971513422253400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/4633971513422253400'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2009/01/plsql-scripting-for-table-drop.html' title='PL/SQL : Scripting for table drop'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-5072521201141545618</id><published>2009-01-07T10:31:00.001+05:30</published><updated>2009-01-07T10:31:33.071+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='EIM'/><title type='text'>EIM : DUP_RECORD_EXISTS after Update</title><content type='html'>This status happens after running an EIM update process with lines that match exactly the lines being updated in base table.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-5072521201141545618?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/5072521201141545618/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=5072521201141545618' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/5072521201141545618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/5072521201141545618'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2009/01/eim-duprecordexists-after-update.html' title='EIM : DUP_RECORD_EXISTS after Update'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-405656239287363517</id><published>2009-01-07T10:30:00.000+05:30</published><updated>2009-01-07T10:31:12.032+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ecology'/><title type='text'>Localcooling  .  com</title><content type='html'>&lt;p&gt;&lt;br /&gt;Download the 100% Free LocalCooling Application and it automatically optimizes your PC's power consumption by using a more effective power save mode. You will be able to see your savings in real-time translated to more environmental terms such as how many trees and gallons of oil you have saved. &lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;Local Cooling will: &lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Cut your energy bills. &lt;/li&gt;&lt;li&gt;Reduce the amount of Greenhouse Gas CO2 emissions as a result of your reduced PC power consumption. &lt;/li&gt;&lt;li&gt;Give you full control over your power mode settings. &lt;/li&gt;&lt;li&gt;Improve your overall computing experience and efficiency. &lt;/li&gt;&lt;li&gt;Show you in detail how much you have saved since installing the software.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Learn more -&gt; &lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;http://www.localcooling.com/&lt;/span&gt;about the LocalCooling Application and how it will help you save energy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-405656239287363517?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/405656239287363517/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=405656239287363517' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/405656239287363517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/405656239287363517'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2009/01/localcooling-com.html' title='Localcooling  .  com'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-9128799965772951299</id><published>2009-01-07T10:29:00.002+05:30</published><updated>2009-01-07T10:30:14.593+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Siebel'/><title type='text'>How to relate a contact whit their accounts</title><content type='html'>Contact accounts can be found in S_PARTY_PER intersection table. This table relates person_id column (par_row_id from s_contact) with party_id column (par_row_id from s_org_ext). Both person_id and party_id are foreign keys from s_party.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-9128799965772951299?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/9128799965772951299/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=9128799965772951299' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/9128799965772951299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/9128799965772951299'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2009/01/how-to-relate-contact-whit-their.html' title='How to relate a contact whit their accounts'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-5189911445071674179</id><published>2009-01-07T10:29:00.001+05:30</published><updated>2009-01-07T10:29:52.103+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='PL/SQL'/><title type='text'>PL/SQL : Check script for object owners</title><content type='html'>In real life development environments, you develope a script logged as UserX, and someone in Support Team will install it in production environment logged as UserZ.&lt;br /&gt;So far, nothing unusual happens. But, if we are talking about oracle scripts, there's something that you have to deal with, Schemas, If you didn't reference all you objects with full name, SchemaX.TableA for instance, when UserZ tries to install it, he will not find TableA in is schema.&lt;br /&gt;&lt;br /&gt;In simple scripts, with few lines, it's easy to manually check for errors, but try to do it in a scripy with thousand of lines...&lt;br /&gt;&lt;br /&gt;So I've developed this procedure to "parse" my code looking for this kind of errors&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 78%; color: rgb(255, 0, 0); font-weight: bold;"&gt;FUNCTION CHECK_OWNER_IN_SQL(&lt;br /&gt;  p_list varchar2,&lt;br /&gt;  p_del varchar2&lt;br /&gt;) return boolean&lt;br /&gt;is&lt;br /&gt;  l_idx pls_integer;&lt;br /&gt;  l_list varchar2(32767) := p_list;&lt;br /&gt;  l_value varchar2(32767);&lt;br /&gt;  keyword varchar2(10000);&lt;br /&gt;  existsObject integer;&lt;br /&gt;  result boolean;&lt;br /&gt;begin&lt;br /&gt;  result := false;&lt;br /&gt;  loop&lt;br /&gt;     l_idx := instr(l_list,p_del);&lt;br /&gt;     if l_idx &gt; 0 then&lt;br /&gt;        keyword := substr(l_list,1,l_idx-1);&lt;br /&gt;        select count(*) into existsObject from user_objects where lower(object_name) = lower(keyword); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 78%; color: rgb(255, 0, 0); font-weight: bold;"&gt;&lt;br /&gt;        if existsObject &gt; 0 then&lt;br /&gt;           DBMS_OUTPUT.Put_Line( 'Possible error in ' keyword);&lt;br /&gt;           result := true;&lt;br /&gt;        end if;&lt;br /&gt;&lt;br /&gt;        l_list := substr(l_list,l_idx+length(p_del));&lt;br /&gt;     else&lt;br /&gt;        keyword := l_list;&lt;br /&gt;        select count(*) into existsObject from user_objects where lower(object_name) = lower(keyword);&lt;br /&gt;&lt;br /&gt;        if existsObject &gt; 0 then&lt;br /&gt;           DBMS_OUTPUT.Put_Line( 'Possible error in ' keyword );&lt;br /&gt;           result := true;&lt;br /&gt;        end if;&lt;br /&gt;        exit;&lt;br /&gt;     end if;&lt;br /&gt;  end loop;&lt;br /&gt;  return result;&lt;br /&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 78%; color: rgb(255, 0, 0); font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 78%; color: rgb(255, 0, 0); font-weight: bold;"&gt;&lt;br /&gt;--Possible values for p_type are :&lt;br /&gt;-- DATABASE LINK,FUNCTION,INDEX,PACKAGE,PACKAGE BODY,PROCEDURE,SEQUENCE,SYNONYM,TABLE,TRIGGER,TYPE,VIEW &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 78%; color: rgb(255, 0, 0); font-weight: bold;"&gt;&lt;br /&gt;PROCEDURE CHECK_OWNER(&lt;br /&gt;  p_owner IN varchar2,&lt;br /&gt;  p_type IN varchar2,&lt;br /&gt;  p_name IN varchar2,&lt;br /&gt;  p_sql IN varchar2 := NULL&lt;br /&gt;)&lt;br /&gt;IS&lt;br /&gt;  cursor lines&lt;br /&gt;  is&lt;br /&gt;Select text from all_source where lower(owner) = lower(p_owner) and lower(type) = lower(p_type) and lower(name) = lower(p_name) order by line;&lt;br /&gt;  sqltext varchar2(32000);&lt;br /&gt;  result boolean;&lt;br /&gt;  linha integer;&lt;br /&gt;begin&lt;br /&gt;  if p_sql is not null then&lt;br /&gt;     result := siebel.check_owner_in_sql(p_sql , ' ');&lt;br /&gt;  else&lt;br /&gt;     linha := 1;&lt;br /&gt;     for line in lines loop&lt;br /&gt;        sqltext := TRIM(line.text);&lt;br /&gt;        IF substr(sqltext,1,2) &lt;&gt; '--' then&lt;br /&gt;           if siebel.check_owner_in_sql(sqltext , ' ') then&lt;br /&gt;              DBMS_OUTPUT.Put_Line( 'Linha ' linha ': ' sqltext);&lt;br /&gt;           end if;&lt;br /&gt;        end if;&lt;br /&gt;        linha := linha + 1;&lt;br /&gt;     end loop;&lt;br /&gt;     if linha = 1 then&lt;br /&gt;        DBMS_OUTPUT.Put_Line( 'Não foi encontrado o objecto a validar');&lt;br /&gt;     end if;&lt;br /&gt;  end if;&lt;br /&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;After create this two procedures, you have only to execute the last one, and watch for possible warnings in your output window.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-5189911445071674179?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/5189911445071674179/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=5189911445071674179' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/5189911445071674179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/5189911445071674179'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2009/01/plsql-check-script-for-object-owners.html' title='PL/SQL : Check script for object owners'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-5497389698075421454</id><published>2009-01-07T10:28:00.001+05:30</published><updated>2009-01-07T10:28:56.827+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQLNavigator'/><title type='text'>SQL Navigator : Code Templates</title><content type='html'>&lt;p&gt;After trying for a while to use SQL Navigator from Quest --&gt; &lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;http://www.quest.com/sql-navigator/&lt;/span&gt; to develope my pl/sql procedures and queries, I've found a new (for me) feature : Code templates. Tired of write allways the same kind of code structures ? Use code templates. How? It's easy. Just take a look at this help page from navigator help. (As a good developer that I am, I never read help files).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p&gt;You can program Key combinations from "Ctrl+Shift+A" to "Ctrl+Shift+Z" with text up to 255 characters in length.&lt;br /&gt;To program shortcut keys&lt;/p&gt;&lt;ol&gt;&lt;li&gt;From the View menu, choose Preferences.&lt;/li&gt;&lt;li&gt;Under the Code Editors preference heading, expand General, and then scroll down to the Templates category.&lt;/li&gt;&lt;li&gt;Where you see the words &lt;edit&gt;, click and then view or change shortcut key assignments as required.&lt;/edit&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Try it, and watch your development times drop a little bit !!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-5497389698075421454?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/5497389698075421454/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=5497389698075421454' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/5497389698075421454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/5497389698075421454'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2009/01/sql-navigator-code-templates.html' title='SQL Navigator : Code Templates'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-6776005878171956250</id><published>2009-01-07T10:27:00.000+05:30</published><updated>2009-01-07T10:28:09.261+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Siebel'/><title type='text'>S_POSTN_CON : Description</title><content type='html'>This table associates a contact with positions that can acess it. This relation is suported by column con_id (par_row_id from s_contact) and postn_id (row_id from s_postn).&lt;br /&gt;This is a many-to-many relationship : A contact can have more than one position associated, and a position can be related with multiple contacts.&lt;br /&gt;Keep in mind that con_id is foreign key from s_party.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-6776005878171956250?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/6776005878171956250/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=6776005878171956250' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/6776005878171956250'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/6776005878171956250'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2009/01/spostncon-description.html' title='S_POSTN_CON : Description'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-1509654366140867558</id><published>2009-01-07T10:26:00.002+05:30</published><updated>2009-01-07T10:27:38.300+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ANSI SQL'/><title type='text'>Joins : Please talk ANSI SQL with me.</title><content type='html'>&lt;p&gt;People, who had to port a Microsoft SQL Server or Access database over to Oracle, know what I'm talking about. This article --&gt; &lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;http://certcities.com/editorial/columns/story.asp?EditorialsID=106&lt;/span&gt; show us a good example of ANSI SQL joins and also show us a few good reasons why we should use ANSI join syntax instead of classic and specific join syntax : &lt;/p&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;ol&gt;&lt;ol&gt;&lt;li&gt;You don't need to specify the join condition in a natural join;&lt;/li&gt;&lt;li&gt;You can do more with ANSI SQL join syntax than with classic Oracle syntax;&lt;/li&gt;&lt;li&gt;There is no performance penalty;&lt;/li&gt;&lt;li&gt;In the long run you will see more of it, and less of the older syntax;&lt;/li&gt;&lt;li&gt;It's &lt;strong&gt;portable;&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;It's easier to understand what is happening .&lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt;&lt;/blockquote&gt;&lt;p&gt;Bottom line is :&lt;/p&gt;So join me in creating portable SQL joins that are easy to read, do more than you can with Oracle syntax, and don't slow you down.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-1509654366140867558?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/1509654366140867558/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=1509654366140867558' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/1509654366140867558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/1509654366140867558'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2009/01/joins-please-talk-ansi-sql-with-me.html' title='Joins : Please talk ANSI SQL with me.'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-1944886668439831056</id><published>2009-01-07T10:26:00.001+05:30</published><updated>2009-01-07T10:26:45.481+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='PL/SQL'/><title type='text'>WHy MINUS does NOT EXISTs in our queries?</title><content type='html'>&lt;p&gt;Read this great (and old) article --&gt; &lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;http://www.oraclemagician.com/mag/magic8.pdf&lt;/span&gt; about MINUS vs NOT EXISTS operators.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;p align="justify"&gt;There really isn’t just one right way to design queries. In some cases, you really are better off using Not Exists. In many cases, however, you should use the set operator MINUS. Once you understand the principles, you can easily choose the best method for your particular case.&lt;/p&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-1944886668439831056?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/1944886668439831056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=1944886668439831056' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/1944886668439831056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/1944886668439831056'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2009/01/why-minus-does-not-exists-in-our.html' title='WHy MINUS does NOT EXISTs in our queries?'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-82868477424685973</id><published>2009-01-07T10:25:00.001+05:30</published><updated>2009-01-07T10:25:57.808+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Harvest'/><title type='text'>Get last file version</title><content type='html'>&lt;p&gt;Imagine this situation:&lt;br /&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;You have two package P1 and P2 in the same stage, and both P1 (who is to be installed first) and P2 have an attached file F1;&lt;/li&gt;&lt;li&gt;In P1 the F1 file is in version 1, but in P2 is in version 3;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;When I try to execute P1 and I try to get F1 file, Harvest return me F1 in version 3, when it has supposed to return version 1 of the file.&lt;/p&gt;&lt;p&gt;So take care when promoting 2 or more packages, to the same stage, with different version of the same file. &lt;a href="http://en.wikipedia.org/wiki/AllFusion_Harvest_Change_Manager"&gt;Harvest&lt;/a&gt; only get the last version of it, regardless what version you included in your package.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-82868477424685973?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/82868477424685973/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=82868477424685973' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/82868477424685973'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/82868477424685973'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2009/01/get-last-file-version.html' title='Get last file version'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-226216886516805822</id><published>2009-01-07T10:24:00.000+05:30</published><updated>2009-01-07T10:25:13.410+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Firewall'/><category scheme='http://www.blogger.com/atom/ns#' term='Debug'/><category scheme='http://www.blogger.com/atom/ns#' term='Siebel'/><title type='text'>Debugging in http://localhost:8082</title><content type='html'>Today I've made my first siebel project compilation, all my environment is brand new and well configured.&lt;br /&gt;I've enabled 'Auto-start web client' feature and hit the road. IExplorer browses &lt;a href="http://localhost:8082/"&gt;http://localhost:8082/&lt;/a&gt; and inherent error. Why in God's name is this happening?&lt;br /&gt;&lt;br /&gt;The answer is simple, (If my friend Alexandre didn't help me, it wouldn't be so simple), my Firewall is enabled.&lt;br /&gt;&lt;br /&gt;After I disabled that, my debug can go on!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-226216886516805822?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/226216886516805822/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=226216886516805822' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/226216886516805822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/226216886516805822'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2009/01/debugging-in-httplocalhost8082.html' title='Debugging in http://localhost:8082'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-3333534717699418838</id><published>2009-01-07T10:23:00.000+05:30</published><updated>2009-01-07T10:24:27.852+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='EIM'/><category scheme='http://www.blogger.com/atom/ns#' term='Mapping'/><title type='text'>Error 452: Match column X not found in Y</title><content type='html'>Today I had to create a new column in EIM_CONTACT table, to build a new attribute mapping for deletion purposes. All went fine until I test my EIM task.&lt;br /&gt;&lt;br /&gt;Error 452: Match column X_COLUMN not found in S_CONTACT.&lt;br /&gt;&lt;br /&gt;I run trough all my steps to find what's wrong in it. All seems to be in perfect shape. My next step was to loose some time reading bookshelf and Siebel support SR's. Nothing came across that helped me to solve my problem.&lt;br /&gt;&lt;br /&gt;Last step in problem resolution algorithm, ask for help. Allways work!!&lt;br /&gt;&lt;br /&gt;My colleague João had the solution, Siebel caches EIM mappings in &lt;serverdirectory&gt;\siebsrvr\BIN\&lt;strong&gt;diccache.dat&lt;/strong&gt;, all we have to do is delete this file and Siebel will build a new one for you (with your new mappings).&lt;br /&gt;&lt;br /&gt;Finally, I successfully ran my EIM process.&lt;/serverdirectory&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-3333534717699418838?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/3333534717699418838/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=3333534717699418838' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/3333534717699418838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/3333534717699418838'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2009/01/error-452-match-column-x-not-found-in-y.html' title='Error 452: Match column X not found in Y'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-6824163701599028900</id><published>2008-09-12T14:24:00.000+05:30</published><updated>2008-12-09T17:23:32.358+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Siebel CRM'/><title type='text'>A distant past - Part 1 Siebel</title><content type='html'>&lt;span style="font-family:verdana;"&gt;When did the whole thing start?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Well, one of the answers is found in the vast archive of the &lt;/span&gt;&lt;span style="font-family: verdana;"&gt;Wayback Machine ---&gt; &lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;http://www.archive.org&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;. If you search for www.siebel.com you are taken back to the mid-90ies and a somewhat unpretentious website from 1996. Just in case the archive gets lost some day, I have preserved a screenshot of the 1996 siebel.com website myself.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 402px; height: 278px;" src="http://1.bp.blogspot.com/_f689sAiiG-E/SIRRFD--7FI/AAAAAAAAAAc/QVvxC0HsFCw/s320/siebel.com.jpg" alt="" id="BLOGGER_PHOTO_ID_5225390615067290706" border="0" /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-6824163701599028900?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/6824163701599028900/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=6824163701599028900' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/6824163701599028900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/6824163701599028900'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2008/09/distant-past-part-1-siebel.html' title='A distant past - Part 1 Siebel'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_f689sAiiG-E/SIRRFD--7FI/AAAAAAAAAAc/QVvxC0HsFCw/s72-c/siebel.com.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-617088434648924295</id><published>2008-09-12T14:23:00.000+05:30</published><updated>2008-12-09T17:23:32.611+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Siebel CRM'/><title type='text'>A distant past - Part 2 or "It's still there"</title><content type='html'>&lt;span style="font-family: verdana;"&gt;Tom on TV&lt;br /&gt;&lt;br /&gt;the &lt;span style="font-weight: bold;"&gt;Siebel Sample Database&lt;/span&gt; comes together with a sample file system, which reveals most of its parts when you navigate to the Administration - Document screen and the Literature view. The content there is intended to support the sample data such as products and their images but there are also some kind of random pebbles to be found by the more leisurous among you. Just some samples (SIA or SBA refers to the Siebel Industry Applications or Siebel Business Applications - formerly known as HORizontal - variety of Siebel CRM):&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: verdana;"&gt;.mov files from a documentary about diabetes (SIA)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: verdana;"&gt;a graphic file showing 10 deutsche mark (SIA and SBA)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: verdana;"&gt;an 84 page prospectus for a fictitious company named Sycamore Networks (SIA)&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: verdana;"&gt;&lt;br /&gt;and of course - because this is what this post is all about:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: verdana;"&gt;a TV ad featuring Tom Siebel (maybe 1998), to be found in the SBA sample database&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: center;"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_f689sAiiG-E/SIR9HIv-L0I/AAAAAAAAAAs/NnQ4Gw-GgQE/s320/screenshot-SiebelCRM-Literature-sample-tomtvad.jpg" alt="" id="BLOGGER_PHOTO_ID_5225439029217865538" border="0" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: verdana;"&gt;&lt;br /&gt;So it is up to you to find the most interesting file and maybe post it here as a comment.&lt;br /&gt;&lt;br /&gt;In case you do not have an installation of Siebel CRM 8.0 with the sample database at hand&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-617088434648924295?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/617088434648924295/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=617088434648924295' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/617088434648924295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/617088434648924295'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2008/09/distant-past-part-2-or-its-still-there.html' title='A distant past - Part 2 or &quot;It&apos;s still there&quot;'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_f689sAiiG-E/SIR9HIv-L0I/AAAAAAAAAAs/NnQ4Gw-GgQE/s72-c/screenshot-SiebelCRM-Literature-sample-tomtvad.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-3385311014154202649</id><published>2008-09-12T14:22:00.000+05:30</published><updated>2008-09-12T14:23:49.423+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Siebel CRM'/><title type='text'>Automating the Application Deployment Manager (ADM) packaging process</title><content type='html'>&lt;span style="font-family:verdana;"&gt;&lt;span&gt;"Open the box, open the box!"&lt;br /&gt;&lt;br /&gt;Introduced in version 7.7 of Siebel CRM, ADM (Application Deployment Manager) has been significantly enhanced in version 8.0. The purpose of ADM is to assist developers and administrators to deploy changes made to the Siebel Repository, the physical UI files, Actuate report files and – last but not least – the administrative data of a Siebel CRM application from one enterprise (e.g. development) to another (e.g. test).&lt;br /&gt;&lt;br /&gt;Version 8.0 of Siebel CRM also introduces the Siebel Management Server and Siebel Management Agent. These java based modules are used for the packaging and deployment of the a/m changes.&lt;br /&gt;&lt;br /&gt;This post covers the techniques to automate the ADM packaging process. It mainly focuses on command line utilites which can be invoked as part of a shell script.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. Initialize the package / create folder structure using admpkgr&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The command line utility for ADM packaging is admpkgr. It resides in the &lt;installdir&gt;/mgmtsrvr directory of the Siebel Management Server installation.&lt;br /&gt;&lt;br /&gt;For automation purposes, shell scripts can be used similar to the following:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;call admpkgr init d:\ousea\mgmtsrvr\adm\packages\xyz_package_01&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. Export database types (administrative data) using srvrmgr&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Bookshelf Reference&lt;/span&gt;: &lt;a href="http://download.oracle.com/docs/cd/B40099_02/books/AppDeployMgr/AppDeployMgr_CreatePkg7.html#wp1009283"&gt;Application Deployment Manager Guide version 8.0: Creating ADM Deployment Units from Database Types Directly from Command-Line --&gt; &lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;http://download.oracle.com/docs/cd/B40099_02/books/AppDeployMgr/AppDeployMgr_CreatePkg7.html#wp1009283&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To automate the export of administrative data objects such as LOVs, Data Maps, Responsibilites and many more (ADM natively supports more than 60 data types in version 8.0), the ADM Batch Processor server component (new in version 8.0) can be used.&lt;br /&gt;&lt;br /&gt;Using the ‘start task’ command from a srvrmgr prompt works as expected for the ADM Batch Processor, however some issues have been reported with passing the parameters. Here are two versions to do it. The first one is passing the parameters using the ‘with’ clause. The second is setting the parameters and then restarts the component.&lt;br /&gt;&lt;br /&gt;We are using an input file here, so the basic command would be as follows (note the /i switch):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;installdir&gt;\bin\srvrmgr /g &lt;gateway_host&gt; /e &lt;enterprise&gt; /u &lt;username&gt; /p &lt;password&gt; /s &lt;siebel&gt; /i "&lt;path_to_inputfile&gt;"&lt;/path_to_inputfile&gt;&lt;/siebel&gt;&lt;/password&gt;&lt;/username&gt;&lt;/enterprise&gt;&lt;/gateway_host&gt;&lt;/installdir&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Sample input file for version 1:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;start task for comp admbatchproc with admpath=&lt;install_dir&gt;\mgmtsrvr\adm\packages\xyz_package_01\database,admdatatype='EAI Data Map',admfilter='[Name] LIKE "XYZ*"',admeaimethod=synchronize,admprefix=XYZ_EAIDMAP&lt;/install_dir&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Sample input file for version 2 (which is safe especially for the admfilter parameter):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;shutdown comp admbatchproc&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;sleep 60&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;change param admpath=d:\ousea\mgmtsrvr\adm\packages\xyz_package_01\database for comp admbatchproc&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;change param admdatatype='EAI Data Map' for comp admbatchproc&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;change param admfilter='[Name] LIKE "XYZ*"' for comp admbatchproc&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;change param admeaimethod=synchronize for comp admbatchproc&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;change param admprefix=XYZ_EAIDMAP for comp admbatchproc&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;startup comp admbatchproc&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;sleep 20&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Here is an explanation of the parameters for admbatchproc:&lt;br /&gt;&lt;br /&gt;admpath = Location for resultant export files&lt;br /&gt;admdatatype = Name of Data Type (as in Application Deployment Manager screen)&lt;br /&gt;admfilter = Filter to be applied on the data type. For example, '[List Of Values Parent(UDA).Value]="NM"'&lt;br /&gt;admeaimethod = One of three methods: upsert, synchronize, or custom&lt;br /&gt;admprefix = Prefix for the name of exported XML file&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. Export repository changes using consoleapp.exe&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Bookshelf Reference&lt;/span&gt;: &lt;a href="http://download.oracle.com/docs/cd/B40099_02/books/AppDeployMgr/AppDeployMgr_CreatePkg22.html#wp1012566"&gt;Application Deployment Manager Guide Version 8.0: “Using Consoleapp.exe to Create Repository Deployment Units” --&gt; &lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;http://download.oracle.com/docs/cd/B40099_02/books/AppDeployMgr/AppDeployMgr_CreatePkg22.html#wp1012566&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The command line utility consoleapp.exe (in the Siebel Tools bin directory) can be generically used to invoke business service methods within a Siebel application from the command line (headless, i.e. without rendering a GUI). The ADM framework provides a bunch of business services which are used mainly for reloading the various caches or – in this case – for exporting repository changes.&lt;br /&gt;&lt;br /&gt;In a shell script example, one would use consoleapp.exe to call the “Siebel Tools Export Support for ADM” business service as follows to export the “XYZ New Order for Account” Workflow:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;tools_installdir&gt;\bin\consoleapp "&lt;tools_installdir&gt;\bin\enu\tools.cfg" ENU SADMIN &lt;password_for_sadmin&gt; "Siebel Tools Export Support for ADM" "Export:Repository=Siebel Repository,Object_1=XYZ New Order for Account,Type_1=Workflow Process,ExportFile=&lt;install_dir&gt;\mgmtsrvr\adm\packages\xyz_package_01\repository\XYZ_WF_1.sif,DescriptorFile=&lt;install_dir&gt;\mgmtsrvr\adm\packages\xyz_package_01\repository\XYZ_WF_1_des.xml,ExportCount=1,LogFile=d:\temp\adm.log"&lt;/install_dir&gt;&lt;/install_dir&gt;&lt;/password_for_sadmin&gt;&lt;/tools_installdir&gt;&lt;/tools_installdir&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If this is your first exposure to consoleapp.exe, it might feel a little weird. Here is the syntax:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;consoleapp.exe &lt;configuration_file.cfg&gt; &lt;language&gt; &lt;username&gt; &lt;password&gt; "&lt;business_service_name&gt;" “&lt;business_service_method&gt;:&lt;property1=value1,property2=value2,propertyn=valuen,…&gt;"&lt;/property1=value1,property2=value2,propertyn=valuen,…&gt;&lt;/business_service_method&gt;&lt;/business_service_name&gt;&lt;/password&gt;&lt;/username&gt;&lt;/language&gt;&lt;/configuration_file.cfg&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;An alternative way to use consoleapp.exe according to bookshelf is to use an xml input file. I have not yet had the privilege to test this in real life, however. The syntax is as follows:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;consoleapp.exe &lt;configuration_file.cfg&gt; &lt;language&gt; &lt;username&gt; &lt;password&gt; /f inputfile.xml&lt;/password&gt;&lt;/username&gt;&lt;/language&gt;&lt;/configuration_file.cfg&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Caveat"&gt;Caveat ---&gt; &lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;http://en.wikipedia.org/wiki/Caveat&lt;/span&gt;&lt;/a&gt;: Make sure that the descriptor file name is exactly spelled like the export file name, having .xml (instead of .sif) as the file type and des as the suffix. Example: ExportFile=XYZ_WF_1.sif, DescriptorFile=XYZ_WF_1_des.xml.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4. Export file types using OS utilities&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Files, such as web template files (.swt), must also be copied into the respective package directories. Since there is no dedicated utility provided by Oracle, the shell script would refer to classic file copy utilities. The following is an example for Windows xcopy:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;#copy all web template files changed since June, 1st 2007 to the webtempl directory&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;xcopy &lt;tools_installdir&gt;\WEBTEMPL\*.swt &lt;install_dir&gt;\mgmtsrvr\adm\packages\xyz_package_01\file\AppServer\webtempl /D:06-01-2007&lt;/install_dir&gt;&lt;/tools_installdir&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;5. Delete empty subdirectories using OS utilities&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It is best practice to delete empty subdirectories to increase processing time and decrease the amount of warnings during packaging and deployment. This would be accomplished using classic OS utilities. The following is a windows example:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;rd &lt;install_dir&gt;\mgmtsrvr\adm\packages\xyz_package_01\File\AppServer\reports\enu&lt;/install_dir&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;6. Generate the package descriptor file using admpkgr&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now it’s time for admpkgr again. As in step 1, it can be used in a shell script with the ‘generate’ option as follows:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;call admpkgr generate &lt;install_dir&gt;\mgmtsrvr\adm\packages\xyz_package_01&lt;/install_dir&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;7. Validate the package using admpkgr&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Here is a windows example how to call admpkgr from a shell script and direct the output to a log file:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;call admpkgr validate &lt;install_dir&gt;\mgmtsrvr\adm\packages\xyz_package_01 &gt;&gt; "d:\temp\admpkgr_out.txt"&lt;/install_dir&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Summary&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The ADM packaging process is multifold, and various command line tools come into play when you want to automate it, namely admpkgr, srvrmgr, consoleapp.exe and OS file system manipulation tools.&lt;/installdir&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-3385311014154202649?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/3385311014154202649/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=3385311014154202649' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/3385311014154202649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/3385311014154202649'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2008/09/automating-application-deployment.html' title='Automating the Application Deployment Manager (ADM) packaging process'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-5640000028973724229</id><published>2008-09-12T14:20:00.001+05:30</published><updated>2008-12-09T17:23:32.926+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Siebel CRM'/><title type='text'>Business Process Solution Library Siebel</title><content type='html'>&lt;span style="font-family:verdana;"&gt;Here I go again&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;If you have been involved in Siebel CRM projects over the past years, you might have come across some business analyst who mentioned the Siebel Business Process Solution Library (BPSL), which has been released as part of the strong business process strategy together with Siebel CRM version 7.5 in 2002.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Teaching the approach to analyze your business processes and align them with the out of the box functionality &lt;span style="font-weight: bold;"&gt;BEFORE &lt;/span&gt;you start customizing the hell out of your CRM app during the Business Analyst courses ---&gt; &lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;http://education.oracle.com/pls/web_prod-plq-dad/db_pages.getlppage?page_id=213&amp;amp;path=SCRM&amp;amp;columnNumber=3&lt;/span&gt;*, Siebel instructors all over the world were challenged to position the library &lt;/span&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;NOT&lt;/span&gt;&lt;span style="font-family:verdana;"&gt; as a complete encyclopedia of all business processes that you can do in Siebel applications. To be honest, this would be a ridiculously small library given the vast functionality of Siebel CRM.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center; font-family: verdana;"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_f689sAiiG-E/SImSDFsCJ5I/AAAAAAAAABs/GBXHckIWnC0/s320/Acquire_Customer.gif" alt="" id="BLOGGER_PHOTO_ID_5226869424304301970" border="0" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;In contrary, the BPSL describes - that is at least mho - common best practice approaches to business processes which are (of course) &lt;/span&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;supported &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;in Siebel out of the box.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;However, the BPSL has had a rich (including integration with Corel iGrafx and IBM Rational Requisite) but also difficult past and finally has emerged again on metalink3, Oracle's support portal for Siebel CRM customers. So if you have access to metalink3, you also have access to the link below.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;&lt;br /&gt;Link to BPSL on metalink3 ---&gt; &lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;https://metalink3.oracle.com/od/faces/secure/km/DocumentDisplay.jspx?id=554746.1&amp;amp;h=Y&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;  (credentials needed)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;*Note: The current Business Analyst training does not teach the BPSL.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-5640000028973724229?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/5640000028973724229/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=5640000028973724229' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/5640000028973724229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/5640000028973724229'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2008/09/business-process-solution-library.html' title='Business Process Solution Library Siebel'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_f689sAiiG-E/SImSDFsCJ5I/AAAAAAAAABs/GBXHckIWnC0/s72-c/Acquire_Customer.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-1719522930147586973</id><published>2008-09-12T14:18:00.001+05:30</published><updated>2008-12-09T17:23:34.438+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Siebel CRM'/><title type='text'>Close to the Standard Siebel</title><content type='html'>&lt;span style="font-family:verdana;"&gt;"Once bitten, twice shy"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;If you have the opportunity to observe some of the Siebel CRM projects (or any other standard enterprise software project) across the globe, however small or large they may be, there is a familiar pattern:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol style="font-family: verdana;"&gt;&lt;li&gt;Phase of enthusiasm&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Learning phase, along with the assurance to "stay close to the standard"&lt;/li&gt;&lt;li&gt;Pilot phase during which most of the requirements become clear (and complex)&lt;/li&gt;&lt;li&gt;Land of oblivion (where the first thing to be forgotten is the promise of 2.)&lt;/li&gt;&lt;li&gt;Regression to coding (believing that writing custom code can solve all problems faster and easier than standard functionality)&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;These are some typical phases (hope you also note the satirical aspect) that a typical project goes through.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;However, we are talking about &lt;/span&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;standard software&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;, which means frankly that the customizing developers at the customer site find themselves in a race against time and hundreds of developers in the Oracle offices who are determined to create another splendid version (Siebel 8.1 is just around the corner these days).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;So when a project has matured and all requirements are solved, the &lt;/span&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;upgrade project &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;typically comes next. And it is during the first attempts to upgrade the more or less customized application to the newest version when the whole thing seems to blow up (# 5. of the above list being reason #1 for the blow-up in most cases).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;So we can add to our list&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;6. a phase of frustration&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;7. the vow to stay closer to the standard after the upgrade, which is immediately followed by&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;8. the requirement to upgrade the application (which is complex)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;9. The land of oblivion... - we had that before ;-)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;To cite a customer: &lt;/span&gt;&lt;span style="font-style: italic;font-family:verdana;" &gt;"What does 'close to the standard' mean? How can we solve our very complex requirements if we are not allowed to add custom code? How can we customize the applications and remain upgradeable?"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The answer to the first question: "Thoroughly observe and clearly understand the standard functionality and metadata and when you implement solutions, let your developers behave the same way the developers at Oracle do."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Let's elaborate on this using the Siebel CRM Repository as an example.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Since Siebel 7 was brought on the market in 2001, we can observe that any new module (e.g. Siebel Loyalty in 7.7, Customer Order Management in 7.8), however complex its functionality may be, can be dissected into the following:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;1. The basic objects&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Metadata objects like applets, business components and tables which allow users and EAI processes to create, read, update or delete data needed for the new module. The &lt;/span&gt;&lt;span style="font-family: verdana;"&gt;Siebel Essentials ---&gt; &lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;http://education.oracle.com/pls/web_prod-plq-dad/show_desc.redirect?dc=D46318GC10&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt; or &lt;/span&gt;&lt;span style="font-family: verdana;"&gt;Core Consultant Course ---&gt; &lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;http://education.oracle.com/pls/web_prod-plq-dad/show_desc.redirect?dc=D49247GC10&lt;/span&gt;&lt;/span&gt; &lt;span style="font-family:verdana;"&gt;teaches how to create and modify these objects and how they refer to each other.&lt;/span&gt;&lt;br /&gt;&lt;graphic  style="font-family:verdana;"&gt;&lt;br /&gt;The following is a chart familiar to those who benefited from these courses&lt;br /&gt;&lt;br /&gt;&lt;/graphic&gt;&lt;div style="text-align: center; font-family: verdana;"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_f689sAiiG-E/SIy8C0wqFcI/AAAAAAAAAB0/5t4mUIlaM1M/s320/major-object-hierarchy-siebel-crm-repository.jpg" alt="" id="BLOGGER_PHOTO_ID_5227760024178791874" border="0" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;graphic face="verdana"&gt;&lt;br /&gt;Summing up, we can say that adding or modifying objects of these 10 basic types is "close to standard" because this is exactly the way how the standard application is created.&lt;br /&gt;&lt;br /&gt;OK, we now have nice views and applets and they allow us to read and manipulate data. But how does the additional functionality come in here? The answer is:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. Business Services&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;These are metadata objects which (since Siebel 2000) serve as globally accessible capsules of functionality (i.e. code). So whenever an Oracle developer is asked to implement some functionality that is not available in the current application, he or she will write code and place it in the repository as a business service.&lt;br /&gt;&lt;br /&gt;This is in fact the answer to the second question: You are indeed allowed to write custom code, but you should have it written as a business service" and - being a loyal Oracle University instructor - I would add "And your developers can learn how to do this in the Siebel Scripting Workshop."&lt;br /&gt;&lt;graphic&gt;&lt;br /&gt;A quick look at the current standard Siebel CRM repository (SIA 8.0) reveals a rich library of more than 1000 highly reusable and well-documented (along with many not-at-least-documented - keep your fingers off those) business services.&lt;br /&gt;&lt;br /&gt;&lt;/graphic&gt;&lt;/graphic&gt;&lt;div style="text-align: center; font-family: verdana;"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_f689sAiiG-E/SIy-IplyUiI/AAAAAAAAAB8/124bQJDVQPs/s320/business-services.jpg" alt="" id="BLOGGER_PHOTO_ID_5227762323282874914" border="0" /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;List of business services in Siebel Tools&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;graphic style="font-family: verdana;"&gt;&lt;graphic&gt;&lt;br /&gt;OK, so we now have the data access and reusable services, but what if I need to call these services one after the other and combine them with my custom code. This leads us to the 3rd ingredient of standard Siebel CRM applications:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. Workflows&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Siebel Workflow allows developers to combine classic Siebel operations like creating or updating records with standard or custom business services along with decision logic and exception handling. Siebel Workflow is highly scalable and tests have proven a very high performance (outdoing scripted code by factors).&lt;br /&gt;&lt;br /&gt;The tool of choice of Oracle developers to orchestrate reusable services into, yes, yet another service (that's what a workflow really is: just another service which you can call from literally anywhere) is Siebel Workflow.&lt;br /&gt;&lt;br /&gt;Open the list of standard workflows in Siebel Tools and see for yourself. The current version (SIA 8.0) comes replete with more than 1000 standard workflow processes for literally any kind of functionality such as pricing, integrating with SAP, marketing or customer-facing processes such as quote-to-cash or forgotten passwords.&lt;br /&gt;&lt;br /&gt;&lt;/graphic&gt;&lt;/graphic&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_f689sAiiG-E/SIzAM2-xvWI/AAAAAAAAACE/j0tB6adE52U/s320/forgot-password-process.jpg" alt="" id="BLOGGER_PHOTO_ID_5227764594620087650" border="0" /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Example for a standard workflow&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Summary &lt;/span&gt;(= Answer to the third question and I will make this short):&lt;br /&gt;&lt;br /&gt;Focus your customizing investment on the 10 basic objects, business services and workflow and your project is&lt;span style="font-weight: bold;"&gt; close to the standard&lt;/span&gt; and therefore easily upgradeable.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-1719522930147586973?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/1719522930147586973/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=1719522930147586973' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/1719522930147586973'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/1719522930147586973'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2008/09/close-to-standard-siebel.html' title='Close to the Standard Siebel'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_f689sAiiG-E/SIy8C0wqFcI/AAAAAAAAAB0/5t4mUIlaM1M/s72-c/major-object-hierarchy-siebel-crm-repository.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-4296536310607535199</id><published>2008-09-12T14:17:00.001+05:30</published><updated>2008-12-09T17:23:36.287+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Siebel CRM'/><title type='text'>Oracle Master Data Management - Siebel</title><content type='html'>&lt;span style="font-family:verdana;"&gt;a closer look&lt;br /&gt;&lt;br /&gt;These days I am reading a white paper ---&gt; &lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;http://www.oracle.com/dm/08q3field/mdm_detailed_technical.pdf&lt;/span&gt; on Oracle Master Data Management (MDM). A customer is interested in training on MDM and I wanted to find out what role the Siebel Customer Data Integration (CDI) and Universal Customer Master (UCM) solution and Oracle BI EE (formerly known as Siebel Analytics) play in the Oracle MDM offering.&lt;br /&gt;&lt;br /&gt;You can download the technical white paper on the Oracle Master Data Management website ---&gt; &lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;http://www.oracle.com/master-data-management/index.html&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;The paper is in fact helpful to help us define the problem areas of existing IT infrastructures, the half-baked solutions that lack the power to combine operational and analytical data into a single view of the customer. It also defines the ideal information architecture and gives a nice overview of the Oracle products (yes, including Siebel CDI, UCM and Oracle BI EE) available to build or buy an MDM solution.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The N² problem&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;It starts with the N² (n square) problem that occurs when data synchronization between transactional applications is accomplished with code. IT managers all over the globe experience this on a daily basis.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_f689sAiiG-E/SJAth8Ns9KI/AAAAAAAAACM/ZHPSF8I5CH8/s320/mdm_n2integrationproblem.jpg" alt="" id="BLOGGER_PHOTO_ID_5228729228499678370" border="0" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Enterprise Application Integration&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Of course there is a more elegant solution established over the last decade which is usually described as an information bus or hub-and-spoke topology, supported by Enterprise Application Integration (EAI) technology.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_f689sAiiG-E/SJAtiCAWkAI/AAAAAAAAACU/ufUbTJ2z8F4/s320/mdm_eai.jpg" alt="" id="BLOGGER_PHOTO_ID_5228729230054297602" border="0" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Service Oriented Architecture&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;EAI has recently evolved into serice oriented architecture (SOA) where interfaces can be called from an application's service layer independently of the programming language or software platform. SOA is more than just synchronizing data, it also supports business process orchestration across separate systems.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_f689sAiiG-E/SJAtiIoDPgI/AAAAAAAAACc/Alfg2JBiRGo/s320/mdm_soa.jpg" alt="" id="BLOGGER_PHOTO_ID_5228729231831416322" border="0" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Data Quality&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So when your IT infrastructure has evolved to SOA, you will find that the old saying "garbage in, garbage out" is more true than ever before, because data quality is crucial to successful business process integration. So the paper concludes that an MDM solution that really deserves this name must also embed data quality solutions.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Data Warehousing, Business Intelligence and Reporting&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Most companies today have established data warehouses and ETL processing that pulls data from the transactional systems into the DW. And most of them have invested in Business Intelligence tools to analyze the billions of records that they store in the DW in order to drive business decisions.&lt;br /&gt;&lt;br /&gt;So far so good.&lt;br /&gt;&lt;br /&gt;But the following should make us think twice:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;Company A rolls out the new CRM system.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;A few years later, the analytical CRM project is started&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;Shortly after the first pilots, the data quality project is launched.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;So the BI system suffers from the poor data quality of the transactional systems. Garbage in, garbage out again.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_f689sAiiG-E/SJAtiXsV2tI/AAAAAAAAACk/FMqt2933lpA/s320/mdm_dwh.jpg" alt="" id="BLOGGER_PHOTO_ID_5228729235875945170" border="0" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;An ideal information architecture&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The paper boldly announces the ideal information architecture which brings the MDM system into play as a central instance which enables metadata and data cleansing and forms the base source system for ETL.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_f689sAiiG-E/SJAtimaezeI/AAAAAAAAACs/PIpkgSGpgeM/s320/mdm_ideal.jpg" alt="" id="BLOGGER_PHOTO_ID_5228729239827566050" border="0" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Building an MDM solution using Oracle Products&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Today, after uncounted strategic acquisitions, Oracle is able to support the ideal architecture with its software stack. So let's look at the architecture from a software perspective.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;Oracle 11g with RAC for the Database&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;OWB for ETL and Profiling&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;ODI for ETL and Data Migration&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;Master entity data models&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;ESB for integration&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;BPEL PM for orchestration&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;Portal for the user interface&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;IdM for managing users&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;WS Manager for managing services&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;BI EE for analytics&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;JDeveloper for creating or extending the MDM management application.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;Oracle utilizes these technologies to build its MDM Data Hubs. Customers who want to build their own MDM solution should use these components as well.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Summary&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;MDM can be seen as an approach to solve the common IT problems like ever increasing data volume, poor data quality and lack of business insight.&lt;br /&gt;&lt;br /&gt;Oracle offers a variety of products to build a solution and also offers pre-built MDM applications like Oracle Customer Hub and Oracle Product Hub.&lt;br /&gt;&lt;br /&gt;Siebel CRM is represented by the Siebel CDI and UCM applications and by Oracle BI EE (formerly known as Siebel Analytics).&lt;br /&gt;&lt;br /&gt;So to get full grips to an MDM solution, there is a lot to learn and a lot to gain.&lt;br /&gt;&lt;br /&gt;have fun&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-4296536310607535199?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/4296536310607535199/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=4296536310607535199' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/4296536310607535199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/4296536310607535199'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2008/09/oracle-master-data-management-siebel.html' title='Oracle Master Data Management - Siebel'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_f689sAiiG-E/SJAth8Ns9KI/AAAAAAAAACM/ZHPSF8I5CH8/s72-c/mdm_n2integrationproblem.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-5746634019125022271</id><published>2008-09-12T14:15:00.000+05:30</published><updated>2008-12-09T17:23:36.796+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Siebel CRM'/><title type='text'>Siebel Server System Alert Notification</title><content type='html'>&lt;span style="font-family:verdana;"&gt;E-mail for you...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Triggered by an inquisitive mind, I have recently tried out the &lt;/span&gt;&lt;span style="font-family: verdana;"&gt;System Alert Notification Feature ---&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;http://download.oracle.com/docs/cd/E05553_01/books/SystAdm/SystAdm_ConfigServer22.html#wp1014907&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; &lt;/span&gt;of the Siebel Server. This feature has been introduced in Siebel 7.7 and allows server components to notify administrators via e-mail when error conditions occur.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The following describes the setup procedure for a simple test scenario.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The scenario assumes that you have an SMTP server up and running as well as a Siebel Enterprise Server installation.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;1. Configure the System Alert Profile&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;You can use the preconfigured System Alert profile with the alias "AdminEmailAlert".&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Navigate to Site Map &gt; Administration - Server Configuration &gt; Enterprises &gt; System Alerts.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;In the Alert Parameters list, set the parameters according to your environment. You can do it in the GUI or if you prefer the srvrmgr command line here is a template for an input file:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;change param AdminEmailAddress=user@localhost.com,&lt;br /&gt;FromAddress=server@localhost.com,&lt;br /&gt;SMTPServerPort=5025,&lt;br /&gt;SMTPServer=localhost,&lt;br /&gt;Message='This is a message from your Siebel Server: '&lt;br /&gt;for named subsystem adminemailalert&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_f689sAiiG-E/SJGSJo1mwPI/AAAAAAAAADM/xU_2tJ1oBMI/s400/admin-email-alert-1.jpg" alt="" id="BLOGGER_PHOTO_ID_5229121336632590578" border="0" /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;click to enlarge&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. Enable notification for a server component.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Let's try it with the Workflow Process Manager:&lt;br /&gt;&lt;br /&gt;Navigate to Site Map &gt; Administration - Server Configuration &gt; Enterprises &gt; Component Definitions.&lt;br /&gt;Query for the Workflow Process Manager component definition.&lt;br /&gt;In the Component Parameters list query for *otification* to find all parameters related to notification.&lt;br /&gt;&lt;br /&gt;Set the parameters as follows:&lt;br /&gt;&lt;br /&gt;Notification Handler = AdminEmailAlert (the name of the system alert profile you modified in step 1)&lt;br /&gt;Notification Action on Task Ex(it) = 1 (Note: this is an advanced parameter, to set it in the GUI, click the Advanced button)&lt;br /&gt;&lt;br /&gt;Here is an input file template for srvrmgr:&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;change param NotifyHandler=AdminEmailAlert,&lt;br /&gt;NotifyOnTaskExit=1 for compdef wfprocmgr&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To verify you can use the following command:&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;list advanced params %otification% for compdef wfprocmgr&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_f689sAiiG-E/SJGVp-WeTtI/AAAAAAAAADU/cm-BR0yFt-8/s400/admin-email-alert-2.jpg" alt="" id="BLOGGER_PHOTO_ID_5229125190698290898" border="0" /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;click to enlarge&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Be a good boy/girl and shutdown and startup the Workflow Process Manager&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. Test&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;For testing reasons you can simply start a job with no parameters for the component.&lt;br /&gt;Navigate to Site Map &gt; Administration - Server Management &gt; Jobs and create a new job record for the Workflow Process Manager.&lt;br /&gt;Do not enter any parameters and click Submit Job&lt;br /&gt;Press ALT+ENTER to refresh the list. The job will soon change its status to "Error".&lt;br /&gt;Check the e-mails for your test account. Voilá:&lt;br /&gt;&lt;br /&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_f689sAiiG-E/SJGW8Rgbb8I/AAAAAAAAADc/K3-5EZ7g-rU/s400/admin-email-alert-3.jpg" alt="" id="BLOGGER_PHOTO_ID_5229126604589592514" border="0" /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;click to enlarge&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4. How it works&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Any component which has the notification enabled as in step 2 will call the &lt;span style="font-weight: bold;"&gt;Siebel Administrator Notification Component&lt;/span&gt; (alias: AdminNotify) on the Siebel Server it resides on. So it is crucial, that this component is in an online state.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Summary&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Notification e-mails can be sent from any Siebel Server component to one or more e-mail accounts (comma separated list). The setup is straightforward. Watch out for the advanced parameter NotifyOnTaskExit which has a default value of 0 (zero, no notification) and has to be set to 1.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-5746634019125022271?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/5746634019125022271/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=5746634019125022271' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/5746634019125022271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/5746634019125022271'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2008/09/siebel-server-system-alert-notification.html' title='Siebel Server System Alert Notification'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_f689sAiiG-E/SJGSJo1mwPI/AAAAAAAAADM/xU_2tJ1oBMI/s72-c/admin-email-alert-1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-1898807819343107384</id><published>2008-09-12T14:14:00.001+05:30</published><updated>2008-09-12T14:15:36.841+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Siebel CRM'/><title type='text'>Siebel Essentials Blog is funny and interesting</title><content type='html'>&lt;span style="font-family:verdana;"&gt;office humor, eh ;-)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;glad that humorous posts fresh up the discussion, I found that my post on &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;staying close to the standard&lt;/span&gt;&lt;span style="font-family:verdana;"&gt; in Siebel CRM projects has been &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;cited on another blog site ---&gt; &lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;http://siebelunleashed.com/staying-close-to-standards&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;. It is very good to see that there are now several blogs on Siebel CRM to be found on the internet (please see the blog roll on the left).&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-1898807819343107384?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/1898807819343107384/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=1898807819343107384' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/1898807819343107384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/1898807819343107384'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2008/09/siebel-essentials-blog-is-funny-and.html' title='Siebel Essentials Blog is funny and interesting'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-3067397671391171639</id><published>2008-09-12T14:12:00.001+05:30</published><updated>2008-12-09T17:23:37.087+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Siebel CRM'/><title type='text'>Register Business Services in Siebel 8</title><content type='html'>&lt;span style="font-family:verdana;"&gt;gotcha!&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;Whenever you wish to use an external script such as browser script (which &lt;span style="font-weight: bold;"&gt;IS &lt;/span&gt;external because it runs in the browser) to call a method of a Siebel Business Service, you have to declare this Business Service so that the application accepts the call.&lt;br /&gt;&lt;br /&gt;This is a security feature which has been introduced in Siebel 7.5.&lt;br /&gt;&lt;br /&gt;Because otherwise any script kiddie could inject javascript code into the Siebel Web Client ---&gt; &lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;http://siebelunleashed.com/internet-explorer-address-bar-and-siebel-browser-script&lt;/span&gt;/, call any Business Service and wreak havoc.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Most of you are familiar with the odd entries in the applications .cfg file&lt;/div&gt;&lt;br /&gt;&lt;div&gt;ClientBusinessServiceN = Name of the Business Service&lt;br /&gt;(where N is a sequential number)&lt;/div&gt;&lt;br /&gt;&lt;div&gt;However, during some upgrades to Siebel 8, things went bump in the night ---&gt; &lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;http://www.pitt.edu/%7Edash/bump.html&lt;/span&gt;.&lt;/div&gt;That is, their browser scripts didn't work anymore, and adding the line to the .cfg file didn't help either.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;Here is the solution, and it is in fact related to the year-long effort to get away from text files to configure server components. So since Siebel 8 you have to declare the Business Services which you would like to call from external scripts as an &lt;span style="font-weight: bold;"&gt;Application User Property&lt;/span&gt;.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Migration ---&gt; &lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;http://siebel.ittoolbox.com/groups/technical-functional/siebelupgrades-l/new-tasks-for-siebel-80-upgrades-1420925&lt;/span&gt; is rather easy, because they have the same syntax as in the .cfg file. &lt;/div&gt;&lt;br /&gt;As you can see in the screenshot below, also PDQDisabledViewN made it into the Application User Props.&lt;br /&gt;&lt;br /&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_f689sAiiG-E/SJHu7-ajTnI/AAAAAAAAAD0/U3R-uas_ydM/s400/clientbusinessservice.jpg" alt="" id="BLOGGER_PHOTO_ID_5229223356487913074" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-3067397671391171639?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/3067397671391171639/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=3067397671391171639' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/3067397671391171639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/3067397671391171639'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2008/09/register-business-services-in-siebel-8.html' title='Register Business Services in Siebel 8'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_f689sAiiG-E/SJHu7-ajTnI/AAAAAAAAAD0/U3R-uas_ydM/s72-c/clientbusinessservice.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-8930690188782828925</id><published>2008-09-12T14:10:00.002+05:30</published><updated>2008-12-09T17:23:38.410+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Siebel CRM'/><title type='text'>Siebel Query Language - an Example</title><content type='html'>&lt;span style="font-family:verdana;"&gt;Romeo and Julian...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;About the Siebel Query Language&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;First of all, it abbreviates to SQL which is kind of funny, of course it has nothing to do with SQL.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Just like you can get more out of a spreadsheet application like Excel when you are familiar with its internal functions and syntax, you can get much more out of Siebel CRM if you are familiar with the Siebel Query Language.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;Where is it used?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The answer to this question is very interesting, it is used almost everywhere when you define expressions. It is available in both Siebel Tools and the Siebel Web Client and since version 8.0 both the developement environment and the Web Client (that one since 7.0) sport an expression designer.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: verdana; text-align: center;"&gt;&lt;img id="BLOGGER_PHOTO_ID_5231058279564301762" style="cursor: pointer;" alt="" src="http://4.bp.blogspot.com/_f689sAiiG-E/SJhzyjjL1cI/AAAAAAAAAEU/fhP8XgUV-NY/s400/expression_designer_client.jpg" border="0" /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Expression Designer in the Siebel Web Client&lt;br /&gt;click to enlarge&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5231058291801228866" style="cursor: pointer;" alt="" src="http://4.bp.blogspot.com/_f689sAiiG-E/SJhzzRIshkI/AAAAAAAAAEc/JBe3v7tkfxk/s400/expression_designer_tools.jpg" border="0" /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Expression Designer in Siebel Tools (since 8.0)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Here is a probably complete list of areas where you can use the Siebel Query Language:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Siebel Web Client&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;Predefined Queries&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;Conditional Expressions for Personalization Rules&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;Conditional Expressions for Runtime Events&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;Data Validation Manager rules&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;Data Map Editor&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;strong&gt;[Update]&lt;/strong&gt;&lt;/span&gt; iHelp branching expressions&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Siebel Tools&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;Calculated fields&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;Pre-default and post-default values for fields&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;Field Validation property&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;User properties&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;Expressions in Siebel Workflow and UI Tasks&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;Where is the reference?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The Siebel Query Language is documented in the &lt;/span&gt;&lt;span style="font-family: verdana;"&gt;Personalization Administration Guide ---&gt; &lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;http://download.oracle.com/docs/cd/B40099_02/books/PersAdm/PersAdmfunctions.html#wp89966&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt; of the Siebel Bookshelf.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;An example:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The following is an example for a predefined query. The task is to filter the list of contacts so that it displays only persons that have their birthday in the current month.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Working with date fields can be tricky and you just can't type something like *June* in a date field. This is where the &lt;/span&gt;&lt;span style="font-family: verdana;"&gt;date functions ---&gt; &lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;http://download.oracle.com/docs/cd/B40099_02/books/PersAdm/PersAdmfunctions8.html#wp61252&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;, also known as julian functions come into play.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Our first choice would be the JulianMonth() function. This function takes a date field as a parameter and returns the julian number of the current month which is for example 80660 for August 2008. So the nerds among you will have quickly &lt;/span&gt;&lt;span style="font-family: verdana;"&gt;calculated ---&gt; &lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;http://aa.usno.navy.mil/data/docs/JulianDate.php&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt; this back and month #1 is of course January of 4713 BC.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;If we want to query for persons who have their birthday in the current month, then the JulianMonth() function alone is not helpful because the return value for August 1968 is different from August 2008, so we need a way to extract the month number (1-12) from the date. This can be accomplished by multiplying the julian year number (6721 for 2008) by 12 and subtracting it from the julian month number.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;So the equation is: &lt;span style="font-family:courier new;"&gt;# of current month = JulianMonth(Today()) - JulianYear(Today())*12&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;This equation will be the base for our query in Siebel CRM. So basically if we want to match the Birth Date field of a Contact with the # of current month, the query goes as follows:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;JulianMonth([Birth Date])-JulianYear([Birth Date])*12 = JulianMonth(Today()) - JulianYear(Today())*12&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;Creating the predefined query:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Usually you can enter even complex queries directly in any control or list column of the applet (in query mode) but there are restrictions in field length and data type. So here is a way that always works.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Navigate to the Contacts List and save the current query (even an empty query would do).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: verdana; text-align: center;"&gt;&lt;img id="BLOGGER_PHOTO_ID_5231058273120599714" style="cursor: pointer;" alt="" src="http://3.bp.blogspot.com/_f689sAiiG-E/SJhzyLi4vqI/AAAAAAAAAEM/pGOVWuU5lfI/s400/query_save.jpg" border="0" /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;click to enlarge&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Navigate to Site Map -&gt; Administration - Application -&gt; Predefined Queries and retrieve your previously saved query.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Replace anything that might be between the two double quotes after 'Contact'.Search = with&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;JulianMonth([Birth Date])-JulianYear([Birth Date])*12 = JulianMonth(Today()) - JulianYear(Today())*12&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;So finally it looks like this&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: verdana; text-align: center;"&gt;&lt;img id="BLOGGER_PHOTO_ID_5231058273419657682" style="cursor: pointer;" alt="" src="http://3.bp.blogspot.com/_f689sAiiG-E/SJhzyMqMAdI/AAAAAAAAAEE/xphkpT4lqgk/s400/query_predefined.jpg" border="0" /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;click to enlarge&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;In the Household Contact view you can enter some birth dates and run your test in the contact List. I have added the Birth Date field to the Contact List Applet to verify.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5231058266023693394" style="cursor: pointer;" alt="" src="http://4.bp.blogspot.com/_f689sAiiG-E/SJhzxxG2jFI/AAAAAAAAAD8/6QfpIUAbEmM/s400/query_contacts.jpg" border="0" /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;List of contacts with a birth date in August&lt;br /&gt;click to enlarge&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-8930690188782828925?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/8930690188782828925/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=8930690188782828925' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/8930690188782828925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/8930690188782828925'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2008/09/siebel-query-language-example.html' title='Siebel Query Language - an Example'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_f689sAiiG-E/SJhzyjjL1cI/AAAAAAAAAEU/fhP8XgUV-NY/s72-c/expression_designer_client.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-4942237686520676173</id><published>2008-09-12T14:08:00.001+05:30</published><updated>2008-09-12T14:09:51.626+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Siebel CRM'/><title type='text'>siebel.exe switches - siebel</title><content type='html'>&lt;span style="font-family: verdana;"&gt;...and siebdev.exe too ;-)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-family: verdana; font-size: 130%;"&gt;siebel.exe&lt;/span&gt;&lt;span style="font-family: verdana;"&gt;, as we all know, is the engine behind the non-zero-footprint flavour of Siebel applications, namely the Mobile Web Client or the Developer Web Client. Some call it fat client, some call it dedicated web client, depending mostly on the year when they first heard about it. Discussions whether the Mobile Web Client is a different installer than the Developer Web Client and whether the Developer Web Client is the same thing as the fat client often reach religious depths.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;The installer places a bunch of shortcuts in the windows start menu which usually follow the syntax of&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;&lt;path&gt; &lt;/span&gt;&lt;span style="font-weight: bold; font-family: verdana;"&gt;/c&lt;/span&gt;&lt;span style="font-family: verdana;"&gt; &lt;path&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;So &lt;/span&gt;&lt;span style="font-weight: bold; font-family: verdana;"&gt;/c&lt;/span&gt;&lt;span style="font-family: verdana;"&gt; is a mandatory switch because any Siebel applications consists of the very same executable along with a different configuration file from which it reads the rest of its knowledge.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;In order to please the more inquisitive among you, find below a complete list of switches that you can use with siebel.exe. If you know of any other switch, please inform us.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;Typical switches (used in shortcuts)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-family: verdana;"&gt;/c&lt;/span&gt;&lt;span style="font-family: verdana;"&gt; Path to .cfg file (required), directory path defaults to &lt;client_installdir&gt;\bin\enu&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-family: verdana;"&gt;/d&lt;/span&gt;&lt;span style="font-family: verdana;"&gt; Datasource (as in .cfg file), defaults to local&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-family: verdana;"&gt;/l&lt;/span&gt;&lt;span style="font-family: verdana;"&gt; language (optional, language pack must be installed), defaults to enu&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-family: verdana;"&gt;/u&lt;/span&gt;&lt;span style="font-family: verdana;"&gt; Username (optional)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-family: verdana;"&gt;/p&lt;/span&gt;&lt;span style="font-family: verdana;"&gt; Password (optional)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-family: verdana;"&gt;/s&lt;/span&gt;&lt;span style="font-family: verdana;"&gt; Path to spool file (optional, to spool all SQL generated by siebel.exe)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;Extra switches&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-family: verdana;"&gt;/b&lt;/span&gt;&lt;span style="font-family: verdana;"&gt; Path to Browser executable (optional, for multi-browser testing of customer or partner (SI) applications)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-family: verdana;"&gt;/h&lt;/span&gt;&lt;span style="font-family: verdana;"&gt; Debug Mode (used with Siebel Tools for debugging)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-family: verdana;"&gt;/ctsim&lt;/span&gt;&lt;span style="font-family: verdana;"&gt; (often confused with /ct&lt;/span&gt;&lt;span style="font-weight: bold; font-family: verdana;"&gt;i&lt;/span&gt;&lt;span style="font-family: verdana;"&gt;sim, which does not work ;-) CTI Simulation mode (used for demo)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-family: verdana;"&gt;/editseeddata&lt;/span&gt;&lt;span style="font-family: verdana;"&gt; allows modification of seed data, often referred to in maintenance release guides&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-family: verdana; font-size: 130%;"&gt;And now for siebdev.exe:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;siebdev.exe is the engine behind Siebel Tools, which is the only application that does not run in a browser window. However, Siebel Tools is defined in the Siebel Repository and the siebdev.exe works just like the siebel.exe. That is, it reads a .cfg file and an .srf file (the file that newbies usually try to compile to during their first steps with Siebel Tools).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;So siebdev.exe accepts most of the switches that siebel.exe does, namely &lt;/span&gt;&lt;span style="font-weight: bold; font-family: verdana;"&gt;/c, /d, /u, /p&lt;/span&gt;&lt;span style="font-family: verdana;"&gt; and &lt;/span&gt;&lt;span style="font-weight: bold; font-family: verdana;"&gt;/s&lt;/span&gt;&lt;span style="font-family: verdana;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;But there are some additional switches, used in conjunction with the "classic" ones. They have been passed along from consultant mouth to consultant ear for eons before they found their way into the documentation.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-family: verdana;"&gt;/bv&lt;/span&gt;&lt;span style="font-family: verdana;"&gt; runs &lt;/span&gt;&lt;span style="font-weight: bold; font-family: verdana;"&gt;all &lt;/span&gt;&lt;span style="font-family: verdana;"&gt;validation rules for the entire repository, so take your time&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-family: verdana;"&gt;/batchimport&lt;/span&gt;&lt;span style="font-family: verdana;"&gt; automates the import of .sif files&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-family: verdana;"&gt;/batchexport&lt;/span&gt;&lt;span style="font-family: verdana;"&gt; automates the export of objects to .sif files&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-family: verdana;"&gt;/bc&lt;/span&gt;&lt;span style="font-family: verdana;"&gt; allows to run batch compilation&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-family: verdana;"&gt;/tl&lt;/span&gt;&lt;span style="font-family: verdana;"&gt; language (typically used with /bc for multiple language deployments)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-family: verdana;"&gt;/applybatchpatch&lt;/span&gt;&lt;span style="font-family: verdana;"&gt; is used for applying batch patches, or patches in batches.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;Have a nice day&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-4942237686520676173?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/4942237686520676173/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=4942237686520676173' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/4942237686520676173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/4942237686520676173'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2008/09/siebelexe-switches-siebel.html' title='siebel.exe switches - siebel'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-3923307898456431029</id><published>2008-09-12T14:06:00.000+05:30</published><updated>2008-09-12T14:08:14.277+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Logging'/><category scheme='http://www.blogger.com/atom/ns#' term='Siebel CRM'/><title type='text'>Client Side Logging - Siebel</title><content type='html'>&lt;span style="font-family:verdana;"&gt;books at bedtime&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;If you read technical blogs, you get the impression that these guys don't have a life and if they sleep at all, they sleep with the Siebel Bookshelf under their pillow.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;I can confirm it is not that bad. However, &lt;/span&gt;&lt;span style="font-family: verdana;"&gt;rtfm ---&gt; &lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;http://www.acronymfinder.com/RTFM.html&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt; is always a good thing and it sometimes reveals features that are quite helpful.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;This post tries to shed some light on the Client-Side Logging or High-Interactivity Siebel applications. You can read the full documentation in the &lt;/span&gt;&lt;span style="font-family: verdana;"&gt;System Monitoring and Diagnostics Guide ---&gt; &lt;span style="color: rgb(255, 0, 0); font-weight: bold;"&gt;http://download.oracle.com/docs/cd/B40099_02/books/SysDiag/SysDiagClientSideLogging.html#wp1004801&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Client-side logging for high-interactivity applications writes information to a local log file.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;It is useful to close the gap in monitoring that existed in earlier Siebel versions, which means you can now&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul style="font-family: verdana;"&gt;&lt;li&gt;capture browser activity data for troubleshooting, such as when a Siebel Web Client stops responding or fails&lt;/li&gt;&lt;li&gt;Log individual user or global session information for a specific Siebel Server&lt;/li&gt;&lt;li&gt;Debug the source code using JavaScript&lt;/li&gt;&lt;li&gt;Trace the sequences of operations&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;You can enable Client-Side Logging either by setting the &lt;/span&gt;&lt;span style="font-weight: bold;font-family:verdana;" &gt;SEBLCL_TRACEMODE &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;environment variable on the client machine or setting parameters for the object manager component on the Siebel server like in the following example:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;change param&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;ClientSideLogging=True,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;ClntTraceMode=1,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;ClntLogFileSize=50,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;ClntLogArchiveCount=5,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;ClntLogDirectory=D:\SiebelLogs,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;ClntTraceUnicode=true&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;for compdef SCCObjMgr_enu&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Once enabled, log files are created in the given local directory of each client. Let's look at a typical file's content.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center; font-family: verdana;"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_f689sAiiG-E/SKcula8DVcI/AAAAAAAAANs/gBsn7tC383k/s400/cslhi_file-information.jpg" alt="" id="BLOGGER_PHOTO_ID_5235204312262727106" border="0" /&gt;&lt;br /&gt;click to enlarge&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;So each entry in the file shows which area it belongs to along with the log level, timestamp and - most notably - a SARM id, which allows you to correlate the client file content with SARM files from the server components.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;So it is possible to trace a complete client session from the the click in the browser to the operation in the database connector layer of the object manager.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-3923307898456431029?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/3923307898456431029/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=3923307898456431029' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/3923307898456431029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/3923307898456431029'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2008/09/client-side-logging-siebel.html' title='Client Side Logging - Siebel'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_f689sAiiG-E/SKcula8DVcI/AAAAAAAAANs/gBsn7tC383k/s72-c/cslhi_file-information.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-1294993106787495056</id><published>2008-05-07T17:39:00.000+05:30</published><updated>2008-05-07T17:41:53.528+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='List of Values'/><title type='text'>Siebel List of Values - A Strategic Move - Continued.</title><content type='html'>Last time I said that I will be presenting a Solution to make Required Fields dynamic and SRF independent. So I am back with What I promised.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Requirement:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Siebel Service Request&lt;/strong&gt; module was to be implemented because of a new implementation the business requirements were being changed all the time. One &lt;strong&gt;Strange&lt;/strong&gt; requirement was to make the &lt;strong&gt;Required Fields&lt;/strong&gt; of a business component &lt;strong&gt;dynamic&lt;/strong&gt;. So that they can be changed without a release. Now, we all know one way to make a field required is to set the &lt;strong&gt;Required Property&lt;/strong&gt; of the &lt;strong&gt;field to true&lt;/strong&gt;. But that would mean that if I were to change that a new &lt;strong&gt;SRF deployment&lt;/strong&gt; will be required.&lt;br /&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;br /&gt;LOV's again were the life saver for us. We created an LOV called &lt;strong&gt;SRV_REQ_FIELD&lt;/strong&gt; and in the &lt;strong&gt;Display value&lt;/strong&gt; we provided the &lt;strong&gt;names&lt;/strong&gt; of the fields that we wanted as &lt;strong&gt;Required Fields&lt;/strong&gt;. In the Business Component PreWrite Record we queried for that particular LOV and traversed through the records that were active. If the Field provided in the LOV did not &lt;strong&gt;contained a value&lt;/strong&gt; then an error was raise stating that the value for that particular required field was not supplied. I am giving the Pseudo Code below to what that script might look like&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;em&gt;BOLOV = TheApplication().GetBusObject("List Of Values");&lt;br /&gt;BCLOV = BOLOV.GetBusComp("List Of Values");&lt;br /&gt;with (BCLOV)&lt;br /&gt;{&lt;br /&gt;Query for LOV Type as 'SR_REQ_FIELD' and Active Flag = 'Y'&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;IsRecord = BCLOV.FirstRecord();&lt;br /&gt;while( Last record is not reached)&lt;br /&gt;{&lt;br /&gt;this.ActivateField(BCLOV.GetFieldValue("Name"));&lt;br /&gt;if ( this.GetFieldValue(BCLOV.GetFieldValue("Name")) == "" )&lt;br /&gt;Raise Errro Text ("Value not given")&lt;br /&gt;BCLOV.NextRecord();&lt;br /&gt;}&lt;br /&gt;&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This solution is&lt;strong&gt; not recommended&lt;/strong&gt; if the&lt;strong&gt; number&lt;/strong&gt; of fields that are required is &lt;strong&gt;fairly large&lt;/strong&gt;. But still can be &lt;strong&gt;really handy&lt;/strong&gt; in many situations.&lt;br /&gt;&lt;br /&gt;Hope you liked this post! If yes, Do post your comments.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="fullpost"&gt;For other posts Related to LOV please go through the category of &lt;a href="http://all-about-siebel.blogspot.com/search/label/List%20of%20Values" target="_blank"&gt;&lt;strong&gt;List of Values&lt;/strong&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-1294993106787495056?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/1294993106787495056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=1294993106787495056' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/1294993106787495056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/1294993106787495056'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2008/05/siebel-list-of-values-strategic-move_07.html' title='Siebel List of Values - A Strategic Move - Continued.'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-3951394896593380007</id><published>2008-05-07T17:36:00.000+05:30</published><updated>2008-05-07T17:39:45.557+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='List of Values'/><title type='text'>Siebel List of Values - A Strategic Move!</title><content type='html'>List of Values (LOV) is assumed to pretty &lt;strong&gt;simple entity&lt;/strong&gt; in &lt;strong&gt;siebel&lt;/strong&gt; and having very &lt;strong&gt;limited use&lt;/strong&gt;, of showing values in &lt;strong&gt;dropdown picklist&lt;/strong&gt;. But lately I found they can be used in more than one ways. They can be a real life saver. One use I have found of them is to avoid hard coding. Yes, you can avoid hard coding of values and use LOV instead which you can then change &lt;strong&gt;without SRF Release.&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;I will list below some real scenarios which I have come across and used &lt;strong&gt;List of Values&lt;/strong&gt; to accomplish task which otherwise would have a real pain while moving stuff different environments.&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;strong&gt;Workflows - Requirement :&lt;/strong&gt;&lt;br /&gt;We were creating workflows that were going to &lt;strong&gt;integrate Siebel&lt;/strong&gt; with some other application with the help of &lt;strong&gt;MQ Series&lt;/strong&gt;. Now, to accomplish that we had to enter two paramerters related to MQ Series in the first step of workflows, &lt;strong&gt;Queue Manager&lt;/strong&gt; and &lt;strong&gt;Physical Queue Name&lt;/strong&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;If, we were to&lt;strong&gt; hardcode&lt;/strong&gt; then it would be difficult to &lt;strong&gt;move workflow&lt;/strong&gt; between &lt;strong&gt;different envoirnments&lt;/strong&gt; such as QA and production because they had &lt;strong&gt;different&lt;/strong&gt; Physical Queue Name . There LOV's came to our &lt;strong&gt;Rescue&lt;/strong&gt;. We created two LOV's with the values of the Queue Manager and Queue Name and used &lt;strong&gt;LookupValue()&lt;/strong&gt; method in &lt;strong&gt;workflows&lt;/strong&gt; to acomplish that. &lt;/span&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;LookupValue method accepts two arguments 'LOV Type' and Language Independent Code ('LIC') and returns the display value of that LOV Type. The syntax is as following&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="fullpost"&gt;&lt;/span&gt;&lt;span class="fullpost"&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;strong&gt;LookupValue("LOV Type","LIC")&lt;/strong&gt; &lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;Example : &lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="left"&gt;Create an new LOV Type&lt;em&gt;&lt;span style="color: rgb(102, 102, 102);"&gt; &lt;/span&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;(in this case we are created MQ_PHY_QUEUE_NAME. It should be same in all the environments where you want to deploy the workflow) &lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;Enter the Display Value &lt;em&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;(actual value that you want to speficy like in this case we specify ESBLDAS for dev env and ESBLQAS for QA Env) &lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;Enter the LIC &lt;em&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;(can be anything descriptive like in this case we had given 'Physical Queue Name') &lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;&lt;div align="left"&gt;In the Input Arguments of workflow choose input argument type as Expression and specify the value as LookupValue("MQ_PHY_QUEUE_NAME","Physical Queue Name")&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Now, it is going to pick the value as &lt;strong&gt;'Display Value'&lt;/strong&gt; of the&lt;strong&gt; LOV&lt;/strong&gt; that you have &lt;strong&gt;specified. &lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;In next post I will describe how can we use&lt;strong&gt; LOV&lt;/strong&gt; to &lt;strong&gt;dynamically specify Required Fields&lt;/strong&gt; for a Business Component.&lt;br /&gt;&lt;br /&gt;For other posts Related to LOV please go through the category of &lt;a href="http://all-about-siebel.blogspot.com/search/label/List%20of%20Values" target="_blank"&gt;&lt;strong&gt;List of Values&lt;/strong&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-3951394896593380007?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/3951394896593380007/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=3951394896593380007' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/3951394896593380007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/3951394896593380007'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2008/05/siebel-list-of-values-strategic-move.html' title='Siebel List of Values - A Strategic Move!'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-1953286876972388560</id><published>2008-05-07T17:34:00.000+05:30</published><updated>2008-05-07T17:43:39.382+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='How - To'/><category scheme='http://www.blogger.com/atom/ns#' term='List of Values'/><title type='text'>Siebel CRM How To - Create a new LOV?</title><content type='html'>&lt;span style="color: rgb(0, 0, 102);font-family:georgia;" &gt;Whatever I have posted in this blog assumes that you have fair bit of idea working on &lt;strong&gt;Siebel CRM&lt;/strong&gt;. I noticed there is hardly anything in this blog that can help a &lt;strong&gt;newbie&lt;/strong&gt;. So thought of starting a new Category that is &lt;strong&gt;'Siebel CRM How To'&lt;/strong&gt;. This Category will include step by step How To's to various things in &lt;strong&gt;Siebel CRM&lt;/strong&gt;. Starting this series is a simple 'How To' of creating a new List of Value and adding to the existing List of Value (LOV). &lt;/span&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);font-family:georgia;" &gt;Information about LOV and explaination about the various terms is subject of another post. In this post I am just going to have step by step tutorial of creating a new LOV and adding new values to existing LOV's&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:georgia;"&gt;Creating a new LOV&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;You can create an LOV from two places both have a different way of creating LOV in Siebel CRM.&lt;/span&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;&lt;strong&gt;Administration ==&gt; Data ==&gt; List of Values&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Administration ==&gt; Data ==&gt; LOV Explorer&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;Through List of Values to add a new LOV following steps have to be followed. As an Example we will add a &lt;strong&gt;new LOV&lt;/strong&gt; for &lt;strong&gt;Martial Status&lt;/strong&gt; of a person.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="fullpost"&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-family:georgia;"&gt;Click New and Choose LOV_TYPE in Type Field&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:georgia;"&gt;Enter MARITAL_LOV in &lt;strong&gt;'Display Value'&lt;/strong&gt;.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:georgia;"&gt;Enter 'Marital Status' in &lt;strong&gt;Language-Independent Code Field&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:georgia;"&gt;Enter 'English-American' if you implementation language is English otherwise it will be according to the language of your implementation. &lt;strong&gt;Save the record&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:georgia;"&gt;Click New again and choose 'MARITAL_LOV' in &lt;strong&gt;Type Field&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:georgia;"&gt;Enter 'Married' in &lt;strong&gt;Display Value and Language-Independent Code Field&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:georgia;"&gt;Enter 'English-American' if you implementation language is English otherwise it will be according to the language of your implementation. &lt;strong&gt;Save the record.&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:georgia;"&gt;&lt;strong&gt;Follow steps 5 -7&lt;/strong&gt; for all values that you want to associate with this LOV&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;span style="font-family:georgia;"&gt;For example we will follow steps 5 - 7 and just change the value Married to Single so that It can have two values 'Married' and 'Single'&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:georgia;"&gt;Through &lt;strong&gt;LOV Explorer&lt;/strong&gt; you have to perform the following steps.&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-family:georgia;"&gt;Click New and enter 'MARITAL_LOV' in the Type field&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:georgia;"&gt;Click on the &lt;strong&gt;+ &lt;/strong&gt;sign in the left hand side of the &lt;strong&gt;LOV&lt;/strong&gt; &lt;strong&gt;Explorer window&lt;/strong&gt; for the type that you created&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:georgia;"&gt;Click on the &lt;strong&gt;Values &lt;/strong&gt;folder.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:georgia;"&gt;In the Right hand side &lt;strong&gt;Applet&lt;/strong&gt; click on New&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:georgia;"&gt;Enter 'Married' in the &lt;strong&gt;'Code'&lt;/strong&gt; and &lt;strong&gt;'Display Value' Field&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:georgia;"&gt;Enter 'English-American' if you implementation language is English otherwise it will be according to the language of your implementation. &lt;strong&gt;Save the record.&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:georgia;"&gt;&lt;strong&gt;Repeat steps 4-6&lt;/strong&gt; for the all the values that you want to enter.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:georgia;"&gt;That's it. You are done with &lt;strong&gt;creating&lt;/strong&gt; the &lt;strong&gt;New LOV&lt;/strong&gt; with new Values&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:georgia;"&gt;To enter &lt;strong&gt;New Values&lt;/strong&gt; in the&lt;strong&gt; existing Siebel LOV&lt;/strong&gt; just perform the following steps.&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-family:georgia;"&gt;&lt;strong&gt;Query&lt;/strong&gt; for the &lt;strong&gt;LOV Type&lt;/strong&gt; that you want to add New Values.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:georgia;"&gt;Copy the record Enter the &lt;/span&gt;&lt;span style="font-family:georgia;"&gt;&lt;strong&gt;Display Value and Language Independent Code Field&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:georgia;"&gt;Change the &lt;strong&gt;value &lt;/strong&gt;in the &lt;strong&gt;Order Field&lt;/strong&gt; to be the &lt;strong&gt;unique number&lt;/strong&gt; and save the record.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;strong&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Related Posts that you might like to Read:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://all-about-siebel.blogspot.com/2008/05/siebel-list-of-values-strategic-move.html" target="_blank"&gt;Siebel CRM - List of Values a Strategic Move!&lt;/a&gt;&lt;br /&gt;&lt;a href="http://all-about-siebel.blogspot.com/2008/05/siebel-list-of-values-strategic-move_07.html" target="_blank"&gt;Siebel CRM - List of Values a Strategic Move- Continued!&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-1953286876972388560?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/1953286876972388560/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=1953286876972388560' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/1953286876972388560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/1953286876972388560'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2008/05/siebel-crm-how-to-create-new-lov.html' title='Siebel CRM How To - Create a new LOV?'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-417693502978277831</id><published>2008-05-07T17:33:00.000+05:30</published><updated>2008-05-07T17:34:23.562+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Workflows'/><category scheme='http://www.blogger.com/atom/ns#' term='How - To'/><title type='text'>Siebel CRM How To - Invoke Workflow through BC User Property</title><content type='html'>&lt;p&gt;&lt;span style="font-family: georgia;"&gt;Till siebel 7.5 the only method know to invoke workflows were &lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: georgia;"&gt;Runtime Events in start step of workflow&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: georgia;"&gt;Business Service&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Business Component Script&lt;/li&gt;&lt;li&gt;Workflow Policies&lt;/li&gt;&lt;/ul&gt;&lt;span class="fullpost"&gt;&lt;span style="font-family: georgia;"&gt;But from Siebel 7.7 ownwards there is one more method by which we can invoke a workflow. That way is Siebel business Component user property. You can &lt;strong&gt;'Named Method&lt;em&gt;n&lt;/em&gt;'&lt;/strong&gt; user property in a BC which can invoke a workflow where &lt;strong&gt;n&lt;/strong&gt; is &lt;strong&gt;increment&lt;/strong&gt; to the last named method user property defined on that BC.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-family: georgia;"&gt;Name: Named Method &lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: georgia;"&gt;&lt;strong&gt;Value&lt;/strong&gt;:[Event Name] &lt;methodname&gt;, "INVOKESVC", &lt;bc&gt;, "Workflow Process Manager", "RunProcess", 'ProcessName',[Name of the Workflows] &lt;workflow&gt;, 'RowId', [Row Id Value]&lt;objectid&gt;&lt;/objectid&gt;&lt;/workflow&gt;&lt;/bc&gt;&lt;/methodname&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-family: georgia;"&gt;Example &lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family: georgia;"&gt;The below mentioned will invoke a workflow named 'Example Workflow' when a new record is created in Example BC.&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-family: georgia;"&gt;Name: Named Method 1&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;strong&gt;&lt;span style="font-family: georgia;"&gt;Value: "New Record", "INVOKESVC", "Example", "Workflow Process Manager", "RunProcess", "'ProcessName'", "Example Wrokflow", "'RowId'", "[Id]" &lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family: georgia;"&gt;&lt;strong&gt;Hope this post helps you. If yes, Please post your comments.&lt;/strong&gt;&lt;/span&gt; &lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-417693502978277831?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/417693502978277831/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=417693502978277831' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/417693502978277831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/417693502978277831'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2008/05/siebel-crm-how-to-invoke-workflow.html' title='Siebel CRM How To - Invoke Workflow through BC User Property'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-4581780358869943762</id><published>2008-05-07T17:27:00.000+05:30</published><updated>2008-05-07T17:32:30.768+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Siebel Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='How - To'/><title type='text'>Siebel Tools How To - Have Mutiple Local database Instances?</title><content type='html'>&lt;strong&gt;This article is a step by step guide to have mutiple local database instances on the same system.&lt;br /&gt;&lt;/strong&gt;&lt;strong&gt;Below mentioned points might be the reason why you would want to do that&lt;/strong&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="fullpost"&gt;You are working on mutilple projects and they all have repository named 'Siebel Repository'. &lt;/span&gt;&lt;span class="fullpost"&gt;You want to work on both repositories simultaneously. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;You share your system and you want the changes made by other developer to be on a different instance rather than yours.&lt;/li&gt;&lt;li&gt;You have a server that can be accessed by mutiple people who work on it simultaneously&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;So, How do you do that? Here is the answer&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Make a copy of your siebel local database &lt;span style="color: rgb(102, 102, 102);"&gt;&lt;em&gt;(that is file named &lt;strong&gt;sse_data.dbf&lt;/strong&gt;) &lt;/em&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;rename it to be anything such as sse_data_copy.dbf&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Make a copy your &lt;a href="http://all-about-siebel.blogspot.com/2008/05/siebel-crm-configuration-file-cfg.html" target="_blank"&gt;tools.cfg&lt;/a&gt; file &lt;strong&gt;&lt;em&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(which should be residing in siebel install dir\tools\bin\enu\) &lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;and rename it to such as tool_copy.cfg&lt;/li&gt;&lt;li&gt;Open the tools_copy.cfg file scroll down to section [Local]&lt;/li&gt;&lt;li&gt;Find parameter named Connect String and change the value to reflect the name and path of you newly created copy of your dbf file.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;for example&lt;/p&gt;&lt;p&gt;Previous Value : &lt;strong&gt;C:\PROGRA~1\Siebel\7.8\Tools\local\sse_data.dbf -q -m -x NONE -gp 4096 -c256m -ch256m -ch256m&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;New Value &lt;strong&gt;:&lt;/strong&gt; &lt;strong&gt;C:\PROGRA~1\Siebel\7.8\Tools\local\sse_data_copy.dbf -q -m -x NONE -gp 4096 -c256m -ch256m -ch256m&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;you can change the other parameters also. To learn more about other parameters please read my post &lt;a href="http://all-about-siebel.blogspot.com/2008/05/siebel-crm-configuration-file-cfg.html" target="_blank"&gt;Siebel CRM - Configuration File (cfg) Disected and Explained.&lt;/a&gt; &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Change the parameter named &lt;strong&gt;DockRepositoryName&lt;/strong&gt; to different name if you don't want to have repository of your newly created instance to be Siebel Repository.&lt;/li&gt;&lt;li&gt;Create a copy of your shortcut which you use to access your siebel tools instance.&lt;/li&gt;&lt;li&gt;Right Click on the newly created instance and choose properties from the context menu&lt;/li&gt;&lt;li&gt;In the Target field of the newly opened window scroll to the point where it mentions the name of the cfg file which should be tools.cfg&lt;/li&gt;&lt;li&gt;Rename just the name of the file to tools_copy.cfg &lt;strong&gt;&lt;em&gt;&lt;span style="color: rgb(102, 102, 102);"&gt;(the name of the copy of the cfg file you made)&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;for example&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Orignal Value : &lt;strong&gt;"C:\Program Files\Siebel\7.8\Tools\BIN\siebdev.exe" /c "C:\PROGRA~1\Siebel\7.8\Tools\bin\enu\tools.cfg"&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;New Value : &lt;strong&gt;"C:\Program Files\Siebel\7.8\Tools\BIN\siebdev.exe" /c "C:\PROGRA~1\Siebel\7.8\Tools\bin\enu\tools_copy.cfg"&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;And you are done. Now you have two Siebel tools instances on the same system. &lt;/p&gt;&lt;p&gt;This solution will not work if :&lt;/p&gt;&lt;ol&gt;&lt;li&gt;If you mutiple users work on the system at same time. (For example a terminal server where multiple users can login and work simultenously)&lt;/li&gt;&lt;li&gt;If you want to Check in your changes to a different server&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;In next article we will discuss about additional changes that can be done to overcome this problem.&lt;/p&gt;&lt;p&gt;I Hope this post was helpful to you. If yes, Please post your comments or suggestion to make this site better.&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-4581780358869943762?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/4581780358869943762/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=4581780358869943762' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/4581780358869943762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/4581780358869943762'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2008/05/siebel-tools-how-to-have-mutiple-local.html' title='Siebel Tools How To - Have Mutiple Local database Instances?'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-3808327928410553829</id><published>2008-05-07T17:26:00.000+05:30</published><updated>2008-05-07T17:27:13.013+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Services'/><category scheme='http://www.blogger.com/atom/ns#' term='How - To'/><title type='text'>Siebel How To - Create Inbound and Outbound Webservice?</title><content type='html'>I was fortunate enough early in my carrer to get a chance to work on &lt;strong&gt;Siebel EAI&lt;/strong&gt;. It was the first implementation of &lt;strong&gt;Web Services&lt;/strong&gt; in our project. So, had to struggle a lot to understand basics of web service. But I always from my school time had intrest in &lt;strong&gt;XML&lt;/strong&gt; and Web so understanding that part was not that difficult but I really had to work hard to understand web services from Siebel Prespective. I am thankful to &lt;strong&gt;God&lt;/strong&gt; now that there was nobody to guide me at that time which resulted in terrific learning and understanding of a fact&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;'Siebel is Huge' like a sea and what I have explored till now is not even 10% of whole Siebel&lt;/em&gt;.&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;During my days working on Siebel Web Services I created a Powerpoint Presentation (PPT) which had minimum steps that you need to perform to create Inbound and Outbound Service with Screen Shots. Which I would like to share with you all. It can act as a your guide to check If you are missing any steps in creating Web Service. It is not a comprehensive guide but just a tutorial to give you insight and to point you to the right direction if you are involved in EAI.&lt;br /&gt;&lt;br /&gt;Click on the Link Below to download the PPT.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://rapidshare.com/files/60854421/WebService.ppt" target="_blank" rel="nofollow"&gt;Download Now!!!!&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Hope this post helps you. Please post your comments and suggestions.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-3808327928410553829?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/3808327928410553829/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=3808327928410553829' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/3808327928410553829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/3808327928410553829'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2008/05/siebel-how-to-create-inbound-and.html' title='Siebel How To - Create Inbound and Outbound Webservice?'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-383452616485106293</id><published>2008-05-07T17:22:00.000+05:30</published><updated>2008-05-07T17:23:59.683+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='eScript'/><category scheme='http://www.blogger.com/atom/ns#' term='How - To'/><title type='text'>Siebel How To - enable or disable a button conditionally?</title><content type='html'>I was working on my desk one day and newbie to siebel approached me to ask a question&lt;span style="color: rgb(51, 51, 51);"&gt;(also a avid reader on asked me the same question on mail)&lt;/span&gt;. He asked me about a simple requirement or rather I should say the requirement that appeared simple to me.&lt;br /&gt;&lt;br /&gt;The requirement was :&lt;br /&gt;&lt;br /&gt;A button on an Applet should be enabled if a particular user logs into the application otherwise it should remain disabled.&lt;span class="fullpost"&gt;The Solution is a simple script that we can write on Applet_PreCanInvoke event to enable or disable a button conditionally.&lt;br /&gt;&lt;br /&gt;I am providing the pseudo code for that script below&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms; color: rgb(102, 51, 0);"&gt;&lt;em&gt;function WebApplet_PreCanInvokeMethod (MethodName, &amp;amp;CanInvoke)&lt;br /&gt;{&lt;br /&gt;if (MethodName == "UrButtonMethod")&lt;br /&gt;{&lt;br /&gt;if(UserLogin == "AuthorisedUser")&lt;br /&gt;{&lt;br /&gt;CanInvoke="TRUE";&lt;br /&gt;return (CancelOperation);&lt;br /&gt;}&lt;br /&gt;else&lt;br /&gt;{&lt;br /&gt;CanInvoke="FALSE";&lt;br /&gt;return (CancelOperation);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;There is just one catch in the above mentioned code. How will you find that user is the authorised user or not. There are several ways of doing it some are easy and some are difficult.&lt;br /&gt;&lt;br /&gt;I will tell you the easiest way to do that. You just need to write one line of code to accomplish that which is as following.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family: trebuchet ms;"&gt;if(TheApplication().GetProfileAttr("Me.Login") == "AuthorisedUserLogin")&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: georgia;"&gt;There is a whole bunch of such kind of profile attributes that are available to us all the time in the whole application, we can use them anywhere we want. But discussion on Profile Attributes is subject of another post. So, come back for more.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;If this post was helpful to you, Please post your comments or suggestions to make this site better.&lt;/strong&gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-383452616485106293?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/383452616485106293/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=383452616485106293' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/383452616485106293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/383452616485106293'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2008/05/siebel-how-to-enable-or-disable-button_07.html' title='Siebel How To - enable or disable a button conditionally?'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-1823198458595173344</id><published>2008-05-07T17:21:00.000+05:30</published><updated>2008-05-07T17:22:27.097+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='How - To'/><title type='text'>Navigating Siebel - Via Keyboard!</title><content type='html'>We generally navigate siebel with the help of mouse. Suppose, one fine day your mouse stops working would that mean that you are stuck and will not be able to work on siebel? I don't think so, to overcome that situation Siebel has provided keyboard shortcuts or acclerators to navigate and perform important functions in siebel so that you are dependent on Mouse to do all your work in siebel.&lt;br /&gt;&lt;br /&gt;And I have always been a fan of keyboard as it saves you lot of time while working on system. So, here I am presenting list of keyboard shortcuts provided by siebel to perform various functions.&lt;br /&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;strong&gt;Record Management&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;New Record  : &lt;strong&gt;CTRL + N&lt;br /&gt;&lt;/strong&gt;Copy Record : &lt;strong&gt;CTRL + B&lt;br /&gt;&lt;/strong&gt;Delete Record : &lt;strong&gt;CTRL + D&lt;br /&gt;&lt;/strong&gt;Save Record : &lt;strong&gt;CTRL + S&lt;br /&gt;&lt;/strong&gt;Undo Record : &lt;strong&gt;CTRL + U OR ESC&lt;br /&gt;&lt;/strong&gt;Select All Records in List : &lt;strong&gt;CTRL + A&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Record Navigation&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Next Record : &lt;strong&gt;CTRL + Down Arrow Key&lt;/strong&gt;&lt;br /&gt;Next Page of Records  : &lt;strong&gt;CTRL + ALT + . (In List Applets)&lt;/strong&gt;&lt;br /&gt;Last Page of Records : &lt;strong&gt;CTRL + ALT + L (In List Applets)&lt;/strong&gt;&lt;br /&gt;Previous Record : &lt;strong&gt;CTRL + Up Arrow Key&lt;/strong&gt;&lt;br /&gt;Previous Page of Records : &lt;strong&gt;CTRL + ALT + , (In List Applets)&lt;br /&gt;&lt;/strong&gt;First Page of Records : &lt;strong&gt;CTRL + ALT + F (In List Applets)&lt;/strong&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;strong&gt;Query Management&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;New Query : &lt;strong&gt;CTRL + Q&lt;/strong&gt;&lt;br /&gt;Execute Query : &lt;strong&gt;ENTER in a Field&lt;/strong&gt; OR &lt;strong&gt;CTRL + ENTER in a Text Area&lt;/strong&gt;&lt;br /&gt;Refine Query : &lt;strong&gt;CTRL +R&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;General Navigation&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Go to Site Map : &lt;strong&gt;CTRL + SHIFT + A&lt;br /&gt;&lt;/strong&gt;Open Search Center : &lt;strong&gt;CTRL + F OR CTRL + SHIFT + F&lt;br /&gt;&lt;/strong&gt;Run Report : &lt;strong&gt;CTRL + SHIFT + R&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Layout Management&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Define Columns Displayed : &lt;strong&gt;CTRL + SHIFT + K&lt;/strong&gt;&lt;br /&gt;Define Sort Order : &lt;strong&gt;CTRL + SHIFT + O&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Online Help Shortcut&lt;/strong&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;Open Online Help  : &lt;strong&gt;CTRL + ALT + H&lt;br /&gt;&lt;/strong&gt;Help with Record : &lt;strong&gt;CTRL + ALT + K&lt;br /&gt;&lt;/strong&gt;Technical Support : &lt;strong&gt;CTRL + ALT + J&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Application Management Shortcut&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;Connect as New User : &lt;strong&gt;CTRL + SHIFT + W (Works in Dedicated Client)&lt;br /&gt;&lt;/strong&gt;Log Out : &lt;strong&gt;CTRL + SHIFT + X (Works in Dedicated Client)&lt;/strong&gt; &lt;/span&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;strong&gt;Field Navigation&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Next Field : &lt;strong&gt;Tab&lt;/strong&gt;&lt;br /&gt;Previous Field : &lt;strong&gt;SHIFT + TAB&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;If you think I have missed something or you know something that others don't feel free to share it here. I will be more than happy to include it with your reference.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-1823198458595173344?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/1823198458595173344/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=1823198458595173344' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/1823198458595173344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/1823198458595173344'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2008/05/navigating-siebel-via-keyboard.html' title='Navigating Siebel - Via Keyboard!'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-4808224661544078934</id><published>2008-05-07T17:19:00.000+05:30</published><updated>2008-05-07T17:20:39.844+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='How - To'/><title type='text'>Siebel CRM How To - Automate login into Siebel Dedicated Client</title><content type='html'>The trick I am going to tell you in this article might seem to you&lt;strong&gt; very simple&lt;/strong&gt; and basic if you have been working on siebel for a long time but for a newbie it can be small time saving trick during his early days of dabbling with &lt;strong&gt;Siebel Development&lt;/strong&gt;. I have come to know in last few days while talking to a friend, assuming that a simple thing is known to everybody is a mistake and there is nothing such as useless simple thing.&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;My experience has taught me that it is pretty common to ignore simple things but they usually are the one's that can save you a lot of hassel if used in a proper way. During our intital time of Siebel development there is atleast 50 time we open&lt;strong&gt; Siebel Dedicated Client&lt;/strong&gt; and&lt;strong&gt; Siebel tools&lt;/strong&gt; while we are trying to explore Siebel to the best of our ablity. This simple trick can automate your login to the client and tools and save some time of entering username or password. &lt;/span&gt;&lt;span class="fullpost"&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Right Click the shortcut through which you acess the Siebel Client or Siebel Tools and choose Properties from the context menu. &lt;/li&gt;&lt;li&gt;Scroll right to the end of Target Text Field Value enter the following text in the end. &lt;/li&gt;&lt;/ul&gt;&lt;p align="center"&gt;&lt;strong&gt;/u sadmin /p sadmin /d sample &lt;/strong&gt;&lt;/p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;p&gt;These text will automate your login to sample database. If you want to automate your login to &lt;strong&gt;Local Database&lt;/strong&gt; enter the following code. &lt;/p&gt;&lt;p align="center"&gt;&lt;strong&gt;/u username /p pwd /d Local &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;span style="font-family: courier new;"&gt;replace username with your local username and pwd with your local database password&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;You can create copies of the shortcut that you use and can configure different shortcuts to login to different databases. Detail about switches being used in the above article and other switches that can be used is a subject of another post. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Hope this post helps you. If yes, Then please post your comments or suggestion to improve this blog.&lt;/strong&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-4808224661544078934?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/4808224661544078934/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=4808224661544078934' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/4808224661544078934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/4808224661544078934'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2008/05/siebel-crm-how-to-automate-login-into_07.html' title='Siebel CRM How To - Automate login into Siebel Dedicated Client'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-7879915178618668519</id><published>2008-05-07T17:16:00.000+05:30</published><updated>2008-05-07T17:17:03.585+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='eScript'/><title type='text'>NextRecord DeleteRecord - Use with caution!!</title><content type='html'>Number of times we have written code in which we have to traverse number of records in a loop and n number of times we have missed one important statement that results in our code to stuck in infinite loop. Yes, I am talking about the statement Object.&lt;strong&gt;NextRecord()&lt;/strong&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;This statment is generally used at the end of the loop so that after all the processing is complete we move on to the next record in the record set and perform processing on the next record. I am giving a Psuedo code to explain that.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;while(not end of recordset)&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;{&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;perform operation &lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;recordset.NextRecord()&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;}&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;But here I am going to to tell you about a situation where doing a NextRecord(). will result in problems. Yes, I we are deleting the records in the loop then we don't need to use the &lt;strong&gt;NextRecord()&lt;/strong&gt; function.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Reason for that is using &lt;strong&gt;DeleteRecord()&lt;/strong&gt; results in pointer to moved to next record &lt;strong&gt;automatically&lt;/strong&gt; and if we use NextRecord then it will result in skipping of the last record we are trying to delete. Pseudo to explain this&lt;br /&gt;&lt;br /&gt;&lt;em&gt;while(not end of RecordSet)&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;{&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;do processing&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;recordset.DeleteRecord();&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;// recordset.NextRecord();&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0);"&gt;// no need to use next record as delete will automatically move the pointer to next line&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;}&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Hope this tip is helpful. Happy Scripting :)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-7879915178618668519?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/7879915178618668519/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=7879915178618668519' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/7879915178618668519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/7879915178618668519'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2008/05/nextrecord-deleterecord-use-with.html' title='NextRecord DeleteRecord - Use with caution!!'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-7576245014972439819</id><published>2008-05-07T17:15:00.000+05:30</published><updated>2008-05-07T17:16:22.852+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='eScript'/><category scheme='http://www.blogger.com/atom/ns#' term='How - To'/><title type='text'>Siebel CRM How To – Restrict a Field to only Accept Certain Characters?</title><content type='html'>&lt;p&gt;&lt;strong&gt;Requirement: &lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;We have a multilingual application and we have Unicode enabled database but still we would like to restrict user from entering certain characters.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;We want to prevent user from entering numbers in alpha-numeric fields.&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;Solution:&lt;br /&gt;&lt;/strong&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;Use &lt;strong&gt;charCodeAt&lt;/strong&gt; function given by Siebel but &lt;strong&gt;not documented properly&lt;/strong&gt; by Siebel. Here I am giving a Pseudo code to explain how it can be used.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;if (FieldName == "First Name") {&lt;br /&gt;for (var i=0;i &lt;strong&gt;less than&lt;/strong&gt; field length ;i++) {&lt;br /&gt;var ASCII_code = fieldvalue.charCodeAt(i)&lt;br /&gt;if(ASCII_code is not valid code)&lt;br /&gt;Error("Not Valid Code");&lt;br /&gt;}} &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;charCodeAt() returns the ASCII code&lt;/em&gt; of the character that is supplied to it. ASCII code comparison is way faster than the number function that are used to compare strings so we can also use this function where we want to compare two strings by just modifying the above given Pseudo code.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Hope this helps! If yes, Please put your comments below.&lt;/strong&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-7576245014972439819?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/7576245014972439819/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=7576245014972439819' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/7576245014972439819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/7576245014972439819'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2008/05/siebel-crm-how-to-restrict-field-to.html' title='Siebel CRM How To – Restrict a Field to only Accept Certain Characters?'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-7439520853571712879</id><published>2008-05-07T17:14:00.000+05:30</published><updated>2008-05-07T17:15:21.860+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='eScript'/><category scheme='http://www.blogger.com/atom/ns#' term='How - To'/><title type='text'>Siebel eScript – How to track performance with Timing Scripts</title><content type='html'>&lt;p style="color: rgb(0, 0, 0);"&gt;Timing scripts can come in handy to know exactly how much our code is taking to execute. There can be several reasons for doing this.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;ul style="color: rgb(0, 0, 0);"&gt;&lt;li&gt;We are calling several business services in code and we need to know performance of each one.&lt;/li&gt;&lt;li&gt;We need to know time our script on business component, Applet is taking&lt;/li&gt;&lt;li&gt;We have several approaches to solve the problem and need to know the exact time taken by each.&lt;/li&gt;&lt;/ul&gt;&lt;span style="color: rgb(0, 0, 0);" class="fullpost"&gt;&lt;strong&gt;The code to achieve that is:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;var fileVar = Clib.fopen("c:\\Timing.txt", "at");&lt;br /&gt;var timeVar = Clib.ctime(Clib.time());&lt;br /&gt;Clib.fputs(timeVar + ": Starting trace in of code", fileVar);&lt;br /&gt;&lt;br /&gt;//code which you want to track time&lt;br /&gt;…………………………………….&lt;br /&gt;…………………………………….&lt;br /&gt;&lt;br /&gt;timeVar = Clib.ctime(Clib.time());&lt;br /&gt;Clib.fputs("Ending trace of code: " + timeVar, fileVar);&lt;br /&gt;Clib.fclose(fileVar);&lt;/em&gt;&lt;br /&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;PS:&lt;/strong&gt; This code will work only if you are trying to run it in dedicated client or your Siebel server is windows server. This code will fail if you are trying to run it from thin client and your Siebel Server is a unix server as it will not able to find the path. You will have to change the path to unix path e.g. /apps/srvr/bin if your server is unix.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Hope this helps!!!! &lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-7439520853571712879?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/7439520853571712879/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=7439520853571712879' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/7439520853571712879'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/7439520853571712879'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2008/05/siebel-escript-how-to-track-performance.html' title='Siebel eScript – How to track performance with Timing Scripts'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-2640904096712912669</id><published>2008-05-07T17:13:00.000+05:30</published><updated>2008-05-07T17:14:34.557+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='I Wish I Knew'/><category scheme='http://www.blogger.com/atom/ns#' term='eScript'/><title type='text'>Siebel eScript – An Overview</title><content type='html'>&lt;p&gt;&lt;strong&gt;Scripting&lt;/strong&gt; is one of the most important areas in Siebel Development but irony is that it is &lt;strong&gt;never recommended&lt;/strong&gt; to write script in Siebel. Siebel scripting is done in a language known as &lt;strong&gt;eScript&lt;/strong&gt;. eScript shares it’s syntax with &lt;strong&gt;JavaScript&lt;/strong&gt;. If you have worked in JavaScript then you would find it pretty easy to adapt to eScript.&lt;br /&gt;&lt;br /&gt;eScript can be broadly classified into two categories&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Server Scripts&lt;/li&gt;&lt;li&gt;Browser Scripts&lt;/li&gt;&lt;/ul&gt;&lt;strong&gt;Server Scripts:&lt;/strong&gt; as its name suggests is executed on server side. Which means that the user request is sent to server where the scripts is then executed&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Browser Script:&lt;/strong&gt; is actually converted into JavaScript and is executed on client side.&lt;br /&gt;&lt;br /&gt;Usually scripting is written on objects in Siebel such as Applets, Business Components etc. But the main use of eScript is done to write &lt;strong&gt;Business Services&lt;/strong&gt;. There are lots of things that you achieve through a business service. &lt;em&gt;Detail discussion on business service is subject to different post but it is similar to somewhat workflows implementing complete business processes with the help of script.&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;Scripting should be used as a &lt;strong&gt;last resort&lt;/strong&gt;. Everything can be done through script of course but it makes the &lt;strong&gt;manageability&lt;/strong&gt; and &lt;strong&gt;up gradation&lt;/strong&gt; of Application &lt;strong&gt;difficult&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;But as I said in my earlier post to be a successful Siebel developer Scripting and Configuration should be your &lt;strong&gt;strong points&lt;/strong&gt;. Scripting can be&lt;strong&gt; fun&lt;/strong&gt; but should be avoided as long as possible&lt;/span&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-2640904096712912669?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/2640904096712912669/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=2640904096712912669' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/2640904096712912669'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/2640904096712912669'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2008/05/siebel-escript-overview.html' title='Siebel eScript – An Overview'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-7991282227047266924</id><published>2008-05-07T17:09:00.000+05:30</published><updated>2008-05-07T17:10:16.543+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Siebel Logs'/><title type='text'>Siebel Logs - How Useful are they ?</title><content type='html'>&lt;p style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family: georgia;"&gt;If you have worked on &lt;strong&gt;Siebel CRM&lt;/strong&gt; I am sure that you have heard the term &lt;strong&gt;LOGS &lt;/strong&gt;lot of times. They are one of the most important and useful things if you are a &lt;strong&gt;Siebel Developer&lt;/strong&gt;. But still most of us actually know how to use them to our advantage or to reduce our development time. Here in this Article I will try to explain some &lt;strong&gt;tips and tricks&lt;/strong&gt; to get the logs and &lt;strong&gt;debug&lt;/strong&gt; our &lt;strong&gt;code&lt;/strong&gt;. Now we all know that we have &lt;strong&gt;two&lt;/strong&gt; types of&lt;strong&gt; Siebel Application Clients&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;ul style="color: rgb(0, 0, 0);"&gt;&lt;li&gt;&lt;span style="font-family: georgia;"&gt;Dedicated Client&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: georgia;"&gt;Web Client&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: georgia; color: rgb(0, 0, 0);"&gt;&lt;strong&gt;Siebel Web Client :&lt;/strong&gt; We will talk first about the&lt;strong&gt; Siebel Web Client&lt;/strong&gt;. Now to get&lt;strong&gt; logs&lt;/strong&gt; from Siebel Web Client there is no easy way and the only way to get logs is to &lt;strong&gt;increase&lt;/strong&gt; the &lt;strong&gt;log level&lt;/strong&gt; at &lt;strong&gt;server&lt;/strong&gt; for "&lt;strong&gt;Object Manager&lt;/strong&gt;" or particular &lt;strong&gt;component &lt;/strong&gt;that you want to get logs of for example Workflow Process Manager. I will talk detail about the Web Client Logging techniques in my next few posts.&lt;br /&gt;&lt;br /&gt;In this article I am going to discuss ways which can help us get &lt;strong&gt;logs &lt;/strong&gt;from &lt;strong&gt;dedicated clients&lt;/strong&gt; and speed up our debugging and development time. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: georgia; color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;strong&gt;Dedicated Client&lt;/strong&gt; : There are essentialy two ways to get logs from dedicated client &lt;/span&gt;&lt;br /&gt;&lt;ul style="color: rgb(0, 0, 0);"&gt;&lt;li&gt;&lt;span style="font-family: georgia;"&gt;Spool&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: georgia;"&gt;Environmental Variable&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family: georgia;"&gt;&lt;strong&gt;Spool :&lt;/strong&gt; it is a very basic and known technique to get the spool of all the &lt;strong&gt;SQL Queries&lt;/strong&gt; that are fired in the database level and we all come across it during our initial Siebel development days. We can enable the spool for Siebel Client as well as Siebel Tools. The steps to enable spool for both the Siebl tools and client there is common process which is as following&lt;/span&gt;&lt;/p&gt;&lt;ol style="color: rgb(0, 0, 0);"&gt;&lt;li&gt;&lt;span style="font-family: georgia;"&gt;Right click the siebel tools or Siebel Client Shortcut&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: georgia;"&gt;Go to end of String which is in Target Text Field&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: georgia;"&gt;Enter the Following string at the end: /s "c:\spool.txt"&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family: georgia;"&gt;&lt;strong&gt;/s&lt;/strong&gt; switch here stands for &lt;strong&gt;Spool&lt;/strong&gt;. Various other switches that can be used are as following&lt;/span&gt;&lt;/p&gt;&lt;ul style="color: rgb(0, 0, 0);"&gt;&lt;li&gt;&lt;span style="font-family: georgia;"&gt;/u : username&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: georgia;"&gt;/p : password&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: georgia;"&gt;/d : database&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family: georgia;"&gt;With the following string you can automate login to your local or sample database depeding on the value you give in the switch. I am providing you examples of both&lt;/span&gt;&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family: georgia;"&gt;&lt;strong&gt;/u sadmin /p sadmin /d sample&lt;/strong&gt; : String to login to Sample database with Sadmin user id&lt;br /&gt;&lt;strong&gt;/u user /p pwd /d local&lt;/strong&gt; : String to login to Local database with "user" user id.&lt;/span&gt;&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family: georgia;"&gt;&lt;strong&gt;Environmental Variable&lt;/strong&gt; : This is more powerful and less know method of generating logs for dedicated client. Siebel has provided couple of Environmental Variables which are as following :&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul style="color: rgb(0, 0, 0);"&gt;&lt;li&gt;&lt;span style="font-family: georgia;"&gt;SIEBEL_LOG_EVENTS&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: georgia;"&gt;SIEBEL_LOG_DIR &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family: georgia;"&gt;&lt;strong&gt;SIEBEL_LOG_EVENTS&lt;/strong&gt; : This environmental variable can have two types of values.&lt;br /&gt;Numeric or text. &lt;/span&gt;&lt;span style="font-family: georgia;"&gt;The numeric value is the &lt;strong&gt;log level&lt;/strong&gt; which can be between 1-4. 1 being the lowest and 4 being the highest. The Text value can be ALL which means &lt;strong&gt;Log Level&lt;/strong&gt; of 4.&lt;/span&gt;&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family: georgia;"&gt;&lt;strong&gt;SIEBEL_LOG_DIR&lt;/strong&gt; : This value of this variable is path where you want to create the logs. &lt;span style="font-size: 85%;"&gt;&lt;strong&gt;Makes sure that the path you mention is valid otherwise the logs will be created in the temp directory.&lt;/strong&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family: georgia;"&gt;Examples of both the environmental variables are as following&lt;/span&gt;&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family: georgia;"&gt;SIEBEL_LOG_EVENTS : ALL&lt;br /&gt;SIEBEL_LOG_DIR : C:\siebel_logs&lt;/span&gt;&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family: georgia;"&gt;The process to create these enviornmental variables is as following&lt;/span&gt;&lt;/p&gt;&lt;ol style="color: rgb(0, 0, 0);"&gt;&lt;li&gt;&lt;span style="font-family: georgia;"&gt;Right click on the My Computer Icon&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: georgia;"&gt;Select Properties from context menu&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: georgia;"&gt;Go to ==&gt; Advanced Tab&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: georgia;"&gt;Click ==&gt; Environmental Variables&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: georgia;"&gt;In User Environmental Variables Tab click New&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: georgia;"&gt;Enter SIEBEL_LOG_EVENTS in Variable Name field&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: georgia;"&gt;Enter ALL in Variable Value Field&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: georgia;"&gt;Click New again and Enter the following details&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: georgia;"&gt;Variable Name : SIEBEL_LOG_DIR ; Variable Value : "your siebel log path"&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family: georgia;"&gt;Remember that Variable Names are case Sensitive. After you have created the variables when you start you dedicated client you will notice that in the path that you have given a file named siebel.log is created for Dedicated Client and file named siebel_dev is created for Siebel Tools.&lt;/span&gt;&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family: courier new; font-size: 85%;"&gt;If you don't provide the SIEBEL_LOG_DIR environmental variable the logs are created by default in Temp Directory.&lt;/span&gt;&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family: georgia;"&gt;&lt;strong&gt;&lt;span style="font-size: 85%;"&gt;Hope this posts helps you.&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family: georgia;"&gt;&lt;strong&gt;&lt;span style="font-size: 85%;"&gt;&lt;br /&gt;If the answer&lt;/span&gt; is yes. Please post your comments and visit again.&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-7991282227047266924?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/7991282227047266924/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=7991282227047266924' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/7991282227047266924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/7991282227047266924'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2008/05/siebel-logs-how-useful-are-they.html' title='Siebel Logs - How Useful are they ?'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-6291884099393756730</id><published>2008-05-07T17:08:00.000+05:30</published><updated>2008-12-09T17:23:39.174+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Configuration'/><title type='text'>Siebel Business Component Outer Join - How Important?</title><content type='html'>During my past two years of working on Siebel I have come across lot of situations where just &lt;strong&gt;one little miss&lt;/strong&gt; can wreck havoc with the application. It can result in &lt;strong&gt;performance issues&lt;/strong&gt; and &lt;strong&gt;Data issues&lt;/strong&gt;. I think some of you might have guessed by know what miss I am talking about.&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;I am talking about Outer Join Flag on Join Section of the Business Component. Joins are the integral part of Siebel configuration. They are indispensable, joins are required because we know the &lt;strong&gt;database&lt;/strong&gt; (it can be oracle, DB2 or Microsoft SQL Server) is a &lt;strong&gt;relational database&lt;/strong&gt; known as &lt;strong&gt;RDBMS&lt;/strong&gt; in short form. Which means the information that resides in it is in the form of related tables and we always need information of one table in another. These tables are related with the help of &lt;strong&gt;Foreign Keys&lt;/strong&gt; (FK). So, when we want to show information of one table in another we use Joins and we use them all the times.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;When we are creating Joins in Siebel you can see a field called Outer Join Flag. Please see the screenshot below.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://2.bp.blogspot.com/_TaTb2is797I/RvymxQ_S0BI/AAAAAAAAAQc/Mmzp7_BlAIk/s1600-h/Join.png"&gt;&lt;span style="font-family:georgia;"&gt;&lt;img id="BLOGGER_PHOTO_ID_5115146642090283026" style="margin: 0px auto 10px; display: block; text-align: center;" alt="" src="http://2.bp.blogspot.com/_TaTb2is797I/RvymxQ_S0BI/AAAAAAAAAQc/Mmzp7_BlAIk/s320/Join.png" border="0" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;and every time we don't check that flag we are heading for trouble.&lt;br /&gt;&lt;strong&gt;Now, what exactly does that flag represent?&lt;/strong&gt; Before I explain it I assume that you have basic understanding of SQL and simple joins. As I have mentioned earlier that everything that configure or do on UI is converted into &lt;strong&gt;SQL&lt;/strong&gt; and that is where this flag comes into picture. &lt;/p&gt;&lt;p&gt;For example see the simple sql pulling data from another table with the help of simple join&lt;br /&gt;&lt;/p&gt;&lt;p&gt;select name b&lt;br /&gt;from siebel.s_opty a, siebel.s_doc_quote b&lt;br /&gt;where b.par_row_id = a.row_id&lt;br /&gt;and a.somefield = b.somefield&lt;br /&gt;and a.row_id = 'Some Id' &lt;/p&gt;&lt;p&gt;Now this SQL is suppose to select name of the quote where the par_row_id column (which store row id of its parent) is equal to the row if of opportunity and in addition to that somefield of opportunity is equal to some field of quote. Now we assume that you had created a join between Opportunity-Quote and forgot to check the outer join flag.You will be amazed to see that there are No Records on UI. The reason being it will try to match the exact values in the field and any record that is a not a match will be discarded. Which means if there are some records that have no value in 'somefield' either in Opportunity or on Quote will be discarded. What if we want those records to shown? We have to check the Outer join flag which will result in a query as given below &lt;/p&gt;&lt;p&gt;select name b&lt;br /&gt;from siebel.s_opty a, siebel.s_doc_quote b&lt;br /&gt;where b.par_row_id = a.row_id&lt;br /&gt;and a.somefield = b.somefield&lt;span style="color: rgb(204, 0, 0);"&gt;&lt;strong&gt;(+)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;and a.row_id = 'Some Id' &lt;/p&gt;&lt;p&gt;Which will result in all the Quotes that have 'Some Id' in par_row_id or in simple terms that have Opportunity Id with 'Some Id' as their parent. &lt;/p&gt;&lt;p&gt;My experience has taught me to ask this as the first question whenever I face problem mentioned above and I have seen developers sweat over this kind of problem for hours before they spot it. I will mention some &lt;strong&gt;real life situations&lt;/strong&gt; I have faced which were due this little (&lt;span style="color: rgb(102, 102, 102);"&gt;or rather huge)&lt;/span&gt; &lt;strong&gt;miss&lt;/strong&gt; while doing configuration. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Examples - Real Life Situations:&lt;/strong&gt;&lt;br /&gt;We have developed a &lt;strong&gt;web service&lt;/strong&gt; that resulted in the insertion of quotes from a Java Application. When we inserted a quote it got &lt;strong&gt;inserted successfully&lt;/strong&gt; and when we tried to &lt;strong&gt;update it&lt;/strong&gt;, &lt;strong&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;it Failed&lt;/span&gt;&lt;/strong&gt;. It took us almost a day to find out that a developer had created a new join in business component and &lt;strong&gt;forgot to check that Outer Join flag&lt;/strong&gt; which resulted in update to failed as it was not able to fetch that record.&lt;/p&gt;&lt;p&gt;I had created a &lt;strong&gt;new View in Assets Screen&lt;/strong&gt;. When user was in &lt;strong&gt;My Assets&lt;/strong&gt; view then he was &lt;strong&gt;able to see the records&lt;/strong&gt; but as soon as he choose &lt;strong&gt;All view&lt;/strong&gt; the &lt;strong&gt;records disappeared&lt;/strong&gt;. The reason same a new join and&lt;strong&gt; forgot&lt;/strong&gt; to check &lt;strong&gt;Outer join flag&lt;/strong&gt;. &lt;/p&gt;&lt;p&gt;Whenever you face &lt;strong&gt;this kind of problem&lt;/strong&gt; go through &lt;strong&gt;logs&lt;/strong&gt; and more often than not you will find this as your root cause. To know more about logs read my Post &lt;a href="http://all-about-siebel.blogspot.com/2008/05/siebel-logs-how-useful-are-they.html" target="_blank"&gt;Siebel - Logs How useful are they?&lt;/a&gt;&lt;/p&gt;&lt;p&gt;If this Post was helpful to you please post some comments and come back for more.&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-6291884099393756730?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/6291884099393756730/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=6291884099393756730' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/6291884099393756730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/6291884099393756730'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2008/05/siebel-business-component-outer-join.html' title='Siebel Business Component Outer Join - How Important?'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_TaTb2is797I/RvymxQ_S0BI/AAAAAAAAAQc/Mmzp7_BlAIk/s72-c/Join.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-6692045434062473825</id><published>2008-05-07T17:07:00.000+05:30</published><updated>2008-05-07T17:08:15.411+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Configuration'/><category scheme='http://www.blogger.com/atom/ns#' term='eScript'/><title type='text'>Siebel Profile Attributes - an Overview.</title><content type='html'>&lt;p style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;Profile Attributes&lt;/strong&gt; I stumbled upon them in siebel when I was working on my first assignment involving &lt;strong&gt;Siebel EAI&lt;/strong&gt;. Till that time I had only used and heard of Global Variables which you could use throught out your script.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;But as the requirement said only if user clicked a button in View A and then performed some particular action in View B trigger a workflow.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;As views involved had different BC's it was not possible to have done through global variables. Then my senior colluege introduced me to a new entity in siebel called &lt;strong&gt;'Profile Attributes'. &lt;/strong&gt;They are important because they have a &lt;strong&gt;unique property&lt;/strong&gt;. They are available throughout the application. The best term that comes to my mind to describe them is &lt;strong&gt;'Session Variables'&lt;/strong&gt;. Those who have worked a little bit on development of Web Application will understand exactly what I am saying and for those who hasn't worked on them I will explain.&lt;br /&gt;&lt;br /&gt;As you know from siebel 7 onwards it has &lt;strong&gt;Web Architecture&lt;/strong&gt;. So, as soon as you login into siebel through your browser a session is started which last till time you log out or you close your browser window or according to the length set through session parameter at server level.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;Now discussing in details that how server maintains this session and what goes on behind the scene is out of scope of this article &lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;but what you need to know is that &lt;strong&gt;Siebel server&lt;/strong&gt; recognises every unique user through session id that is given to you when you login to siebel and it remains valid until you session closes due to above mentioned reasons. &lt;em&gt;So, Profile Attributes are variables that can hold any value during the session of the user.&lt;/em&gt; There are two methods available to in siebel escript that help you to work with Profile Attributes.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;GetProfileAttr&lt;/li&gt;&lt;li&gt;SetProfileAttr&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;GetProfileAttr&lt;/strong&gt; method is used to retrieve the value of a particular profile attribute. The syntax is&lt;/p&gt;&lt;p align="center"&gt;TheApplication().GetProfileAttr("ProfileAttrName")&lt;/p&gt;&lt;p align="left"&gt;&lt;strong&gt;SetProfileAttr&lt;/strong&gt; method is used to set the value of Profile Attribute. If the Profile Attribute that you mention is not already existing it creates a new Profile Attribute. The syntax is&lt;/p&gt;&lt;p align="center"&gt;TheApplication().SetProfileAttr("ProfileAttrName",Value)&lt;/p&gt;&lt;p align="left"&gt;So, to accomplish the our requirement we Set a profile attribute when clicked the button on view A and then when he went to View B and did the particular action we wanted we retrieved the value of the profile attribute and if all the conditions were met we executed the workflow and everybody developed &lt;strong&gt;happily ever after :)&lt;/strong&gt;&lt;/p&gt;&lt;p align="left"&gt;But, there is a twist in the story and it was&lt;strong&gt; not a happy ending&lt;/strong&gt; after all which &lt;strong&gt;highlights&lt;/strong&gt; the &lt;strong&gt;fragile&lt;/strong&gt; nature of &lt;strong&gt;Profile Attributes&lt;/strong&gt;. Now, in a particular situation this solution won't work. If user clicked button on View A and then logged off which meant profile attribute is destroyed hence the functionality failed. So, as you all must have guessed this solution was scrapped &lt;strong&gt;:(&lt;/strong&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: verdana;"&gt;So, the moral of the story is use &lt;strong&gt;Profile Attributes&lt;/strong&gt; with &lt;strong&gt;caution&lt;/strong&gt; and only if you are sure that if the session is destroyed you functionality wouldn't fail.&lt;/span&gt;&lt;/p&gt;&lt;/span&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-6692045434062473825?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/6692045434062473825/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=6692045434062473825' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/6692045434062473825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/6692045434062473825'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2008/05/siebel-profile-attributes-overview.html' title='Siebel Profile Attributes - an Overview.'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-2841995272891372012</id><published>2008-05-07T17:06:00.000+05:30</published><updated>2008-05-07T17:07:19.953+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Configuration'/><title type='text'>Siebel Search Specification (Search Spec) – What about it?</title><content type='html'>&lt;p&gt;&lt;strong&gt;This article has been submitted by &lt;em&gt;Nidhi Puri&lt;/em&gt; having Siebel experience of 2+ years and right now working as Project Lead.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;A &lt;strong&gt;Search Spec&lt;/strong&gt; is nothing but a &lt;strong&gt;filter&lt;/strong&gt; on the returned set of records and if we we look atc it from database point it acts as &lt;strong&gt;where clause&lt;/strong&gt; in the &lt;strong&gt;SQL&lt;/strong&gt; that is formed which &lt;strong&gt;restricts&lt;/strong&gt; the number of &lt;strong&gt;records &lt;/strong&gt;that will be&lt;strong&gt; retruned&lt;/strong&gt; from database.&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;In Siebel we can apply search spec to&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Applet&lt;/li&gt;&lt;li&gt;Business Component&lt;/li&gt;&lt;li&gt;Link&lt;/li&gt;&lt;li&gt;Picklist&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;1. For an &lt;strong&gt;Applet&lt;/strong&gt;, a search spec &lt;strong&gt;filters&lt;/strong&gt; the records that are &lt;strong&gt;displayed&lt;/strong&gt; on &lt;strong&gt;UI&lt;/strong&gt;. The underlying BC brings back a set of records and before they can be displayed, the applet search spec applies the filter on them and displays only a subset of records.&lt;br /&gt;&lt;br /&gt;2. For a &lt;strong&gt;Business Component&lt;/strong&gt;, a search spec &lt;strong&gt;filters&lt;/strong&gt; all records that would be returned from the &lt;strong&gt;underlying base table&lt;/strong&gt;. This would also result in the filtering of records on the applet tied to this BC. However, the search spec in 1 above works only for that particular applet while on a BC, the search spec is inherently applied to all applets that are based on this BC.&lt;br /&gt;&lt;br /&gt;3. A search spec on a &lt;strong&gt;Link &lt;/strong&gt;will&lt;strong&gt; filter all child records from the destination&lt;/strong&gt; BC.&lt;/p&gt;For Example&lt;br /&gt;&lt;em&gt;Account/Address link. Search spec looks something like this: [City] = ‘London’, this will bring back all address records for the account where the City = London.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;4. A search spec on a &lt;strong&gt;Picklist&lt;/strong&gt; will&lt;strong&gt; filter&lt;/strong&gt; the&lt;strong&gt; data&lt;/strong&gt; that the &lt;strong&gt;picklist &lt;/strong&gt;points to. For static picklist, the data exists on the List of values, so the search spec for a static picklist would look something like this:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;[Value] &lt;&gt; 'Corporate'. This would show all values other than "Corporate" when you click on the dropdown. For dynamic picklists, the search spec would something look like this: [Active Flag] = ‘Y’, this would bring back all records from the destination BC (on which the picklist is based on) where the Active Flag = Y&lt;/em&gt; &lt;/span&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-2841995272891372012?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/2841995272891372012/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=2841995272891372012' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/2841995272891372012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/2841995272891372012'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2008/05/siebel-search-specification-search-spec.html' title='Siebel Search Specification (Search Spec) – What about it?'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-6325332536902008158</id><published>2008-05-07T17:04:00.000+05:30</published><updated>2008-05-07T17:06:17.663+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Check In -Check Out'/><title type='text'>Siebel Tools - Check In - Check Out an Introduction.</title><content type='html'>&lt;strong style="color: rgb(0, 0, 0);"&gt;Check In - Check Out &lt;/strong&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;are the very common terms that Siebel Developers hear. A rather simple but a very&lt;/span&gt;&lt;strong style="color: rgb(0, 0, 0);"&gt; important&lt;/strong&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; feature for development. Without this feature their would be an &lt;/span&gt;&lt;strong style="color: rgb(0, 0, 0);"&gt;absolute chaos&lt;/strong&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; during development. I will try to explain Check In - Check Out (CICO) with the help of &lt;/span&gt;&lt;strong style="color: rgb(0, 0, 0);"&gt;simple Analaogy:&lt;/strong&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);" class="fullpost"&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;&lt;em&gt;Imagine a room full of documents. You are allowed to make a copy of document take it home and work on it. What If everybody was allowed to go in at any time into the room and modify any document they want? The answer is again Absolute Chaos. Imagine working really hard on the document and to see next day that what you have taken home is invalid because somebody took a copy and made some changes to and you have to do the rework&lt;/em&gt;.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Based on above analogy we can map '&lt;strong&gt;Room'&lt;/strong&gt; as &lt;strong&gt;'Siebel Server Repository'&lt;/strong&gt;, &lt;strong&gt;Documents&lt;/strong&gt; as &lt;strong&gt;'Siebel Objects'&lt;/strong&gt;, &lt;strong&gt;Home&lt;/strong&gt; as &lt;strong&gt;'Local Environment'&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;So, the only way to control this is to have a some sort of mechanism to prevent you from taking that document while somebody else is working on it. Siebel &lt;strong&gt;Check In - Check Out process&lt;/strong&gt; is precisely that &lt;strong&gt;chaos saving mechanism&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;We all know that siebel is based on &lt;strong&gt;Client - Server Architecture&lt;/strong&gt; and the same architechture is followed in case of &lt;strong&gt;siebel tools&lt;/strong&gt;. You have&lt;strong&gt; siebel server repository&lt;/strong&gt; and you siebel &lt;strong&gt;client dbf&lt;/strong&gt; or &lt;strong&gt;local database&lt;/strong&gt; where you perform you development.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;span style="font-family: arial;"&gt;Check In - Check Out in siebel refers to the process of getting a copy of siebel objects in the your local environment, work on it and then update it back to the server after you are done.&lt;br /&gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;There are various terms in siebel that you need to understand the check in - check out process&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Check Out :&lt;/strong&gt; Process of getting a copy from Server Repository to your local database and also locking he object on server so that nobody else can modify it.&lt;br /&gt;&lt;strong&gt;Check In :&lt;/strong&gt; Process of putting the object from local environment back to server and also release the lock so that others can work on it&lt;br /&gt;&lt;strong&gt;Get :&lt;/strong&gt; Process of getting copy from Server Repository to your local database without locking the object.&lt;br /&gt;&lt;strong&gt;Full Get :&lt;/strong&gt; Process to update you local tools repository will the latest objects from Siebel Server Repository. Unlike Get you don't select a particular object to update but all the projects&lt;br /&gt;&lt;br /&gt;You can &lt;strong&gt;check out&lt;/strong&gt; a &lt;strong&gt;single object&lt;/strong&gt; or a &lt;strong&gt;whole project&lt;/strong&gt;. If you check out a &lt;strong&gt;whole project&lt;/strong&gt; then &lt;strong&gt;all the objects&lt;/strong&gt; that are part of that project &lt;strong&gt;will be locked&lt;/strong&gt; with your Id and nobody else will be able to work on them. So, It is not a good idea. &lt;strong&gt;General practice&lt;/strong&gt; is just to &lt;strong&gt;check out&lt;/strong&gt; a &lt;strong&gt;single object.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Now, I will explain the steps to perform each operation mentioned above&lt;br /&gt;&lt;br /&gt;Check - Out :&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1. &lt;/strong&gt;Query for the object that you want to check out.&lt;br /&gt;&lt;strong&gt;2.&lt;/strong&gt; Right Click and Choose Check Out. (You can also press F10 or choose Tools Menu ==&gt; Check Out)&lt;br /&gt;&lt;em&gt;Tip:The option of check out single object will only be available if your tools.cfg as parameter EnableObjectCOCI set to true.&lt;br /&gt;&lt;/em&gt;&lt;strong&gt;3.&lt;/strong&gt; Again Click on Check Out in the new window that appears.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Check In :&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1.&lt;/strong&gt; Click Tools (Menu) ==&gt; Check In (You can also press CTRL + F10)&lt;br /&gt;A new window will appear. It will show the objects that have check out by your id&lt;br /&gt;&lt;strong&gt;2.&lt;/strong&gt; Select the Object that you want to check in and click Check In&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Get :&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1.&lt;/strong&gt; Query for the object that you want to Get.&lt;br /&gt;&lt;strong&gt;2.&lt;/strong&gt; Right Click and Choose Check Out. (You can also press F10 or choose Tools Menu ==&gt; Check Out)&lt;br /&gt;&lt;em&gt;Tip:The option of check out single object will only be available if your tools.cfg as parameter EnableObjectCOCI set to true.&lt;/em&gt;&lt;br /&gt;&lt;strong&gt;3.&lt;/strong&gt; Again Click on Get in the new window that appears.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Full Get :&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;1.&lt;/strong&gt; Click Tools (Menu) ==&gt; Check Out&lt;br /&gt;&lt;strong&gt;2.&lt;/strong&gt; Select 'All Projects' Radio button in the new window that appears&lt;br /&gt;&lt;strong&gt;3.&lt;/strong&gt; Click Get.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Hope this post was helpful. If Yes, Please post your comments.&lt;/strong&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-6325332536902008158?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/6325332536902008158/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=6325332536902008158' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/6325332536902008158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/6325332536902008158'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2008/05/siebel-tools-check-in-check-out.html' title='Siebel Tools - Check In - Check Out an Introduction.'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-5244106067122644749</id><published>2008-05-07T17:03:00.000+05:30</published><updated>2008-05-07T17:04:41.321+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='cfg File'/><category scheme='http://www.blogger.com/atom/ns#' term='Configuration'/><title type='text'>Siebel CRM - Configuration File (cfg) Disected and Explained.</title><content type='html'>Today we are going to discuss about one of the most important files for Siebel CRM. Yes, those who have worked on Siebel will know what I am talking about.&lt;br /&gt;Yes, we are going to discuss ".cfg" file which stands for configuration file which largley controls siebel bhavieor. There are basically 3 important cfg files.&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;1. eapps.cfg&lt;br /&gt;2. tools.cfg&lt;br /&gt;3. cfg file for Siebel Client(Name can depend on the kind of siebel application you are using)&lt;br /&gt;so for this article we will assume uagent.cfg which is used if you are using call center.&lt;br /&gt;&lt;br /&gt;To discuss eapps.cfg is out of scope for this article so in this article we will be discussing tools.cfg and uagent.cfg file.&lt;br /&gt;&lt;br /&gt;Tools.cfg is used for Siebel Tools and uagent exsits for Siebel Client both dedicated and thin. First of all the location of the file.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Tools.cfg&lt;/strong&gt; exsits in :&lt;strong&gt;siebel installation directory\tools\bin\enu&lt;br /&gt;&lt;/strong&gt;Here&lt;strong&gt; enu&lt;/strong&gt; means the &lt;strong&gt;language&lt;/strong&gt; that you have choosen. It can be different if you have installed siebel tools in langauage other than english.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;uagent.cfg&lt;/strong&gt; exsits in : &lt;strong&gt;siebel installation directory\web client\bin\enu&lt;/strong&gt;.&lt;br /&gt;For thin client the cfg file exsits on server and the path is&lt;br /&gt;&lt;strong&gt;/siebel install dir/siebsrvr/bin/enu&lt;/strong&gt; if the server is &lt;strong&gt;Unix&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;siebel install dir\siebsrvr/bin/enu&lt;/strong&gt; if the server is &lt;strong&gt;Windows&lt;/strong&gt;&lt;br /&gt;Now I will describe various sections of CFG file.&lt;br /&gt;&lt;br /&gt;In CFG file anything that starts from&lt;strong&gt; []&lt;/strong&gt; is a &lt;strong&gt;section&lt;/strong&gt; that contains certain P&lt;strong&gt;arameters&lt;/strong&gt; to &lt;strong&gt;control siebel&lt;/strong&gt;. I will list important sections that are important and we need modify them often&lt;br /&gt;&lt;br /&gt;1. [Siebel]&lt;br /&gt;2. [DataSources]&lt;br /&gt;3. [Local]&lt;br /&gt;4. [Sample] &lt;em&gt;Only used if you have installed sample database&lt;/em&gt;&lt;br /&gt;5. [ServerDataSrc] Very important and modified often.&lt;br /&gt;6. [SWE]&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:trebuchet ms;"&gt;Tip: If you want to comment anything in cfg file use ; a semicolon in front of any line would mean that siebel is going to ignore that line treating it as comment.&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;I am goint to list only the important parameters in the sections.&lt;br /&gt;&lt;br /&gt;1. &lt;strong&gt;[Siebel]&lt;/strong&gt; : This section contains important parameters related to siebel. Which are as following&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;RepositoryFile &lt;/strong&gt;:Name of the SRF file to be used&lt;br /&gt;&lt;strong&gt;ApplicationName&lt;/strong&gt; :Name of the Application to be used&lt;br /&gt;ApplicationTitle :Name that is going to appear in Title of your browser window and can be anything&lt;br /&gt;&lt;strong&gt;ApplicationSplashText&lt;/strong&gt; :Name that is going to appear when you start you dedicated client and can be anything&lt;br /&gt;&lt;strong&gt;EnableScripting&lt;/strong&gt; :Often used for debugging purposes. If set to false no script is going to execute when you start you client&lt;br /&gt;&lt;strong&gt;LocalDbODBCDataSource&lt;/strong&gt; :Name of the ODBC data source that is going to be used when you start dedicated client with local database (SSD Local Db default instance by default)&lt;br /&gt;&lt;strong&gt;ServerDbODBCDataSource&lt;/strong&gt; :Name of the ODBC data source that is going to be used when you start dedicated client with server database (SSD default instance by default)&lt;strong&gt;&lt;br /&gt;DockRepositoryName&lt;/strong&gt; :Name of the repository that is going to be used.&lt;br /&gt;WebClientSiteDir : Path to the directory from where the browser scripts and images are going to be picked up&lt;br /&gt;&lt;strong&gt;EnablePersonalization &lt;/strong&gt;: To Enable or Disable personlaization for Siebel Users&lt;br /&gt;&lt;strong&gt;EnableRuntimeEvents&lt;/strong&gt; : To Enable or disable Runtime Events&lt;br /&gt;&lt;strong&gt;EnableObjectCOCI&lt;/strong&gt; : To Enable object check in check out when set to false you are not allowed to check out a single object. Remember Object checkout has to be enabled from tools also before you can do that&lt;br /&gt;&lt;br /&gt;2. &lt;strong&gt;[DataSources]&lt;/strong&gt; : This section contians the what you can see from the dropdown of you dedicated client. Default values are&lt;br /&gt;Local = Local&lt;br /&gt;Sample = Sample&lt;br /&gt;ServerDataSrc = Server&lt;br /&gt;&lt;br /&gt;You can specify more datasources under this section to specify more section you have to define it in the following way.&lt;br /&gt;&lt;br /&gt;MyNewDataSource = NewDataSource&lt;br /&gt;&lt;strong&gt;MyNewDataSource&lt;/strong&gt; is the &lt;strong&gt;name&lt;/strong&gt; of the &lt;strong&gt;Section&lt;/strong&gt; that should be &lt;strong&gt;present &lt;/strong&gt;in the &lt;strong&gt;cfg file&lt;/strong&gt; that is going to contain parameters to be used for this datasource&lt;br /&gt;&lt;strong&gt;'NewDataSource'&lt;/strong&gt; is the value that is going to appear in the &lt;strong&gt;dropdown&lt;/strong&gt; of &lt;strong&gt;dedicated siebel tools or client.&lt;/strong&gt;&lt;br /&gt;3. &lt;strong&gt;[Local] &lt;/strong&gt;: In this section only one parameter is important and that we can change to our advantage&lt;br /&gt;&lt;strong&gt;ConnectString&lt;/strong&gt; = C:\PROGRA~1\Siebel\7.8\Tools\local\sse_data.dbf -q -m -x NONE -gp 4096 -c256m -ch256m&lt;br /&gt;&lt;br /&gt;As you can see the &lt;strong&gt;value&lt;/strong&gt; of the &lt;strong&gt;connection string&lt;/strong&gt; is in the form of &lt;strong&gt;Path&lt;/strong&gt; and then &lt;strong&gt;switches&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;The path is the&lt;strong&gt; path&lt;/strong&gt; to &lt;strong&gt;your dbf file&lt;/strong&gt; and the &lt;strong&gt;switches&lt;/strong&gt; that you can give are as following&lt;br /&gt;&lt;strong&gt;-q&lt;/strong&gt; : means start local database in quite mode.This prevents a SQL Anywhere window from showing up.&lt;br /&gt;&lt;strong&gt;-m&lt;/strong&gt; : truncate transaction log after checkpoint.&lt;br /&gt;&lt;strong&gt;-x NONE&lt;/strong&gt; : Do not load any network drivers.&lt;br /&gt;&lt;strong&gt;-gp 4096&lt;/strong&gt; : Tells the engine that the database page size is 4,096 bytes.&lt;br /&gt;&lt;strong&gt;-c256m&lt;/strong&gt; : Initial cache size is 256 MB&lt;br /&gt;&lt;strong&gt;-ch256m&lt;/strong&gt; : Maximum cache size can be mb256.&lt;br /&gt;&lt;br /&gt;4. &lt;strong&gt;[Sample]&lt;/strong&gt; : This section is pretty &lt;strong&gt;similar &lt;/strong&gt;to&lt;strong&gt; Local Section&lt;/strong&gt; with exception of one parameter&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;FileSystem&lt;/strong&gt; : It contains path to you file system where you attachments are stored&lt;br /&gt;&lt;br /&gt;5. &lt;strong&gt;[ServerDataSrc]&lt;/strong&gt; : This is one of the &lt;strong&gt;most important&lt;/strong&gt; section and &lt;strong&gt;you have to change&lt;/strong&gt; few parameter before you can &lt;strong&gt;actually login&lt;/strong&gt; to server through &lt;strong&gt;Dedicated Client&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;ConnectString&lt;/strong&gt; : Here just like local section indicates the connection string to be used to connect to server&lt;br /&gt;&lt;strong&gt;FileSystem &lt;/strong&gt;: Path to you file system. Similar to local section&lt;br /&gt;&lt;strong&gt;GatewayAddress &lt;/strong&gt;: This will contain the name of your Siebel Gateway Server. This section has to be changed to a valid value&lt;br /&gt;&lt;strong&gt;EnterpriseServer &lt;/strong&gt;: This will contain the name of your Siebel Enterprise Server.This section has to be changed to a valid value&lt;br /&gt;&lt;br /&gt;6. &lt;strong&gt;[SWE]&lt;/strong&gt; : This section contains parameters related to the &lt;strong&gt;bitmaps&lt;/strong&gt; and &lt;strong&gt;appearance&lt;/strong&gt; of Siebel Client. But It contains &lt;strong&gt;an important&lt;/strong&gt; &lt;strong&gt;parameter&lt;/strong&gt; which is as following.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;ClientBusinessService&lt;/strong&gt; : This parameter is used if you want a business service to be called from browser scripts. The Business service has to be mentioned here in this section.&lt;br /&gt;The format to mention the business service is&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;ClientBusinessService&lt;em&gt;&lt;span style="font-family:verdana;"&gt;n&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;em&gt; &lt;/em&gt;= "Business Service Name" where &lt;strong&gt;n&lt;/strong&gt; is a &lt;strong&gt;incremental number&lt;/strong&gt; &lt;strong&gt;one more&lt;/strong&gt; than the&lt;strong&gt; number&lt;/strong&gt; mentioned in&lt;strong&gt; last ClientBusinessService entry&lt;/strong&gt;. For example&lt;br /&gt;ClientBusinessService0 = "Message Bar"&lt;br /&gt;ClientBusinessService1 = "Communications Client"&lt;br /&gt;&lt;br /&gt;If I want to have one more entry in the file then I will enter&lt;br /&gt;ClientBusinessService2 = "Business Service Name"&lt;br /&gt;&lt;br /&gt;This completes the listing and explaination of important parameters of the cfg file used by siebel tools and siebel client.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Hope this post was helpful to you. If yes please post your comments and visit again for more.&lt;/strong&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-5244106067122644749?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/5244106067122644749/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=5244106067122644749' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/5244106067122644749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/5244106067122644749'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2008/05/siebel-crm-configuration-file-cfg.html' title='Siebel CRM - Configuration File (cfg) Disected and Explained.'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-4203753601473816059</id><published>2008-05-07T16:54:00.000+05:30</published><updated>2008-05-07T16:56:25.246+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Signals'/><title type='text'>Siebel CRM 7.8 - Signals Demystified.</title><content type='html'>Anybody who has worked on &lt;strong&gt;Siebel 7.8&lt;/strong&gt; must have come accross the term '&lt;strong&gt;Signal&lt;/strong&gt;'. I came across this term just a few months ago. When were wroking for some &lt;strong&gt;Performance issues&lt;/strong&gt; in our Project. It is one of the most useful thing that I have come across in Siebel in past 2 years of experience. It has the ability to change the way we do lot of things.&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;What I found out during my &lt;strong&gt;Reaserch&lt;/strong&gt; to find out more on singals is the fact that it is absolutely not a new thing in siebel. It has been part of siebel from very start which is way back in &lt;strong&gt;Siebel 6&lt;/strong&gt;. I know you might be confused a little bit. Let me explain.&lt;br /&gt;&lt;br /&gt;we all know that siebel is a &lt;strong&gt;Event Driven&lt;/strong&gt; &lt;strong&gt;language&lt;/strong&gt;. We can choose to handle those events or let siebel handle those events.In events we do some coding for the custom methods that we have defined. And we all know that in the end we have to write a &lt;strong&gt;statement 'return(CancleOperation)&lt;/strong&gt;'. Of Late what I knew was that we just have to write this statement otherwise we get and error message 'MethodName is not Supported'.&lt;br /&gt;&lt;br /&gt;The reason for this kind of behaviour is 'Signals' that's right!!! Signals are responsible for it. Now I will explain how.&lt;br /&gt;&lt;br /&gt;Everything Method Invoked in Siebel is a 'Signal' which is passed on to the &lt;strong&gt;C++ code&lt;/strong&gt; that makes the core siebel. When a vanilla method is invoked such as 'SetFieldValue' , 'GetFieldValue', 'InvokeMethod' Siebel has the code in it is &lt;strong&gt;C++ Classes&lt;/strong&gt; to handle it. But when we invoke the custom method Siebel has absolutely no idea how to handle that code. So, we write the statement 'return(CancleOperation)' so that the custom method never reaches Siebel C++ code.&lt;br /&gt;&lt;br /&gt;Now the question is what has changed in Signals in version 7.8? Well, the answer is Prior this version of siebel we coudn't create custom signals and we couldn't modify the existing signals. But now in&lt;strong&gt; Siebel 7.8&lt;/strong&gt; we can change &lt;strong&gt;vanilla&lt;/strong&gt; singals and also create new signals.&lt;br /&gt;&lt;br /&gt;The view that let's us do that is &lt;strong&gt;Adminstration ==&gt; Order Management ==&gt; Signals.&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;You can see in this view a lot of signals related to pricing as they are used extensively for Pricing in siebel. But you can also see signals like 'SetFieldvalue'.&lt;br /&gt;&lt;br /&gt;In my next post I will be explaining in detail how we used Copy and Revise Vanilla Signals to rectify the &lt;strong&gt;performance issues&lt;/strong&gt; related to &lt;strong&gt;Copy and Revision&lt;/strong&gt; of Quote.&lt;br /&gt;&lt;br /&gt;If this post has been helpful. Please post your comments and visit again for more.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-4203753601473816059?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/4203753601473816059/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=4203753601473816059' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/4203753601473816059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/4203753601473816059'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2008/05/siebel-crm-78-signals-demystified.html' title='Siebel CRM 7.8 - Signals Demystified.'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-5991153720215830492</id><published>2008-05-07T16:52:00.002+05:30</published><updated>2008-05-07T16:59:45.899+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Signals'/><category scheme='http://www.blogger.com/atom/ns#' term='Case Study'/><title type='text'>Siebel 7.8 Signals - A Case Study!</title><content type='html'>&lt;span style="color: rgb(0, 0, 0);"&gt;I am back with what I promised.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;A case study how we used signals to improve the perfomance by &lt;/span&gt;&lt;strong style="color: rgb(0, 0, 0);"&gt;83%.&lt;/strong&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; I will try to tell you&lt;/span&gt;&lt;strong style="color: rgb(0, 0, 0);"&gt; facts&lt;/strong&gt; that I found while working on them and &lt;strong style="color: rgb(0, 0, 0);"&gt;not available in bookshelf and supportweb&lt;/strong&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;. If you want to know about singals please read my post &lt;/span&gt;&lt;a style="color: rgb(0, 0, 0);" href="http://all-about-siebel.blogspot.com/2008/05/siebel-crm-78-signals-demystified.html" target="_blank"&gt;Siebel CRM 7.8 - Signals Demysitified&lt;/a&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);" class="fullpost"&gt;&lt;br /&gt;We are working on Siebel 7.8.2.3. It is a&lt;strong&gt; Call Center module&lt;/strong&gt; but major and complex functionality is weaved around &lt;strong&gt;Quote Module&lt;/strong&gt; which includes customizable products. Now these coustmizable products can have upto &lt;strong&gt;10 products and 300 attributes&lt;/strong&gt; in one Quote Item record. In addition to Quote and Quote Item various custom entities are also copied as Quote Item Child. So, In total there are &lt;strong&gt;11 entites&lt;/strong&gt; are copied over when you 'Copy' or 'Revise' Quote.&lt;br /&gt;&lt;br /&gt;Now it is not possible to copy all these through configuration as by configuration only &lt;strong&gt;'Root Quote Item'&lt;/strong&gt; or just the &lt;strong&gt;First record&lt;/strong&gt; of Quote Item is &lt;strong&gt;copied&lt;/strong&gt; over, not all the records that are created as a result of customization of product. So, The intial solution was to copy or revise quote through scripting copying the Quote Item and all of its child. But the result was that it took upto 3 minutes to copy or revise the quote which was unacceptable and due to accessive scripting the process was not stable and often broke giving one or the other scripting error.&lt;br /&gt;&lt;br /&gt;So, we started exploring the Solution through &lt;strong&gt;vaniall singals&lt;/strong&gt; i.e '&lt;strong&gt;CopyQuote'&lt;/strong&gt; to copy quote and '&lt;strong&gt;ReviseCopyQuote'&lt;/strong&gt; to revise quote. When these signals were enabled they resulted in copy and revision of just 'Quote' and 'Quote Item'. After further exploring we found that these signal use a 'Data Map' which can be modified through Application&lt;br /&gt;&lt;br /&gt;Data Maps are available&lt;br /&gt;&lt;strong&gt;Adminstration ==&gt; Application ==&gt; Data Map Administration.&lt;/strong&gt;&lt;br /&gt;This view is not available by default especially if you have upgraded your application to &lt;strong&gt;Siebel 7.8&lt;/strong&gt;. You might have to enter a different license key for this view. Data Maps are nothing but declarative mapping of BO, BC and Fields. You specify the Source BC, Fields and Destination BC, Fields. Just creating the mapping is not enough you have to have supporting configuration of the BC's to make it work.&lt;br /&gt;&lt;br /&gt;Every BC that you enter should be added to the BO. It should have a Link to it's parent (if any) and that links should be added in the Business Component Section of BO.&lt;br /&gt;Add the custom fields to the datamap.&lt;br /&gt;&lt;br /&gt;Now comes the&lt;strong&gt; tricky part&lt;/strong&gt;. Even if you do all this you &lt;strong&gt;will not&lt;/strong&gt; see any &lt;strong&gt;improvement&lt;/strong&gt; in &lt;strong&gt;performance&lt;/strong&gt; and you might &lt;strong&gt;face some errors&lt;/strong&gt;. This is what you have to do in addition to what you have already done.&lt;br /&gt;&lt;br /&gt;1. Create&lt;strong&gt; 'MapId'&lt;/strong&gt; Advanced Property for Child Business Component Fields.&lt;br /&gt;2. Create &lt;strong&gt;Light version&lt;/strong&gt; of Child Business Components.&lt;br /&gt;&lt;br /&gt;Now, I will explain all the three steps in detail.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;MapId&lt;/strong&gt; : Data Maps support an advanced property called 'MapId' which is really important if you want this to work. 'MapId' is not properly defined in Bookshelf. I will try to explain this property with help of an example.&lt;br /&gt;&lt;br /&gt;We assume that Quote Item has a child called Delivery Schedule and we want it to be copied over when we copy quote. A field called 'Quote Item Id' is present in delivery schedule which stores the row id of Quote Item and is used by Link hence establishing the Parent-Child relationship.&lt;br /&gt;&lt;br /&gt;When we specify a source field in data map the value of that field is copied to the field specified in the destination field section. Which means when we specify 'Quote Item Id' Field value from source 'Quote Item Id' is copied to the destination field. To simply this further suppose the source 'Quote Item Id' had a value '1-6666' which means destination 'Quote Item Id' would have value '1-6666'. But this is wrong. This behaviour would mean that new delivery schedule record is now child of old 'Quote Item' not new.&lt;br /&gt;&lt;br /&gt;Here is where '&lt;strong&gt;MapId'&lt;/strong&gt; property comes into picture. You have to specify 'MapId' property for all the fields which are suppose to store the row id of parent business component. You have to enter the following information in the MVG that opens when you click on Advanced property field&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Property Name :MapId (remember it is case sensitive)&lt;br /&gt;Property Value : Name of parent business component&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;According to above example the Advanced property would be something like this&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Property Name : MapId&lt;br /&gt;Property Value : Quote Item&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;This should solve one of your problems.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Light Version BC&lt;/strong&gt;: When we are copying we don't need the validations or stuff like precision or Currency code property.&lt;br /&gt;Making the BC Light mean that create a copy of the original BC and perform the following steps&lt;br /&gt;&lt;br /&gt;1. Change the Class of the Bus Comp CSSBCBase.&lt;br /&gt;2. Disable all the user properties of the buscomp.&lt;br /&gt;3. Remove all the Post Defaults and Pre Defaults (Until and unless really required)&lt;br /&gt;4. Remove all the picklists&lt;br /&gt;5. All the values from the validations&lt;br /&gt;6. All the values from the precision fields&lt;br /&gt;&lt;br /&gt;I think you Get the idea now So, remove all that you think can be unnecessary. But there are something that are required so you have to use a little common sense before removing all these things.&lt;br /&gt;&lt;br /&gt;And you are done!!!!!!!&lt;br /&gt;&lt;br /&gt;Using these signals we were able to&lt;strong&gt; reduce&lt;/strong&gt; the copy/revise time to &lt;strong&gt;under 10 seconds&lt;/strong&gt; when it had records in all the 11 custom entities.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-5991153720215830492?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/5991153720215830492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=5991153720215830492' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/5991153720215830492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/5991153720215830492'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2008/05/siebel-78-signals-case-study.html' title='Siebel 7.8 Signals - A Case Study!'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-5517832436329980102</id><published>2008-05-07T16:52:00.001+05:30</published><updated>2008-05-07T16:52:50.527+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Best Practices'/><title type='text'>Best Practices For Siebel</title><content type='html'>Through my experience I have learnt that there are always several ways to accomplish everything. Some of them are the &lt;strong&gt;right way&lt;/strong&gt; to do things and some of them are &lt;strong&gt;wrong way&lt;/strong&gt;. It might take a &lt;strong&gt;little more effort&lt;/strong&gt; to do things in &lt;strong&gt;right way&lt;/strong&gt; but it &lt;strong&gt;always pay&lt;/strong&gt; in the &lt;strong&gt;long run.&lt;/strong&gt; Wrong way might save you some time and effort but price you have and consequences you have to suffer are far greater. This post here would provide you some insight on doing thing right way in siebel.&lt;br /&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;W&lt;/strong&gt;henever there is a requirement to extend a column in a table it is suggested that instead of extending the Base Table we should extend the Extension table corresponding to it.&lt;br /&gt;Whenever you extend the column in a table make sure you also extend the EIM table corresponding to it and also make a record in the Attribute Mapping.&lt;br /&gt;Steps for it:&lt;br /&gt;&lt;br /&gt;a) Go to the EIM Interface table object and identify the correct EIM table.&lt;br /&gt;&lt;br /&gt;b) Extend the EIM Table.&lt;br /&gt;&lt;br /&gt;c) In EIM Table Mapping object &gt; Attribute Mapping Object &gt; create a record for newly added column. &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;T&lt;/strong&gt;he customized buttons who have the Method Invoked Property as"EventMethod%" ie. prefixed with 'EventMethod' need not to be forcibly enable&lt;br /&gt;by using 'PreCanInvoke" event scripting.&lt;br /&gt;They are always enabled.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Hope this helps. Keep Coming for more&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-5517832436329980102?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/5517832436329980102/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=5517832436329980102' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/5517832436329980102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/5517832436329980102'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2008/05/best-practices-for-siebel.html' title='Best Practices For Siebel'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-6405238735912900760</id><published>2008-05-07T16:51:00.000+05:30</published><updated>2008-05-07T16:52:04.631+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Back to Basics'/><title type='text'>Siebel CRM - Back to Basics (Siebel Architechture).</title><content type='html'>&lt;p style="color: rgb(0, 0, 0);"&gt;In a &lt;strong&gt;perfect world&lt;/strong&gt; this would have been my first article. But this &lt;strong&gt;world is not perfect&lt;/strong&gt; and as the saying goes &lt;em&gt;'Better late than never'&lt;/em&gt; here it is.&lt;br /&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;&lt;br /&gt;I will approach &lt;strong&gt;Siebel Architecture&lt;/strong&gt; in a different way. Then I will take each technical term used in this article that is important and requires further exploration and explain it further in next articles of &lt;strong&gt;Back to Basics&lt;/strong&gt; series.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Ever wondered what happens once you have put the URL of your siebel Application in the browser and hit enter?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;This is different approach to Siebel Architecture. The answer to this question will be an explaination of Siebel Architechture. So, Let's start.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;==&gt; You have opened your browser window and have enterned the URL and Clicked Go button of your browser window&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;http://yourseiebelapp/apptype_lang/start.swe&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;Before going into&lt;strong&gt; background&lt;/strong&gt; I would like to &lt;strong&gt;explain or dissect&lt;/strong&gt; the above given &lt;strong&gt;URL.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;http :&lt;/strong&gt; Is the protocol that is being used to transfer the data over web from one computer to another.&lt;br /&gt;&lt;strong&gt;yoursiebelapp :&lt;/strong&gt; is the host name of the Web Server on which your Siebel Component resides. We will go into details of these components later&lt;br /&gt;&lt;strong&gt;apptype_lang&lt;/strong&gt; can be divided into two parts&lt;br /&gt;&lt;strong&gt;apptype :&lt;/strong&gt; Represents the module you are using can be sales, callcenter, mkt etc.&lt;br /&gt;&lt;strong&gt;lang :&lt;/strong&gt; Represents the language of your implementation can be enu, fin etc.&lt;br /&gt;&lt;strong&gt;start.swe&lt;/strong&gt; : It might be used or might not be used but represents a command recoganized by siebel component called 'SWSE' which stands for Siebel WebServer Extensions.&lt;br /&gt;&lt;br /&gt;Now we know the meaning of the URL we have just entered we will move behind the scenes.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;==&gt; The Request goes to the Webserver &lt;em&gt;(Discussing Webserver is out of scope for this post)&lt;/em&gt; where an important component resides called Siebel Webserver Extensions (SWSE).&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;SWSE :&lt;/strong&gt;&lt;br /&gt;The responsibility of this component is to identify if the request that has arrived on webserver is a Siebel request or not and also it helps to format the html pages that are server to the Web Clients of siebel. It also supports Load balancing if you have more than one siebel server which generally is the case.&lt;br /&gt;&lt;strong&gt;==&gt; If the request received is a siebel request then SWSE contacts Siebel Gateway Name Server to obtain information about Siebel Servers and Siebel Enterprise Server.&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Siebel Gateway Name Server (SGNS):&lt;/strong&gt;&lt;br /&gt;SGNS can be considered as &lt;strong&gt;Sieber Server&lt;/strong&gt; &lt;strong&gt;contact information storehouse&lt;/strong&gt; for all the siebel servers. It serves as the &lt;strong&gt;dynamic address registry&lt;/strong&gt; for Siebel Servers and components. At start up, &lt;strong&gt;a Siebel Server&lt;/strong&gt; within the &lt;strong&gt;Siebel Enterprise Server&lt;/strong&gt; stores its &lt;strong&gt;network address&lt;/strong&gt; in the Gateway Name Servers nonpersistent &lt;strong&gt;address registry&lt;/strong&gt;.&lt;br /&gt;It also has a important file called &lt;strong&gt;siebns.dat&lt;/strong&gt; containg &lt;strong&gt;information&lt;/strong&gt; of &lt;strong&gt;Siebel Servers&lt;/strong&gt; such as&lt;br /&gt;&lt;strong&gt;1. &lt;/strong&gt;Operational parameters&lt;br /&gt;&lt;strong&gt;2. &lt;/strong&gt;Connectivity information&lt;br /&gt;&lt;strong&gt;3. &lt;/strong&gt;Definitions and assignments of component groups and components&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Siebel Enterprise Server (SES) :&lt;/strong&gt;&lt;br /&gt;SES is &lt;strong&gt;not a physical server&lt;/strong&gt; it is just a&lt;strong&gt; logical entity&lt;/strong&gt; in simple terms SES is a logical grouping on serveral siebel servers such as Siebel Server shaing one database can part of SES.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0);"&gt;The Siebel Servers in a Siebel Enterprise Server are configured, managed, and monitored as a single logical group which helps the Siebel Administrator to start, stop, monitor, or set server parameters for all Siebel Servers within the Siebel Enterprise Server. &lt;/p&gt;&lt;p style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;==&gt; Once the SWSE gets information about Siebel Server it forwards the request to the Siebel Server on Round Robin basis due its load balancing feature.&lt;/strong&gt;&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;Siebel Server (SS) :&lt;br /&gt;&lt;/strong&gt;Siebel Server is the system on which &lt;strong&gt;Siebel Server Components&lt;/strong&gt; are &lt;strong&gt;installed &lt;/strong&gt;and it functions as Application server. Each server &lt;strong&gt;component &lt;/strong&gt;performs a &lt;strong&gt;defined function&lt;/strong&gt;.Server components or groups of components determine what applications and services a Siebel Server supports. The &lt;strong&gt;Siebel Server&lt;/strong&gt; runs as a &lt;strong&gt;system service&lt;/strong&gt; under &lt;strong&gt;Windows&lt;/strong&gt; and a &lt;strong&gt;process&lt;/strong&gt; under &lt;strong&gt;UNIX&lt;/strong&gt;. This system service or process monitors and controls the state of all server components on that Siebel Server. Each Siebel Server is one instantiation of the Siebel Server system service or process within the current Siebel Enterprise Server. &lt;/p&gt;&lt;p style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;&lt;span style="font-family: georgia;"&gt;==&gt; Once the request is received by siebel server it is passed to a component called Application Object Manager (AOM) &lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;strong style="color: rgb(0, 0, 0);"&gt;Application Object Manager (AOM) :&lt;br /&gt;&lt;/strong&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;One of the most important types of server components is the Application Object Manager (AOM).They process user requests and are application or service-specific. For example A Sales Application will have Sales AOM and Call center application will have a Call Center AOM.This Application Object Manager provides the&lt;/span&gt;&lt;strong style="color: rgb(0, 0, 0);"&gt; session environment&lt;/strong&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; in which this application runs. When an AOM receives a user request to start an application, it does the following: &lt;/span&gt;&lt;p style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;&lt;span style="font-family: georgia;"&gt;==&gt; The business object layer starts an application user session, processes any required business logic, and sends a data request to the data manager. &lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;strong style="color: rgb(0, 0, 0);"&gt;Data Manager (DM) :&lt;br /&gt;&lt;/strong&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Data Manager is that another component that is a &lt;/span&gt;&lt;strong style="color: rgb(0, 0, 0);"&gt;part of AOM&lt;/strong&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;. Its primary function is to receive user request create corresponding &lt;/span&gt;&lt;strong style="color: rgb(0, 0, 0);"&gt;SQL&lt;/strong&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; and Forward it to database Server. It also receives results from Database server and forwards it to Siebel Business Object Layer for additional processing.&lt;/span&gt;&lt;p style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;==&gt; Siebel Business Object Layer forwards the results to Siebel Web Engine (SWE) another component residing in AOM.&lt;/strong&gt;&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;==&gt; SWE helps create UI for the data and forwards the web pages to the SWSE Component which resides on Web Server.&lt;/strong&gt;&lt;/p&gt;&lt;p style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;==&gt; Webserver then sends back the results to the users who had intially requested it.&lt;/strong&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-6405238735912900760?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/6405238735912900760/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=6405238735912900760' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/6405238735912900760'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/6405238735912900760'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2008/05/siebel-crm-back-to-basics-siebel.html' title='Siebel CRM - Back to Basics (Siebel Architechture).'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5142999544415381934.post-1004841980901665192</id><published>2008-05-07T16:48:00.000+05:30</published><updated>2008-05-07T16:51:00.200+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Back to Basics'/><title type='text'>Siebel CRM How To - Automate login into Siebel Dedicated Client</title><content type='html'>The trick I am going to tell you in this article might seem to you&lt;strong&gt; very simple&lt;/strong&gt; and basic if you have been working on siebel for a long time but for a newbie it can be small time saving trick during his early days of dabbling with &lt;strong&gt;Siebel Development&lt;/strong&gt;. I have come to know in last few days while talking to a friend, assuming that a simple thing is known to everybody is a mistake and there is nothing such as useless simple thing.&lt;br /&gt;&lt;br /&gt;&lt;span class="fullpost"&gt;My experience has taught me that it is pretty common to ignore simple things but they usually are the one's that can save you a lot of hassel if used in a proper way. During our intital time of Siebel development there is atleast 50 time we open&lt;strong&gt; Siebel Dedicated Client&lt;/strong&gt; and&lt;strong&gt; Siebel tools&lt;/strong&gt; while we are trying to explore Siebel to the best of our ablity. This simple trick can automate your login to the client and tools and save some time of entering username or password. &lt;/span&gt;&lt;span class="fullpost"&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Right Click the shortcut through which you acess the Siebel Client or Siebel Tools and choose Properties from the context menu. &lt;/li&gt;&lt;li&gt;Scroll right to the end of Target Text Field Value enter the following text in the end. &lt;/li&gt;&lt;/ul&gt;&lt;p align="center"&gt;&lt;strong&gt;/u sadmin /p sadmin /d sample &lt;/strong&gt;&lt;/p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;p&gt;These text will automate your login to sample database. If you want to automate your login to &lt;strong&gt;Local Database&lt;/strong&gt; enter the following code. &lt;/p&gt;&lt;p align="center"&gt;&lt;strong&gt;/u username /p pwd /d Local &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;span style="font-family:courier new;"&gt;replace username with your local username and pwd with your local database password&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;You can create copies of the shortcut that you use and can configure different shortcuts to login to different databases. Detail about switches being used in the above article and other switches that can be used is a subject of another post. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Hope this post helps you. If yes, Then please post your comments or suggestion to improve this blog.&lt;/strong&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5142999544415381934-1004841980901665192?l=all-about-siebel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://all-about-siebel.blogspot.com/feeds/1004841980901665192/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5142999544415381934&amp;postID=1004841980901665192' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/1004841980901665192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5142999544415381934/posts/default/1004841980901665192'/><link rel='alternate' type='text/html' href='http://all-about-siebel.blogspot.com/2008/05/siebel-crm-how-to-automate-login-into.html' title='Siebel CRM How To - Automate login into Siebel Dedicated Client'/><author><name>Sirish WebWorld</name><uri>http://www.blogger.com/profile/09939149344354225582</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
