<?xml version="1.0" encoding="UTF-8" standalone="no"?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0"><channel><title>All About Siebel</title><description>All information about Siebel, Siebel interview questions and answers</description><managingEditor>noreply@blogger.com (Sirish WebWorld)</managingEditor><pubDate>Thu, 26 Sep 2024 06:30:00 +0530</pubDate><generator>Blogger http://www.blogger.com</generator><openSearch:totalResults xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">57</openSearch:totalResults><openSearch:startIndex xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">1</openSearch:startIndex><openSearch:itemsPerPage xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">25</openSearch:itemsPerPage><link>http://all-about-siebel.blogspot.com/</link><language>en-us</language><itunes:explicit>no</itunes:explicit><itunes:keywords>All,information,about,Siebel,Siebel,interview,questions,and,answers</itunes:keywords><itunes:summary>All information about Siebel, Siebel interview questions and answers</itunes:summary><itunes:subtitle>All About Siebel</itunes:subtitle><itunes:category text="Technology"><itunes:category text="Software How-To"/></itunes:category><itunes:owner><itunes:email>sirish.sites@gmail.com</itunes:email></itunes:owner><xhtml:meta content="noindex" name="robots" xmlns:xhtml="http://www.w3.org/1999/xhtml"/><item><title>How to deploy files in a remote server?</title><link>http://all-about-siebel.blogspot.com/2009/01/how-to-deploy-files-in-remote-server.html</link><category>Copy</category><category>Files</category><category>Remote Server</category><pubDate>Wed, 7 Jan 2009 10:38:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5142999544415381934.post-2615357398307562056</guid><description>&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;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total><author>sirish.sites@gmail.com (Sirish WebWorld)</author></item><item><title>Oracle : Reduce your parsing times</title><link>http://all-about-siebel.blogspot.com/2009/01/oracle-reduce-your-parsing-times.html</link><category>Oracle</category><category>Tunning</category><pubDate>Wed, 7 Jan 2009 10:37:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5142999544415381934.post-3482456359154689139</guid><description>&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;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>sirish.sites@gmail.com (Sirish WebWorld)</author></item><item><title>Oracle : SQLCODE and SQLERRM in Inserts</title><link>http://all-about-siebel.blogspot.com/2009/01/oracle-sqlcode-and-sqlerrm-in-inserts.html</link><category>Oracle</category><pubDate>Wed, 7 Jan 2009 10:37:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5142999544415381934.post-2658893779122395981</guid><description>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) .</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>sirish.sites@gmail.com (Sirish WebWorld)</author></item><item><title>SQL * Plus Tip  - 1</title><link>http://all-about-siebel.blogspot.com/2009/01/sql-plus-tip-1.html</link><category>SQL Plus</category><pubDate>Wed, 7 Jan 2009 10:36:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5142999544415381934.post-5650757081955507942</guid><description>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</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>sirish.sites@gmail.com (Sirish WebWorld)</author></item><item><title>Oracle : Reducing join execution time</title><link>http://all-about-siebel.blogspot.com/2009/01/oracle-reducing-join-execution-time.html</link><category>PL/SQL</category><category>Tunning</category><pubDate>Wed, 7 Jan 2009 10:34:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5142999544415381934.post-5780329489272404656</guid><description>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.</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>sirish.sites@gmail.com (Sirish WebWorld)</author></item><item><title>PL/SQL Tip  - 1</title><link>http://all-about-siebel.blogspot.com/2009/01/plsql-tip-1.html</link><category>PL/SQL</category><pubDate>Wed, 7 Jan 2009 10:33:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5142999544415381934.post-128050993850231229</guid><description>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.</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>sirish.sites@gmail.com (Sirish WebWorld)</author></item><item><title>PL/SQL : Show locked objects</title><link>http://all-about-siebel.blogspot.com/2009/01/plsql-show-locked-objects.html</link><category>PL/SQL</category><pubDate>Wed, 7 Jan 2009 10:33:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5142999544415381934.post-1036328310148307094</guid><description>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.</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>sirish.sites@gmail.com (Sirish WebWorld)</author></item><item><title>PL/SQL : How to update using select</title><link>http://all-about-siebel.blogspot.com/2009/01/plsql-how-to-update-using-select.html</link><category>PL/SQL</category><pubDate>Wed, 7 Jan 2009 10:32:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5142999544415381934.post-6915290151604020020</guid><description>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.</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>sirish.sites@gmail.com (Sirish WebWorld)</author></item><item><title>EIM : Shell execution order</title><link>http://all-about-siebel.blogspot.com/2009/01/eim-shell-execution-order.html</link><category>EIM</category><pubDate>Wed, 7 Jan 2009 10:32:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5142999544415381934.post-8944462966658763288</guid><description>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;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>sirish.sites@gmail.com (Sirish WebWorld)</author></item><item><title>PL/SQL : Scripting for table drop</title><link>http://all-about-siebel.blogspot.com/2009/01/plsql-scripting-for-table-drop.html</link><category>PL/SQL</category><pubDate>Wed, 7 Jan 2009 10:31:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5142999544415381934.post-4633971513422253400</guid><description>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.</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>sirish.sites@gmail.com (Sirish WebWorld)</author></item><item><title>EIM : DUP_RECORD_EXISTS after Update</title><link>http://all-about-siebel.blogspot.com/2009/01/eim-duprecordexists-after-update.html</link><category>EIM</category><pubDate>Wed, 7 Jan 2009 10:31:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5142999544415381934.post-5072521201141545618</guid><description>This status happens after running an EIM update process with lines that match exactly the lines being updated in base table.</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>sirish.sites@gmail.com (Sirish WebWorld)</author></item><item><title>Localcooling  .  com</title><link>http://all-about-siebel.blogspot.com/2009/01/localcooling-com.html</link><category>Ecology</category><pubDate>Wed, 7 Jan 2009 10:30:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5142999544415381934.post-405656239287363517</guid><description>&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!</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>sirish.sites@gmail.com (Sirish WebWorld)</author></item><item><title>How to relate a contact whit their accounts</title><link>http://all-about-siebel.blogspot.com/2009/01/how-to-relate-contact-whit-their.html</link><category>Siebel</category><pubDate>Wed, 7 Jan 2009 10:29:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5142999544415381934.post-9128799965772951299</guid><description>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.</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><author>sirish.sites@gmail.com (Sirish WebWorld)</author></item><item><title>PL/SQL : Check script for object owners</title><link>http://all-about-siebel.blogspot.com/2009/01/plsql-check-script-for-object-owners.html</link><category>PL/SQL</category><pubDate>Wed, 7 Jan 2009 10:29:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5142999544415381934.post-5189911445071674179</guid><description>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.</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>sirish.sites@gmail.com (Sirish WebWorld)</author></item><item><title>SQL Navigator : Code Templates</title><link>http://all-about-siebel.blogspot.com/2009/01/sql-navigator-code-templates.html</link><category>SQLNavigator</category><pubDate>Wed, 7 Jan 2009 10:28:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5142999544415381934.post-5497389698075421454</guid><description>&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 !!!</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>sirish.sites@gmail.com (Sirish WebWorld)</author></item><item><title>S_POSTN_CON : Description</title><link>http://all-about-siebel.blogspot.com/2009/01/spostncon-description.html</link><category>Siebel</category><pubDate>Wed, 7 Jan 2009 10:27:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5142999544415381934.post-6776005878171956250</guid><description>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.</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>sirish.sites@gmail.com (Sirish WebWorld)</author></item><item><title>Joins : Please talk ANSI SQL with me.</title><link>http://all-about-siebel.blogspot.com/2009/01/joins-please-talk-ansi-sql-with-me.html</link><category>ANSI SQL</category><pubDate>Wed, 7 Jan 2009 10:26:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5142999544415381934.post-1509654366140867558</guid><description>&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.</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><author>sirish.sites@gmail.com (Sirish WebWorld)</author></item><item><title>WHy MINUS does NOT EXISTs in our queries?</title><link>http://all-about-siebel.blogspot.com/2009/01/why-minus-does-not-exists-in-our.html</link><category>PL/SQL</category><pubDate>Wed, 7 Jan 2009 10:26:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5142999544415381934.post-1944886668439831056</guid><description>&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;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>sirish.sites@gmail.com (Sirish WebWorld)</author></item><item><title>Get last file version</title><link>http://all-about-siebel.blogspot.com/2009/01/get-last-file-version.html</link><category>Harvest</category><pubDate>Wed, 7 Jan 2009 10:25:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5142999544415381934.post-82868477424685973</guid><description>&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;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>sirish.sites@gmail.com (Sirish WebWorld)</author></item><item><title>Debugging in http://localhost:8082</title><link>http://all-about-siebel.blogspot.com/2009/01/debugging-in-httplocalhost8082.html</link><category>Debug</category><category>Firewall</category><category>Siebel</category><pubDate>Wed, 7 Jan 2009 10:24:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5142999544415381934.post-226216886516805822</guid><description>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!!</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>sirish.sites@gmail.com (Sirish WebWorld)</author></item><item><title>Error 452: Match column X not found in Y</title><link>http://all-about-siebel.blogspot.com/2009/01/error-452-match-column-x-not-found-in-y.html</link><category>EIM</category><category>Mapping</category><pubDate>Wed, 7 Jan 2009 10:23:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5142999544415381934.post-3333534717699418838</guid><description>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;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>sirish.sites@gmail.com (Sirish WebWorld)</author></item><item><title>A distant past - Part 1 Siebel</title><link>http://all-about-siebel.blogspot.com/2008/09/distant-past-part-1-siebel.html</link><category>Siebel CRM</category><pubDate>Fri, 12 Sep 2008 14:24:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5142999544415381934.post-6824163701599028900</guid><description>&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="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0aBTZYf_A1a73C78G5FHEvWgKP7mqaf1iWGMPfQwIbnfrI5SdmsJJwAFlcPFZqlm5rHomDuvVYL2Unjeo-5kNSKmewGCRr5n9ZZqIlhfAyH8tf1baoXFhzTGoB-rNk6dCXUFZLEch6ag/s320/siebel.com.jpg" alt="" id="BLOGGER_PHOTO_ID_5225390615067290706" border="0" /&gt;&lt;/span&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0aBTZYf_A1a73C78G5FHEvWgKP7mqaf1iWGMPfQwIbnfrI5SdmsJJwAFlcPFZqlm5rHomDuvVYL2Unjeo-5kNSKmewGCRr5n9ZZqIlhfAyH8tf1baoXFhzTGoB-rNk6dCXUFZLEch6ag/s72-c/siebel.com.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>sirish.sites@gmail.com (Sirish WebWorld)</author></item><item><title>A distant past - Part 2 or "It's still there"</title><link>http://all-about-siebel.blogspot.com/2008/09/distant-past-part-2-or-its-still-there.html</link><category>Siebel CRM</category><pubDate>Fri, 12 Sep 2008 14:23:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5142999544415381934.post-617088434648924295</guid><description>&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="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLSF-rNH-OdqnB8kSuwoSR8pG3OojXBuaXWH53iKbc165NwLXBFIzPtdaJ3qBqz2VGcKyQRsWr9DZfWcYDR-dIBIOC7lrZRbmQGHn-i7YBLRy5w-qc9lIpaVmVkC-jd6pb40ABVtjSxP0/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;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLSF-rNH-OdqnB8kSuwoSR8pG3OojXBuaXWH53iKbc165NwLXBFIzPtdaJ3qBqz2VGcKyQRsWr9DZfWcYDR-dIBIOC7lrZRbmQGHn-i7YBLRy5w-qc9lIpaVmVkC-jd6pb40ABVtjSxP0/s72-c/screenshot-SiebelCRM-Literature-sample-tomtvad.jpg" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>sirish.sites@gmail.com (Sirish WebWorld)</author></item><item><title>Automating the Application Deployment Manager (ADM) packaging process</title><link>http://all-about-siebel.blogspot.com/2008/09/automating-application-deployment.html</link><category>Siebel CRM</category><pubDate>Fri, 12 Sep 2008 14:22:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5142999544415381934.post-3385311014154202649</guid><description>&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;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>sirish.sites@gmail.com (Sirish WebWorld)</author></item><item><title>Business Process Solution Library Siebel</title><link>http://all-about-siebel.blogspot.com/2008/09/business-process-solution-library.html</link><category>Siebel CRM</category><pubDate>Fri, 12 Sep 2008 14:20:00 +0530</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-5142999544415381934.post-5640000028973724229</guid><description>&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="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7Ld3nyHjE635-f6rWmcK4l3Hf3sKJAE2SJbidjPkn0XcTZMsifHjffDjyuDzfvALmqspGlCXBW5_ifb6OONDQ44ZDTJwPUnlQ9Qjxj5qgVp4RbYCvp60Jhmf-8oeFghmxSKMZTkxuF2w/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.</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7Ld3nyHjE635-f6rWmcK4l3Hf3sKJAE2SJbidjPkn0XcTZMsifHjffDjyuDzfvALmqspGlCXBW5_ifb6OONDQ44ZDTJwPUnlQ9Qjxj5qgVp4RbYCvp60Jhmf-8oeFghmxSKMZTkxuF2w/s72-c/Acquire_Customer.gif" width="72"/><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><author>sirish.sites@gmail.com (Sirish WebWorld)</author></item></channel></rss>