<?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-33112393</id><updated>2012-01-31T09:45:59.121Z</updated><title type='text'>Oracle Apps Technical Blog</title><subtitle type='html'>Oracle Apps Blog for the learners of Oracle Applications. ( Copyright protected )</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://appstechnical.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://appstechnical.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Anil Passi</name><uri>http://www.blogger.com/profile/14859722075898946765</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>38</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-33112393.post-116959550673462039</id><published>2007-01-23T23:36:00.000Z</published><updated>2007-02-21T14:13:10.963Z</updated><title type='text'>Multi Org in Release 12</title><content type='html'>You must have heard that multi org access control has been introduced by Oracle in R12.&lt;br /&gt;&lt;br /&gt;This is an excellent feature from Oracle.&lt;br /&gt;&lt;br /&gt;Rather than have one responsibility-one operating unit.&lt;br /&gt;Now you will have one responsibility-multiple operating units.&lt;br /&gt;&lt;br /&gt;I suggest you read the below article on Multi Org Access Control in Oracle R12 [release 12]&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;a style="font-weight: bold;" href="http://oracle.anilpassi.com/multi-org-r12.html"&gt;http://oracle.anilpassi.com/multi-org-r12.html &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/33112393-116959550673462039?l=appstechnical.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appstechnical.blogspot.com/feeds/116959550673462039/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33112393&amp;postID=116959550673462039' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/116959550673462039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/116959550673462039'/><link rel='alternate' type='text/html' href='http://appstechnical.blogspot.com/2007/01/multi-org-in-release-12.html' title='Multi Org in Release 12'/><author><name>Anil Passi</name><uri>http://www.blogger.com/profile/14859722075898946765</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>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33112393.post-116959527992062593</id><published>2007-01-23T23:32:00.000Z</published><updated>2007-02-12T11:30:45.186Z</updated><title type='text'>OA Framework Tutorials</title><content type='html'>Please find a list of articles on OA Framework Tutorials&lt;br /&gt;These cover extension of OA Framework.&lt;br /&gt;This covers, Extension of View Objects.&lt;br /&gt;Also, Extension of Application Module, EO&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;   &lt;span style="font-weight: bold;"&gt;OA Framework Related&lt;/span&gt;&lt;br /&gt; &lt;a href="http://oracle.anilpassi.com/oa-framework.html" target="_blank"&gt;Get Started with OA Framework&lt;/a&gt;&lt;br /&gt;&lt;br /&gt; &lt;a href="http://oracle.anilpassi.com/d2k-to-oa-framework-transition.html" target="_blank" title="Transitioning from D2K to OA Framework"&gt;D2K Form comparison with OA Framework&lt;br /&gt; &lt;/a&gt;&lt;br /&gt; &lt;a href="http://oracle.anilpassi.com/extend-vo-in-oa-framwork.html" target="blank_" title="Steps to Extend View Object in OA Framework"&gt;Steps to Extend View Object in OA Framework&lt;/a&gt;&lt;br /&gt;&lt;br /&gt; &lt;a href="http://oracle.anilpassi.com/iprocurement-11.5.10-rebuild-charge-account.html" target="blank_" title="Extend Entity Object Substitution [using iProcurement] in OA Framework     - An Example"&gt;Extend Entity Object Substitution [using iProcurement] in OA Framework     - An Example&lt;/a&gt;&lt;br /&gt;&lt;br /&gt; &lt;a href="http://oracle.anilpassi.com/integrate-oa-framework-with-web-service.html" target="_blank"&gt;Extend OA Framework to use a WebService[Design]&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://oracle.anilpassi.com/oa-framework-with-captcha-webservice.html" target="_blank"&gt;Captcha Implementation. Step by Step Webservice in OA Framework using java&lt;/a&gt;&lt;br /&gt;&lt;br /&gt; &lt;a href="http://oracle.anilpassi.com/oa-framework-extending-controller-steps-2.html" target="_blank"&gt;How to Extend a Controller in OA Framework Sceen&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;&lt;a href="http://oracle.anilpassi.com/oa-framework-extending-controller-steps-2.html" target="_blank"&gt;   &lt;/a&gt;&lt;a href="http://oracle.anilpassi.com/oa-framework-extension-of-application-module.html" target="blank_" title="Extension of Application Module in OA Framework - Part 1"&gt;Extension of Application Module in OA Framework - Part 1&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://oracle.anilpassi.com/oa-framework-extension-of-am-steps-how-to.html" title="Extension of Application Module in OA Framework - Part 2"&gt;Extension of Application Module in OA Framework - Part 2&lt;/a&gt;   &lt;/p&gt;        &lt;a href="http://oracle.anilpassi.com/xmlimporter-in-oracle-applications-framework.html" target="blank_" title="How to use XMLImporter in OA Framework"&gt;How to use XMLImporter in OA Framework&lt;/a&gt;&lt;br /&gt;&lt;br /&gt; &lt;a href="http://oracle.anilpassi.com/restart-or-bounce-apache-in-oracle-apps-11i.html" target="blank_" title="When to bounce and How to Bounce Apache Server when working on OA Framework"&gt;When to bounce and How to Bounce Apache Server when working on OA Framework&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; &lt;strong&gt;&lt;br /&gt;Java in Oracle Apps&lt;/strong&gt;&lt;br /&gt; &lt;a href="http://oracle.anilpassi.com/java-concurrent-programs-in-oracle.html" target="blank_" title="How to write Java Concurrent Programs in Oracle Apps?"&gt;How to write Java Concurrent Programs in Oracle Apps?&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33112393-116959527992062593?l=appstechnical.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appstechnical.blogspot.com/feeds/116959527992062593/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33112393&amp;postID=116959527992062593' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/116959527992062593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/116959527992062593'/><link rel='alternate' type='text/html' href='http://appstechnical.blogspot.com/2007/01/oa-framework-tutorials.html' title='OA Framework Tutorials'/><author><name>Anil Passi</name><uri>http://www.blogger.com/profile/14859722075898946765</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>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33112393.post-116584276759383625</id><published>2006-12-11T13:11:00.000Z</published><updated>2007-02-18T05:44:38.333Z</updated><title type='text'>New Articles added on HRMS and Payroll</title><content type='html'>&lt;!-- BEGIN of RSS2GIF HTML-Code --&gt;New articles have been added on HRMS and payroll&lt;br /&gt;&lt;br /&gt;Visit http://oracle.anilpassi.com&lt;br /&gt;&lt;br /&gt;&lt;!-- ( Do not change this HTML-Code to keep the image working! ) --&gt;&lt;map name="map"&gt;&lt;area shape="rect" coords="1,20,460,30" href="http://www.rss2gif.com/link.php?feed=http://oracle.anilpassi.com/rss/3.html&amp;id=0" target="_blank"&gt;&lt;area shape="rect" coords="1,34,460,44" href="http://www.rss2gif.com/link.php?feed=http://oracle.anilpassi.com/rss/3.html&amp;amp;id=1" target="_blank"&gt;&lt;area shape="rect" coords="1,48,460,58" href="http://www.rss2gif.com/link.php?feed=http://oracle.anilpassi.com/rss/3.html&amp;id=2" target="_blank"&gt;&lt;area shape="rect" coords="1,62,460,72" href="http://www.rss2gif.com/link.php?feed=http://oracle.anilpassi.com/rss/3.html&amp;amp;id=3" target="_blank"&gt;&lt;area shape="rect" coords="1,76,460,86" href="http://www.rss2gif.com/link.php?feed=http://oracle.anilpassi.com/rss/3.html&amp;id=4" target="_blank"&gt;&lt;area shape="rect" coords="1,90,460,100" href="http://www.rss2gif.com/index.php"&gt;&lt;/map&gt;&lt;img src="http://www.rss2gif.com/button.php?feed=http://oracle.anilpassi.com/rss/3.html&amp;amp;count=5&amp;dots=1&amp;amp;textcolor=&amp;fonttype=0&amp;amp;bgcolor=" usemap="#map" border="0" /&gt;&lt;br /&gt;&lt;!-- ( END of RSS2GIF HTML-Code ) --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33112393-116584276759383625?l=appstechnical.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appstechnical.blogspot.com/feeds/116584276759383625/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33112393&amp;postID=116584276759383625' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/116584276759383625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/116584276759383625'/><link rel='alternate' type='text/html' href='http://appstechnical.blogspot.com/2006/12/new-articles-added-on-hrms-and-payroll.html' title='New Articles added on HRMS and Payroll'/><author><name>Anil Passi</name><uri>http://www.blogger.com/profile/14859722075898946765</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>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33112393.post-116566469299976602</id><published>2006-12-09T11:43:00.000Z</published><updated>2006-12-09T11:44:53.013Z</updated><title type='text'>OA Framework Extensions for View Objects</title><content type='html'>Please find an article that explains how to modify LOV in Oracle's OA Framework without customization&lt;br /&gt;&lt;br /&gt;&lt;a href="http://oracle.anilpassi.com/extend-vo-in-oa-framwork.html"&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Link to Article for Extending OA Framework View Object&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33112393-116566469299976602?l=appstechnical.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appstechnical.blogspot.com/feeds/116566469299976602/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33112393&amp;postID=116566469299976602' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/116566469299976602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/116566469299976602'/><link rel='alternate' type='text/html' href='http://appstechnical.blogspot.com/2006/12/oa-framework-extensions-for-view.html' title='OA Framework Extensions for View Objects'/><author><name>Anil Passi</name><uri>http://www.blogger.com/profile/14859722075898946765</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-33112393.post-116527735209939853</id><published>2006-12-05T00:07:00.000Z</published><updated>2007-01-06T05:18:10.213Z</updated><title type='text'>Best Practices to design Interfaces in Apps</title><content type='html'>This article discusses various approaches on how to design Oracle Apps Interfaces.&lt;br /&gt;&lt;br /&gt;I have considered Point to Point interface, alongwith a centralised interface approach.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://oracle.anilpassi.com/open-interfaces-in-apps-ebs-best-practices.html"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;ORACLE APPS INTERFACES BEST PRACTICES&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33112393-116527735209939853?l=appstechnical.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appstechnical.blogspot.com/feeds/116527735209939853/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33112393&amp;postID=116527735209939853' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/116527735209939853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/116527735209939853'/><link rel='alternate' type='text/html' href='http://appstechnical.blogspot.com/2006/12/best-practices-to-design-interfaces-in.html' title='Best Practices to design Interfaces in Apps'/><author><name>Anil Passi</name><uri>http://www.blogger.com/profile/14859722075898946765</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-33112393.post-116527721675527517</id><published>2006-12-05T00:05:00.000Z</published><updated>2006-12-05T00:06:56.756Z</updated><title type='text'>How to Setup Oracle HRMS Steps</title><content type='html'>Please find an article, which is not BR100.&lt;br /&gt;&lt;br /&gt;However, in this article, I am listing all the practical steps that one undergoes to implement Oracle HRMS.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://oracle.anilpassi.com/hrms-setups-not-br100.html"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;LINK TO ORACLE HRMS SETUPS ARTICLE&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33112393-116527721675527517?l=appstechnical.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appstechnical.blogspot.com/feeds/116527721675527517/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33112393&amp;postID=116527721675527517' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/116527721675527517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/116527721675527517'/><link rel='alternate' type='text/html' href='http://appstechnical.blogspot.com/2006/12/how-to-setup-oracle-hrms-steps.html' title='How to Setup Oracle HRMS Steps'/><author><name>Anil Passi</name><uri>http://www.blogger.com/profile/14859722075898946765</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-33112393.post-116527708218194236</id><published>2006-12-05T00:02:00.000Z</published><updated>2006-12-05T00:04:42.210Z</updated><title type='text'>FND_LOG_MESSAGES FND Debug in Apps</title><content type='html'>Do you wonder, how Oracle Apps Debugs its applications?&lt;br /&gt;&lt;br /&gt;Do you want to know how to debug forms,  reports, OA Framework, Java, Workflows all using single methodology?&lt;br /&gt;&lt;br /&gt;To find answer to your questions, please click on &lt;a href="http://oracle.anilpassi.com/fnd-debug-log-debugging-oracle-apps-code.html"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Link To FND Debug Logging Article&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33112393-116527708218194236?l=appstechnical.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appstechnical.blogspot.com/feeds/116527708218194236/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33112393&amp;postID=116527708218194236' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/116527708218194236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/116527708218194236'/><link rel='alternate' type='text/html' href='http://appstechnical.blogspot.com/2006/12/fndlogmessages-fnd-debug-in-apps.html' title='FND_LOG_MESSAGES FND Debug in Apps'/><author><name>Anil Passi</name><uri>http://www.blogger.com/profile/14859722075898946765</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-33112393.post-116454327413920245</id><published>2006-11-26T12:11:00.000Z</published><updated>2007-01-22T23:44:56.980Z</updated><title type='text'>iProcurement - Step by Step Implementation</title><content type='html'>Please find an article that explains step by step implementation of Oracle iProcurement.&lt;br /&gt;&lt;br /&gt;It covers:-&lt;br /&gt;1. Purchasing setup&lt;br /&gt;2. Setup required on Oracle Exchange server&lt;br /&gt;3. Setup required for Punchout in Catalog Administrator in iProcurement.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://oracle.anilpassi.com/iprocurement-setups-not-br100.html"&gt;&lt;span style="font-weight: bold;"&gt;Link for article on Oracle iProcurement Setup&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33112393-116454327413920245?l=appstechnical.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appstechnical.blogspot.com/feeds/116454327413920245/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33112393&amp;postID=116454327413920245' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/116454327413920245'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/116454327413920245'/><link rel='alternate' type='text/html' href='http://appstechnical.blogspot.com/2006/11/iprocurement-step-by-step.html' title='iProcurement - Step by Step Implementation'/><author><name>Anil Passi</name><uri>http://www.blogger.com/profile/14859722075898946765</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-33112393.post-116407092563322832</id><published>2006-11-21T01:01:00.000Z</published><updated>2006-11-25T13:07:06.706Z</updated><title type='text'>FND_LOG_MESSAGES Debugging Oracle Apps EBS</title><content type='html'>Please find the article for Debugging in Oracle Applications.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://oracle.anilpassi.com/fnd-debug-log-debugging-oracle-apps-code.html"&gt;&lt;span style="font-weight: bold;"&gt;FND_LOG_MESSAGES [FND Logging] article link&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33112393-116407092563322832?l=appstechnical.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appstechnical.blogspot.com/feeds/116407092563322832/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33112393&amp;postID=116407092563322832' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/116407092563322832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/116407092563322832'/><link rel='alternate' type='text/html' href='http://appstechnical.blogspot.com/2006/11/fndlogmessages-debugging-oracle-apps.html' title='FND_LOG_MESSAGES Debugging Oracle Apps EBS'/><author><name>Anil Passi</name><uri>http://www.blogger.com/profile/14859722075898946765</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-33112393.post-116407085446815625</id><published>2006-11-21T00:58:00.000Z</published><updated>2006-11-21T01:00:54.480Z</updated><title type='text'>Oracle Fusion - Tools for Development in Fusion</title><content type='html'>The future of current conventional Oracle Apps skill sets does not appear to be great in Fusion.&lt;br /&gt;&lt;br /&gt;Please find the comparison of Toolsets in Oracle Fusion in comparison to current Toolsets.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://oracle.anilpassi.com/oracle-fusion-development-tools.html"&gt;&lt;span style="font-weight: bold;"&gt;Oracle Fusion Development Article Here&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33112393-116407085446815625?l=appstechnical.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appstechnical.blogspot.com/feeds/116407085446815625/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33112393&amp;postID=116407085446815625' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/116407085446815625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/116407085446815625'/><link rel='alternate' type='text/html' href='http://appstechnical.blogspot.com/2006/11/oracle-fusion-tools-for-development-in.html' title='Oracle Fusion - Tools for Development in Fusion'/><author><name>Anil Passi</name><uri>http://www.blogger.com/profile/14859722075898946765</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-33112393.post-116368633123930838</id><published>2006-11-16T14:10:00.000Z</published><updated>2006-11-16T14:12:11.256Z</updated><title type='text'>Make a field case insensitive using Forms Personalization</title><content type='html'>In response to query on &lt;a href="http://getappstraining.blogspot.com/2006/10/why-call-it-apps-and-not-oracle-erp.html"&gt;&lt;span style="font-weight: bold;"&gt;Article &lt;/span&gt;&lt;/a&gt;, how to make Field Case Insensitive for Query.&lt;br /&gt;This can be done via forms personalization.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1078/3631/1600/case_insensitive_fp.gif"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/1078/3631/400/case_insensitive_fp.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33112393-116368633123930838?l=appstechnical.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appstechnical.blogspot.com/feeds/116368633123930838/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33112393&amp;postID=116368633123930838' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/116368633123930838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/116368633123930838'/><link rel='alternate' type='text/html' href='http://appstechnical.blogspot.com/2006/11/make-field-case-insensitive-using.html' title='Make a field case insensitive using Forms Personalization'/><author><name>Anil Passi</name><uri>http://www.blogger.com/profile/14859722075898946765</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>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33112393.post-116294230152471004</id><published>2006-11-07T23:30:00.000Z</published><updated>2006-11-07T23:31:41.546Z</updated><title type='text'>Interview Questions for Oracle iProcurement</title><content type='html'>A new article has been added for Oracle  iProcurement Interview questions.&lt;br /&gt;&lt;br /&gt;It can be accessed &lt;span style="font-size:100%;"&gt;from &lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-size:100%;"&gt;Link &lt;/span&gt;&lt;a href="http://oracle.anilpassi.com/iprocurement-interview-questions-in-oracle.html"&gt;&lt;span style="font-weight: bold;"&gt;iProc Interview Questions&lt;/span&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/33112393-116294230152471004?l=appstechnical.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appstechnical.blogspot.com/feeds/116294230152471004/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33112393&amp;postID=116294230152471004' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/116294230152471004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/116294230152471004'/><link rel='alternate' type='text/html' href='http://appstechnical.blogspot.com/2006/11/interview-questions-for-oracle.html' title='Interview Questions for Oracle iProcurement'/><author><name>Anil Passi</name><uri>http://www.blogger.com/profile/14859722075898946765</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-33112393.post-116293960950963764</id><published>2006-11-07T22:45:00.000Z</published><updated>2006-12-25T13:05:46.220Z</updated><title type='text'>New article on FNDLOAD for Web ADI</title><content type='html'>Please find a new article that explains how to use FNDLOAD  to move Web ADI setups from one environment to another.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://oracle.anilpassi.com/fndload-for-oracle-web-adi.html"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Link for FNDLOAD of Web ADI&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33112393-116293960950963764?l=appstechnical.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appstechnical.blogspot.com/feeds/116293960950963764/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33112393&amp;postID=116293960950963764' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/116293960950963764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/116293960950963764'/><link rel='alternate' type='text/html' href='http://appstechnical.blogspot.com/2006/11/new-article-on-fndload-for-web-adi.html' title='New article on FNDLOAD for Web ADI'/><author><name>Anil Passi</name><uri>http://www.blogger.com/profile/14859722075898946765</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-33112393.post-116234000152693264</id><published>2006-11-01T00:10:00.000Z</published><updated>2007-02-06T05:08:14.756Z</updated><title type='text'>Update FND_USER and assign new Responsibility to users via scripts</title><content type='html'>This article explains the below:-&lt;br /&gt;&lt;br /&gt;1. Usage of API to update FND_USER record&lt;br /&gt;2. Usage of API to assign responsibilities to a given FND_USER record&lt;br /&gt;&lt;br /&gt;The APIs covered in this article are fnd_user_pkg &amp;amp; fnd_user_resp_groups_api&lt;br /&gt;&lt;br /&gt;&lt;a href="http://oracle.anilpassi.com/api-to-update-fnd-user-and-add-responsibility.html"&gt;&lt;span style="font-size:130%;"&gt;Article can be accessed from this link&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/a&gt;Thanks,&lt;br /&gt;Anil Passi&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33112393-116234000152693264?l=appstechnical.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appstechnical.blogspot.com/feeds/116234000152693264/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33112393&amp;postID=116234000152693264' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/116234000152693264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/116234000152693264'/><link rel='alternate' type='text/html' href='http://appstechnical.blogspot.com/2006/11/update-fnduser-and-assign-new.html' title='Update FND_USER and assign new Responsibility to users via scripts'/><author><name>Anil Passi</name><uri>http://www.blogger.com/profile/14859722075898946765</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>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33112393.post-116225404117591137</id><published>2006-10-31T00:18:00.000Z</published><updated>2006-10-31T00:20:41.186Z</updated><title type='text'>Override Email Address for Workflow Notifications</title><content type='html'>The steps that required to override Workflow Notification Email Address are listed in article below.&lt;br /&gt;&lt;br /&gt;This is of help when testing Oracle Workflows based applications, so that you can set yourself up to receive all email notifications on Oracle Apps Development or Test environment.&lt;br /&gt;&lt;br /&gt;These steps were tried and tested on 11.5.10 environment.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://oracle.anilpassi.com/workflow-notifications-override-email-address-for-all-notifications.html"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Link for Article&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33112393-116225404117591137?l=appstechnical.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appstechnical.blogspot.com/feeds/116225404117591137/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33112393&amp;postID=116225404117591137' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/116225404117591137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/116225404117591137'/><link rel='alternate' type='text/html' href='http://appstechnical.blogspot.com/2006/10/override-email-address-for-workflow.html' title='Override Email Address for Workflow Notifications'/><author><name>Anil Passi</name><uri>http://www.blogger.com/profile/14859722075898946765</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-33112393.post-116019209971672973</id><published>2006-10-07T03:24:00.000Z</published><updated>2007-01-11T07:59:12.033Z</updated><title type='text'>My Oracle Apps Blogs :- Clarification</title><content type='html'>Dear all,&lt;br /&gt;&lt;br /&gt;Thanks for visiting this blog, without your feedbacks I will have no motivation to work upon the blog.&lt;br /&gt;&lt;br /&gt;Appstechnical happens to be my first blog on Oracle Applications. During the  past  couple of  months, I have received varying types of queries. Some people expect basic information, whereas others request for Advanced information. And some readers simply want to know whats happening in the Oracle Apps market place.&lt;br /&gt;&lt;br /&gt;Hence to keep things simple, I will be running four blogs, each with a distinct purpose.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;a href="http://appstechnical.blogspot.com"&gt;http://appstechnical.blogspot.com&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;This blog is for those who already know Oracle Applications ( Financials or HRMS suite)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;a href="http://oraclethoughts.blogspot.com"&gt;http://oraclethoughts.blogspot.com&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;In this blog I will publish what is happening in the Oracle Apps world from a consultant  point of view.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;a href="http://scripts4oracle.blogspot.com"&gt;http://scripts4oracle.blogspot.com&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;The idea behind this blog is to keep the articles simple without dumping too much source code into an article. Hence, to support any article, the source code link will be provided via scripts4oracle blog.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;a href="http://getappstraining.blogspot.com"&gt;http://getappstraining.blogspot.com&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;Last but not the least. I am amazed by the number of requests that I received whereby peoplel wish to learn Oracle Financials right from Scratch. This blog will be my prime focus during the coming months. Unlike appstechnical, this blog will be for starters of Oracle Applications.&lt;br /&gt;&lt;br /&gt;Thanks,&lt;br /&gt;Anil Passi&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33112393-116019209971672973?l=appstechnical.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appstechnical.blogspot.com/feeds/116019209971672973/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33112393&amp;postID=116019209971672973' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/116019209971672973'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/116019209971672973'/><link rel='alternate' type='text/html' href='http://appstechnical.blogspot.com/2006/10/my-oracle-apps-blogs-clarification.html' title='My Oracle Apps Blogs :- Clarification'/><author><name>Anil Passi</name><uri>http://www.blogger.com/profile/14859722075898946765</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>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33112393.post-116009077177401471</id><published>2006-10-05T23:23:00.000Z</published><updated>2007-01-15T17:11:13.323Z</updated><title type='text'></title><content type='html'>&lt;h3&gt;Thoughts about TCA in R12 and Fusion&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;Yes, Oracle TCA is an excellent design. However it is not without any flaws. During my work experience with differnet clients, I have noted a few that I wish to share.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://oraclethoughts.blogspot.com/2006/10/tca-in-release-12-oracle-fusion-and.html"&gt;Here is the link for Oracle TCA vision in R12 &amp;amp; Fusion&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33112393-116009077177401471?l=appstechnical.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://oraclethoughts.blogspot.com/2006/10/tca-in-release-12-oracle-fusion-and.html' title=''/><link rel='replies' type='application/atom+xml' href='http://appstechnical.blogspot.com/feeds/116009077177401471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33112393&amp;postID=116009077177401471' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/116009077177401471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/116009077177401471'/><link rel='alternate' type='text/html' href='http://appstechnical.blogspot.com/2006/10/thoughts-about-tca-in-r12-and-fusion.html' title=''/><author><name>Anil Passi</name><uri>http://www.blogger.com/profile/14859722075898946765</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>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33112393.post-115965862585586296</id><published>2006-09-30T23:22:00.000Z</published><updated>2006-11-24T08:17:10.343Z</updated><title type='text'>Oracle Workflows Training Lesson Three</title><content type='html'>Welcome to the lesson 3 of the Oracle Workflows Training.&lt;br /&gt;&lt;br /&gt;One of the common business requests for Oracle Workflows has been to track the progress of Workflow at its various stages.&lt;br /&gt;If your business user desires to track the progress of a Workflow, they can do so by viewing the workflow process diagram. However such approach has limitations related to attribute value security of the workflow. Also, that approach is not user friendly, as the workflow may contain various technical but important steps that can confuse end user.&lt;br /&gt;&lt;br /&gt;Here is the deal, we will write a common workflow function, and re-use that workflow function at various stages of the workflow. The workflow function will be attached to a pl/sql procedure that will insert record into a progress table. User can then trace the progress either via a screen on that table or by some report.&lt;br /&gt;&lt;br /&gt;The source code of Oracle Workflow Training Lesson 2 is being carried forward here.&lt;br /&gt;Please click here if you wish to step back for Training Lesson 2 for Oracle Workflow.&lt;br /&gt;&lt;br /&gt;This requirement will be accomplished in following steps:-&lt;br /&gt;1. Create a table to track the progress.&lt;br /&gt;2. Create a Workflow Function to pass parameters to indicate progress.&lt;br /&gt;Note: For each parameter for Workflow function, we will create one function attribute.&lt;br /&gt;3. Write the pl/sql function to insert record into progress table.&lt;br /&gt;&lt;br /&gt;Below are steps for Oracle Workflow Training Lesson 3&lt;br /&gt;Step 1. Open process “Main training process”, and create a new WF Function by right clicking the space between “Set Role” &amp; “SET_VALIDATE_FLAG”&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://oracle.anilpassi.com/images/stories/apps/wf/l3_wf_trn_01.jpg"&gt;&lt;img style="cursor: pointer; width: 320px;" src="http://oracle.anilpassi.com/images/stories/apps/wf/l3_wf_trn_01.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Step 2. Now create the function named LOG_STATUS_OF_ACTION. Assign it a function xxxx_po_wf_training_pkg.log_status_of_action&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1078/3631/1600/L3_wf_trn_02.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/1078/3631/320/L3_wf_trn_02.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Make this function join to “Set Role” and “SET_VALIDATE_FLAG”&lt;br /&gt;&lt;br /&gt;Step 3. In the Oracle Workflow Designer Navigator, as in picture below, right click on Function “Log Action Status for Progress”and select new attribute(as created in Step 2 above).&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1078/3631/1600/L3_wf_trn_03.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/1078/3631/320/L3_wf_trn_03.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Step 4. Create attribute “ACTION_STAGE” ( Progress Action stage )&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1078/3631/1600/L3_wf_trn_04.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/1078/3631/320/L3_wf_trn_04.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Step 5. Create attribute “ACTION_NAME” (Progress Action to indicate status)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1078/3631/1600/L3_wf_trn_05.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/1078/3631/320/L3_wf_trn_05.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Step 6. Drag the Attribute PO_ID from “XX Training Workflow” and drop that into function “Log Action Status for Progress”&lt;br /&gt;As a result of above three steps, you will see something similar to below.&lt;br /&gt;Screenshot after having created 3 Function Attributes&lt;br /&gt;Screenshot of Oracle Workflow after having created 3 Function Attributes&lt;br /&gt;&lt;img title="Screenshot after having created 3 Function Attributes" alt="Screenshot after having created 3 Function Attributes" src="http://oracle.anilpassi.com/images/stories/apps/wf/l3_wf_trn_06.jpg" border="0" height="131" hspace="6" width="250" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Step 7. Now, navigate back to process “Main Training Process”. Double click on WF Function “Log Action Status for Progress”. Click on Tab “Node Attribute”&lt;br /&gt;Select drop down list in section Attribute Name, select “Progress Action Stage”.&lt;br /&gt;Effectively, here we will pass the parameters to the WF Function.&lt;br /&gt;Attribute: Progress Action Stage&lt;br /&gt;Type: Constant&lt;br /&gt;Value: Validation&lt;br /&gt;Click on Apply&lt;br /&gt;&lt;img title="Pass parameter value for Action Stage" alt="Pass parameter value for Action Stage" src="http://oracle.anilpassi.com/images/stories/apps/wf/l3_wf_trn_07.jpg" border="0" height="359" hspace="6" width="622" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Step 8.&lt;br /&gt;Repeat the step 7 above for second attribute&lt;br /&gt;Attribute:  Progress Action to indicate status&lt;br /&gt;Type: Constant&lt;br /&gt;Value: Before Validation&lt;br /&gt;Click On Apply&lt;br /&gt;&lt;img title="Pass parameter value for Action Status" alt="Pass parameter value for Action Status" src="http://oracle.anilpassi.com/images/stories/apps/wf/l3_wf_trn_08.jpg" border="0" height="305" hspace="6" width="448" /&gt;&lt;br /&gt;&lt;br /&gt;Step 9. Do nothing really, leave the PO_ID to its default value. Remember we had dragged this from WF level Attribute. Hence the function attribute will inherit value for PO_IF from Workflow Level.&lt;br /&gt;&lt;img title="PO_ID inherits that value from WF Level Attribute, given that we dragged this from WF level to drop this at Function Level" alt="PO_ID inherits that value from WF Level Attribute, given that we dragged this from WF level to drop this at Function Level" src="http://oracle.anilpassi.com/images/stories/apps/wf/l3_wf_trn_09.jpg" border="0" height="314" hspace="6" width="399" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Step 10. Right click between SET_VALIDATE_FLAG and “PO Notif Info”, to create a new function, but instead of creating new Function, simply pick the function created in “Step 2”. i.e. from drop down list for INTERNAL, select “LOG_STATUS_OF_ACTION”&lt;br /&gt;&lt;img title="Reuse the function after registering progress after validation step in Workflow" alt="Reuse the function after registering progress after validation step in Workflow" src="http://oracle.anilpassi.com/images/stories/apps/wf/l3_wf_trn_10.jpg" border="0" height="356" hspace="6" width="456" /&gt;&lt;br /&gt;&lt;br /&gt;Step 11. You will see the WF Diagram as below&lt;br /&gt;&lt;img title="Definition of workflow after having re-used WF function" alt="Definition of workflow after having re-used WF function" src="http://oracle.anilpassi.com/images/stories/apps/wf/l3_wf_trn_11.jpg" border="0" height="226" hspace="6" width="542" /&gt;&lt;br /&gt;&lt;br /&gt;Step 12.&lt;br /&gt;Now repeat steps 7, 8 &amp; 9.&lt;br /&gt;However, the difference being that  instead of Step 8, this time our values will be&lt;br /&gt;Attribute:  Progress Action to indicate status&lt;br /&gt;Type: Constant&lt;br /&gt;Value: After Validation&lt;br /&gt;Image&lt;br /&gt;&lt;img title="Image" alt="Image" src="http://oracle.anilpassi.com/images/stories/apps/wf/l3_wf_trn_12.jpg" border="0" height="364" hspace="6" width="517" /&gt;&lt;br /&gt;&lt;br /&gt;Step 13. Create the procedure below in package “xxxx_po_wf_training_pkg”&lt;br /&gt;&lt;br /&gt;PROCEDURE log_status_of_action(itemtype IN VARCHAR2&lt;br /&gt;                         ,itemkey  IN VARCHAR2&lt;br /&gt;                         ,actid    IN NUMBER&lt;br /&gt;                         ,funcmode IN VARCHAR2&lt;br /&gt;                         ,RESULT   IN OUT VARCHAR2) IS&lt;br /&gt;n_po_id        INTEGER;&lt;br /&gt;v_action_name  VARCHAR2(200);&lt;br /&gt;v_action_stage VARCHAR2(200);&lt;br /&gt;BEGIN&lt;br /&gt;IF funcmode = 'RUN'&lt;br /&gt;THEN&lt;br /&gt;--get the PO id, as it is after the hyphen of itemkey in this case&lt;br /&gt;n_po_id := get_request_id_from_item_key(itemkey);&lt;br /&gt;&lt;br /&gt;v_action_stage := wf_engine.getactivityattrtext(itemtype =&gt; itemtype&lt;br /&gt;                                              ,itemkey  =&gt; itemkey&lt;br /&gt;                                              ,actid    =&gt; actid&lt;br /&gt;                                              ,aname    =&gt; 'ACTION_STAGE');&lt;br /&gt;&lt;br /&gt;v_action_name := wf_engine.getactivityattrtext(itemtype =&gt; itemtype&lt;br /&gt;                                             ,itemkey  =&gt; itemkey&lt;br /&gt;                                             ,actid    =&gt; actid&lt;br /&gt;                                             ,aname    =&gt; 'ACTION_NAME');&lt;br /&gt;INSERT INTO xx_po_wf_progress&lt;br /&gt; (po_id&lt;br /&gt; ,p_wf_action_stage&lt;br /&gt; ,p_wf_action_name)&lt;br /&gt;VALUES&lt;br /&gt; (n_po_id&lt;br /&gt; ,v_action_stage&lt;br /&gt; ,v_action_name);&lt;br /&gt;END IF;&lt;br /&gt;RESULT := 'COMPLETE:Y';&lt;br /&gt;END log_status_of_action;&lt;br /&gt;&lt;br /&gt;Note that the above pl/sql procedure simply reads the value from parameters passed under Node Attributes. Hence there is no hardcoding in the pl/sql.&lt;br /&gt;By doing the above, you will be able to track the progress of each transaction in a very simple way.&lt;br /&gt;&lt;br /&gt;Now for testing….&lt;br /&gt;Step 14.&lt;br /&gt;Save the wft file in database( Source code at end of this article)&lt;br /&gt;&lt;br /&gt;Step 15.  Initiate workflow as below….&lt;br /&gt;DECLARE&lt;br /&gt;n_new_po_id INTEGER;&lt;br /&gt;BEGIN&lt;br /&gt;SELECT oe_order_headers_s.NEXTVAL INTO n_new_po_id FROM dual;&lt;br /&gt;INSERT INTO xxxx_po_headers&lt;br /&gt;(po_id&lt;br /&gt;,vendor_id&lt;br /&gt;,suggested_vendor_id&lt;br /&gt;,po_description&lt;br /&gt;,po_status&lt;br /&gt;,comments_from_approver&lt;br /&gt;,send_email_to)&lt;br /&gt;VALUES&lt;br /&gt;(n_new_po_id --po_id&lt;br /&gt;,10000 --vendor_id&lt;br /&gt;,NULL --suggested_vendor_id&lt;br /&gt;,'This is PO Training Description' --po_description&lt;br /&gt;,'INITIAL' --po_status&lt;br /&gt;,NULL --comments_from_approver&lt;br /&gt;,' ANILPASSI@GMAIL.comThis email address is being protected from spam bots, you need Javascript enabled to view it ' --send_email_to&lt;br /&gt;);&lt;br /&gt;xxxx_po_wf_training_pkg.start_training_wf(p_po_id =&gt; n_new_po_id);&lt;br /&gt;COMMIT;&lt;br /&gt;END;&lt;br /&gt;&lt;br /&gt;You will then see two records created as below.&lt;br /&gt;&lt;img title="Image" alt="Image" src="http://oracle.anilpassi.com/images/stories/apps/wf/l3_wf_trn_13.jpg" border="0" height="159" hspace="6" width="396" /&gt;&lt;br /&gt;&lt;br /&gt;The workflow progress will be visible as below&lt;img title="Visual representation of Workflow Progress" alt="Visual representation of Workflow Progress" src="http://oracle.anilpassi.com/images/stories/apps/wf/l3_wf_trn_14.jpg" border="0" height="400" hspace="6" width="557" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://scripts4oracle.blogspot.com/2006/09/scripts-for-oracle-workflow-training.html"&gt;The source code for Training Lesson 3 is available here .&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33112393-115965862585586296?l=appstechnical.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appstechnical.blogspot.com/feeds/115965862585586296/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33112393&amp;postID=115965862585586296' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/115965862585586296'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/115965862585586296'/><link rel='alternate' type='text/html' href='http://appstechnical.blogspot.com/2006/09/oracle-workflows-training-lesson-three.html' title='Oracle Workflows Training Lesson Three'/><author><name>Anil Passi</name><uri>http://www.blogger.com/profile/14859722075898946765</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>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33112393.post-115931564573070595</id><published>2006-09-26T23:57:00.000Z</published><updated>2006-11-30T14:35:38.073Z</updated><title type='text'></title><content type='html'>&lt;h3&gt;Training Lesson 2 For Oracle Workflows&lt;/h3&gt;Lesson 2 of Oracle workflows training is now available. Thanks to all those who responded with their feedback for &lt;a href="http://oracle.anilpassi.com/oracle-workflow-training-lesson-1.html"&gt;Workflow Training Lesson 1 (Audio Visual)&lt;/a&gt;&lt;br /&gt;&lt;u&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/u&gt;&lt;span style="font-weight: bold;"&gt;In this lesson we are going to learn:-&lt;/span&gt;&lt;br /&gt;1. How to create new lookups in workflow.&lt;br /&gt;2. How to provide a drop down list in notification to user. User will be select the response(approve or reject) from drop down list.&lt;br /&gt;3. How to make a user enter rejection reason in free text response field within notification.&lt;br /&gt;4. Validate that the value of rejection reason is not null, if user selects rejected. Effectivley this will train you on how to do validations on notification responses using pl/sql.&lt;br /&gt;&lt;br /&gt;To access the second Lesson of Oracle Workflows Training please visit &lt;a href="http://oracle.anilpassi.com/oracle-workflows-training-lesson-2.html"&gt;&lt;span style="font-size:130%;"&gt;Oracle Workflow Training Lesson 2&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;Please feel free to either leave a comment or shoot an email to me. Kindly note that this lesson is in draft version, hence I am happy to add further  explanations if need be.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Upcoming future lessons:   &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Workflow training Lesson 3. &lt;/span&gt;&lt;br /&gt;How to make a generic step in oracle workflow, by passing parameters. This can be useful when you wish to display progress in some screen. This also happens to be a widely used concept in account genrators.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Workflow training lesson 4. &lt;/span&gt;&lt;br /&gt;Raise event to execute an Oracle Workflow Process.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; Workflow training lesson 5. &lt;/span&gt;&lt;br /&gt;How to generate notifications from servlet styled pl/sql&lt;br /&gt;&lt;br /&gt;If you would like to learn some other aspect of Oracle Workflow in Apps, please feel free to contact me.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33112393-115931564573070595?l=appstechnical.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appstechnical.blogspot.com/feeds/115931564573070595/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33112393&amp;postID=115931564573070595' title='17 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/115931564573070595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/115931564573070595'/><link rel='alternate' type='text/html' href='http://appstechnical.blogspot.com/2006/09/training-lesson-2-for-oracle.html' title=''/><author><name>Anil Passi</name><uri>http://www.blogger.com/profile/14859722075898946765</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>17</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33112393.post-115873352812788176</id><published>2006-09-20T06:08:00.000Z</published><updated>2007-01-26T04:41:38.993Z</updated><title type='text'></title><content type='html'>&lt;h3&gt;Oracle GL Interface API General Ledger&lt;br /&gt;&lt;/h3&gt;Please find an API for creating Journals in Oracle General Ledger ( GL ) .&lt;br /&gt;I had developed this API in year 2002, and I have used this for three of my clients.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The idea behind this API is that you do not need to program for:-&lt;/span&gt;&lt;br /&gt;1. Inserts to GL Interface ( GL_INTERFACE )&lt;br /&gt;2. The validations required for Oracle GL Import&lt;br /&gt;3. Submission of GL Import&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Features of this Oracle GL Interface API are:-&lt;/span&gt;&lt;br /&gt;1. It will ensure that the credit equals debit&lt;br /&gt;2. It will submit GL Import when parameter p_submit_gl_interface is Y&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;For the source code for these API's click on the links below:-&lt;/span&gt;&lt;br /&gt;&lt;a href="http://scripts4oracle.blogspot.com/2006/09/oracle-api-for-gl-interface-package_19.html"&gt;&lt;a href="http://scripts4oracle.blogspot.com/2006/09/oracle-api-for-gl-interface-package.html"&gt;GL Import API Package Header&lt;/a&gt;&lt;br /&gt;&lt;/a&gt;&lt;a href="http://scripts4oracle.blogspot.com/2006/09/oracle-api-for-gl-interface-package_19.html"&gt;GL Import API Package Body&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Usage of this API&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(51, 102, 255);font-size:100%;" &gt;&lt;span style="color: rgb(0, 0, 102);"&gt;DECLARE&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;xx_import_xfer_gl_iface_api.transfer_to_gl&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;    (p_sob_id                   =&gt; --Set of Books Id&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;    ,p_batch_header_id          =&gt; --header id of your feed&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;    ,p_trx_header_id            =&gt; --sub header id of your feed&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;                                   --or leave this to be the same as above&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;    ,p_trx_line_id              =&gt; --line id of your feed&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;    ,p_date                     =&gt; --effective date of the journal&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;    ,p_currency_code            =&gt; --currency code of the journal&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;    ,p_amount                   =&gt; --journal line amount&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;    ,p_dr_account               =&gt; --GL CCID of account to be credited&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;    ,p_cr_account               =&gt; --GL CCID of account to be debited&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;    ,p_journal_name             =&gt; --Journal Name to be created&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;    ,p_header_description       =&gt; --Journal Description to be created&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;    ,p_line_description         =&gt; --Journal Line descriptionn&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;    ,p_success_flag             =&gt; b_success_flag--boolean returned to show if errored&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;    ,p_first_record_in_batch    =&gt; v_first_record_in_batch --pass Y for First Record in batch&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;    ,p_submit_gl_interface      =&gt; v_is_last_trx_line --Pass Y submit for last line of batch&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;                                --when Y it will submit the GL Import&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;    ,p_gl_user_je_source_name   =&gt; --user_je_source_name&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;    ,p_gl_user_je_category_name =&gt; --user_je_category_name&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;    ,p_trx_number               =&gt; --trx_number&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;    );&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;END;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;For any suggestions or questions, please post a comment&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33112393-115873352812788176?l=appstechnical.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appstechnical.blogspot.com/feeds/115873352812788176/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33112393&amp;postID=115873352812788176' title='16 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/115873352812788176'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/115873352812788176'/><link rel='alternate' type='text/html' href='http://appstechnical.blogspot.com/2006/09/oracle-gl-interface-api-general-ledger.html' title=''/><author><name>Anil Passi</name><uri>http://www.blogger.com/profile/14859722075898946765</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>16</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33112393.post-115851500469367009</id><published>2006-09-17T17:41:00.000Z</published><updated>2006-11-20T02:07:00.326Z</updated><title type='text'></title><content type='html'>&lt;h3&gt;Account Generator Workflow Example&lt;/h3&gt;&lt;span style="font-style: italic; color: rgb(153, 102, 51);"&gt;&lt;/span&gt;&lt;p class="MsoNormal" style=""&gt;  &lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0cm; text-indent: 0cm;"&gt;&lt;/p&gt;This article illustrates the steps one needs to implement to build an Account Generator Oracle Workflow for eBusiness Suite. For this exercise I am using iProcurement &amp; core Purchasing Account generation workflows. However, the concepts remain the same for all the account generator workflows, regardless of the module.&lt;br /&gt;&lt;br /&gt;Assume that we have two Accounting Flexfield segments in Oracle General Ledger:-&lt;br /&gt;1.            Company Account&lt;br /&gt;2.            Cost Centre&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Important:&lt;/span&gt; In real life, you will have more than mere two segments in the GL Accounting Flexfield. These pseudo Two GL Segments are for demo purposes only.&lt;br /&gt;Assuming that you have implemented Oracle Projects Accounting, the Requisition or a Purchase Order can either be Project based or can be Non Project based. For this exercise, for simplicity, lets restrict ourselves to Project Based Requisition.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Lets assume that the business requirement for Project Based Requisitions is:-&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Company Segment for Projects based Requisition&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Company Account Segment will be Defaulted to a constant value of GO4GOLD&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 204);"&gt;&lt;span style="color: rgb(102, 51, 102);"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Cost Centre Segment for Projects based Requisition&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;This will be defaulted from the Attribute1 against Primary Organization for Project Task .&lt;br /&gt;&lt;br /&gt;OK, here we go with all the steps that are required to build such an Account Generator Workflow.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 1&lt;/span&gt;&lt;br /&gt;Open the account generator Workflow&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1078/3631/1600/wf_a_account_gen_open_workflow.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/1078/3631/320/wf_a_account_gen_open_workflow.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; Step 2.&lt;/span&gt;&lt;br /&gt;Assign default value to Company segment.&lt;br /&gt;&lt;br /&gt;Double click to open the process “Build Expense Project Charge Account”&lt;br /&gt;After the Start Icon, Right Click to create a new Function.&lt;br /&gt;As in screenshot below, in “Item Type” field, select “Standard Flexfield Workflow” from the drop down list. In the Display Name select “Assign Value to Segment” and click on OK.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1078/3631/1600/wf_a_account_gen_default_seg_1_1.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/1078/3631/320/wf_a_account_gen_default_seg_1_1.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;By doing the above step, we have just created a workflow Function that is capable of assigning a desired value to GL Flexfield Segment. Now we need to configure this Function further, so that it knows the Segment upon which it operates, and also the default value that is assigned to the segment.&lt;br /&gt;As per our business requirement, we need to default a constant value of GO4GOLD for our Segment1 ( Company Segment ) . For this, click on the function created above, and click on the Node Attributes.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1078/3631/1600/wf_a_Account_Gen_Default_Seg_1_2.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/1078/3631/320/wf_a_Account_Gen_Default_Seg_1_2.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Do the steps, as in above screenshot.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; Step 3 ( Part a).&lt;/span&gt;&lt;br /&gt;Default the cost centre from Attribute1 against Primary Organization for Project Task.  In the Part-a of this step, we will assign the Cost Centre to an Attribute Named “TEMP_CC_VALUE”.&lt;br /&gt;&lt;br /&gt;For this, we can define a new function named “Assign Cost Centre to Attribute”, by right clicking on the process.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1078/3631/1600/wf_a_account_gen_default_Seg_2_1.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/1078/3631/320/wf_a_account_gen_default_Seg_2_1.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;This function calls PL/SQL XX_account_generator_pkg.set_cost_centre_attribute&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);font-size:100%;" &gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;br /&gt;PROCEDURE set_cost_centre_attribute&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt; (&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;   itemtype IN VARCHAR2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;  ,itemkey  IN VARCHAR2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;  ,actid    IN NUMBER&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;  ,funcmode IN VARCHAR2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;  ,RESULT   OUT VARCHAR2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt; ) AS&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;   CURSOR c_get_cc(p_org_id IN NUMBER) IS&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;     SELECT attribute1 org_cc&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;     FROM   hr_all_organization_units hrou&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;     WHERE  hrou.organization_id = p_org_id;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;   rec_get_cc c_get_cc%ROWTYPE;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;   IF NOT (funcmode = 'RUN')&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;   THEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;     RETURN;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;   END IF;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;   BEGIN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;--First nullify the value, so that accidentaly it does not get used in the next step.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;     wf_engine.setitemattrtext(itemtype, itemkey, 'TEMP_CC_VALUE', '');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;     OPEN c_get_cc(wf_engine.getactivityattrnumber(itemtype&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;                                                  ,itemkey&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;                                                  ,actid&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;                                                  ,'EXPENDITURE_ORGANIZATION_ID'));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;     FETCH c_get_cc&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;       INTO rec_get_cc;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;     IF c_get_cc%NOTFOUND&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;     THEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;       RESULT := 'COMPLETE:FAILURE';&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;     ELSE&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;       wf_engine.setitemattrtext(itemtype&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;                                ,itemkey&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;                                ,'TEMP_CC_VALUE'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;                                ,rec_get_cc.org_cc);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;       RESULT := 'COMPLETE:SUCCESS';&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;     END IF;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;     CLOSE c_get_cc;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;     RETURN;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;   END;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;EXCEPTION&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;   WHEN OTHERS THEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;     -- Record error using generic error message routine for debugging and&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;     -- raise it&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;     wf_core.CONTEXT(pkg_name  =&gt; 'ic_account_generator_pkg'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;                    ,proc_name =&gt; 'GMS_GET_CC'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;                    ,arg5      =&gt; NULL);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;     RAISE;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 153);"&gt;END set_cost_centre_attribute;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;In the above function, we are fetching the Attribute1 against the Organization Record. The organization_id is being passed as a parameter to the Newly defined Function( as in screenshot below).&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1078/3631/1600/wf_a_account_gen_default_seg_2_2.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/1078/3631/320/wf_a_account_gen_default_seg_2_2.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;&lt;br /&gt;&lt;br /&gt;Step 3 ( Part b).&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;In this part of the step, we will assign the value in Attribute “TEMP_CC_VALUE” to the  Segment2 ( i.e. the Cost Centre). This is done as per the screenshot below.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1078/3631/1600/wf_a_account_gen_default_seg_2_3.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/1078/3631/320/wf_a_account_gen_default_seg_2_3.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Step 4.   &lt;/span&gt;&lt;span style="font-size:100%;"&gt;Check to see if the Code Combination is Complete&lt;br /&gt;&lt;br /&gt;Right click to create a function. From Item Type dropdown list, select “Standard Flexfield Workflow”. In the Display Name dropdown list, select “Is Code Combination Complete?”&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1078/3631/1600/wf_a_account_gen_default_step4_1.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/1078/3631/320/wf_a_account_gen_default_step4_1.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Next, click on Node Attributes, and assign a value of TRUE to “Check only required Segments”.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1078/3631/1600/wf_a_account_gen_default_step4_2.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/1078/3631/320/wf_a_account_gen_default_step4_2.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt; Step 5.&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;By implementing the above steps, we have been able to complete the Account Generation of our two-segment Flexfield using Oracle Workflow Account Generator.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1078/3631/1600/wf_a_account_gen_default_step5_1.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/1078/3631/320/wf_a_account_gen_default_step5_1.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1078/3631/1600/wf_a_account_gen_default_step5_2.0.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/1078/3631/320/wf_a_account_gen_default_step5_2.0.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The last and final step will already be there within the Pre-Installed Account Generation. This workflow step validates the Code Combination Id, for the Oracle’s Security Rules that are defined in General Ledger, against users responsibility. For reference purposes this is pasted below.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A final note, for debugging the Account Generator workflow. Account Generator workflows are designed to run efficiently and quickly, hence they always in synchronous mode. This means that no inserts are made into the Oracle Workflow tables when generating the accounting.&lt;br /&gt;Hence by default it is not possible to debug the Account Generator workflow using Status Monitor screen in Oracle Workflow.&lt;br /&gt;However, Oracle delivers a profile option named “Account Generator:Run in Debug Mode”. Setting this profile to Yes, will make Account Genration processes insert records in workflow tables. Hence by setting this profile to Yes, you will be able to debug your account generation workflow. Further debugging of FND_FLEX API’s is made possible by enabling the FND Logging.&lt;a&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/33112393-115851500469367009?l=appstechnical.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appstechnical.blogspot.com/feeds/115851500469367009/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33112393&amp;postID=115851500469367009' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/115851500469367009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/115851500469367009'/><link rel='alternate' type='text/html' href='http://appstechnical.blogspot.com/2006/09/account-generator-workflow-example.html' title=''/><author><name>Anil Passi</name><uri>http://www.blogger.com/profile/14859722075898946765</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>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33112393.post-115843459271169759</id><published>2006-09-16T19:21:00.000Z</published><updated>2007-02-22T05:30:01.380Z</updated><title type='text'></title><content type='html'>&lt;h3&gt;Apps Technical Interview Questions&lt;/h3&gt;&lt;span style="font-size:100%;"&gt;Please note that most of the Oracle apps interview questions listed here are technical in nature. These interview questions span various  Oracle Apps modules and also FND &amp; OA Framework. For Oracle HRMS and Payroll interview questions please visit &lt;a href="http://oracle.anilpassi.com/oracle-hrms-payroll-interview-questions.html"&gt;HRMS Payroll Interview Questions .&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;strong&gt;Question: &lt;/strong&gt;Does Oracle 10g support rule based optimization?&lt;br /&gt;&lt;strong&gt;Answer: &lt;/strong&gt;The official stance is that RBO is no longer supported by 10g. &lt;/span&gt;&lt;/p&gt;      &lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question&lt;/span&gt;&lt;span style="font-size:100%;"&gt;: Does oracle support partitioning of tables in Oracle Apps?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer&lt;/span&gt;&lt;span style="font-size:100%;"&gt;: Yes, Oracle does support partitioning of tables in Oracle Applications. There are several implementations that partition on GL_BALANCES. However your client must buy licenses to if they desire to partition tables. To avoid the cost of licensing you may suggest the clients may decide to permanently close their older GL Periods, such that historical records can be archived.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Note&lt;/span&gt;&lt;span style="font-size:100%;"&gt;: Before running the archival process the second time, you must clear down the archive table GL_ARCHIVE_BALANCES (don’t forget to export archive data to a tape).                    &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question&lt;/span&gt;&lt;span style="font-size:100%;"&gt;: What will be your partitioning strategy on GL_BALANCES? Your views please?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer&lt;/span&gt;&lt;span style="font-size:100%;"&gt;: This really depends upon how many periods are regularly reported upon, how many periods are left open etc. You can then decide to partition on period_name, or period ranges, or on the status of the GL Period.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question&lt;/span&gt;&lt;span style="font-size:100%;"&gt;: Does Oracle support running of gather stats on SYS schema in Oracle Apps?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer&lt;/span&gt;&lt;span style="font-size:100%;"&gt;: If your Oracle Applications instance is on 10g, then you can decide to run stats for SYS schema.  This can be done by exec dbms_stats.delete_schema_stats('SYS');&lt;br /&gt;Alternately using command dbms_stats.gather_schema_stats('SYS',cascade=&amp;gt;TRUE,degree=&amp;gt;20);&lt;br /&gt;I will prefer the former with default values.&lt;br /&gt;If you wish to delete the stats for SYS use exec dbms_stats.gather_schema_stats('SYS');&lt;br /&gt;You can schedule a dbms_job for running stats for SYS schema.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question&lt;/span&gt;&lt;span style="font-size:100%;"&gt;: Can you use concurrent program "Gather Schema Statistics" to gather stats on sys schema in oracle apps?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer&lt;/span&gt;&lt;span style="font-size:100%;"&gt;: No, "Gather Schema Statistics" has no parameters for SYS schema.  Please use dbms_job.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question&lt;/span&gt;&lt;span style="font-size:100%;"&gt;: Which table is used to provide drill down from Oracle GL into sub-ledger?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer&lt;/span&gt;&lt;span style="font-size:100%;"&gt;: GL_IMPORT_REFERENCES&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question&lt;/span&gt;&lt;span style="font-size:100%;"&gt;: What is the significance of profile option “Node Trust Level” in Oracle Apps.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer&lt;/span&gt;&lt;span style="font-size:100%;"&gt;: If this profile option is set to a value of external against a server, then it signifies that the specific mid-tier is External i.e. it will be exposed to the www. In other words this server is not within the firewall of your client. The idea behind this profile option is to flag such middle-tier so that special restrictions can be applied against its security, which means a very restricted set of responsibilities will be available from such Middle-Tier.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question&lt;/span&gt;&lt;span style="font-size:100%;"&gt;: What is the significance of profile option “Responsibility Trust Level”.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer&lt;/span&gt;&lt;span style="font-size:100%;"&gt;: In order to make a responsibility accessible from an external web tier, you must set profile option “Responsibility Trust Level” at responsibility level to “External”. Only those responsibilities that have this profile option against them will be accessible from External Middle tiers.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;: &lt;/span&gt;&lt;span style="font-size:100%;"&gt;What else can you suggest to restrict the access to screens from external web tiers?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer&lt;/span&gt;&lt;span style="font-size:100%;"&gt;: You may use URL filtering within Apache.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question&lt;/span&gt;&lt;span style="font-size:100%;"&gt;: What is the role of Document Manager in Oracle Purchasing?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer&lt;/span&gt;&lt;span style="font-size:100%;"&gt;: POXCON is an immediate concurrent program. It receives pipe signal from the application when a request is made for approval/reservations/receipts.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question&lt;/span&gt;&lt;span style="font-size:100%;"&gt;: How to debug a document manager in Oracle Apps?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer&lt;/span&gt;&lt;span style="font-size:100%;"&gt;: Document manger runs within the concurrent manager in Oracle Applications.  When an application uses a Document Manager, it sends a pipe signal which is picked up by the document manager.&lt;br /&gt;There are two mechanisms by which to trace the document manager&lt;br /&gt;1. Set the debugging on by using profile option&lt;br /&gt; STEP 1. Set profile option "Concurrent:Debug Flags" to TCTM1&lt;br /&gt;  This profile should only generate debugs when set at Site level(I think, as I have only tried site), because Document Manager runs     in a different session.&lt;br /&gt;  STEP 2. Bounce the Document Managers&lt;br /&gt;  STEP 3. Retry the Workflow to generate debugs.&lt;br /&gt;  STEP 4. Reset profile option "Concurrent:Debug Flags" to blank&lt;br /&gt; STEP 5. have a look at debug information in table fnd_concurrent_debug_info&lt;br /&gt;&lt;br /&gt;2. Enable tracing for the document managers&lt;br /&gt;This can be done by setting profile option “Initialization SQL Statement – Custom” against your username before reproducing the issue. The value of this profile will be set so as to enable trace using event 10046, level 12.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question&lt;/span&gt;&lt;span style="font-size:100%;"&gt;: You have written a Java Concurrent Program in Oracle Apps. You want to modify the CLASSPATH such that new class CLASSPATH is effective just for this program.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer&lt;/span&gt;&lt;span style="font-size:100%;"&gt;: In the options field of the concurrent program you can enter something similar to below.&lt;br /&gt;-cp &amp;lt;your custom lib pathused by Java Conc Prog&amp;gt; :/home/xxvisiondev/XXDEVDB/comn/java/appsborg.zip:/home/xxvisiondev/XXDEVDB/comn/java  &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question&lt;/span&gt;&lt;span style="font-size:100%;"&gt;: In self service, you wish to change the background color and the foreground text of the OA Framework screens to meet your corporate standards. How will you do it?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer&lt;/span&gt;&lt;span style="font-size:100%;"&gt;: You will need to do the below steps&lt;br /&gt;a….Go to Mid Tier, and open $OA_HTML/cabo/styles/custom.xss&lt;br /&gt;b…Enter below text( change colours as needed)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;style name="DarkBackground"&amp;gt;&lt;br /&gt;&amp;lt;property name="background-color"&amp;gt;#000066&amp;lt;/property&amp;gt;&lt;br /&gt;&amp;lt;/style&amp;gt;&lt;br /&gt;&amp;lt;style name="TextForeground"&amp;gt;&lt;br /&gt;&amp;lt;property name="color"&amp;gt;#0000FF&amp;lt;/property&amp;gt;&lt;br /&gt;&amp;lt;/style&amp;gt;&lt;br /&gt;c… cd $OA_HTML/cabo/styles/cache&lt;br /&gt;d…Take a backup of all the css files.&lt;br /&gt;e…Delete all the files of following pattern oracle-desktop*.css&lt;br /&gt;The idea here is to delete the cache. Next time when you logon to Oracle Apps Self Service, the Framework will rebuild the css file if found missing for your browser.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question&lt;/span&gt;&lt;span style="font-size:100%;"&gt;: In OA Framework Self-Service screen, you wish to disable a tab. How will you do it?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer&lt;/span&gt;&lt;span style="font-size:100%;"&gt;: Generally speaking, the tabs on a OA Framework page are nothing but the SubMenus. By entering menu exclusion against the responsibility, you can remove the tab from self service page.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question&lt;/span&gt;&lt;span style="font-size:100%;"&gt;: How will you open a bc4j package in jdeveloper?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer&lt;/span&gt;&lt;span style="font-size:100%;"&gt;: Oracle ships a file named server.xml with each bc4j package. You will need to ftp that file alongside other bc4j objects(VO’s, EO’s, AM, Classes etc).&lt;br /&gt;Opening the server.xml will load the complete package starting from AM(application module). This is a mandatory step when building Extensions to framework.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question&lt;/span&gt;&lt;span style="font-size:100%;"&gt;: Can you extend and substitue a root AM ( Application Module) in OA Framework using JDeveloper.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer&lt;/span&gt;&lt;span style="font-size:100%;"&gt;: You can extend the AM in jDeveloper, but it doesn’t work( at least it didn’t work in 11.5.9). I am hopeful that Oracle will deliver a solution to this in the future.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question&lt;/span&gt;&lt;span style="font-size:100%;"&gt;: In a workflow notification, you have a free text response field where the user enters the Vendor Number for the new vendor. You want to validate the value entered in the notification response field upon the submission of a response. How will you do it?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer&lt;/span&gt;&lt;span style="font-size:100%;"&gt;: You will need to attach a post notification function to the Workflow Notification.&lt;br /&gt;The PL/SQL code will look similar to below:-&lt;br /&gt;The below code will display an error in the notification when user attempts to create a Duplicate Vendor Number.&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);font-size:100%;" &gt;PROCEDURE validate_response_from_notif&lt;br /&gt;(&lt;br /&gt;itemtype IN VARCHAR2&lt;br /&gt;,itemkey  IN VARCHAR2&lt;br /&gt;,actid    IN NUMBER&lt;br /&gt;,funcmode IN VARCHAR2&lt;br /&gt;,RESULT   IN OUT VARCHAR2&lt;br /&gt;) IS&lt;br /&gt;l_nid                      NUMBER;&lt;br /&gt;l_activity_result_code     VARCHAR2(200);&lt;br /&gt;v_newly_entered_vendor_num VARCHAR2(50);&lt;br /&gt;CURSOR c_get_response_for_new_vendor IS&lt;br /&gt;SELECT wl.lookup_code&lt;br /&gt;FROM   wf_notification_attributes wna&lt;br /&gt;,wf_notifications           wn&lt;br /&gt;,wf_message_attributes_vl   wma&lt;br /&gt;,wf_lookups                 wl&lt;br /&gt;WHERE  wna.notification_id = l_nid&lt;br /&gt;AND    wna.notification_id = wn.notification_id&lt;br /&gt;AND    wn.message_name = wma.message_name&lt;br /&gt;AND    wn.message_type = wma.message_type&lt;br /&gt;AND    wna.NAME = wma.NAME&lt;br /&gt;AND    wma.SUBTYPE = 'RESPOND'&lt;br /&gt;AND    wma.format = wl.lookup_type&lt;br /&gt;AND    wna.text_value = wl.lookup_code&lt;br /&gt;AND    wma.TYPE = 'LOOKUP'&lt;br /&gt;AND    decode(wma.NAME, 'RESULT', 'RESULT', 'NORESULT') = 'RESULT';&lt;br /&gt;BEGIN&lt;br /&gt;IF (funcmode IN ('RESPOND'))&lt;br /&gt;THEN&lt;br /&gt;l_nid := wf_engine.context_nid;&lt;br /&gt;OPEN c_get_response_for_new_vendor;&lt;br /&gt;FETCH c_get_response_for_new_vendor&lt;br /&gt;INTO l_activity_result_code;&lt;br /&gt;CLOSE c_get_response_for_new_vendor;&lt;br /&gt;v_newly_entered_vendor_num := wf_notification.getattrtext(l_nid,'NEWLY_ENTERED_VENDOR_NUM_4_PO');&lt;br /&gt;IF l_activity_result_code = 'NEW_VENDOR'&lt;br /&gt;AND does_vendor_exist(p_vendor =&gt; v_newly_entered_vendor_num)&lt;br /&gt;THEN&lt;br /&gt;RESULT := 'ERROR: VendorNumber you entered already exists';&lt;br /&gt;RETURN;&lt;br /&gt;END IF;&lt;br /&gt;END IF;&lt;br /&gt;EXCEPTION&lt;br /&gt;WHEN OTHERS THEN&lt;br /&gt;RESULT := SQLERRM;&lt;br /&gt;END validate_response_from_notif;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question&lt;/span&gt;&lt;span style="font-size:100%;"&gt;: How to make concurrent program end with warning?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer&lt;/span&gt;&lt;span style="font-size:100%;"&gt;: If the concurrent program is of type PL/SQL, you can assign a value of 1 to the “retcode” OUT Parameter.&lt;br /&gt;For a Java Concurrent program, use the code similar to belo&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;w&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;ReqCompletion lRC;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;//get handle on request completion object for reporting status&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;lRC = pCpContext.getReqCompletion();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;lRC.setCompletion(ReqCompletion.WARNING, "WARNING");&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question&lt;/span&gt;&lt;span style="font-size:100%;"&gt;: How do you link a Host type concurrent program to Concurrent Manager?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer&lt;/span&gt;&lt;span style="font-size:100%;"&gt;: Assuming your executable script is LOADPO.prog, then use the commands below&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);font-size:100%;" &gt;cd $XXPO_TOP/bin&lt;br /&gt;ln -s $FND_TOP/bin/fndcpesr $XXPO_TOP/bin/LOADPO&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question&lt;/span&gt;&lt;span style="font-size:100%;"&gt;: How do you know if a specific Oracle patch has been applied in apps to your environment.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer&lt;/span&gt;&lt;span style="font-size:100%;"&gt;: Use table ad_bugs, in which column bug_number is the patch number.&lt;br /&gt;SELECT bug_number&lt;br /&gt;,to_char(creation_date, 'DD-MON-YYYY HH24:MI:SS') dated&lt;br /&gt;FROM   apps.ad_bugs&lt;br /&gt;WHERE  bug_number = TRIM('&amp;bug_number') ;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question: &lt;/span&gt;&lt;span style="font-size:100%;"&gt;How do you send a particular Oracle Apps Workflow Activity/Function within a workflow process into background mode.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer&lt;/span&gt;&lt;span style="font-size:100%;"&gt;: If cost of the workflow activity is greater than 50, then the workflow activity will be processed in background mode only, and it won’t be processed in online mode.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question&lt;/span&gt;&lt;span style="font-size:100%;"&gt;: What are the various ways to kick-off a workflow&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer&lt;/span&gt;&lt;span style="font-size:100%;"&gt;: You can eiter use wf_engine.start_process or you can attach a runnable process such ghat it subscribes to a workflow event.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question&lt;/span&gt;&lt;span style="font-size:100%;"&gt;: When starting (kicking off) an oracle workflow process, how do you ensure that it happens in a background mode?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer:&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;--a)if initiating the process using start_process, do the below&lt;br /&gt;  wf_engine.threshold := -1;&lt;br /&gt;  wf_engine.createprocess(l_itemtype,l_itemkey);&lt;br /&gt;  wf_engine.startprocess(l_itemtype, l_itemkey)&lt;br /&gt;--B) When initiating the workflow process through an event subscription, set the Execution Condition Phase to be equal to or above 100 for it to be executed by background process.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question &lt;/span&gt;&lt;span style="font-size:100%;"&gt;:On 10g, how will you use awr?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer&lt;/span&gt;&lt;span style="font-size:100%;"&gt;: By running below scripts. These are both the same scripts, but with differing parameters.&lt;br /&gt;$ORACLE_HOME/rdbms/admin/awrrpt.sql&lt;br /&gt;$ORACLE_HOME/rdbms/admin/awrrpti.sql&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question &lt;/span&gt;&lt;span style="font-size:100%;"&gt;: How will you configure Apache to run in Debug mode, specifically usefull when debugging iProcurement ( prior to 11.5.10).&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer&lt;/span&gt;&lt;span style="font-size:100%;"&gt;: After 11.5.10, FND Logging  can be used for debugging Oracle iProcurement.&lt;br /&gt;Prior to 11.5.10&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);font-size:100%;" &gt; ----STEPS IN A NUTSHELL-----&lt;br /&gt;cd $ORACLE_HOME/../iAS/Apache&lt;br /&gt;vi $ORACLE_HOME/../iAS/Apache/Jserv/etc/ssp_init.txt&lt;br /&gt;  DebugOutput=/home/&lt;sid&gt;/ora9/iAS/Apache/Apache/logs/debug.log&lt;br /&gt;  DebugLevel=5&lt;br /&gt;  DebugSwitch=ON&lt;br /&gt;&lt;br /&gt;vi $ORACLE_HOME/../iAS/Apache/Jserv/etc/jserv.conf&lt;br /&gt;  ApJServLogLevel debug&lt;br /&gt;&lt;br /&gt;vi $ORACLE_HOME/../iAS/Apache/Jserv/etc/jserv.properties&lt;br /&gt;  log=true&lt;/sid&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question&lt;/span&gt;&lt;span style="font-size:100%;"&gt;: How will you add a new column to a List Of Values ( LOV ) in Oracle Applications Framework? Can this be done without customization?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer&lt;/span&gt;&lt;span style="font-size:100%;"&gt;: Yes, this can be done without customization, i.e. by using OA Framework Extension coupled with Personalization. Implement the following Steps :-&lt;br /&gt;a) Extend the VO ( View Object ), to implement the new SQL required to support the LOV.&lt;br /&gt;b) Substitute the base VO, by using jpximport [ similar to as explained in Link ]&lt;br /&gt;c) Personalize the LOV Region, by clicking on Add New Item. While adding the new Item, you will cross reference the newly added column to VO.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question&lt;/span&gt;&lt;span style="font-size:100%;"&gt;: Can you do fnd_request.submit_request from SQL Plus in Oracle?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer&lt;/span&gt;&lt;span style="font-size:100%;"&gt;: You will need to initialize the global variables first using fnd_global.initialize&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);font-size:100%;" &gt;DECLARE&lt;br /&gt;  v_session_id INTEGER := userenv('sessionid') ;&lt;br /&gt;BEGIN&lt;br /&gt;fnd_global.initialize&lt;br /&gt;(&lt;br /&gt;SESSION_ID        =&gt;    v_session_id&lt;br /&gt;,USER_ID                =&gt;    "your user id from fnd_user.user_id"&lt;br /&gt;,RESP_ID                =&gt;    "You may use Examine from the screen PROFILE/RESP_ID"&lt;br /&gt;,RESP_APPL_ID           =&gt;    "You may use Examine from the screen PROFILE/RESP_APPL_ID"&lt;br /&gt;,SECURITY_GROUP_ID      =&gt;    0    &lt;br /&gt;,SITE_ID                =&gt;    NULL      &lt;br /&gt;,LOGIN_ID               =&gt;    3115003--Any number here&lt;br /&gt;,CONC_LOGIN_ID          =&gt;    NULL              &lt;br /&gt;,PROG_APPL_ID           =&gt;    NULL              &lt;br /&gt;,CONC_PROGRAM_ID        =&gt;    NULL              &lt;br /&gt;,CONC_REQUEST_ID        =&gt;    NULL              &lt;br /&gt;,CONC_PRIORITY_REQUEST  =&gt;    NULL              &lt;br /&gt;) ;&lt;br /&gt;commit ;&lt;br /&gt;END ;&lt;br /&gt;/&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;Optionally you may use fnd_global.apps_initialize, which internally calls fnd_global.initialize&lt;br /&gt;fnd_global.apps_initialize(user_id =&gt; :user_id,&lt;br /&gt;      resp_id =&gt; :resp_id,&lt;br /&gt;      resp_appl_id =&gt; :resp_appl_id,&lt;br /&gt;      security_group_id =&gt; :security_group_id,&lt;br /&gt;      server_id =&gt; :server_id);&lt;br /&gt;&lt;br /&gt;By doing the above, your global variables upon which Concurrent Managers depend upon will be populated. This will be equivalent to logging into Oracle Apps and submitting the concurrent request from a responsibility.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; You are told that the certain steps in the Oracle Apps Form/Screen are running slow, and you are asked to tune it. How do you go about it.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; First thing to do is to enable trace. Preferably, enable the trace with Bind Variables. This can be done by selecting menu Help/Diagnostics/Trace/”Trace With Binds and Wait”&lt;br /&gt;Internally Oracle Forms issues a statement similar to below:-&lt;br /&gt;alter session set events='10046 trace name context forever, level 12' ;&lt;br /&gt;&lt;br /&gt;This will enable the trace with Bind Variable values being shown in the trace file.&lt;br /&gt;The screen in Oracle Apps will also provide the name of the trace file which is located in directly identified by&lt;br /&gt;select value from v$parameter where name like '%us%r%dump%'&lt;br /&gt;Doing a tkprof with explain plan option, reviewing plans  and stats in trace file can help identify the slow performing SQL.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; What is the difference between running Gather Stats and “Program – Optimizer[RGOPTM]” in Oracle General Ledger?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; “Gather Stats” will simply gather the stats against existing tables, indexes etc. However Gather Stats does not create any new indexes. But “Program – Optimizer[RGOPTM]” can create indexes on GL_CODE_COMBINATIONS, provided accounting segment has the indexed flag enabled,&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; You have written a piece of code in POR_CUSTOM_PKG for Oracle iProcurement, but its not taking any effect? What may be the reason?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; Depending upon which procedure in POR_CUSTOM_PKG has been programmed, one or more of the below profile options must be set to Yes&lt;br /&gt;POR: Enable Req Header Customization&lt;br /&gt;POR: Enable Requisition Line Customization&lt;br /&gt;POR: Enable Req Distribution Customization&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; What is the key benefit of punching out to suppliers catalogs rather than loading their catalogs locally in Oracle iProcurement?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; Punchout has several advantages like, Catalogs don’t need to be loaded locally saves space on your system. You can get up-to-date list of catalogs by punching out and also you get the benefit of up-to-date pricing information on vendor items.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; Does oracle have a test environment on exchange?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; http://testexchange.oracle.com&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; Does Oracle Grants use its own schema or does it uses Oracle Project Accounting schema?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; Although Oracle Grants has its own schema i.e. GMS, it reuses many of the tables with in Oracle Projects Schema like PA_PROJECTS_ALL, PA_EXPENDITURE_ITEMS_ALL, PA_EXPENDITURE_TYPES etc.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; How to make an Oracle Report Type concurrent program produce an excel friendly output?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; Comma can be concatenated between the column values, however a better option is to create tab delimited file, as it takes care of commas within the string.&lt;br /&gt;For this, use SQL similar to below in the report&lt;br /&gt;select 'a'  || chr(9) || 'b' from dual;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; What are the settings needed for printing bitmap reports?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; Get your DBA to configure two files i.e. uiprint.txt &amp; default.ppd&lt;br /&gt;For details, refer to Metalink Note 189708.1&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; For a PL/SQL based concurrent program do you have to issue a commit at the end?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; The concurrent program runs within its own new session. In APPS, the default database setting enforces a commit at the end of each session. Hence no explicit COMMIT is required.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; What is the best  way to add debugging to the code in apps?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; Use fnd_log.string , i.e. FND Logging. Behind the scenes Oracles FND Logging uses autonomous transaction to insert records in a table named fnd_log_messages.&lt;br /&gt;For example&lt;br /&gt;DECLARE&lt;br /&gt;BEGIN&lt;br /&gt;fnd_log.STRING(log_level =&gt; fnd_log.level_statement&lt;br /&gt;,module    =&gt; 'xxxx ' || 'pkg/procedurename '&lt;br /&gt;,message   =&gt; 'your debug message here');&lt;br /&gt;END ;&lt;br /&gt;&lt;br /&gt;Three profile options effecting FND Logging are&lt;br /&gt;FND: Debug Log Mode FND: Debug Log Enabled FND: Debug Log Module&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; If you wish to trigger of an update or insert in bespoke table or take some action in response to a TCA record being created or modified, how would you do it? Will you write a database triggers on TCA Tables?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; There are various pre-defined Events that are invoked from the Oracle TCA API’s.&lt;br /&gt;TCA was Oracle’s first initiative towards a fully API based approach, which means the screen and the processes all use the same set of APIs for doing same task.&lt;br /&gt;In order to take an action when these events occur, you can subscribe a custom PL/SQL procedure or a Custom Workflow to these events. Some of the important TCA events are listed below:-&lt;br /&gt;oracle.apps.ar.hz.ContactPoint.update oracle.apps.ar.hz.CustAccount.create oracle.apps.ar.hz.CustAccount.update oracle.apps.ar.hz.CustAcctSite.create oracle.apps.ar.hz.CustAcctSite.update oracle.apps.ar.hz.CustAcctSiteUse.create oracle.apps.ar.hz.CustAcctSiteUse.update oracle.apps.ar.hz.Location.create oracle.apps.ar.hz.Location.update oracle.apps.ar.hz.Organization.create oracle.apps.ar.hz.Organization.update oracle.apps.ar.hz.PartySite.create oracle.apps.ar.hz.PartySite.update oracle.apps.ar.hz.PartySiteUse.create oracle.apps.ar.hz.PartySiteUse.update oracle.apps.ar.hz.Person.create&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; In Oracle OA Framework, is the MDS page/document definition stored in database or in the file  system?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; The MDS document details are loaded into database, in the following sets of tables.&lt;br /&gt;JDR_ATTRIBUTES&lt;br /&gt;JDR_ATTRIBUTES_TRANS&lt;br /&gt;JDR_COMPONENTS&lt;br /&gt;JDR_PATHS&lt;br /&gt;The Document is loaded via XMLImporter, as detailed in link&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; In a Oracle Report data group, you have a “data link” between two queries. How do you ensure that the data link is made Outer Joined?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; The data link is an Outer Join by default.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; How does substitution work in OA Framework?&lt;br /&gt;What are the benefits of using Substitution in OA Framework?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; Based on the user that has logged into OA Framework, MDS defines the context of the logged in user. Based upon this logged in context, all applicable personalization are applied by MDS. Given that substitutions are loaded as site level personalizations, MDS applies the&lt;br /&gt;substituted BC4J objects along with the personalizations. The above listed steps occur as soon as Root Application module has been loaded.&lt;br /&gt;The benefit of using Substitution is to extend the OA Framework without customization of the underlying code. This is of great help during Upgrades. Entity Objects and Validation Objects can be substituted. I think Root AM’s can’t be substituted given that substitution kicks off after Root AM gets loaded.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; In OA Framework, once your application has been extended by substitutions, is it possible to revert back to remove those substitutions?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; Yes, by setting profile option “Disable Self-Service Personal%” to Yes, keeping in mind that all your personalizations will get disabled by this profile option.&lt;br /&gt;This profile is also very useful when debugging your OA Framework based application in the event of some error. By disabling the personalization via profile, you can isolate the error, i.e. is being caused by your extension/substitution code or by Oracle’s standard functionality.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; How can you import invoices into Oracle Receivables?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; You can either use AutoInvoice by populating tables RA_INTERFACE_LINES_ALL,  RA_INTERFACE_DISTRIBUTIONS_ALL &amp;  RA_INTERFACE_SALESCREDITS_ALL.&lt;br /&gt;Alternately you may decide to use API ar_invoice_api_pub.create_single_invoice&lt;br /&gt;for Receivables Invoice Import.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; How do you setup a context sensitive flexfield&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; Note: I will publish a white paper to sho step by step approach.&lt;br /&gt;But for the purpose of your interview, a brief explanation is…a)Create a reference field, b) Use that reference field in “Context Field” section of DFF Segment screen c) For each possible value of the context field, you will need to create one record in section “Context Field Value” ( beneath the global data elements).&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; Does Oracle iProcurement use same tables as Oracle Purchasing?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; Yes, iProcurement uses the same set of requisition tables as are used by Core Purchasing.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; What is the name of the schema for tables in tca&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; AR (at least till 11.5.10, not sure about 11.5.10).&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; Are suppliers a part of TCA?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; Unfortunately not yet. However, Release 12 will be merging Suppliers into TCA.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; What is the link between order management and purchasing&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer: &lt;/span&gt;&lt;span style="font-size:100%;"&gt;Internal Requisitions get translated into Internal Sales Orders.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; How would you know if the purchase order XML has been transmitted to vendor, looking at the tables.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; The XML delivery status can be found from a table named ecx_oxta_logmsg. Use the query below&lt;br /&gt;SELECT edoc.document_number&lt;br /&gt;,decode(eol.result_code, 1000, 'Success', 'Failure') AS status&lt;br /&gt;,eol.result_text&lt;br /&gt;FROM   ecx_oxta_logmsg   eol&lt;br /&gt;,ecx_doclogs       edoc&lt;br /&gt;,ecx_outbound_logs eog&lt;br /&gt;WHERE  edoc.msgid = eol.sender_message_id&lt;br /&gt;AND    eog.out_msgid = edoc.msgid&lt;br /&gt;ORDER  BY edoc.document_number&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; You have done forms personalization, now how will you move it from one environment to another?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; Use FNDLOAD. For examples visit the link FNDLOAD&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; What are the key benefits of forms personalization over custom.pll?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer:&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;--&gt;Multiple users can develop forms personalization at any given point in time.&lt;br /&gt;--&gt;It is fairly easy to enable and disable forms personalizations.&lt;br /&gt;--&gt;A programmer is not required to do simple things such as hide/disable fields or buttons.&lt;br /&gt;--&gt;Provides more visibility on customizations to the screen.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; Tell me some limitations of forms personalization when compared to CUSTOM.pll?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer:&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;--&gt;Can't create record group queries, hence can’t implement LOV Query changes.&lt;br /&gt;--&gt;Can't make things interactive, i.e. can’t have a message box that gives multiple choices for example Proceed or Stop etc.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; Give me one example where apps uses partitioning?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; WF_LOCAL_ROLES&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; Give me one example of securing attributes in iProcurement.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer: &lt;/span&gt;&lt;span style="font-size:100%;"&gt;You can define Realm to bundle suppliers into a Category. Such realm can then be assigned to the User using Define User Screen. Security Attribute ICX_POR_REALM_ID can be used. By doing so, the user will only be made visible those Punchout suppliers that belong to the realm against their securing attributes.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Question:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; Can you send blob attachments via workflow notifications?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Answer:&lt;/span&gt;&lt;span style="font-size:100%;"&gt; Yes, you can send BLOB Attachments.&lt;br /&gt;For details on how to do this, refer to link BLOBS In Workflow Notifications&lt;a&gt;&lt;/a&gt;&lt;a&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/33112393-115843459271169759?l=appstechnical.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appstechnical.blogspot.com/feeds/115843459271169759/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33112393&amp;postID=115843459271169759' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/115843459271169759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/115843459271169759'/><link rel='alternate' type='text/html' href='http://appstechnical.blogspot.com/2006/09/apps-technical-interview.html' title=''/><author><name>Anil Passi</name><uri>http://www.blogger.com/profile/14859722075898946765</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>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33112393.post-115802218831394374</id><published>2006-09-12T00:46:00.000Z</published><updated>2006-10-13T13:36:23.456Z</updated><title type='text'></title><content type='html'>&lt;h3&gt;Training Lesson 1 for Oracle Workflows&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;Please find an Audio Visual Oracle Workflow Training lesson, which will be the pre-requisite for the next stream of lessons on Oracle Workflows Training.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Oracle Workflow is a copyright product from Oracle Corp. This training session is for educational purposes only.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Following steps will be covered in the first lesson of Oracle Workflow Training:-&lt;br /&gt;1. How to design &amp; create a Workflow using Oracle Workflow Builder&lt;br /&gt;2. How to start the Oracle Workflow process from pl/sql&lt;br /&gt;3. How to integrate Oracle Workflow with pl/sql for validation and DML etc.&lt;br /&gt;4. How to build Oracle Workflow Notifications&lt;br /&gt;5. How to attach roles/people to notifications in Oracle Workflow&lt;br /&gt;&lt;br /&gt;For this Oracle Workflow Training session, lets assume that the requirement is to initiate a workflow, validate it within Oracle Workflow &amp;amp; PL/SQL and then to send a notification.&lt;br /&gt;&lt;br /&gt;Please click here for the Audio-Visual Lesson 1 in Oracle Workflows Training&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;a href="http://oracle.anilpassi.com/oracle-workflow-training-lesson-1.html"&gt;Oracle Workflows Training Lesson 1&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/33112393-115802218831394374?l=appstechnical.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appstechnical.blogspot.com/feeds/115802218831394374/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33112393&amp;postID=115802218831394374' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/115802218831394374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/115802218831394374'/><link rel='alternate' type='text/html' href='http://appstechnical.blogspot.com/2006/09/training-lesson-1-for-oracle-workflows.html' title=''/><author><name>Anil Passi</name><uri>http://www.blogger.com/profile/14859722075898946765</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>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33112393.post-115758910561961519</id><published>2006-09-07T00:31:00.000Z</published><updated>2007-02-15T19:52:04.446Z</updated><title type='text'></title><content type='html'>&lt;h3&gt;Forms Personalization in Oracle Apps 11.5.10&lt;/h3&gt;&gt;&lt;br /&gt;My first article in the series of Forms Personalization is in response to a question raised in Oracle Forum under Oracle Human Resources (HRMS ). As per the Oracle forum request, If the Person Type is Employee, their clients wants Person Title field to become Mandatory ( lets assume it is the title field for now).  When the Person Type field changes to a value that is anything but Employee, the person title field should then toggle back to become optional.&lt;br /&gt;&lt;br /&gt;Please note that when Person type Employee is selected, value in field&lt;br /&gt;PERSON.D_PTU_USER_PERSON_TYPE  is assigned a value of “Employee”&lt;br /&gt;&lt;br /&gt;Now the requirement is that for “Employee” field PERSON.D_TITLE must be made mandatory.&lt;br /&gt;&lt;br /&gt;There are two possible ways the Person Type can change.&lt;br /&gt;Either by picking a dropdown list of Action (e.g. Create Employee) or by directly picking up a value from LOV on field “Person Type for Action”. Whenever the person type changes, WHEN-NEW-ITEM-INSTANCE is fired for one for the below fields(depending upon how its changed).  Hence forms personalization must check conditions for below three fields&lt;br /&gt;PERWSHRG.PERSON.PTU_ACTION_TYPE&lt;br /&gt;PERWSHRG.PERSON.D_PTU_USER_PERSON_TYPE&lt;br /&gt;PERWSHRG.PERSON.SHOW_NUMBER&lt;br /&gt;&lt;br /&gt;The demo below contains conditional check on “WHEN-NEW-ITEM-INSTANCE” of PERSON.PTU_ACTION_TYPE&lt;br /&gt;&lt;br /&gt;When implementing this, you will have to replicate the steps in the demo for WNII on both PERWSHRG.PERSON.D_PTU_USER_PERSON_TYPE &amp; PERWSHRG.PERSON.SHOW_NUMBER&lt;br /&gt;&lt;br /&gt;I have tested the steps below myself, and they appear to work.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;STEP 1.&lt;/span&gt;&lt;br /&gt;Create Personalization as below( to make Title field mandatory)&lt;br /&gt;Sequence: 50&lt;br /&gt;Description: Make Person Title Mandatory when Person Type is Employee.&lt;br /&gt;Trigger Event: WHEN-NEW-ITEM-INSTANCE&lt;br /&gt;Trigger Object: PERSON.PTU_ACTION_TYPE&lt;br /&gt;Condition: ${item.person.d_ptu_user_person_type.value} = 'Employee'&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1078/3631/1600/personlize_hr_mandatory04.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/1078/3631/320/personlize_hr_mandatory04.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Action Sequence: 10&lt;br /&gt;Action Type: Property&lt;br /&gt;Action Object Type: Item&lt;br /&gt;Action Target Object: PERSON.D_TITLE&lt;br /&gt;Action Property Name: REQUIRED&lt;br /&gt;Action Value: TRUE&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1078/3631/1600/personlize_hr_mandatory03.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/1078/3631/320/personlize_hr_mandatory03.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;STEP 2&lt;/span&gt;&lt;br /&gt;Create another Personalization as below ( to make Title field Optional)&lt;br /&gt;Sequence: 51&lt;br /&gt;Description: Make Person Title Mandatory when Person Type is Employee.&lt;br /&gt;Trigger Event: WHEN-NEW-ITEM-INSTANCE&lt;br /&gt;Trigger Object: PERSON.PTU_ACTION_TYPE&lt;br /&gt;Condition: NVL(${item.person.d_ptu_user_person_type.value},'xxyyzz') != 'Employee'&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1078/3631/1600/personlize_hr_mandatory02.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/1078/3631/320/personlize_hr_mandatory02.jpg" alt="" border="0" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;Action Sequence: 10&lt;br /&gt;Action Type: Property&lt;br /&gt;Action Object Type: Item&lt;br /&gt;Action Target Object: PERSON.D_TITLE&lt;br /&gt;Action Property Name: REQUIRED&lt;br /&gt;Action Value: FALSE&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1078/3631/1600/personlize_hr_mandatory01.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/1078/3631/320/personlize_hr_mandatory01.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33112393-115758910561961519?l=appstechnical.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appstechnical.blogspot.com/feeds/115758910561961519/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33112393&amp;postID=115758910561961519' title='19 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/115758910561961519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/115758910561961519'/><link rel='alternate' type='text/html' href='http://appstechnical.blogspot.com/2006/09/forms-personalization-in-oracle-apps.html' title=''/><author><name>Anil Passi</name><uri>http://www.blogger.com/profile/14859722075898946765</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>19</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33112393.post-115750501686921930</id><published>2006-09-06T00:58:00.000Z</published><updated>2006-12-09T03:58:28.980Z</updated><title type='text'></title><content type='html'>&lt;h3&gt;ReBuild Account in Oracle iProcurement&lt;/h3&gt;&lt;br /&gt;&lt;b&gt;Note: If using Firefox, for this article use the link &lt;a href="http://oracle.anilpassi.com/iprocurement-11.5.10-rebuild-charge-account-2.html"&gt;iProc Rebuild Account&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Let us assume you have a requirement to make the Account Generator in Oracle iProcurement (11.5.10)  rebuild accounts whenever there is a change in Requisition Line Descriptive Flex Fields Attribute5 or Attribute6 or both.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Until 11.5.9, you will be implementing this by placing some code in por_custom_pkg.set_rebuild_dist_value&lt;br /&gt;The code will look similar to below( although might require slight tweak as per your requirements):-&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:78%;"&gt;&lt;em&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;em&gt;&lt;strong&gt;BEGIN&lt;/strong&gt;&lt;span style="font-family:'Courier New'; font-size:8pt; color:black; "&gt;&lt;br&gt;&lt;br /&gt;&amp;nbsp; x_return_code := &lt;/span&gt;&lt;span style="font-family:'Courier New'; font-size:8pt; color:rgb(0, 0, 240); "&gt;0&lt;/span&gt;&lt;span style="font-family:'Courier New'; font-size:8pt; color:black; "&gt;;&lt;br&gt;&lt;br /&gt;&amp;nbsp; x_error_msg&amp;nbsp;&amp;nbsp; := &lt;/span&gt;&lt;span style="font-family:'Courier New'; font-size:8pt; color:rgb(0, 0, 240); "&gt;'&lt;br /&gt;'&lt;/span&gt;&lt;span style="font-family:'Courier New'; font-size:8pt; color:black; "&gt;;&lt;br&gt;&lt;br /&gt;&amp;nbsp; &lt;/span&gt;&lt;/em&gt;&lt;em&gt;/* apassi Jan 2004. If the DFF value has been changed then we must&lt;br&gt;&lt;br /&gt;&amp;nbsp; rebuild the Code Combination taking into consideration all the segments */&lt;/em&gt;&lt;em&gt;&lt;span style="font-family:'Courier New'; font-size:8pt; color:black; "&gt;&lt;br&gt;&lt;br /&gt;&amp;nbsp; &lt;strong&gt;END&lt;/strong&gt; &lt;strong&gt;IF&lt;/strong&gt;;&lt;br&gt;&lt;br /&gt;&amp;nbsp; &lt;strong&gt;IF&lt;/strong&gt; nvl(line_att5, &lt;/span&gt;&lt;span style="font-family:'Courier New'; font-size:8pt; color:rgb(0, 0, 240); "&gt;'XXX'&lt;/span&gt;&lt;span style="font-family:'Courier New'; font-size:8pt; color:black; "&gt;)&lt;br /&gt;!= nvl(attribute8, &lt;/span&gt;&lt;span style="font-family:'Courier New'; font-size:8pt; color:rgb(0, 0, 240); "&gt;'XXX'&lt;/span&gt;&lt;span style="font-family:'Courier New'; font-size:8pt; color:black; "&gt;)&lt;br&gt;&lt;br /&gt;&amp;nbsp; &lt;strong&gt;THEN&lt;/strong&gt;&lt;br&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; returnvalue := &lt;/span&gt;&lt;span style="font-family:'Courier New'; font-size:8pt; color:rgb(0, 0, 240); "&gt;'Y'&lt;/span&gt;&lt;span style="font-family:'Courier New'; font-size:8pt; color:black; "&gt;;&lt;br&gt;&lt;br /&gt;&amp;nbsp; &lt;strong&gt;END&lt;/strong&gt; &lt;strong&gt;IF&lt;/strong&gt;;&lt;br&gt;&lt;br /&gt;&amp;nbsp; &lt;strong&gt;IF&lt;/strong&gt; nvl(line_att6, &lt;/span&gt;&lt;span style="font-family:'Courier New'; font-size:8pt; color:rgb(0, 0, 240); "&gt;'XXX'&lt;/span&gt;&lt;span style="font-family:'Courier New'; font-size:8pt; color:black; "&gt;)&lt;br /&gt;!= nvl(attribute9, &lt;/span&gt;&lt;span style="font-family:'Courier New'; font-size:8pt; color:rgb(0, 0, 240); "&gt;'XXX'&lt;/span&gt;&lt;span style="font-family:'Courier New'; font-size:8pt; color:black; "&gt;)&lt;br&gt;&lt;br /&gt;&amp;nbsp; &lt;strong&gt;THEN&lt;/strong&gt;&lt;br&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; returnvalue := &lt;/span&gt;&lt;span style="font-family:'Courier New'; font-size:8pt; color:rgb(0, 0, 240); "&gt;'Y'&lt;/span&gt;&lt;span style="font-family:'Courier New'; font-size:8pt; color:black; "&gt;;&lt;br&gt;&lt;br /&gt;&amp;nbsp; &lt;strong&gt;END&lt;/strong&gt; &lt;strong&gt;IF&lt;/strong&gt;;&lt;br&gt;&lt;br /&gt;&lt;strong&gt;END&lt;/strong&gt;;&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;It looks quite simple, ain’t it? Indeed it is quite simple, all you require is the above few lines of code in por_custom_pkg, following which changes to your Line Descriptive Flex 5 &amp; 6 will re-initiate Proc Account Generator workflow.&lt;br /&gt;&lt;br /&gt;Well,  welcome 11.5.10 !!&lt;br /&gt;The steps in 11.5.10 will be as below( although each step is visually explained in this article with further breakdowns)&lt;br /&gt;&lt;strong&gt;a.&lt;/strong&gt; Extend the Entity Object that contains these attributes.&lt;br /&gt;&lt;strong&gt;b.&lt;/strong&gt; The Extended EO will introduce business attribute properties for these DFF Attributes. This will tell the Oracle iProc engine to regenerate the accounts.&lt;br /&gt;&lt;strong&gt;c&lt;/strong&gt;. Substitute the standard EO by Extended EO&lt;br /&gt;&lt;strong&gt;d&lt;/strong&gt;. Bounce the entire middle tier, try your luck by merely bouncing the Apache.&lt;br /&gt;&lt;br /&gt;OK, here with go into the details of each step. These steps are documented in Oracle iProc Manual too, but in a language that can only be understood by Experienced Oracle guys. Hence this article is an effort from me to explain the steps in naïve manner.&lt;/p&gt;      &lt;p&gt;&lt;strong&gt;Step 1. &lt;/strong&gt;&lt;br /&gt;FTP and bring all the iProc BC4J classes and XML files onto your PC. Ensure that the location of those packages is included in the CLASSPATH that is defined against your JDeveloper Project. You will need to import server.xml from respective package to open up the BC4J in jDeveloper.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt; Step 2&lt;/strong&gt;&lt;br /&gt;Extend the Entity Object PoRequisitionLineEO to create a new entity object named xxxxPoRequisitionLineEO.&lt;br /&gt;Select the BC4J Package that contains the EO that you need to extend. In my case I will select oracle.apps.icx.por.schema.server and right click to see the option for “New Entity Object” as below&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1078/3631/1600/iproc_rebuild_01.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/1078/3631/320/iproc_rebuild_01.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now define a new Entity Object xxxxPoRequisitionLineEO. Move the cursor to Extends Entity and click on button Browse to select PoRequisitionLineEO&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1078/3631/1600/iproc_rebuild_02.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/1078/3631/320/iproc_rebuild_02.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now click on Next,    until you see the New from Table button as below. Click on that “New from Table” button.&lt;br /&gt;As in the picture below, select Attribute5 and Attribute6 ( or the appropriate attributes in your case).&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1078/3631/1600/iproc_rebuild_03.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/1078/3631/320/iproc_rebuild_03.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now, your EO will look somewhat similar to below.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1078/3631/1600/iproc_rebuild_04.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/1078/3631/320/iproc_rebuild_04.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Please note that the schema object is PO_REQUISITION_LINES_ALL, simply because in this example, we wish to rebuild the iProcurement Account whenever a change is made to certain attributes in Requisition Line DFF.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 3&lt;/strong&gt;&lt;br /&gt;One of the most important steps is to define these attributes as Business Attributes, to help re-initiate account generator workflow.&lt;br /&gt;&lt;br /&gt;Select on Tab “Attribute Properties”&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1078/3631/1600/iproc_rebuild_05.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/1078/3631/320/iproc_rebuild_05.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1078/3631/1600/iproc_rebuild_06.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/1078/3631/320/iproc_rebuild_06.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;As in above picture, Name=AccountLineBizAttrSet&lt;br /&gt;Value=Y ……click on Add&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 4&lt;/strong&gt;&lt;br /&gt;Once having created the Extended Entity Object, next we need to create a Substitution such that our extended EO xxxxPoRequisitionLineEO will replace the standard EO PoRequisitionLineEO&lt;br /&gt;&lt;br /&gt;For doing so, right click on the jpx file within which you had opened iProc’s BC4J packages(this was done by importing server.xml initially). Once you right click jpx file, you will see an option “Edit Business Components Project”.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1078/3631/1600/iproc_rebuild_07.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/1078/3631/320/iproc_rebuild_07.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;a&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Following this, select “Substitution” option as in the list below&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1078/3631/1600/iproc_rebuild_08.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/1078/3631/320/iproc_rebuild_08.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now, finally you can implement substitution.  In the left hand pane select PoRequisitionLineEO under the package oracle.apps.icx.por.schema.server. In the right hand side pane, select xxxxPoRequisitionLineEO from your appropriate package.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1078/3631/1600/iproc_rebuild_09.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/1078/3631/320/iproc_rebuild_09.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br&gt;&lt;br /&gt;Now, this substitution will create a .jpx file for you. In my case, I will name it xxicIcxPorAccReBuild.jpx&lt;br&gt;&lt;br /&gt;This file will look like below&lt;br&gt;&lt;br /&gt;######## Begin xxicIcxPorAccReBuild.jpx #######&lt;br&gt;&lt;br /&gt;&lt;em&gt;&amp;lt;?xml version="1.0" encoding='windows-1252'?&amp;gt;&lt;br&gt;&lt;br /&gt;&amp;lt;!DOCTYPE JboProject SYSTEM "jbo_03_01.dtd"&amp;gt;&lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&amp;lt;JboProject&lt;br&gt;&lt;br /&gt;Name="xxxxIcxPorAccReBuild"&lt;br&gt;&lt;br /&gt;SeparateXMLFiles="true"&lt;br&gt;&lt;br /&gt;PackageName="" &amp;gt;&lt;br&gt;&lt;br /&gt;&amp;lt;DesignTime&amp;gt;&lt;br&gt;&lt;br /&gt;&amp;lt;Attr Name="_version" Value="9.0.3.13.75" /&amp;gt;&lt;br&gt;&lt;br /&gt;&amp;lt;Attr Name="_jprName" Value="xxxxIcxPorAccReBuild.jpr" /&amp;gt;&lt;br&gt;&lt;br /&gt;&amp;lt;Attr Name="_ejbPackage" Value="false" /&amp;gt;&lt;br&gt;&lt;br /&gt;&amp;lt;/DesignTime&amp;gt;&lt;br&gt;&lt;br /&gt;&amp;lt;Substitutes&amp;gt;&lt;br&gt;&lt;br /&gt;&amp;lt;Substitute OldName ="oracle.apps.icx.por.schema.server.PoRequisitionLineEO"  NewName ="oracle.apps.icx.por.schema.server.xxxxPoRequisitionLineEO"  /&amp;gt;&lt;br&gt;&lt;br /&gt;&amp;lt;/Substitutes&amp;gt;&lt;br&gt;&lt;br /&gt;&amp;lt;/JboProject&amp;gt;&lt;br&gt;&lt;br /&gt;&lt;/em&gt;######## End xxicIcxPorAccReBuild.jpx #######&lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;Now, to move this .jpx file from one environment to another( to move the substitution definition)&lt;br /&gt;you can either use personalization or you may use the script below&lt;br&gt;&lt;br /&gt;######################Script to load substitution definition to new environment######################&lt;br&gt;&lt;br /&gt;&lt;em&gt;##By Anil Passi&lt;br&gt;&lt;br /&gt;##Please note that this can very well be done by simply exporting and importing the personalizations&lt;br /&gt;too.&lt;br&gt;&lt;br /&gt;##This is so, because the Substitution is stored as a personalization in Oracle.&lt;br&gt;&lt;br /&gt;##Anyhow, because I like to experiment, i prefered using JPXImporter, and it worked&lt;br&gt;&lt;br /&gt;MACHINE_NAME=0&lt;br&gt;&lt;br /&gt;PORT_NUMBER=0&lt;br&gt;&lt;br /&gt;export MACHINE_NAME&lt;br&gt;&lt;br /&gt;export PORT_NUMBER&lt;br&gt;&lt;br /&gt;getPortMachine()&lt;br&gt;&lt;br /&gt;{&lt;br&gt;&lt;br /&gt;MACHINE_NAME=`sqlplus -s apps/$APPS_PWD &amp;lt;&amp;lt;EOF&lt;br&gt;&lt;br /&gt;set pages 0&lt;br&gt;&lt;br /&gt;set lines 1023&lt;br&gt;&lt;br /&gt;select fnd_profile.value('CSF_EMAP_DS_HOST') from dual ;&lt;br&gt;&lt;br /&gt;exit&lt;br&gt;&lt;br /&gt;EOF`&lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;PORT_NUMBER=`sqlplus -s apps/$APPS_PWD &amp;lt;&amp;lt;EOF&lt;br&gt;&lt;br /&gt;set pages 0&lt;br&gt;&lt;br /&gt;set feed off&lt;br&gt;&lt;br /&gt;select fnd_profile.value('CSF_MAP_DB_PORT') from dual ;&lt;br&gt;&lt;br /&gt;exit&lt;br&gt;&lt;br /&gt;EOF`&lt;br&gt;&lt;br /&gt;}&lt;br&gt;&lt;br /&gt;getPortMachine&lt;br&gt;&lt;br /&gt;echo "**********************************"&lt;br&gt;&lt;br /&gt;echo $MACHINE_NAME is Machine Name&lt;br&gt;&lt;br /&gt;echo "**********************************"&lt;br&gt;&lt;br /&gt;sleep 5&lt;br&gt;&lt;br /&gt;echo $PORT_NUMBER is port number&lt;br&gt;&lt;br /&gt;echo "**********************************"&lt;br&gt;&lt;br /&gt;sleep 5&lt;br&gt;&lt;br /&gt;"Echo load substitution"&lt;br&gt;&lt;br /&gt;adjava oracle.jrad.tools.xml.importer.JPXImporter $XXPO_TOP/bin/xxxxIcxPorAccReBuild.jpx -username&lt;br /&gt;apps -password $APPS_PWD -dbconnection  "(description=(address_list=(address=(community=tcp.world)(protocol=tcp)(host=$MACHINE_NAME)(port=$PORT_NUMBER)))(connect_data=(sid=$TWO_TASK)))"&lt;br&gt;&lt;br /&gt;&lt;/em&gt;######################END OF Script to load substitution ######################&lt;br&gt;&lt;br /&gt;&lt;strong&gt;Step 5.&lt;/strong&gt;&lt;br&gt;&lt;br /&gt;Hang on, not there as yet. You need to deploy the new EO and its implementation on the Unix&lt;br /&gt;server under appropriate directory structure.&lt;br&gt;&lt;br /&gt;This will involve three files, i.e. xxxxPoRequisitionLineEO.xml, xxxxPoRequisitionLineEOImpl.java &amp;amp; xxxxPoRequisitionLineEOImpl.class&lt;br&gt;&lt;br /&gt;Please note that it is not mandatory to deploy the .java file, but I recommend this to be a&lt;br /&gt;good practice.&lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;xxxxPoRequisitionLineEO.xml will contain the EO definition and this file is generated by jDeveloper&lt;br /&gt;to hold meta info of extended EO.&lt;br&gt;&lt;br /&gt;xxxxPoRequisitionLineEOImpl will generate by your favourite jDeveloper too.&lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;If you feel confident, the entire Rebuilding functionality can be implemented without touching&lt;br /&gt;jDeveloper, but for that you will be directly modifying the files that I have pasted below.&lt;br /&gt;In my personal opinion use jDeveloper.&lt;br&gt;&lt;br /&gt;######### Beginning of xxxxPoRequisitionLineEOImpl.java#########&lt;br&gt;&lt;br /&gt;&lt;em&gt;package oracle.apps.icx.por.schema.server;&lt;br&gt;&lt;br /&gt;import oracle.jbo.server.EntityDefImpl;&lt;br&gt;&lt;br /&gt;import oracle.jbo.server.AttributeDefImpl;&lt;br&gt;&lt;br /&gt;import oracle.jbo.Key;&lt;br&gt;&lt;br /&gt;// ---------------------------------------------------------------&lt;br&gt;&lt;br /&gt;// --- Anil Passi iProc Rebuild account.&lt;br&gt;&lt;br /&gt;// ---------------------------------------------------------------&lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;public class xxxxPoRequisitionLineEOImpl extends PoRequisitionLineEOImpl&lt;br&gt;&lt;br /&gt;{&lt;br&gt;&lt;br /&gt;protected static final int MAXATTRCONST = EntityDefImpl.getMaxAttrConst("oracle.apps.icx.por.schema.server.PoRequisitionLineEO");&lt;br&gt;&lt;br /&gt;private static oracle.apps.fnd.framework.server.OAEntityDefImpl mDefinitionObject;&lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;/**&lt;br&gt;&lt;br /&gt;*&lt;br&gt;&lt;br /&gt;* This is the default constructor (do not remove)&lt;br&gt;&lt;br /&gt;*/&lt;br&gt;&lt;br /&gt;public xxxxPoRequisitionLineEOImpl()&lt;br&gt;&lt;br /&gt;{&lt;br&gt;&lt;br /&gt;}&lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;/**&lt;br&gt;&lt;br /&gt;*&lt;br&gt;&lt;br /&gt;* Retrieves the definition object for this instance class.&lt;br&gt;&lt;br /&gt;*/&lt;br&gt;&lt;br /&gt;public static synchronized EntityDefImpl getDefinitionObject()&lt;br&gt;&lt;br /&gt;{&lt;br&gt;&lt;br /&gt;if (mDefinitionObject == null)&lt;br&gt;&lt;br /&gt;{&lt;br&gt;&lt;br /&gt;mDefinitionObject = (oracle.apps.fnd.framework.server.OAEntityDefImpl)EntityDefImpl.findDefObject("oracle.apps.icx.por.schema.server.xxxxPoRequisitionLineEO");&lt;br&gt;&lt;br /&gt;}&lt;br&gt;&lt;br /&gt;return mDefinitionObject;&lt;br&gt;&lt;br /&gt;}&lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;// Generated method. Do not modify.&lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;protected Object getAttrInvokeAccessor(int index, AttributeDefImpl attrDef) throws Exception&lt;br&gt;&lt;br /&gt;{&lt;br&gt;&lt;br /&gt;if (index == ATTRIBUTE5)&lt;br&gt;&lt;br /&gt;{&lt;br&gt;&lt;br /&gt;return getAttribute5();&lt;br&gt;&lt;br /&gt;}&lt;br&gt;&lt;br /&gt;if (index == ATTRIBUTE6)&lt;br&gt;&lt;br /&gt;{&lt;br&gt;&lt;br /&gt;return getAttribute6();&lt;br&gt;&lt;br /&gt;}&lt;br&gt;&lt;br /&gt;return super.getAttrInvokeAccessor(index, attrDef);&lt;br&gt;&lt;br /&gt;}&lt;br&gt;&lt;br /&gt;// Generated method. Do not modify.&lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;protected void setAttrInvokeAccessor(int index, Object value, AttributeDefImpl attrDef) throws&lt;br /&gt;Exception&lt;br&gt;&lt;br /&gt;{&lt;br&gt;&lt;br /&gt;if (index == ATTRIBUTE5)&lt;br&gt;&lt;br /&gt;{&lt;br&gt;&lt;br /&gt;setAttribute5((String)value);&lt;br&gt;&lt;br /&gt;return;&lt;br&gt;&lt;br /&gt;}&lt;br&gt;&lt;br /&gt;if (index == ATTRIBUTE6)&lt;br&gt;&lt;br /&gt;{&lt;br&gt;&lt;br /&gt;setAttribute6((String)value);&lt;br&gt;&lt;br /&gt;return;&lt;br&gt;&lt;br /&gt;}&lt;br&gt;&lt;br /&gt;super.setAttrInvokeAccessor(index, value, attrDef);&lt;br&gt;&lt;br /&gt;return;&lt;br&gt;&lt;br /&gt;}&lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;/**&lt;br&gt;&lt;br /&gt;*&lt;br&gt;&lt;br /&gt;* Gets the attribute value for Attribute5, using the alias name Attribute5&lt;br&gt;&lt;br /&gt;*/&lt;br&gt;&lt;br /&gt;public String getAttribute5()&lt;br&gt;&lt;br /&gt;{&lt;br&gt;&lt;br /&gt;return super.getAttribute5();&lt;br&gt;&lt;br /&gt;}&lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;/**&lt;br&gt;&lt;br /&gt;*&lt;br&gt;&lt;br /&gt;* Sets &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; as the attribute value for Attribute5&lt;br&gt;&lt;br /&gt;*/&lt;br&gt;&lt;br /&gt;public void setAttribute5(String value)&lt;br&gt;&lt;br /&gt;{&lt;br&gt;&lt;br /&gt;super.setAttribute5(value);&lt;br&gt;&lt;br /&gt;}&lt;br&gt;&lt;br /&gt;/**&lt;br&gt;&lt;br /&gt;*&lt;br&gt;&lt;br /&gt;* Gets the attribute value for Attribute6, using the alias name Attribute6&lt;br&gt;&lt;br /&gt;*/&lt;br&gt;&lt;br /&gt;public String getAttribute6()&lt;br&gt;&lt;br /&gt;{&lt;br&gt;&lt;br /&gt;return super.getAttribute6();&lt;br&gt;&lt;br /&gt;}&lt;br&gt;&lt;br /&gt;/**&lt;br&gt;&lt;br /&gt;*&lt;br&gt;&lt;br /&gt;* Sets &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; as the attribute value for Attribute6&lt;br&gt;&lt;br /&gt;*/&lt;br&gt;&lt;br /&gt;public void setAttribute6(String value)&lt;br&gt;&lt;br /&gt;{&lt;br&gt;&lt;br /&gt;super.setAttribute6(value);&lt;br&gt;&lt;br /&gt;}&lt;br&gt;&lt;br /&gt;/**&lt;br&gt;&lt;br /&gt;*&lt;br&gt;&lt;br /&gt;* Creates a Key object based on given key constituents&lt;br&gt;&lt;br /&gt;*/&lt;br&gt;&lt;br /&gt;public static Key createPrimaryKey(oracle.jbo.domain.Number requisitionLineId)&lt;br&gt;&lt;br /&gt;{&lt;br&gt;&lt;br /&gt;return new Key(new Object[] {requisitionLineId});&lt;br&gt;&lt;br /&gt;}&lt;br&gt;&lt;br /&gt;}&lt;br&gt;&lt;br /&gt;&lt;/em&gt;######### end of xxxxPoRequisitionLineEOImpl.java#########&lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;#########Begin New EO Definition within xml########&lt;br&gt;&lt;br /&gt;&lt;em&gt;&amp;lt;?xml version="1.0" encoding='windows-1252'?&amp;gt;&lt;br&gt;&lt;br /&gt;&amp;lt;!DOCTYPE Entity SYSTEM "jbo_03_01.dtd"&amp;gt;&lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&amp;lt;Entity&lt;br&gt;&lt;br /&gt;Name="xxxxPoRequisitionLineEO"&lt;br&gt;&lt;br /&gt;Extends="oracle.apps.icx.por.schema.server.PoRequisitionLineEO"&lt;br&gt;&lt;br /&gt;DBObjectType="table"&lt;br&gt;&lt;br /&gt;DBObjectName="PO_REQUISITION_LINES_ALL"&lt;br&gt;&lt;br /&gt;AliasName="xxxxPoRequisitionLineEO"&lt;br&gt;&lt;br /&gt;BindingStyle="Oracle"&lt;br&gt;&lt;br /&gt;UseGlueCode="false"&lt;br&gt;&lt;br /&gt;CodeGenFlag="4"&lt;br&gt;&lt;br /&gt;RowClass="oracle.apps.icx.por.schema.server.xxxxPoRequisitionLineEOImpl"&lt;br&gt;&lt;br /&gt;DefClass="oracle.apps.fnd.framework.server.OAEntityDefImpl"&lt;br&gt;&lt;br /&gt;CollClass="oracle.apps.fnd.framework.server.OAEntityCache" &amp;gt;&lt;br&gt;&lt;br /&gt;&amp;lt;DesignTime&amp;gt;&lt;br&gt;&lt;br /&gt;&amp;lt;Attr Name="_isCodegen" Value="true" /&amp;gt;&lt;br&gt;&lt;br /&gt;&amp;lt;Attr Name="_version" Value="9.0.3.13.75" /&amp;gt;&lt;br&gt;&lt;br /&gt;&amp;lt;AttrArray Name="_publishEvents"&amp;gt;&lt;br&gt;&lt;br /&gt;&amp;lt;/AttrArray&amp;gt;&lt;br&gt;&lt;br /&gt;&amp;lt;/DesignTime&amp;gt;&lt;br&gt;&lt;br /&gt;&amp;lt;Attribute&lt;br&gt;&lt;br /&gt;Name="Attribute5"&lt;br&gt;&lt;br /&gt;Precision="255"&lt;br&gt;&lt;br /&gt;Type="java.lang.String"&lt;br&gt;&lt;br /&gt;ColumnName="ATTRIBUTE5"&lt;br&gt;&lt;br /&gt;ColumnType="VARCHAR2"&lt;br&gt;&lt;br /&gt;SQLType="VARCHAR"&lt;br&gt;&lt;br /&gt;TableName="PO_REQUISITION_LINES_ALL" &amp;gt;&lt;br&gt;&lt;br /&gt;&amp;lt;Properties&amp;gt;&lt;br&gt;&lt;br /&gt;&amp;lt;Property Name ="AccountLineBizAttrSet" Value ="Y" /&amp;gt;&lt;br&gt;&lt;br /&gt;&amp;lt;/Properties&amp;gt;&lt;br&gt;&lt;br /&gt;&amp;lt;DesignTime&amp;gt;&lt;br&gt;&lt;br /&gt;&amp;lt;Attr Name="_OverrideAttr" Value="true" /&amp;gt;&lt;br&gt;&lt;br /&gt;&amp;lt;/DesignTime&amp;gt;&lt;br&gt;&lt;br /&gt;&amp;lt;/Attribute&amp;gt;&lt;br&gt;&lt;br /&gt;&amp;lt;Attribute&lt;br&gt;&lt;br /&gt;Name="Attribute6"&lt;br&gt;&lt;br /&gt;Precision="255"&lt;br&gt;&lt;br /&gt;Type="java.lang.String"&lt;br&gt;&lt;br /&gt;ColumnName="ATTRIBUTE6"&lt;br&gt;&lt;br /&gt;ColumnType="VARCHAR2"&lt;br&gt;&lt;br /&gt;SQLType="VARCHAR"&lt;br&gt;&lt;br /&gt;TableName="PO_REQUISITION_LINES_ALL" &amp;gt;&lt;br&gt;&lt;br /&gt;&amp;lt;Properties&amp;gt;&lt;br&gt;&lt;br /&gt;&amp;lt;Property Name ="AccountLineBizAttrSet" Value ="Y" /&amp;gt;&lt;br&gt;&lt;br /&gt;&amp;lt;/Properties&amp;gt;&lt;br&gt;&lt;br /&gt;&amp;lt;DesignTime&amp;gt;&lt;br&gt;&lt;br /&gt;&amp;lt;Attr Name="_OverrideAttr" Value="true" /&amp;gt;&lt;br&gt;&lt;br /&gt;&amp;lt;/DesignTime&amp;gt;&lt;br&gt;&lt;br /&gt;&amp;lt;/Attribute&amp;gt;&lt;br&gt;&lt;br /&gt;&amp;lt;/Entity&amp;gt;&lt;br&gt;&lt;br /&gt;&lt;/em&gt;#########End New EO Definition within xml########&lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;strong&gt;Last Step&lt;/strong&gt;&lt;br&gt;&lt;br /&gt;#######Finish Recompilation of deployment#######&lt;br&gt;&lt;br /&gt;Recompile the .java file on the server as below. I do this to ensure that everything will work&lt;br /&gt;in production without any grief.&lt;br&gt;&lt;br /&gt;&lt;em&gt;#Note that i should have actually created a new directory structure to keep&lt;br&gt;&lt;br /&gt;#this extended file. But if i were to redo this, i would create a new directory structure&lt;br&gt;&lt;br /&gt;#Neverthless, this is still safe to Recompile your deployment on Server itself.&lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;echo deploy xxxxPoRequisitionLineEOImpl.class&lt;br&gt;&lt;br /&gt;cp $XXPO_TOP/bin/xxxxPoRequisitionLineEOImpl.class $JAVA_TOP/oracle/apps/icx/por/schema/server/xxxxPoRequisitionLineEOImpl.class&lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;echo deploy xxxxPoRequisitionLineEOImpl.java&lt;br&gt;&lt;br /&gt;cp $XXPO_TOP/bin/xxxxPoRequisitionLineEOImpl.java $JAVA_TOP/oracle/apps/icx/por/schema/server/xxxxPoRequisitionLineEOImpl.java&lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;echo deploy xxxxPoRequisitionLineEO.xml&lt;br&gt;&lt;br /&gt;cp $XXPO_TOP/bin/xxxxPoRequisitionLineEO.xml $JAVA_TOP/oracle/apps/icx/por/schema/server/xxxxPoRequisitionLineEO.xml&lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;cd $JAVA_TOP/oracle/apps/icx/por/schema/server&lt;br&gt;&lt;br /&gt;echo "Now compiling....."&lt;br&gt;&lt;br /&gt;javac xxxxPoRequisitionLineEOImpl.java&lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;/em&gt;#######Finish Recompilation of deployment#######&lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;Your comments are welcome, if you feel I should elaborate any section further. I believe almost&lt;br /&gt;every second client on 11.5.10 iProcurement will have to implement this functionality.&lt;br&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;Thanks,&lt;br&gt;&lt;br /&gt;Anil Passi&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33112393-115750501686921930?l=appstechnical.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appstechnical.blogspot.com/feeds/115750501686921930/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33112393&amp;postID=115750501686921930' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/115750501686921930'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/115750501686921930'/><link rel='alternate' type='text/html' href='http://appstechnical.blogspot.com/2006/09/rebuild-account-in-oracle-iprocurement.html' title=''/><author><name>Anil Passi</name><uri>http://www.blogger.com/profile/14859722075898946765</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-33112393.post-115719899301158790</id><published>2006-09-02T12:06:00.000Z</published><updated>2006-12-21T12:21:16.466Z</updated><title type='text'></title><content type='html'>&lt;h3&gt;Oracle AR Receipt API&lt;/h3&gt;Back in year 2002, when working on 11.5.8 for one of my previous clients, I was tasked to build a lockbox interface. The requirement was quite simple, receipts from a third party system were being dumped into a couple of tables. Those receipts were to be validated and transferred into Oracle Receivables. For this simple task, I found Lockboxes to be an overkill. Doing a bit of research on Metalink I found that AR now has a receipt creation API. Please find the steps below for implementing a Receipt creation API in Oracle AR.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 1.&lt;/span&gt; Validate the following:-&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;a.&lt;/span&gt; Ensure that exchange Rate exists in the system if the receipt being interfaced is a foreign currency receipt.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;b.&lt;/span&gt; Validate that the receipt belongs to an Open or Future enterable period in GL.&lt;br /&gt;This check can be done by using belo&lt;span style="font-size:78%;"&gt;&lt;span style="font-style: italic;"&gt;w function within a package&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   FUNCTION validate_gl_accounting_date (&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;      p_accounting_date          IN       DATE&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;     ,p_sob_id                   IN       NUMBER&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;      RETURN BOOLEAN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   IS&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;      v_count   NUMBER := 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   BEGIN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;      SELECT COUNT ( * )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        INTO v_count&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        FROM gl_period_statuses gps&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;       WHERE gps.application_id = g_gl_application_id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;         AND gps.set_of_books_id = p_sob_id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;         AND gps.closing_status IN ( 'O', 'F' )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;         AND p_accounting_date BETWEEN NVL ( gps.start_date, p_accounting_date )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                 AND NVL ( gps.end_date, p_accounting_date );&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;      IF v_count &gt; 0 THEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;         RETURN TRUE;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;      ELSE&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;         RETURN FALSE;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;      END IF;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   END validate_gl_accounting_date ;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 2. &lt;/span&gt;&lt;br /&gt;After successful validation, call the AR Receipt API ar_receipt_api_pub.create_cash. If the receipt is a foreign currency receipt, then parameters p_exchange_rate_type &amp; p_exchange_rate_date must be supplied with a value. You may pass a value of fnd_api.g_false to parameter p_commit , to facilitate rollback if an errored is encountered in any other part of the functionality. If OUT parameter x_return_status is returned with a value of E, it implies error.&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-style: italic;"&gt;IF p_foriegn_currency THEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;      ar_receipt_api_pub.create_cash (&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;         p_api_version                  =&gt; g_api_version&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        ,p_init_msg_list                =&gt; fnd_api.g_true&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        ,p_commit                       =&gt; fnd_api.g_false&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        ,p_validation_level             =&gt; fnd_api.g_valid_level_full&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        ,x_return_status                =&gt; v_return_status&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        ,x_msg_count                    =&gt; v_msg_count&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        ,x_msg_data                     =&gt; v_msg_data&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        ,p_currency_code                =&gt; p_rhp_receipt.originating_currency&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        ,p_amount                       =&gt; p_rhp_receipt_routing.routed_amount&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        ,p_receipt_number               =&gt; g_process_name || '-' ||&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                                              p_rhp_receipt.receipt_id ||&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                                              '-' ||&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                                              p_rhp_receipt_routing.receipt_routing_id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        ,p_receipt_date                 =&gt; p_rhp_receipt.receipt_date&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        ,p_cr_id                        =&gt; v_cr_id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        ,p_receipt_method_name          =&gt; g_receipt_method_name&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        ,p_customer_number              =&gt; p_rhp_receipt_routing.ar_customer_number&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        ,p_comments                     =&gt; p_rhp_receipt.originating_customer&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        ,p_customer_receipt_reference   =&gt; SUBSTR(p_rhp_receipt.sender_to_receiver_info,1,30)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        ,p_remittance_bank_account_id   =&gt; p_rhp_receipt.bank_account_id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        ,p_exchange_rate_type           =&gt; xxdhi_util_pkg.g_conversion_type_code&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        ,p_exchange_rate_date           =&gt; p_rhp_receipt.receipt_date&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;      );&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;ELSE&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;      ar_receipt_api_pub.create_cash (&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;         p_api_version                  =&gt; g_api_version&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        ,p_init_msg_list                =&gt; fnd_api.g_true&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        ,p_commit                       =&gt; fnd_api.g_false&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        ,p_validation_level             =&gt; fnd_api.g_valid_level_full&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        ,x_return_status                =&gt; v_return_status&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        ,x_msg_count                    =&gt; v_msg_count&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        ,x_msg_data                     =&gt; v_msg_data&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        ,p_currency_code                =&gt; p_rhp_receipt.originating_currency&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        ,p_amount                       =&gt; p_rhp_receipt_routing.routed_amount&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        ,p_receipt_number               =&gt; g_process_name || '-' ||&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                                              p_rhp_receipt.receipt_id ||&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                                              '-' ||&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                                              p_rhp_receipt_routing.receipt_routing_id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        ,p_receipt_date                 =&gt; p_rhp_receipt.receipt_date&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        ,p_cr_id                        =&gt; v_cr_id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        ,p_receipt_method_name          =&gt; g_receipt_method_name&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        ,p_customer_number              =&gt; p_rhp_receipt_routing.ar_customer_number&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        ,p_comments                     =&gt; p_rhp_receipt.originating_customer&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        ,p_customer_receipt_reference   =&gt; SUBSTR(p_rhp_receipt.sender_to_receiver_info,1,30)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        ,p_remittance_bank_account_id   =&gt; p_rhp_receipt.bank_account_id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;      );&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;END IF ;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 3.&lt;/span&gt; If the requirement is To reverse an existing receipt, then use API ar_receipt_api_pub.REVERSE. Once again, prefer setting the validation level to fnd_api.g_valid_level_full&lt;br /&gt;&lt;br /&gt;Following validation must be done at the time of reversal. This is required because Oracle wouldn't let you Reverse an applied receipt straightaway.&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-style: italic;"&gt;  FUNCTION validate_reversal_flag_valid(p_cash_receipt_id OUT INTEGER)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    RETURN BOOLEAN IS&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    CURSOR c_check IS&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;      SELECT cash_receipt_id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;            ,status&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;      FROM   ar_cash_receipts&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;      WHERE  receipt_number =&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;             g_process_name || '-' || p_rhp_receipt.receipt_id || '-' ||&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;             p_rhp_receipt_routing.receipt_routing_id;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    p_check c_check%ROWTYPE;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    no_existing_receipt EXCEPTION;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    receipt_already_applied EXCEPTION;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    receipt_already_reversed EXCEPTION;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  BEGIN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    OPEN c_check;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    FETCH c_check&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;      INTO p_check;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    CLOSE c_check;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    IF p_check.cash_receipt_id IS NULL&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    THEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;      RAISE no_existing_receipt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    END IF;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    IF p_check.status = 'APP'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    THEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;      RAISE receipt_already_applied;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    END IF;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    IF p_check.status = 'REV'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    THEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;      RAISE receipt_already_reversed;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    END IF;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    p_cash_receipt_id := p_check.cash_receipt_id;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    RETURN TRUE;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  EXCEPTION&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    WHEN no_existing_receipt THEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;      fnd_message.set_name('AR', 'AR_RAPI_CASH_RCPT_ID_INVALID');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;      RETURN FALSE;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    WHEN receipt_already_applied THEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;      fnd_message.set_name('AR', 'GENERIC_MESSAGE');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;      fnd_message.set_token('GENERIC_TEXT'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                           ,'This receipt has been applied to transaction in Delphi Oracle Receivables.' ||&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                            chr(10) ||&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                            'Please unapply the receipt before reversing');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;      RETURN FALSE;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    WHEN receipt_already_reversed THEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;      fnd_message.set_name('AR', 'GENERIC_MESSAGE');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;      fnd_message.set_token('GENERIC_TEXT'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                           ,'This receipt has already been reversed in Delphi Oracle Receivables.');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;      RETURN FALSE;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  END validate_reversal_flag_valid;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Please note that for any given receipt, the Step 2 &amp; Step 3 is mutually exclusive.&lt;br /&gt;&lt;br /&gt;To  refer to the source code  of the  package body, please click on &lt;a href="http://www.anilpassi.com/apps/incl/ar/code/AR_RECEIPTS_API.pdf"&gt;AR Receipts API.pdf&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33112393-115719899301158790?l=appstechnical.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appstechnical.blogspot.com/feeds/115719899301158790/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33112393&amp;postID=115719899301158790' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/115719899301158790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/115719899301158790'/><link rel='alternate' type='text/html' href='http://appstechnical.blogspot.com/2006/09/oracle-ar-receipt-apiback-in-year-2002.html' title=''/><author><name>Anil Passi</name><uri>http://www.blogger.com/profile/14859722075898946765</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-33112393.post-115715676762502440</id><published>2006-09-02T00:25:00.000Z</published><updated>2007-02-21T01:37:43.140Z</updated><title type='text'></title><content type='html'>&lt;h3&gt;Oracle Read Only APPS Database Schema&lt;br /&gt;&lt;/h3&gt;In this article I have detailed how to create a read only schema for APPS in Oracle eBusiness Suite, without the overhead of creating thousands of synonyms. Whilst in the past I have known clients to implement this using synonyms. However the approach discussed below is designed without the need of having to create synonyms.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 1&lt;/span&gt;&lt;br /&gt;Create the read-only schema, in this case lets call it APPS_QUERY.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 2.&lt;/span&gt;&lt;br /&gt;Surely, the schema created in above Step 1 will be given read only grants to objects in apps. There will be cases where the grant command might fail. To monitor such failures  create a table as below&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;conn xx_g4g/&amp;2 ;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;--For APPS_QUERY. This table will capture the exceptions during Grants&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;PROMPT create table XX_GRANTS_FAIL_APPS_QUERY&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;create table XX_GRANTS_FAIL_APPS_QUERY (&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;     object_name VARCHAR2(100)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    ,sqlerrm varchar2(2000)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    ,creation_date DATE&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;     );&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;grant all on XX_GRANTS_FAIL_APPS_QUERY to apps with grant option;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;grant select on XX_GRANTS_FAIL_APPS_QUERY to apps_query ;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 3&lt;/span&gt;&lt;br /&gt;In this step we grant select on all the existing views and synonyms in apps schema to apps_query.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;conn apps/&amp;1 ;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;PROMPT This can take upto 15-30 minutes&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;PROMPT Granting SELECT on All synonyms and views to apps_query&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;DECLARE&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;--One off script to execute grants to apps_query&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;v_error VARCHAR2(2000);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;FOR p_rec IN (SELECT *&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;             FROM   all_objects&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;             WHERE  owner = 'APPS'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;             AND    object_type IN ('SYNONYM', 'VIEW')&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;             AND    object_name NOT LIKE '%_S')&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;LOOP&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; BEGIN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   EXECUTE IMMEDIATE 'grant select on ' || p_rec.object_name ||&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                     ' to apps_query';&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; EXCEPTION&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   WHEN OTHERS THEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;     v_error := substr(SQLERRM, 1, 2000);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;     INSERT INTO bes.XX_GRANTS_FAIL_apps_query&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;       (object_name&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;       ,SQLERRM&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;       ,creation_date&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;       )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;     VALUES&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;       (p_rec.object_name&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;       ,v_error&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;       ,sysdate&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;       );&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; END;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;END LOOP;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;COMMIT;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;END;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;/&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 4&lt;/span&gt;&lt;br /&gt;Write a after logon trigger on apps_query schema. The main purpose of this trigger is to alter the session to apps schema, such that the CurrentSchema will be set to apps for the session(whilst retaining apps_query restrictions).In doing so your logon will retain the permissions of apps_query schema(read_only). Howerver it will be able to reference the apps objects with exactly the same name as does a direct connection to apps schema.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;conn apps/&amp;1 ;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;PROMPT CREATE OR REPLACE TRIGGER xx_apps_query_logon_trg&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;CREATE OR REPLACE TRIGGER xx_apps_query_logon_trg&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;--16Jun2006 By Anil Passi&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;--Trigger to toggle schema to apps, but yet retaining apps_query resitrictions&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;--Also sets the org_id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;AFTER logon ON apps_query.SCHEMA&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;DECLARE&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;EXECUTE IMMEDIATE&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;       'declare begin ' ||&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;       'dbms_application_info.set_client_info ( 101 ); end;';&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;EXECUTE IMMEDIATE 'ALTER SESSION SET CURRENT_SCHEMA =APPS';&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;END;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;a&gt;&lt;/a&gt;Step 5&lt;/span&gt;&lt;br /&gt;Create a Trigger on the apps schema to issue select only grants for all new views and synonyms. Please note that I am excluding grants for sequences. SELECT grants for views and synonyms will be provided to apps_query as and when such objects are created in APPS. Please note that, all the APPS objects (views and synonyms) that existed in APPS schema prior to the implementation of this design, would have been granted read-only access to apps_query in "Step 2".&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;conn apps/&amp;1 ;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;PROMPT CREATE OR REPLACE TRIGGER xx_grant_apps_query&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;CREATE OR REPLACE TRIGGER xx_grant_apps_query&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;--16Jun2006 By Anil Passi&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;--&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;AFTER CREATE ON APPS.SCHEMA&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;DECLARE&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_str VARCHAR2(255);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_job NUMBER;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;IF (ora_dict_obj_type IN ('SYNONYM', 'VIEW'))&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  AND (ora_dict_obj_name NOT LIKE '%_S')&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;THEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; l_str := 'execute immediate "grant select on ' || ora_dict_obj_name ||&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;          ' to apps_query";';&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; dbms_job.submit(l_job, REPLACE(l_str, '"', ''''));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;END IF;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;END;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;OK, now for sme notes:-&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Note1&lt;/span&gt;&lt;br /&gt;You need to ensure that the schema created in Step 1 has very limited permissions. Most importantly it must not be given grant for “EXECUTE/CREATE ANY PROCEDURE”. You will need to agree with your DBAs upfront for the permissions,&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Note 2&lt;/span&gt;&lt;br /&gt;Only views and synonyms will be granted access. Objects in your xx_g4g(bespoke) schema should have their synonyms in apps already in place.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Note 3&lt;/span&gt;&lt;br /&gt;If your site has multi org enabled, you will then have to set the org I'd after loggiong on to apps query schema. In case you have only one single ORG_ID, then would have been set as in Step 4 above.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Note 4&lt;/span&gt;&lt;br /&gt;ALTER SESSION SET CURRENT_SCHEMA =APPS&lt;br /&gt;This facilitates users to run their queries as if they were connected to apps schema. However, their previliges will be restricted to those of apps_query&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Note 5&lt;/span&gt;&lt;br /&gt;It is assumed that ALTER SESSION privilege will exist for APPS_QUERY schema.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Thanks,&lt;br /&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=33112393&amp;amp;postID=115715676762502440" com=""&gt;Anil Passi&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33112393-115715676762502440?l=appstechnical.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appstechnical.blogspot.com/feeds/115715676762502440/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33112393&amp;postID=115715676762502440' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/115715676762502440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/115715676762502440'/><link rel='alternate' type='text/html' href='http://appstechnical.blogspot.com/2006/09/oracle-read-only-apps-database-schema.html' title=''/><author><name>Anil Passi</name><uri>http://www.blogger.com/profile/14859722075898946765</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>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33112393.post-115707157714921423</id><published>2006-09-01T00:39:00.000Z</published><updated>2007-01-11T09:15:24.543Z</updated><title type='text'></title><content type='html'>&lt;h3&gt;Blob as Oracle Workflow Attachment&lt;/h3&gt;Please find a 4 step solution to send Binary Document Attachments with Oracle Workflows Notifications. Using this technique you can generate email notifications with attachments for MsWord, or PDF or any other binary files.&lt;br /&gt;&lt;br /&gt;Oracle has made sending binary documents as attachments with notifications a piece of cake. In the example below, I am assuming only one attachment per notification. However, you can create as many Attachment attributes you wish, and also can programmatically control how many attachments are sent per transactions. Anyway, below are four simple steps for sending Workflow Notifications with Attachments.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Step 1&lt;/span&gt;&lt;br /&gt;As in the picture below, workflow Message “XX_G4G Notification With Attachment” is defined. This message will be referenced by the Notification that sends either MsWord or PDF or any other binary attachment as email.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1078/3631/1600/wf_attach_01.0.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/1078/3631/320/wf_attach_01.0.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;Step 2.&lt;/span&gt;&lt;br /&gt;Define an attribute to the message defined in Step 1. This is shown in the picture below. Following must be noted:-&lt;br /&gt;Type: Document&lt;br /&gt;Source: Send&lt;br /&gt;Frame Target: New Window&lt;br /&gt;Attach Content: Yes.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1078/3631/1600/wf_attach_02.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/1078/3631/320/wf_attach_02.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you had dragged the Attribute from Workflow level into this message, then default sub-section will be populated automatically.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;Step 3.&lt;/span&gt;&lt;br /&gt;After executing the wf_engine.createprocess and before executing wf_engine.startprocess, we need to set a value for the attribute defined in Step 2. This can be done by calling wf_engine.setitemattrdocument as below&lt;br /&gt;wf_engine.setitemattrdocument&lt;br /&gt;(itemtype=&gt;'XG4GWFIT'&lt;br /&gt;, itemkey=&gt;'XG4GWFIT' || l_item_key&lt;br /&gt;, aname=&gt;'XX_G4G_ATTACHMENT1'&lt;br /&gt;, documentid =&gt;'PLSQLBLOB:xx_g4g_package.xx_notif_attach_procedure/' ||  to_char(l_file_id));&lt;br /&gt;&lt;br /&gt;Please note the manner in which parameter documented is assigned. The syntax is PLSQLBLOB:&lt;package name=""&gt;.&lt;procedure name=""&gt;/&lt;unique id="" to="" identify="" binary="" file=""&gt; . In my example, I am capturing the file_id from fnd_lobs. In your case this ID will be derived depending upon whether you are looking for PO Attachment or say an attachment to Oracle Sales Order or a Resume in iRecruitment or some course notes in oracle Learning Management.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;Step 4.&lt;/span&gt;&lt;br /&gt;Handle the execution of the procedure, in this case xx_notif_attach_procedure&lt;br /&gt;&lt;br /&gt;PROCEDURE xx_notif_attach_procedure&lt;br /&gt;(&lt;br /&gt;document_id   IN VARCHAR2&lt;br /&gt;,display_type  IN VARCHAR2&lt;br /&gt;,document      IN OUT BLOB&lt;br /&gt;,document_type IN OUT VARCHAR2&lt;br /&gt;) IS&lt;br /&gt;lob_id       NUMBER;&lt;br /&gt;bdoc         BLOB;&lt;br /&gt;content_type VARCHAR2(100);&lt;br /&gt;filename     VARCHAR2(300);&lt;br /&gt;BEGIN&lt;br /&gt;set_debug_context('xx_notif_attach_procedure');&lt;br /&gt;lob_id := to_number(document_id);&lt;br /&gt;&lt;br /&gt;-- Obtain the BLOB version of the document&lt;br /&gt;SELECT file_name&lt;br /&gt;  ,file_content_type&lt;br /&gt;  ,file_data&lt;br /&gt;INTO   filename&lt;br /&gt;  ,content_type&lt;br /&gt;  ,bdoc&lt;br /&gt;FROM   fnd_lobs&lt;br /&gt;WHERE  file_id = lob_id;&lt;br /&gt;document_type := content_type || ';name=' || filename;&lt;br /&gt;dbms_lob.copy(document, bdoc, dbms_lob.getlength(bdoc));&lt;br /&gt;EXCEPTION&lt;br /&gt;WHEN OTHERS THEN&lt;br /&gt;debug('ERROR ^^^^0018 ' || SQLERRM);&lt;br /&gt;wf_core.CONTEXT('xx_g4g_package'&lt;br /&gt;             ,'xx_notif_attach_procedure'&lt;br /&gt;             ,document_id&lt;br /&gt;             ,display_type);&lt;br /&gt;RAISE;&lt;br /&gt;END xx_notif_attach_procedure;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Please note the following:- &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Note 1&lt;/span&gt;. In step 3, the value of Unique File id that is passed in after / gets translated into document_id in step 4. This translation occurs within the workflow engine, when it splits the pl/sql name from parameter.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Note 2&lt;/span&gt;. Proecdure xx_notif_attach_procedure must be defined in the package specification too.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Note 3&lt;/span&gt;. This procedure has an out parameter  “document IN OUT BLOB”&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Note 4&lt;/span&gt;. The value from the Oracle Blob column is fetched into blob variable bdoc from fnd_lobs.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Note 5&lt;/span&gt;. Next you can use dbms_lob.copy to copy the value from blob variable into out parameter for notification.&lt;br /&gt;&lt;/unique&gt;&lt;/procedure&gt;&lt;/package&gt;&lt;br /&gt;When I implemented this the very first time, I could hardly believe it to be as simple as this, to implement BLOB attachments in Oracle Workflow Notifications.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Thanks,&lt;br /&gt;Anil Passi&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33112393-115707157714921423?l=appstechnical.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appstechnical.blogspot.com/feeds/115707157714921423/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33112393&amp;postID=115707157714921423' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/115707157714921423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/115707157714921423'/><link rel='alternate' type='text/html' href='http://appstechnical.blogspot.com/2006/08/blob-as-oracle-workflow.html' title=''/><author><name>Anil Passi</name><uri>http://www.blogger.com/profile/14859722075898946765</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>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33112393.post-115685248416253361</id><published>2006-08-29T11:43:00.000Z</published><updated>2006-08-29T11:54:44.346Z</updated><title type='text'></title><content type='html'>&lt;h3&gt;Create FND_USER with System Administrator&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If you have the Apps Password, its quite easy to create a FND_USER for yourself by using the API. I find this script very useful when development environment gets cloned from Production(that is when i do not have FND_USER in Production).&lt;br /&gt;&lt;br /&gt;Please note that:-&lt;br /&gt;1. You will be allocated System Administrator by this script. Hence you can assign whatever responsibilities that you desire latter, after logging in.&lt;br /&gt;2. The password will be set to oracle&lt;br /&gt;3. You need apps password to run this script. Alternately you need execute permission on fnd_user_pkg from the user where this script will be run. If using some other user, please use apps.fnd_user_pkg.createuser&lt;br /&gt;4. You need a COMMIT. I have not included the commit within this script.&lt;br /&gt;5. When running this script, you will be prompted to enter a user name.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;DECLARE&lt;br /&gt;--By: Anil Passi&lt;br /&gt;--When Jun-2001&lt;br /&gt;  v_session_id INTEGER := userenv('sessionid');&lt;br /&gt;  v_user_name  VARCHAR2(30) := upper('&amp;Enter_User_Name');&lt;br /&gt;BEGIN&lt;br /&gt;  --Note, can be executed only when you have apps password.&lt;br /&gt;  -- Call the procedure to Creaet FND User&lt;br /&gt;  fnd_user_pkg.createuser(x_user_name                  =&gt; v_user_name&lt;br /&gt;    ,x_owner                      =&gt; ''&lt;br /&gt;    ,x_unencrypted_password       =&gt; 'oracle'&lt;br /&gt;    ,x_session_number             =&gt; v_session_id&lt;br /&gt;    ,x_start_date                 =&gt; SYSDATE - 10&lt;br /&gt;    ,x_end_date                   =&gt; SYSDATE + 100&lt;br /&gt;    ,x_last_logon_date            =&gt; SYSDATE - 10&lt;br /&gt;    ,x_description                =&gt; 'appstechnical.blogspot.com'&lt;br /&gt;    ,x_password_date              =&gt; SYSDATE - 10&lt;br /&gt;    ,x_password_accesses_left     =&gt; 10000&lt;br /&gt;    ,x_password_lifespan_accesses =&gt; 10000&lt;br /&gt;    ,x_password_lifespan_days     =&gt; 10000&lt;br /&gt;    ,x_employee_id                =&gt; 30 /*Change this id by running below SQL*/&lt;br /&gt;     /*    &lt;br /&gt;     SELECT person_id&lt;br /&gt;           ,full_name&lt;br /&gt;     FROM   per_all_people_f&lt;br /&gt;     WHERE  upper(full_name) LIKE '%' || upper('&lt;ampersand&gt;full_name') || '%'&lt;br /&gt;     GROUP  BY person_id&lt;br /&gt;              ,full_name&lt;br /&gt;     */&lt;br /&gt;    ,x_email_address =&gt; 'appstechnical.blogspot@gmail.com'&lt;br /&gt;    ,x_fax           =&gt; ''&lt;br /&gt;    ,x_customer_id   =&gt; ''&lt;br /&gt;    ,x_supplier_id   =&gt; '');&lt;br /&gt;  fnd_user_pkg.addresp(username       =&gt; v_user_name&lt;br /&gt;                      ,resp_app       =&gt; 'SYSADMIN'&lt;br /&gt;                      ,resp_key       =&gt; 'SYSTEM_ADMINISTRATOR'&lt;br /&gt;                      ,security_group =&gt; 'STANDARD'&lt;br /&gt;                      ,description    =&gt; 'Auto Assignment'&lt;br /&gt;                      ,start_date     =&gt; SYSDATE - 10&lt;br /&gt;                      ,end_date       =&gt; SYSDATE + 1000);&lt;br /&gt;END;&lt;br /&gt;/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Thanks,&lt;br /&gt;Anil Passi&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33112393-115685248416253361?l=appstechnical.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appstechnical.blogspot.com/feeds/115685248416253361/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33112393&amp;postID=115685248416253361' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/115685248416253361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/115685248416253361'/><link rel='alternate' type='text/html' href='http://appstechnical.blogspot.com/2006/08/create-fnduser-with-system.html' title=''/><author><name>Anil Passi</name><uri>http://www.blogger.com/profile/14859722075898946765</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-33112393.post-115675905319292270</id><published>2006-08-28T09:54:00.000Z</published><updated>2006-08-28T10:02:44.966Z</updated><title type='text'></title><content type='html'>&lt;h3&gt;XMLImporter in Oracle Apps Framework &lt;/h3&gt;Please find a sample script for XMLImporter. This can be used to load new XML Documents that you will be creating (using jDeveloper ) while building new screens using OAF ( Oracle Applications Framework ).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This script is quite generic and can be used with little modifications to move XML Document in OAF from one environment to another.&lt;br /&gt;&lt;br /&gt;Eventually, the XML data will be loaded into MDS Repository within tables JDR_ATTRIBUTES, JDR_COMPONENTS, JDR_PATHS &amp; JDR_ATTRIBUTES_TRANS(if applicable).&lt;br /&gt;In order to Load the XML Document, you will require the Machine Name where the Oracle DB is hosted.&lt;br /&gt;&lt;br /&gt;This script will require the DB port number and the machine name where XML Document is being loaded. For this I have written a simple Unix Function, given that the XMLImporter will be run from Unix in this example. This function was written to make this script machine independent. Surely there are other ways to fetch these values.&lt;br /&gt;However, I will be using below profile options :-&lt;br /&gt;Profile option "CSF: eLocation Map host name" to get the host name of Oracle Database.&lt;br /&gt;Profile option "CSF: Database port to receive data" to get the port number.&lt;br /&gt;Please ensure that these two profile options are set before invoking XMLImporter. On 11.5.7 onwards, you will certainly have values in these profiles.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;getPortMachine() being a Unix function, connects to the database and populates two Unix Environment variables.&lt;br /&gt;&lt;br /&gt;For simplicity, I have taken an example of a Standard XML Document from iProcurement.&lt;br /&gt;This will illustrate the full/relative path one needs to use in XMLImporter script&lt;br /&gt;The document in the example is located at $ICX_TOP/mds/por/req/webui/CheckoutSummaryPG.xml&lt;br /&gt;&lt;br /&gt;#############################&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Script begins below&lt;br /&gt;&lt;/span&gt;#############################&lt;br /&gt;&lt;br /&gt;MACHINE_NAME=0&lt;br /&gt;PORT_NUMBER=0&lt;br /&gt;&lt;br /&gt;export MACHINE_NAME&lt;br /&gt;export PORT_NUMBER&lt;br /&gt;&lt;br /&gt;getPortMachine()&lt;br /&gt;{&lt;br /&gt;MACHINE_NAME=`sqlplus -s apps/$APPS_PWD &lt;&lt;eof&gt;&lt;br /&gt;                  set pages 0&lt;br /&gt;                  set lines 1023&lt;br /&gt;                  select fnd_profile.value('CSF_EMAP_DS_HOST') from dual ;&lt;br /&gt;                  exit&lt;br /&gt;                  EOF`&lt;br /&gt;&lt;br /&gt;PORT_NUMBER=`sqlplus -s apps/$APPS_PWD &lt;&lt;eof&gt;&lt;br /&gt;                   set pages 0&lt;br /&gt;                   set feed off&lt;br /&gt;                   select fnd_profile.value('CSF_MAP_DB_PORT') from dual ;&lt;br /&gt;                   exit&lt;br /&gt;                   EOF`&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;getPortMachine&lt;br /&gt;&lt;br /&gt;echo "**********************************"&lt;br /&gt;echo $MACHINE_NAME is Machine Name&lt;br /&gt;echo "**********************************"&lt;br /&gt;sleep 5&lt;br /&gt;echo $PORT_NUMBER is port number&lt;br /&gt;echo "**********************************"&lt;br /&gt;sleep 5&lt;br /&gt;&lt;br /&gt;"Echo import CheckoutSummaryPG.xml"&lt;br /&gt;adjava oracle.jrad.tools.xml.importer.XMLImporter $ICX_TOP/mds/por/req/webui/CheckoutSummaryPG.xml -rootdir $ICPO_TOP/bin -username apps -password $APPS_PWD -dbconnection "(description=(address_list=(address=(community=tcp.world)(protocol=tcp)(host=$MACHINE_NAME)(port=$PORT_NUMBER)))(connect_data=(sid=$TWO_TASK)))" -rootPackage /oracle/apps/icx/por/req/webui&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;##Please take care of the wrapping in this blog page.&lt;br /&gt;For wider viewing area, visit &lt;a href="http://oracle.anilpassi.com"&gt;http://oracle.anilpassi.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;eof&gt;&lt;eof&gt;Thanks,&lt;br /&gt;Anil Passi&lt;br /&gt;&lt;/eof&gt;&lt;/eof&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33112393-115675905319292270?l=appstechnical.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appstechnical.blogspot.com/feeds/115675905319292270/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33112393&amp;postID=115675905319292270' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/115675905319292270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/115675905319292270'/><link rel='alternate' type='text/html' href='http://appstechnical.blogspot.com/2006/08/xmlimporter-in-oracle-apps-framework.html' title=''/><author><name>Anil Passi</name><uri>http://www.blogger.com/profile/14859722075898946765</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-33112393.post-115671624538214285</id><published>2006-08-27T21:59:00.000Z</published><updated>2006-12-13T07:16:20.406Z</updated><title type='text'></title><content type='html'>&lt;h3&gt;Oracle FNDLOAD Script Examples .&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;In this article I wish to give real working examples of Oracle's FNDLOAD utility.&lt;br /&gt;Besides that, I have included some notes at the bottom of this article.&lt;br /&gt;&lt;br /&gt;I have used FNDLOAD successfully in past for several different entities/data types within Oracle 11i for almost all my previous clients, ever since this utility became available.&lt;br /&gt;Some of the examples in this FNDLOAD article include:-&lt;br /&gt;FNDLOAD to transfer Request Groups&lt;br /&gt;FNDLOAD for moving Concurrent Programs&lt;br /&gt;FNDLOAD to download and upload Forms Personalizations ( or Personalisations depending on where you are located )&lt;br /&gt;&lt;br /&gt;Use FNDLOAD for transferring value set definitions.&lt;br /&gt;--&gt;Please note that when transferring Key Flex Fields and Descriptive flex fields the respective value sets against each segment will be extracted and loaded automatically.&lt;br /&gt;&lt;br /&gt;Also, FNDLOAD can be used to migrate Key FlexFields, Descriptive Flexfields, Responsibilities and almost every other FND entity.&lt;br /&gt;&lt;br /&gt;Please note that the text written down here could get wrapped in the browser.&lt;br /&gt;Hence you may have to use \ to continue the single line command on Unix, in case you find the lines wrapping&lt;br /&gt;In my case I am ensuring that $CLIENT_APPS_PWD has the apps password before running the scripts&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;------------------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;##To FNDLOAD Request groups&lt;/span&gt;&lt;br /&gt;FNDLOAD apps/$CLIENT_APPS_PWD O Y DOWNLOAD $FND_TOP/patch/115/import/afcpreqg.lct XX_MY_REPORT_GROUP_NAME.ldt REQUEST_GROUP REQUEST_GROUP_NAME="XX_MY_REPORT_GROUP_NAME" APPLICATION_SHORT_NAME="XXGMS"&lt;br /&gt;##Note that&lt;br /&gt;##---------&lt;br /&gt;##   &lt;&lt;xxgms&gt;&gt; will be your Application Shortname where request group is registered&lt;br /&gt;##   XX_MY_REPORT_GROUP_NAME&lt;br /&gt;Will be the name of your request group&lt;br /&gt;##   ##To upload this Request Group in other environment after having transferred the ldt file&lt;br /&gt;&lt;br /&gt;FNDLOAD apps/$CLIENT_APPS_PWD O Y UPLOAD $FND_TOP/patch/115/import/afcpreqg.lct&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;------------------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;##To FNDLOAD Concurrent Programs&lt;/span&gt;&lt;br /&gt;FNDLOAD apps/$CLIENT_APPS_PWD O Y DOWNLOAD $FND_TOP/patch/115/import/afcpprog.lct XX_CUSTOM_ORACLE_INTERFACE_PROG.ldt PROGRAM APPLICATION_SHORT_NAME="XXGMS" CONCURRENT_PROGRAM_NAME="XX_CUSTOM_ORACLE_INTERFACE_PROG"&lt;br /&gt;##Note that&lt;br /&gt;##---------&lt;br /&gt;##   XXGMS will be your custom GMS Application Shortname where concurrent program is registered&lt;br /&gt;##   XX_CUSTOM_ORACLE_INTERFACE_PROG&lt;br /&gt;Will be the name of your request group&lt;br /&gt;##   XX_CUSTOM_ORACLE_INTERFACE_PROG.ldt is the file where concurrent program definition will be extracted&lt;br /&gt;##   ##To upload&lt;br /&gt;FNDLOAD apps/$CLIENT_APPS_PWD O Y UPLOAD $FND_TOP/patch/115/import/afcpprog.lct XX_CUSTOM_ORACLE_INTERFACE_PROG.ldt&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;------------------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;##To FNDLOAD Oracle Descriptive Flexfields&lt;/span&gt;&lt;br /&gt;$FND_TOP/bin/FNDLOAD apps/$CLIENT_APPS_PWD 0 Y DOWNLOAD $FND_TOP/patch/115/import/afffload.lct XX_PO_REQ_HEADERS_DFF.ldt DESC_FLEX APPLICATION_SHORT_NAME=PO DESCRIPTIVE_FLEXFIELD_NAME='PO_REQUISITION_HEADERS'&lt;br /&gt;##Note that&lt;br /&gt;##---------&lt;br /&gt;##   PO is the Application Shortname against which descriptive flexfield against PO Headers is registered&lt;br /&gt;##   PO_REQUISITION_HEADERS&lt;br /&gt;is the name of Descriptive Flexfield against PO Requisition Headers&lt;br /&gt;##           Use the SQL below to find the name of DFF, rather than logging into the screen (ooops via jinitiator)&lt;br /&gt;########-----&gt;SELECT&lt;br /&gt;########-----&gt;application_id, DESCRIPTIVE_FLEXFIELD_NAME, application_table_name&lt;br /&gt;########-----&gt;FROM&lt;br /&gt;########-----&gt;    fnd_descriptive_flexs_vl&lt;br /&gt;########-----&gt;WHERE&lt;br /&gt;########-----&gt;    APPLICATION_TABLE_NAME like  '%' || upper('&amp;tab_name') || '%'&lt;br /&gt;########-----&gt;ORDER BY APPLICATION_TABLE_NAME&lt;br /&gt;########-----&gt;/&lt;br /&gt;## To upload into another environment&lt;br /&gt;$FND_TOP/bin/FNDLOAD apps/$CLIENT_APPS_PWD 0 Y UPLOAD $FND_TOP/patch/115/import/afffload.lct XX_PO_REQ_HEADERS_DFF.ldt&lt;br /&gt;&lt;br /&gt;## OK another example for DFF against FND_LOOKUPS&lt;br /&gt;FNDLOAD apps/$CLIENT_APPS_PWD 0 Y DOWNLOAD $FND_TOP/patch/115/import/afffload.lct XX_FND_COMMON_LOOKUPS_DFF.ldt DESC_FLEX APPLICATION_SHORT_NAME=FND DESCRIPTIVE_FLEXFIELD_NAME='FND_COMMON_LOOKUPS'&lt;br /&gt;## OK another example for DFF against Project Accounting Expenditure Types&lt;br /&gt;FNDLOAD apps/$CLIENT_APPS_PWD 0 Y DOWNLOAD $FND_TOP/patch/115/import/afffload.lct XX_PA_EXPENDITURE_TYPES_DESC_FLEX_DFF.ldt DESC_FLEX APPLICATION_SHORT_NAME=PA DESCRIPTIVE_FLEXFIELD_NAME='PA_EXPENDITURE_TYPES_DESC_FLEX'&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;------------------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;##To FNDLOAD Oracle Menus&lt;/span&gt;&lt;br /&gt;$FND_TOP/bin/FNDLOAD apps/$CLIENT_APPS_PWD O Y DOWNLOAD $FND_TOP/patch/115/import/afsload.lct ICX_POR_SSP_HOME.ldt MENU MENU_NAME="ICX_POR_SSP_HOME"&lt;br /&gt;##Note that&lt;br /&gt;##---------&lt;br /&gt;##   Oracle Menus are not attached to applications. Hence no need to include application short name&lt;br /&gt;##   ICX_POR_SSP_HOME is the menu name. This can be validated via below SQL&lt;br /&gt;##   select user_menu_name from fnd_menus_vl where menu_name = 'ICX_POR_SSP_HOME' ;&lt;br /&gt;##   Also note that we do not pass in the User_menu_name in this example&lt;br /&gt;## OK, now to upload this file&lt;br /&gt;$FND_TOP/bin/FNDLOAD apps/$CLIENT_APPS_PWD O Y UPLOAD $FND_TOP/patch/115/import/afsload.lct ICX_POR_SSP_HOME.ldt&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;----------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;## Well, now for FND Messages to download a single message &lt;/span&gt;&lt;br /&gt;FNDLOAD apps/$CLIENT_APPS_PWD 0 Y DOWNLOAD $FND_TOP/patch/115/import/afmdmsg.lct XX_ICX_POR_LIFECYCLE_PAY_TIP.ldt FND_NEW_MESSAGES APPLICATION_SHORT_NAME='ICX' MESSAGE_NAME=XX_ICX_POR_LIFECYCLE_PAY_TIP&lt;br /&gt;&lt;br /&gt;##or  you may as well download all the messages within an application&lt;br /&gt;FNDLOAD apps/$CLIENT_APPS_PWD 0 Y DOWNLOAD $FND_TOP/patch/115/import/afmdmsg.lct XX_ALL_GMS_MESSAGES_00.ldt FND_NEW_MESSAGES APPLICATION_SHORT_NAME='XXGMS'&lt;br /&gt;&lt;br /&gt;## now to upload using FNDLOAD&lt;br /&gt;FNDLOAD apps/$CLIENT_APPS_PWD 0 Y UPLOAD $FND_TOP/patch/115/import/afmdmsg.lct XX_ICX_POR_LIFECYCLE_PAY_TIP.ldt&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;----------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;## Now it's the turn of Lookup values. Again, its not a rocket science&lt;/span&gt;&lt;br /&gt;FNDLOAD apps/$CLIENT_APPS_PWD 0 Y DOWNLOAD aflvmlu.lct XX_TRX_BATCH_STATUS.ldt FND_LOOKUP_TYPE APPLICATION_SHORT_NAME ='XXGMS' LOOKUP_TYPE="XX_TRX_BATCH_STATUS"&lt;br /&gt;## Note that&lt;br /&gt;##    XX_TRX_BATCH_STATUS is the name of FND Lookup Type in this example&lt;br /&gt;## This will download all the lookup codes within the defined lookup&lt;br /&gt;## To upload&lt;br /&gt;FNDLOAD apps/$CLIENT_APPS_PWD 0 Y UPLOAD aflvmlu.lct XX_TRX_BATCH_STATUS.ldt&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;----------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;## Now lets have a look at the profile option using oracle's FNDLOAD&lt;/span&gt;&lt;br /&gt;FNDLOAD apps/$CLIENT_APPS_PWD O Y DOWNLOAD $FND_TOP/patch/115/import/afscprof.lct POR_ENABLE_REQ_HEADER_CUST.ldt PROFILE PROFILE_NAME="POR_ENABLE_REQ_HEADER_CUST" APPLICATION_SHORT_NAME="ICX"&lt;br /&gt;## Note that&lt;br /&gt;##    POR_ENABLE_REQ_HEADER_CUST is the short name of profile option&lt;br /&gt;##    We aren't passing the user profile option name in this case. Validate using ...&lt;br /&gt;########-----&gt;select  application_id, PROFILE_OPTION_NAME || '==&gt;' || profile_option_id || '==&gt;' ||&lt;br /&gt;########-----&gt;USER_PROFILE_OPTION_NAME&lt;br /&gt;########-----&gt;from  FND_PROFILE_OPTIONS_VL&lt;br /&gt;########-----&gt;where  PROFILE_OPTION_NAME like '%' || upper('&amp;profile_option_name') || '%'&lt;br /&gt;########-----&gt;order by PROFILE_OPTION_NAME&lt;br /&gt;########-----&gt;/&lt;br /&gt;## Now to upload&lt;br /&gt;FNDLOAD apps/$CLIENT_APPS_PWD O Y UPLOAD $FND_TOP/patch/115/import/afscprof.lct POR_ENABLE_REQ_HEADER_CUST.ldt&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;----------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;## Now for the request sets that contain the stages and links for underlying concurrent programs&lt;/span&gt;&lt;br /&gt;## For this you will be firstly required to download the request set definition.&lt;br /&gt;## Next you will be required to download the Sets Linkage definition&lt;br /&gt;## Well, lets be clear here, the above sequence is more important while uploading&lt;br /&gt;FNDLOAD apps/$CLIENT_APPS_PWD 0 Y DOWNLOAD $FND_TOP/patch/115/import/afcprset.lct XX_GL_MY_INTERFACE_SET.ldt REQ_SET REQUEST_SET_NAME="FNDRSSUB4610101_Will_look_like_this"&lt;br /&gt;FNDLOAD apps/$CLIENT_APPS_PWD 0 Y DOWNLOAD $FND_TOP/patch/115/import/afcprset.lct XX_GL_MY_INTERFACE_SET_LINK.ldt REQ_SET_LINKS REQUEST_SET_NAME="FNDRSSUB4610101_Will_look_like_this"&lt;br /&gt;## Note that FNDRSSUB4610101 can be found by doing an examine on the&lt;br /&gt;########-----&gt;select request_set_name from fnd_request_sets_vl&lt;br /&gt;########-----&gt;where user_request_set_name = 'User visible name for the request set here'&lt;br /&gt;## Now for uploading the request set, execute the below commands&lt;br /&gt;FNDLOAD apps/$CLIENT_APPS_PWD 0 Y UPLOAD $FND_TOP/patch/115/import/afcprset.lct XX_GL_MY_INTERFACE_SET.ldt&lt;br /&gt;FNDLOAD apps/$CLIENT_APPS_PWD 0 Y UPLOAD $FND_TOP/patch/115/import/afcprset.lct XX_GL_MY_INTERFACE_SET_LINK.ldt&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;----------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;## Now for the responsibility&lt;/span&gt;&lt;br /&gt;FNDLOAD apps/$CLIENT_APPS_PWD O Y DOWNLOAD $FND_TOP/patch/115/import/afscursp.lct XX_PERSON_RESPY.ldt FND_RESPONSIBILITY RESP_KEY="XX_PERSON_RESPY"&lt;br /&gt;## note that XX_PERSON_RESPY is the responsibility key&lt;br /&gt;## Now to upload&lt;br /&gt;FNDLOAD apps/$CLIENT_APPS_PWD O Y UPLOAD $FND_TOP/patch/115/import/afscursp.lct XX_PERSON_RESPY.ldt&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;----------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;## OK, now for the forms personalizations&lt;/span&gt;&lt;br /&gt;## For the forms personalizations, I have given three examples as below.&lt;br /&gt;FNDLOAD apps/$CLIENT_APPS_PWD 0 Y DOWNLOAD $FND_TOP/patch/115/import/affrmcus.lct XX_PERWSHRG.ldt FND_FORM_CUSTOM_RULES function_name="PERWSHRG-404"&lt;br /&gt;FNDLOAD apps/$CLIENT_APPS_PWD 0 Y DOWNLOAD $FND_TOP/patch/115/import/affrmcus.lct XX_HZ_ARXCUDCI_STD.ldt FND_FORM_CUSTOM_RULES function_name="HZ_ARXCUDCI_STD"&lt;br /&gt;FNDLOAD apps/$CLIENT_APPS_PWD 0 Y DOWNLOAD $FND_TOP/patch/115/import/affrmcus.lct XX_AP_APXVDMVD.ldt FND_FORM_CUSTOM_RULES function_name="AP_APXVDMVD"&lt;br /&gt;## Note that the function name above is the function short name as seen in the Function Definition Screen&lt;br /&gt;## Now to upload the forms personalizations that are defined against these forms functions....&lt;br /&gt;FNDLOAD apps/$CLIENT_APPS_PWD 0 Y UPLOAD $FND_TOP/patch/115/import/affrmcus.lct XX_PERWSHRG.ldt&lt;br /&gt;FNDLOAD apps/$CLIENT_APPS_PWD 0 Y UPLOAD $FND_TOP/patch/115/import/affrmcus.lct XX_HZ_ARXCUDCI_STD.ldt&lt;br /&gt;FNDLOAD apps/$CLIENT_APPS_PWD 0 Y UPLOAD $FND_TOP/patch/115/import/affrmcus.lct XX_AP_APXVDMVD.ldt&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;----------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Notes:-&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1.&lt;/span&gt; Give special attention when downloading Menus or Responsibilities.&lt;br /&gt;In case your client has several developers modifying Responsibilities and Menus, then be ultra carefull. Not being carefull will mean that untested Forms and Functions will become available in your clients Production environment besides your tested forms, functions and menus.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;2. &lt;/span&gt;Be very careful when downloading flexfields that reference value sets with independent values for GL Segment Codes.&lt;br /&gt;By doing so, you will download and extract all the test data in GL Codes that might not be applicable for production.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3.&lt;/span&gt; There are several variations possible for FNDLOAD, for example you can restrict the download and uploads to specific segments within Descriptive Flex Fields.&lt;br /&gt;Please amend the above examples as desired for applying appropriate filterations.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;4.&lt;/span&gt; The list of examples by no mean cover all possible FNDLOAD entities.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;5.&lt;/span&gt; FNDLOAD is very reliable and stable, if used properly. This happens to by one of my favourite Oracle utilities.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4.&lt;/span&gt; Last but not the least, please test your FNDLOAD properly, so as to ensure that you do not get any unexpected data. In past I have noticed undesired results when the Lookup gets modified manually directly on production, and then the FNDLOAD is run for similar changes.&lt;br /&gt;&lt;br /&gt;If possible,  try to follow a good practice of modifying FNDLOADable data only by FNDLOAD on production environment.&lt;/xxgms&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33112393-115671624538214285?l=appstechnical.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appstechnical.blogspot.com/feeds/115671624538214285/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33112393&amp;postID=115671624538214285' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/115671624538214285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/115671624538214285'/><link rel='alternate' type='text/html' href='http://appstechnical.blogspot.com/2006/08/oracle-fndload-script-examples.html' title=''/><author><name>Anil Passi</name><uri>http://www.blogger.com/profile/14859722075898946765</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>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33112393.post-115662133597054278</id><published>2006-08-26T19:31:00.000Z</published><updated>2007-02-17T12:25:15.710Z</updated><title type='text'></title><content type='html'>&lt;h3&gt;Encumbrance Migration to Oracle Grants for Open Purchase Orders&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;Firstly, let me tell you that Oracle Applications Encumbrance functionality is very rich, it works well and is also very stable. But it did take Oracle some time to stabilise &amp; deliver feature rich encumbrance functionality.In oracle applications, my exposure to encumbrances is related to those in Oracle Purchasing / iProcurement, Oracle Payables, Labor Distributions. This article is mostly a technical explanation of how encumbrances can be migrated from open Purchase Orders into Oracle Grants / Oracle Projects.        My client was already live with Oracle Purchasing &amp;amp; iProcurement when this migration requirement came through. Prior to migration, the encumbrances were pushed into GL via the Oracle Purchasing module.&lt;br /&gt;When implementing Oracle Grants/ Oracle Projects, some of my clients GL Codes were mapped to Grants Awards, Projects, Tasks &amp; Expenditure type.  Before migration, the Encumbrances for such GL codes wouldn't be visible from Grants in either the Award status (ASI) or the Project Status (PSI) screen. The challenge was not only to make those encumbrances visible from GMS [Grants Management System], but also to have those liquidated/reversed when purchase orders were matched to Oracle Payables Invoices. Not only that, upon matching invoices in Payables, award status screen must then show those earlier encumbrances as actuals.           There are now three subsections below, and you may wish to read those that interest you.&lt;br /&gt;           Section 1. Challenges&lt;br /&gt;           Section 2. Steps undertaken&lt;br /&gt;           Section 3. Notes                &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Overall this task was of medium complexity, but challenges were :-&lt;/b&gt;&lt;br /&gt;1. Ensuring that all Open Purchase Orders regardless of their Approval/Reservation status were successfully migrated to POETA.&lt;br /&gt;2. To ensure that after switching the relevant Purchase Orders to POETA, those purchase Orders must be Re-Encumbered Successfully. See the note at very end to find how this was ensured.&lt;br /&gt;3. To ensure that all the &lt;st1:place&gt;PO&lt;/st1:place&gt;'s that were approved prior to migration were Re-Approved successfully without invoking the Approval Workflow and also without having to update any Oracle table.&lt;br /&gt;4. Use Oracle API's at as many possible places. No direct updates to any of the Oracle tables were to be done. Considering there aren't many public API's to help achieve these tasks, I had to do plenty digging to find the APIs that forms and workflows etc called. Those internal API's were re-used, hence avoiding any direct table updates.&lt;br /&gt;5. Some of the PO_DISTRBUTION_LINES records were partially matched. Hence such Distributions had to be split into two. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;Following steps were undertaken&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;All the below steps were accomplished by writing various procedures and functions within a PL/SQL Package&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; Step 1.&lt;/span&gt;&lt;br /&gt;Update the logged in User Id that executes migration program to be that of the Employee that can approve any Purchase Order. See Note 4 below.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; Step 2.&lt;/span&gt;&lt;br /&gt;Run Payables Accounting Process and Program Create Journal in GL&lt;br /&gt;Doing so will ensure that PO Distribution table is in synch with the latest set of matched invoices.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; Step 3.&lt;/span&gt;&lt;br /&gt;Load the data into a table say xx_eligible_po_dist_4_gms_enc&lt;br /&gt;    Create a local procedure for doing so.&lt;br /&gt;     &lt;span style=""&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;INSERT INTO xx_eligible_po_dist_4_gms_enc&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;(po_header_id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,po_line_id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,line_location_id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,po_distribution_id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,code_combination_id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,po_status&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,old_quantity_ordered&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,old_quantity_cancelled&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,old_quantity_billed&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,old_quantity_delivered&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,fnd_request_id)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;SELECT pod.po_header_id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,pod.po_line_id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,pod.line_location_id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,pod.po_distribution_id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,pod.code_combination_id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,po_headers_sv3.get_po_status(phea.po_header_id)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,pod.quantity_ordered&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,pod.quantity_cancelled&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,pod.quantity_billed&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,pod.quantity_delivered&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,g_conc_request_id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;FROM po_line_locations    pll&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,po_distributions     pod&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,po_headers           phea&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,po_lines             pol&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,po_lookup_codes      plc&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,po_line_types        plt&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,xx_enc_eligible_projects   eep&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,gl_code_combinations glcc&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;WHERE pod.line_location_id = pll.line_location_id AND&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;pol.po_line_id = pod.po_line_id AND&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;pol.line_type_id = plt.line_type_id AND&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;nvl(pll.closed_code&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,'OPEN') NOT IN ('CLOSED', 'FINALLY CLOSED') AND&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;nvl(pol.closed_code&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,'OPEN') NOT IN ('CLOSED', 'FINALLY CLOSED') AND&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;pll.shipment_type IN ('STANDARD', 'BLANKET', 'SCHEDULED') AND&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;nvl(pll.closed_code&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,'OPEN') = plc.lookup_code AND&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;plc.lookup_type = 'DOCUMENT STATE' AND&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;nvl(pll.cancel_flag&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,'N') = 'N' AND nvl(pol.cancel_flag&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,'N') = 'N' AND&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;glcc.code_combination_id = pod.code_combination_id AND&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;(glcc.segment3 LIKE 'P%' OR glcc.segment3 LIKE 'R%') AND&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;phea.po_header_id = pol.po_header_id AND&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;pod.quantity_ordered - pod.quantity_cancelled -&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;pod.quantity_billed &gt; 0 AND&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;phea.authorization_status IN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;('APPROVED', 'IN PROCESS', 'INCOMPLETE', 'REQUIRES REAPPROVAL') AND&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;eep.project_code = glcc.segment3 AND status &lt;&gt; 'CLOSED';&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Next Update the above entries in the table with POETA&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;PROCEDURE load_poeta_info_for_tab IS&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_poeta_rec r_poeta_rec_type;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;FOR p_rec IN (SELECT tt.code_combination_id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;FROM xx_eligible_po_dist_4_gms_enc tt&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;WHERE tt.fnd_request_id = g_conc_request_id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;GROUP BY tt.code_combination_id)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;LOOP&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_poeta_rec := get_poeta_rec_for_ccid(p_gl_code_combination_id =&gt; p_rec.code_combination_id);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;UPDATE xx_eligible_po_dist_4_gms_enc tab_poeta&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;SET tab_poeta.project_id            = l_poeta_rec.project_id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,tab_poeta.expenditure_org_id    = l_poeta_rec.expenditure_org_id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,tab_poeta.expenditure_type      = l_poeta_rec.expenditure_type&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,tab_poeta.task_id               = l_poeta_rec.task_id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,tab_poeta.award_id              = l_poeta_rec.award_id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,tab_poeta.expenditure_item_date = l_poeta_rec.expenditure_item_date&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;WHERE tab_poeta.code_combination_id = p_rec.code_combination_id;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;END LOOP;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;END load_poeta_info_for_tab;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; Step 4. Validate the POETA information loaded into above table by calling api's&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;gms_transactions_pub.validate_transaction(p_project_id            =&gt; p_rec.project_id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,p_task_id               =&gt; p_rec.task_id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,p_award_id              =&gt; p_rec.award_id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,p_expenditure_type      =&gt; p_rec.expenditure_type&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,p_expenditure_item_date =&gt; p_rec.expenditure_item_date&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,p_calling_module        =&gt; 'POXPOEPO'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,p_outcome               =&gt; v_gms_outcome);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;pa_transactions_pub.validate_transaction(p_rec.project_id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,p_rec.task_id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,p_rec.expenditure_item_date&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,p_rec.expenditure_type&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,NULL&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,141 --&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,NULL&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,'GBP' --x_denom_currency_code&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,'GBP' --x_acct_currency_code&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,p_rec.denom_raw_cost --denom_raw_cost&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,p_rec.denom_raw_cost --x_acct_raw_cost&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,NULL --x_acct_rate_type&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,NULL --x_acct_rate_date&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,NULL --x_acct_exchange_rate&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,NULL --transfer_ei&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,p_rec.expenditure_org_id --x_expenditure_org_id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,NULL --nl_resource_org_id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,NULL --transaction_source&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,'POXPOEPO' --x_form_name&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,p_rec.vendor_id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,1054 -- x_last_updated_by &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,NULL --x_attribute_category&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,NULL --x_attribute1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,NULL --x_attribute2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,NULL --x_attribute3&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,NULL --x_attribute4&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,NULL --x_attribute5&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,NULL --x_attribute6&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,NULL --x_attribute7&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,NULL --x_attribute8&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,NULL --x_attribute9&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,NULL --x_attribute10&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,NULL --x_attribute11&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,NULL --x_attribute12&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,NULL --x_attribute13&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,NULL --x_attribute14&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,NULL --x_attribute15&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,x_msg_application&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,x_msg_type&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,x_msg_token1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,x_msg_token2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,x_msg_token3&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,x_msg_count&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,x_msg_data&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,x_billable_flag);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;The POETA records that fail validation must be flagged and reported, so that they are'nt processed for migration.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt; Step 5.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Now we are ready to roll. Finally Loop through the eligible PO Lines and move them to POETA.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Please find the psuedo code below&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;LOOP FOR ALL ELIGIBLE PO LINES&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;debug_log('Processing p_get_pos.po_header_id=&gt;' ||&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;p_get_pos.po_header_id || ' status=&gt;' || p_get_pos.status);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;IF does_invvalid_account_exist(p_po_header_id =&gt; p_get_pos.po_header_id)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;THEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;RAISE gl_code_inactive;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;END IF;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;IF does_invalid_budget_acct_exist(p_po_header_id =&gt; p_get_pos.po_header_id)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;THEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;RAISE gl_code_inactive;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;END IF;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;IF check_invalid_locations_exists(p_po_header_id =&gt; p_get_pos.po_header_id)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;THEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;RAISE invalid_location;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;END IF;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;--Now here we would only have the validated PO's.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;--The POETA that was'nt validated were rejected during the &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;--validate_gms and validate_pa stages&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;b_originally_reserved_flag := is_orig_po_reserved(p_get_pos.status);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;b_originally_approved_flag := is_orig_po_approved(p_get_pos.status);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;IF b_originally_reserved_flag AND&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;non_reserved_line_exists(p_po_header_id =&gt; p_get_pos.po_header_id)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;THEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;RAISE unreserved_line_in_reserved_po;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;END IF;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;IF b_originally_reserved_flag AND&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;does_del_more_than_order_exist(p_po_header_id =&gt; p_get_pos.po_header_id)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;THEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;RAISE delivered_more_than_ordered;        &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;END IF ;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;debug_log('Remove the association to Requisition.');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;--the reason we do below, is to esure that REQ is not debited in gl_bc when Unreserve is done.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;--just updating attribute columns, hence no violation of Oracle support here&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;UPDATE po_distributions_all&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;SET attribute13              = req_header_reference_num || ':' ||&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;req_line_reference_num || ':' ||&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;req_distribution_id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,req_header_reference_num = NULL&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,req_line_reference_num   = NULL&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,req_distribution_id      = NULL&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,attribute12              = to_char(gl_encumbered_date&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,'DD-MON-YYYY')&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,gl_encumbered_date       = trunc(SYSDATE)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;WHERE po_header_id = p_get_pos.po_header_id;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;IF b_originally_reserved_flag&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;THEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;IF NOT unreserve_po(p_po_header_id =&gt; p_get_pos.po_header_id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,p_agent_id     =&gt; p_get_pos.agent_id)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;THEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;RAISE can_not_unreserve;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;END IF;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;debug_log('Successfully unreserved p_get_pos.po_header_id=&gt;' ||&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;p_get_pos.po_header_id);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;END IF;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;/* Here comes the main Logic for splitting the distribution lines*/&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;split_po_distribution_lines(p_po_header_id =&gt; p_get_pos.po_header_id);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;IF b_originally_reserved_flag&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;THEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;IF NOT reserve_po(p_po_header_id =&gt; p_get_pos.po_header_id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,p_agent_id     =&gt; p_get_pos.agent_id)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;THEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;RAISE can_not_reserve;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;END IF;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;debug_log('Successfully re-reserved p_get_pos.po_header_id=&gt;' ||&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;p_get_pos.po_header_id);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;END IF;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;IF b_originally_approved_flag&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;THEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;IF NOT approve_po(p_po_header_id =&gt; p_get_pos.po_header_id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,p_agent_id     =&gt; p_get_pos.agent_id)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;THEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;RAISE can_not_approve;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;END IF;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;debug_log('Successfully re-approved p_get_pos.po_header_id=&gt;' ||&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;p_get_pos.po_header_id);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;END IF;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;EXCEPTION&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;WHEN can_not_unreserve THEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;debug_log('Exception in unreserving p_get_pos.po_header_id=&gt;' ||&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;p_get_pos.po_header_id);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;WHEN can_not_reserve THEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;debug_log('Exception in reserving p_get_pos.po_header_id=&gt;' ||&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;p_get_pos.po_header_id);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;WHEN can_not_approve THEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;debug_log('Exception in approving p_get_pos.po_header_id=&gt;' ||&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;p_get_pos.po_header_id);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;WHEN gl_code_inactive THEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;debug_log('GL Code is Inactive p_get_pos.po_header_id=&gt;' ||&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;p_get_pos.po_header_id);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;WHEN unreserved_line_in_reserved_po THEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;debug_log('Unreserved Line Exists in Reserved PO. Skipping p_get_pos.po_header_id=&gt;' ||&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;p_get_pos.po_header_id);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;WHEN invalid_location THEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;debug_log('Invalid Location for Ship-to or Bill-to. Skipping p_get_pos.po_header_id=&gt;' ||&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;p_get_pos.po_header_id);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;WHEN delivered_more_than_ordered THEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;debug_log('Delivered Qty more than ordered qty. Skipping p_get_pos.po_header_id=&gt;' ||&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;p_get_pos.po_header_id);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;END;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;UPDATE xx_eligible_po_dist_4_gms_enc&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;SET processed_flag                 = 'Y'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,po_status_after_process_is_run = po_headers_sv3.get_po_status(p_get_pos.po_header_id)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,status_updated_by_request_id   = fnd_global.conc_request_id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;WHERE po_header_id = p_get_pos.po_header_id;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;END LOOP;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   Usefull API code packages for various activities in this context are&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;FUNCTION reserve_po(p_po_header_id IN INTEGER&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,p_agent_id     IN INTEGER) RETURN BOOLEAN IS&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec po_doc_manager_pub.dm_call_rec_type;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;x_progress    VARCHAR2(200);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_warning_msg VARCHAR2(200);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;x_mesg        VARCHAR2(200);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_attr_exist  NUMBER := 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;v_session_id  INTEGER := userenv('sessionid');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.action              := 'RESERVE_DOCUMENT';&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.document_type       := 'PO';&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.document_subtype    := 'STANDARD';&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.document_id         := p_po_header_id;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.line_id             := NULL;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.shipment_id         := NULL;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.distribution_id     := NULL;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.employee_id         := p_agent_id;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.new_document_status := NULL;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.offline_code        := NULL;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.note                := NULL;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.approval_path_id    := NULL;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.forward_to_id       := p_agent_id;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.action_date         := NULL;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.override_funds      := 'N';&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;-- Below are the output parameters&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.info_request     := NULL;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.document_status  := NULL;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.online_report_id := NULL;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.return_code      := NULL;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.error_msg        := NULL;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;/* This is the variable that contains the return value from the&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;** call to the DOC MANAGER:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;** SUCCESS =0,  TIMEOUT=1,  NO MANAGER=2,  OTHER=3&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.return_value := NULL;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;/* Call the API that calls the Document manager */&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;debug_log('Before Calling doc_manager to RESERVE');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;COMMIT;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;po_doc_manager_pub.call_doc_manager(l_dm_call_rec);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;COMMIT;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;dbms_lock.sleep(.2);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;COMMIT;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;debug_log('After Calling doc_manager to RESERVE');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;debug_log('RESERVE p_po_header_id=&gt;' || p_po_header_id ||&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;' L_DM_CALL_REC.Return_Value=&gt;' ||&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.return_value);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;IF l_dm_call_rec.return_value = 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;THEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;RETURN TRUE;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;END IF;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;--capture the fact that Doc Mgr could re-reserve the PO&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;log_error(p_po_header_id           =&gt; p_po_header_id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,p_po_distribution_id     =&gt; NULL&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,p_gl_code_combination_id =&gt; NULL&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,p_field_name             =&gt; 'CAN NOT RE-RESERVE'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,p_error_text             =&gt; l_dm_call_rec.error_msg);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;RETURN FALSE;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;--if doc mgr returns status 0, then return true&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;--in all other cases, return FALSE&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;END reserve_po;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;FUNCTION approve_po(p_po_header_id IN INTEGER&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,p_agent_id     IN INTEGER) RETURN BOOLEAN IS&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec po_doc_manager_pub.dm_call_rec_type;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;x_progress    VARCHAR2(200);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_warning_msg VARCHAR2(200);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;x_mesg        VARCHAR2(200);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_attr_exist  NUMBER := 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;v_session_id  INTEGER := userenv('sessionid');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.action              := 'APPROVE_DOCUMENT';&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.action_date         := SYSDATE;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.document_type       := 'PO';&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.document_subtype    := 'STANDARD';&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.document_id         := p_po_header_id;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.line_id             := NULL;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.shipment_id         := NULL;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.distribution_id     := NULL;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.employee_id         := g_buyer_employee_id;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.new_document_status := 'APPROVED';&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.offline_code        := NULL;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.note                := NULL;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.approval_path_id    := NULL;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.forward_to_id       := g_buyer_employee_id;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;/*  L_DM_CALL_REC.Action_date    := NULL;*/&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.override_funds := 'N';&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;-- Below are the output parameters&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.info_request     := NULL;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.document_status  := NULL;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.online_report_id := NULL;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.return_code      := NULL;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.error_msg        := NULL;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;/* This is the variable that contains the return value from the&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;** call to the DOC MANAGER:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;** SUCCESS =0,  TIMEOUT=1,  NO MANAGER=2,  OTHER=3&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.return_value := NULL;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;/* Call the API that calls the Document manager */&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;COMMIT;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;po_doc_manager_pub.call_doc_manager(l_dm_call_rec);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;COMMIT;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;dbms_lock.sleep(.2);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;COMMIT;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;debug_log('APPROVE p_po_header_id=&gt;' || p_po_header_id ||&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;' L_DM_CALL_REC.Return_Value=&gt;' ||&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.return_value);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;--if doc mgr returns status 0, then return true&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;--in all other cases, return FALSE&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;IF l_dm_call_rec.return_value = 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;THEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;RETURN TRUE;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;END IF;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;log_error(p_po_header_id           =&gt; p_po_header_id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,p_po_distribution_id     =&gt; NULL&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,p_gl_code_combination_id =&gt; NULL&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,p_field_name             =&gt; 'CAN NOT APPROVE'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,p_error_text             =&gt; l_dm_call_rec.error_msg);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;RETURN FALSE;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;END approve_po;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;FUNCTION unreserve_po(p_po_header_id IN INTEGER&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,p_agent_id     IN INTEGER) RETURN BOOLEAN IS&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec po_doc_manager_pub.dm_call_rec_type;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;x_progress    VARCHAR2(200);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_warning_msg VARCHAR2(200);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;x_mesg        VARCHAR2(200);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_attr_exist  NUMBER := 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;v_session_id  INTEGER := userenv('sessionid');&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.action              := 'UNRESERVE_DOCUMENT';&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.action_date         := SYSDATE;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.document_type       := 'PO';&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.document_subtype    := 'STANDARD';&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.document_id         := p_po_header_id;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.line_id             := NULL;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.shipment_id         := NULL;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.distribution_id     := NULL;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.employee_id         := p_agent_id;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.new_document_status := NULL;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.offline_code        := NULL;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.note                := NULL;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.approval_path_id    := NULL;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.forward_to_id       := p_agent_id;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;/*  L_DM_CALL_REC.Action_date    := NULL;*/&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.override_funds := 'N';&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;-- Below are the output parameters&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.info_request     := NULL;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.document_status  := NULL;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.online_report_id := NULL;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.return_code      := NULL;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.error_msg        := NULL;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;/* This is the variable that contains the return value from the&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;** call to the DOC MANAGER:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;** SUCCESS =0,  TIMEOUT=1,  NO MANAGER=2,  OTHER=3&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.return_value := NULL;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;/* Call the API that calls the Document manager */&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;COMMIT;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;po_doc_manager_pub.call_doc_manager(l_dm_call_rec);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;COMMIT;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;dbms_lock.sleep(.2);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;COMMIT;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;debug_log('UNRESERVE p_po_header_id=&gt;' || p_po_header_id ||&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;' L_DM_CALL_REC.Return_Value=&gt;' ||&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;l_dm_call_rec.return_value);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;--if doc mgr returns status 0, then return true&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;--in all other cases, return FALSE&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;IF l_dm_call_rec.return_value = 0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;THEN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;RETURN TRUE;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;END IF;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;--capture the fact that Doc Mgr could not un-reserve the PO&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;log_error(p_po_header_id           =&gt; p_po_header_id&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,p_po_distribution_id     =&gt; NULL&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,p_gl_code_combination_id =&gt; NULL&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,p_field_name             =&gt; 'CAN NOT UNRESERVE'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;,p_error_text             =&gt; l_dm_call_rec.error_msg);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;RETURN FALSE;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;END unreserve_po;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;Step 6.&lt;br /&gt;Run exceptions. I had written half a dozen SQLs for reconcilliation etc.&lt;br /&gt;&lt;br /&gt;Step 7.&lt;br /&gt;After reconcilliation, delete the Journals from GL_INTERFACE.&lt;br /&gt;But before deletion please complete your reconcilliation.&lt;br /&gt;You may decide not to delete those journals, but Oracle support gave  a nod to this.&lt;br /&gt;       &lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Important notes for migration encumbrances to poeta&lt;/span&gt;&lt;br /&gt;  &lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Note 1.&lt;/span&gt;&lt;br /&gt;Internal to Oracle Encumbrances, two key tables are GMS_BC_PACKETS and GL_BC_PACKETS. Do not modify the data within these tables, treat these two tables as sacred tables. These tables are where the encumbrances are queued, which eventually hits the GL in GL_BALANCES. However, feel free to use gl_bc_packets to debug the progression of encumbrances. I learnt quite a lot about encumbrances by merely studying the type of record that gets inserted into packet tables at various stages of PO/Req Entry, Approval, Reservation, Cancellation &amp; Matching stages. The reference1 column in gl_bc_packets will tell you whether the Transaction is PO or REQ. There reference2 columns stores the respective header id, and reference3 stored the po_dist_id. Rest of the reference columns may be used, but I never bothered much as Ref1,2,3 sufficed for my requirements. Also, I must mention that GL_BC_PACKETS is for queuing encumbrances into GL. Once those encumbrances have been transferred and Posted, the respective records in GL_BC_PACKETS get deleted by running Oracle's concurrent process. &lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Note 2.&lt;/span&gt;&lt;br /&gt;For some open PO's, you will be required for UnReserve, UnApprove, Modify PO with POETA and then Re-Reserve and Re-Approve the PO. For Re-Approval, make sure that your data migration Concurrent Process runs via an FND_USER that is attached to an Employee that has the highest approval limit across all cost centres for your client. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Note 3&lt;/span&gt;.&lt;br /&gt;Given that during migration to POETA, we re-reserve the Purchase Orders, it is necessary that all the Awards against which encumbrances are being migrated have Advisory Funds Check Level. You may as well set the Advisory level to None for those Awards. This must be taken care of when migrating the Awards into Oracle Grants Accounting. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Note 4.&lt;/span&gt;&lt;br /&gt;My client did not use internal Purchase Orders or Requisitions, hence I did not deal with those transactions. However the underlying principles must remain the same.                 &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Note 5.&lt;/span&gt;&lt;br /&gt;This migration task worked upon the Open Purchase Orders that had following possible statuses. I defined a global variable for each such status&lt;br /&gt; g_status_approved             VARCHAR2(50) := 'Approved';&lt;br /&gt; g_status_approved_reserved    VARCHAR2(50) := 'Approved, Reserved';&lt;br /&gt; g_status_in_process           VARCHAR2(50) := 'In Process';&lt;br /&gt; g_status_in_process_reserved  VARCHAR2(50) := 'In Process, Reserved';&lt;br /&gt; g_status_incomplete           VARCHAR2(50) := 'Incomplete';&lt;br /&gt; g_status_incomplete_reserved  VARCHAR2(50) := 'Incomplete, Reserved';&lt;br /&gt; g_status_requires_reapproval  VARCHAR2(50) := 'Requires Reapproval';&lt;br /&gt; g_status_requires_re_reserved VARCHAR2(50) := 'Requires Reapproval, Reserved'; &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Note 6.&lt;br /&gt;&lt;/span&gt;The Award_id that you see in po_distributions_all is not the gms_awards.award_id. For the PO_DISTRIBUTION Award_id you need to create adsl. Used Oracle API for doing so.      &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Note 7.&lt;/span&gt;&lt;br /&gt;We used document manager API for Re-Approval of Purchase Order, Reservation of Purchase Order and also for Unreserving the Purchase Order.&lt;br /&gt;Given that the document manager api sends a pipe signal that is read by doc mgr it happens in a different session. Not only  that, being run by a conc mgr, the doc mgr has limited slots hence give a sleep command before and after each document manager call. Reason we need to do this is to ensure that your loop execution is not faster than the load which Document Manager can undertake.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Note 8.&lt;/span&gt;&lt;br /&gt;My client was based in UK, and they had only one  single SOB. Hence i felt no risk in hardcoding the Currency Code to GBP.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33112393-115662133597054278?l=appstechnical.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appstechnical.blogspot.com/feeds/115662133597054278/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33112393&amp;postID=115662133597054278' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/115662133597054278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/115662133597054278'/><link rel='alternate' type='text/html' href='http://appstechnical.blogspot.com/2006/08/encumbrance-migration-to-oracle-grants.html' title=''/><author><name>Anil Passi</name><uri>http://www.blogger.com/profile/14859722075898946765</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-33112393.post-115654601987373056</id><published>2006-08-25T22:44:00.000Z</published><updated>2006-09-02T10:19:02.180Z</updated><title type='text'></title><content type='html'>&lt;h3&gt;Oracle iProcurement Demo&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;After much popular demand, for the learners of Oracle iProcurement, I am hereby  presenting an audio visual presentation of Oracle iProcurement.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;IMPORTANT: &lt;/span&gt; This demo[at bottom of this article] is purely intended for Educational and  Training purposes.&lt;br /&gt;&lt;br /&gt;My love affair with Oracle iProcurement started in the era  of AK Developer. Even though my entry to iProc world was late, Oracle's  iProc product has moved on further at a fantastic pace.&lt;br /&gt;Thankfully now all of  iProcurement is on OAF ( Oracle Applications Framework ). Yes this also means  partial page rendering.&lt;br /&gt;&lt;br /&gt;But this transition from AK Developer to JRAD  Oracle Framework did not happen overnight.&lt;br /&gt;I remember the day when Oracle  made a limited release of Framework in iProcurement. One of the main pages moved  to framework was the iProcurement homepage.Despite some minor connection  leaks(oh yes Connections not being released), the move of iProc Front page to  framework was very welcome.&lt;br /&gt;&lt;br /&gt;For my client, this meant we got rid of all  the AK Developer customizations and replaced those with Personalizations. Ah!!  reminding of Personalizations, "Add New Item" of type RAW never worked right  until 11.5.10 FWK CU2.&lt;br /&gt;&lt;br /&gt;Anyway, coming back to iProcurement, the demo  covers the following:- &lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;br /&gt;1. A simplistic end to end process of iProcurement.&lt;br /&gt;2. A brief overview of Oracle iProcurements integration with Workflowfor  Accounts Generation&lt;br /&gt;3. A presentation of what can be achieved by  personalizations ( a lot!! )&lt;br /&gt;4. How to design account generation for both  Projects and Non Projects based Account codes.&lt;br /&gt;&lt;br /&gt;Well one thing that I will  not be touching base here is Loading/Catalog Management.&lt;br /&gt;I have'nt seen the  need for Catalog management at the previous two iProcurement implementations  that I have worked upon.&lt;br /&gt;&lt;br /&gt;Yes, Punchout Implementation is an interesting  topic. Given the time, I will publish a similar demo for step-by-step setups to  implement punchouts in Oracle iProcurement. The link below may take 1 to 5  minutes to load...please keep patience...&lt;br /&gt;&lt;a href="http://www.anilpassi.com/apps/demo/iproc/iProcurement_Demo_11510.htm" target="_blank"&gt;Please click here to view Oracle iProcurement Demo with Account  Generation Implementation&lt;/a&gt;&lt;br /&gt;If using IE-7, please Control + Click on above  link   &lt;p&gt;Thanks,&lt;br /&gt;Anil Passi&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33112393-115654601987373056?l=appstechnical.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appstechnical.blogspot.com/feeds/115654601987373056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33112393&amp;postID=115654601987373056' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/115654601987373056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/115654601987373056'/><link rel='alternate' type='text/html' href='http://appstechnical.blogspot.com/2006/08/oracle-iprocurement-demo-after-much.html' title=''/><author><name>Anil Passi</name><uri>http://www.blogger.com/profile/14859722075898946765</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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33112393.post-115652236750261683</id><published>2006-08-25T16:12:00.000Z</published><updated>2006-08-27T22:11:59.153Z</updated><title type='text'></title><content type='html'>&lt;h3&gt;Oracle HRMS Payroll Interview Questions&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Qns 1&lt;/span&gt;. Can you call pl/sql package functions from within a Fast Formula?&lt;br /&gt;Ans 1. Yes you can&lt;br /&gt;&lt;span style="font-style: italic;"&gt;--&gt;How do we do this?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;--&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;There is a Define Function screen in HR. In this screen you will register the pl/sql as &lt;/span&gt;“External Function”.&lt;br /&gt;&lt;br /&gt;--&gt;If we want to pass a parameter PAYROLL_ID to this external pl/sql Function, how do we do it ?&lt;br /&gt;--&gt;The “Define Function” screen has a button named “Context Usage”.  This button opens up a window in which you can register the parameters.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Qns 2&lt;/span&gt;: P35 report is run after the “End Of Year (EOY)” process.&lt;br /&gt;Do you know which tables does EOY process populate.&lt;br /&gt;P35 and P60 reports uses these tables which get populated by EOY&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ans2&lt;/span&gt;:  FF_ARCHIVE_ITEMS&lt;br /&gt;        FF_ARCHIVE_ITEM_CONTEXTS&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Qns 3&lt;/span&gt;: How do you Debug a Fast Formula?&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ans 3&lt;/span&gt;: You can create a message variable in Fast Formula.&lt;br /&gt;This message variable must also be registered as a Formula Result( In “Formula Result Rule” window).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Qns 4&lt;/span&gt;: What are the various levels where you can Set up Payroll Costing Accounts?&lt;br /&gt;Which levels take the highest precedence? **Assume Labor Distributions is not implemented**&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ans4&lt;/span&gt;;&lt;br /&gt;            Element Entry   =&gt; Highest&lt;br /&gt;            Assignment      =&gt; Second Highest&lt;br /&gt;            Organization     =&gt; Third Highest&lt;br /&gt;            Element Link     =&gt; Fourth Highest&lt;br /&gt;            Payroll               =&gt; Fifth Highest&lt;br /&gt;&lt;br /&gt;&lt;span style=""&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Qns5&lt;/span&gt;: Technically speaking, how do you know from tables that an Employee has been terminated?&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ans 5&lt;/span&gt;:&lt;br /&gt;(a)  The Person_Type_ID in PER_PERSON_TYPE_USAGES_F will correspond to System Person Type EX_EMP&lt;br /&gt;(b)  A record gets created in table PER_PERIODS_OF_SERVICE with Actual_Termination_date being not null&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Qns6&lt;/span&gt;: How can you make Employee Number generation Automated based on business rule etc.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ans6&lt;/span&gt;: Use Fast Formula.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;span style="font-weight: bold;"&gt;Qns7&lt;/span&gt;: What is the difference between per_people_f and per_all_people_f&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ans7&lt;/span&gt;: PER_PEOPLE_F is a secured view on top of PER_ALL_PEOPLE_F. The secure view uses an API hr_security.show_person. This API internally checks for an entry in table PER_PERSON_LIST for the logged in person's security profile. A concurrent program named "Security List Maintainence program" will insert records in &lt;/span&gt;&lt;span style=""&gt;PER_PERSON_LIST&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Oracle HRMS Self  Service Interview Some Simple Questions&lt;br /&gt;Qns 1 &lt;/span&gt;:&lt;br /&gt;If you do personalization at both FUNCTION level and Responsibility level, which personalization has higher precedence?&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ans 1&lt;/span&gt;:&lt;br /&gt;Responsibility level. Responsibility level will override FUNCTION level personalizations.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Qns 2&lt;/span&gt;:&lt;br /&gt;Say you have done a lot of Personalizations to Self Service Screens.&lt;br /&gt;But all these Personalizations were done in DEVELOPMENT environment.&lt;br /&gt;How will you migrate these personalizations to PRODUCTION environment?&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ans2&lt;/span&gt;:&lt;br /&gt;Before 11.5.7…Use AKLoad&lt;br /&gt;This is a java program given by Oracle. This is the only way you can script it.&lt;br /&gt;In DEV you will do è akdload DOWNLOAD  &lt;region&gt;  ( &amp; other parameters)&lt;br /&gt;In PRD you will do è akdload UPLOAD  &lt;region&gt; ( &amp;amp; other parameters)&lt;br /&gt;On or after 11.5.10 Use responsibility “Functional Administrator”, then click&lt;br /&gt;on Personalization Tab, and then click on Import/Export.&lt;br /&gt;Next select the documents to be exported.&lt;br /&gt;Go to the unix box and tar the personalizations into a .tar file.&lt;br /&gt;On the Production environment unzip this tar file in location as entered in profile “FND: Personalization Document Root Path”.&lt;br /&gt;Setting up of this profile is mandatory or else Oracle Framework would’nt know where to search for the files to be imported.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/region&gt;&lt;/region&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33112393-115652236750261683?l=appstechnical.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appstechnical.blogspot.com/feeds/115652236750261683/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33112393&amp;postID=115652236750261683' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/115652236750261683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/115652236750261683'/><link rel='alternate' type='text/html' href='http://appstechnical.blogspot.com/2006/08/oracle-hrms-payroll-interview.html' title=''/><author><name>Anil Passi</name><uri>http://www.blogger.com/profile/14859722075898946765</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>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33112393.post-115651777618100219</id><published>2006-08-25T14:55:00.000Z</published><updated>2006-08-27T22:13:00.566Z</updated><title type='text'></title><content type='html'>&lt;h3&gt;Oracle Payroll Accounting &amp; Costing Basic Fundamentals&lt;/h3&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span style="font-size: 11pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span style="font-size: 11pt;"&gt;Golden Rule of accounting from ORACLE  PAYROLL&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 11pt;"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span class="GramE"&gt;Dr :-&lt;/span&gt;  Actual Account&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 11pt;"&gt;&lt;span style=""&gt;            &lt;/span&gt;&lt;span class="GramE"&gt;Cr :-&lt;/span&gt;  Balancing Account &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 11pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 11pt;"&gt;When &lt;span class="GramE"&gt;LD(&lt;/span&gt;Labour Distributions) comes into play, “Actual Account in  Payroll” is&lt;br /&gt;replaced by “Clearing Account in Payroll”.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 11pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 11pt;"&gt;Based on above golden rule, for  Earning Elements, following account&lt;br /&gt;entry takes &lt;span class="GramE"&gt;place  .&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 11pt;"&gt;The payroll run result value is  +&lt;span class="SpellE"&gt;ve&lt;/span&gt; for “&lt;span class="SpellE"&gt;XX_Custom&lt;/span&gt; Basic  Salary”&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;table class="MsoTableGrid8" style="border: medium none ; border-collapse: collapse;" border="1" cellpadding="0" cellspacing="0"&gt; &lt;tbody&gt; &lt;tr style=""&gt; &lt;td style="border: 1pt solid navy; padding: 0cm 5.4pt; background: navy none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 50.4pt;" valign="top" width="67"&gt; &lt;p class="MsoNormal" style=""&gt;&lt;b&gt;&lt;span style="font-size: 9pt; color: white;"&gt;Step&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-style: solid solid solid none; border-color: navy navy navy -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; background: navy none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 47.3pt;" valign="top" width="63"&gt; &lt;p class="MsoNormal" style=""&gt;&lt;b&gt;&lt;span style="font-size: 9pt; color: white;"&gt;Credit&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-style: solid solid solid none; border-color: navy navy navy -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; background: navy none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 60.7pt;" valign="top" width="81"&gt; &lt;p class="MsoNormal" style=""&gt;&lt;b&gt;&lt;span style="font-size: 9pt; color: white;"&gt;Debit&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-style: solid solid solid none; border-color: navy navy navy -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; background: navy none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 99pt;" valign="top" width="132"&gt; &lt;p class="MsoNormal" style=""&gt;&lt;b&gt;&lt;span style="font-size: 9pt; color: white;"&gt;Element&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-style: solid solid solid none; border-color: navy navy navy -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; background: navy none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 108pt;" valign="top" width="144"&gt; &lt;p class="MsoNormal" style=""&gt;&lt;b&gt;&lt;span style="font-size: 9pt; color: white;"&gt;How to  recognise&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr style=""&gt; &lt;td style="border-style: none solid solid; border-color: -moz-use-text-color navy navy; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 50.4pt;" valign="top" width="67"&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 9pt;"&gt;Post from &lt;b style=""&gt;Payroll&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color navy navy -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 47.3pt;" valign="top" width="63"&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 9pt;"&gt;Balancing  Account&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color navy navy -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 60.7pt;" valign="top" width="81"&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;s&gt;&lt;span style="font-size: 9pt;"&gt;&lt;o:p&gt;&lt;span style="text-decoration: none;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/s&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color navy navy -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 99pt;" valign="top" width="132"&gt; &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;&lt;b style=""&gt;&lt;span style="font-size: 9pt;"&gt;XX_Custom&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b style=""&gt;&lt;span style="font-size: 9pt;"&gt; Basic  Salary&lt;s&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/s&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color navy navy -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 108pt;" valign="top" width="144"&gt; &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt;"&gt;Pickup Balancing entries for  LD elements when in Credit&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr style=""&gt; &lt;td style="border-style: none solid solid; border-color: -moz-use-text-color navy navy; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 50.4pt;" valign="top" width="67"&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 9pt;"&gt;Post from &lt;b style=""&gt;Payroll&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color navy navy -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 47.3pt;" valign="top" width="63"&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;s&gt;&lt;span style="font-size: 9pt;"&gt;&lt;o:p&gt;&lt;span style="text-decoration: none;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/s&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color navy navy -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 60.7pt;" valign="top" width="81"&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;s&gt;&lt;span style="font-size: 9pt;"&gt;Clearing Account&lt;/span&gt;&lt;/s&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="font-size: 9pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color navy navy -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 99pt;" valign="top" width="132"&gt; &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;&lt;b style=""&gt;&lt;span style="font-size: 9pt;"&gt;XX_Custom&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b style=""&gt;&lt;span style="font-size: 9pt;"&gt; Basic  Salary&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color navy navy -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 108pt;" valign="top" width="144"&gt; &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt;"&gt;Ignore debit entries for LD  elements&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr style=""&gt; &lt;td style="border-style: none solid solid; border-color: -moz-use-text-color navy navy; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 50.4pt;" valign="top" width="67"&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span style="font-size: 9pt;"&gt;Post from &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 9pt;"&gt;LD&lt;b style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color navy navy -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 47.3pt;" valign="top" width="63"&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;s&gt;&lt;span style="font-size: 9pt;"&gt;Clearing Account&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/s&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color navy navy -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 60.7pt;" valign="top" width="81"&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span style="font-size: 9pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color navy navy -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 99pt;" valign="top" width="132"&gt; &lt;p class="MsoNormal"&gt;&lt;span class="SpellE"&gt;&lt;b style=""&gt;&lt;span style="font-size: 9pt;"&gt;XX_Custom&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b style=""&gt;&lt;span style="font-size: 9pt;"&gt; Basic  Salary&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color navy navy -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 108pt;" valign="top" width="144"&gt; &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr style=""&gt; &lt;td style="border-style: none solid solid; border-color: -moz-use-text-color navy navy; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 50.4pt;" valign="top" width="67"&gt; &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt;"&gt;Post from  &lt;b&gt;LD&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color navy navy -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 47.3pt;" valign="top" width="63"&gt; &lt;p class="MsoNormal" style=""&gt;&lt;s&gt;&lt;span style="font-size: 9pt;"&gt;&lt;o:p&gt;&lt;span style="text-decoration: none;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/s&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color navy navy -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 60.7pt;" valign="top" width="81"&gt; &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt;"&gt;Actual  Account&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color navy navy -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 99pt;" valign="top" width="132"&gt; &lt;p class="MsoNormal" style=""&gt;&lt;span class="SpellE"&gt;&lt;span style="font-size: 9pt;"&gt;XX_Custom&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9pt;"&gt; Basic  Salary&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color navy navy -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 108pt;" valign="top" width="144"&gt; &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 9pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 11pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 11pt;"&gt;For Rebate element, following  accounting takes place&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span class="GramE"&gt;&lt;span style="font-size: 11pt;"&gt;(  golden&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 11pt;"&gt; rule is violated, as the  original entries need to be either fully&lt;br /&gt;or partially reversed). The payroll  run result value is –&lt;span class="SpellE"&gt;ve&lt;/span&gt; for Rebate Element&lt;span style=""&gt;        &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;table class="MsoTableGrid8" style="border: medium none ; border-collapse: collapse;" border="1" cellpadding="0" cellspacing="0"&gt; &lt;tbody&gt; &lt;tr style=""&gt; &lt;td style="border: 1pt solid navy; padding: 0cm 5.4pt; background: navy none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 95.4pt;" valign="top" width="127"&gt; &lt;p class="MsoNormal" style=""&gt;&lt;b&gt;&lt;span style="font-size: 9pt; color: white;"&gt;Step&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-style: solid solid solid none; border-color: navy navy navy -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; background: navy none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 81pt;" valign="top" width="108"&gt; &lt;p class="MsoNormal" style=""&gt;&lt;b&gt;&lt;span style="font-size: 9pt; color: white;"&gt;Credit&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-style: solid solid solid none; border-color: navy navy navy -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; background: navy none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 99pt;" valign="top" width="132"&gt; &lt;p class="MsoNormal" style=""&gt;&lt;b&gt;&lt;span style="font-size: 9pt; color: white;"&gt;Debit&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-style: solid solid solid none; border-color: navy navy navy -moz-use-text-color; border-width: 1pt 1pt 1pt medium; padding: 0cm 5.4pt; background: navy none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 90pt;" valign="top" width="120"&gt; &lt;p class="MsoNormal" style=""&gt;&lt;b&gt;&lt;span style="font-size: 9pt; color: white;"&gt;Element&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr style=""&gt; &lt;td style="border-style: none solid solid; border-color: -moz-use-text-color navy navy; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 95.4pt;" valign="top" width="127"&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 9pt;"&gt;Post from &lt;b style=""&gt;Payroll&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color navy navy -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 81pt;" valign="top" width="108"&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 9pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color navy navy -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 99pt;" valign="top" width="132"&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 9pt;"&gt;Balancing Account&lt;b style=""&gt;&lt;s&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/s&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color navy navy -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 90pt;" valign="top" width="120"&gt; &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt;"&gt;NI Employers  Rebate&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr style=""&gt; &lt;td style="border-style: none solid solid; border-color: -moz-use-text-color navy navy; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 95.4pt;" valign="top" width="127"&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 9pt;"&gt;Post from &lt;b style=""&gt;Payroll&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color navy navy -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 81pt;" valign="top" width="108"&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;s&gt;&lt;span style="font-size: 9pt;"&gt;Clearing Account&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/s&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color navy navy -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 99pt;" valign="top" width="132"&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span style="font-size: 9pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color navy navy -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 90pt;" valign="top" width="120"&gt; &lt;p class="MsoNormal" style=""&gt;&lt;span class="SpellE"&gt;&lt;span style="font-size: 9pt;"&gt;XX_Custom&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9pt;"&gt; Basic  Salary&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr style=""&gt; &lt;td style="border-style: none solid solid; border-color: -moz-use-text-color navy navy; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 95.4pt;" valign="top" width="127"&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span style="font-size: 9pt;"&gt;Post from &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 9pt;"&gt;LD&lt;b style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color navy navy -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 81pt;" valign="top" width="108"&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;s&gt;&lt;span style="font-size: 9pt;"&gt;&lt;o:p&gt;&lt;span style="text-decoration: none;"&gt; &lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/s&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color navy navy -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 99pt;" valign="top" width="132"&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;s&gt;&lt;span style="font-size: 9pt;"&gt;Clearing Account&lt;/span&gt;&lt;/s&gt;&lt;/b&gt;&lt;b style=""&gt;&lt;span style="font-size: 9pt;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color navy navy -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 90pt;" valign="top" width="120"&gt; &lt;p class="MsoNormal" style=""&gt;&lt;span class="SpellE"&gt;&lt;span style="font-size: 9pt;"&gt;XX_Custom&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9pt;"&gt; Basic  Salary&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr style=""&gt; &lt;td style="border-style: none solid solid; border-color: -moz-use-text-color navy navy; border-width: medium 1pt 1pt; padding: 0cm 5.4pt; width: 95.4pt;" valign="top" width="127"&gt; &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt;"&gt;Post from  &lt;b&gt;LD&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color navy navy -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 81pt;" valign="top" width="108"&gt; &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt;"&gt;Actual  Account&lt;s&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/s&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color navy navy -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 99pt;" valign="top" width="132"&gt; &lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color navy navy -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 0cm 5.4pt; width: 90pt;" valign="top" width="120"&gt; &lt;p class="MsoNormal" style=""&gt;&lt;span class="SpellE"&gt;&lt;span style="font-size: 9pt;"&gt;XX_Custom&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9pt;"&gt; Basic  Salary&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p class="MsoNormal" style="margin-left: 36pt;"&gt;&lt;span style="font-size: 9pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;b style=""&gt;&lt;span style="font-size: 9pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span class="GramE"&gt;&lt;b style=""&gt;&lt;span style="font-size: 9pt;"&gt;Conclusions&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 9pt;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9pt;"&gt; Not taking  LD into account. These rules apply to costing entries in Payroll.)  :-&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-left: 54pt; text-indent: -18pt;"&gt;&lt;span style="font-size: 9pt;"&gt;&lt;span style=""&gt;1.&lt;span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9pt;"&gt;The golden rule applies only when run result values are  Positive.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-left: 90pt; text-indent: -18pt;"&gt;&lt;span style="font-size: 9pt;"&gt;&lt;span style=""&gt;a.&lt;span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9pt;"&gt;If run result value is positive, then  &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-left: 135pt; text-indent: -18pt;"&gt;&lt;span style="font-size: 9pt; font-family: Wingdings;"&gt;&lt;span style=""&gt;v&lt;span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9pt;"&gt;Credit&lt;span style=""&gt;          &lt;/span&gt;Balancing  Account&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-left: 135pt; text-indent: -18pt;"&gt;&lt;span style="font-size: 9pt; font-family: Wingdings;"&gt;&lt;span style=""&gt;v&lt;span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9pt;"&gt;Debit&lt;span style=""&gt;           &lt;/span&gt;Actual Account&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-left: 117pt;"&gt;&lt;span style="font-size: 9pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-left: 54pt; text-indent: -18pt;"&gt;&lt;span style="font-size: 9pt;"&gt;&lt;span style=""&gt;2.&lt;span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9pt;"&gt;The golden rule DOES NOT apply when run result values are  Negative. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-left: 90pt; text-indent: -18pt;"&gt;&lt;span style="font-size: 9pt;"&gt;&lt;span style=""&gt;a.&lt;span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9pt;"&gt;If run result value is negative, then  &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-left: 135pt; text-indent: -18pt;"&gt;&lt;span style="font-size: 9pt; font-family: Wingdings;"&gt;&lt;span style=""&gt;v&lt;span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9pt;"&gt;Credit&lt;span style=""&gt;          &lt;/span&gt;Actual Account &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-left: 135pt; text-indent: -18pt;"&gt;&lt;span style="font-size: 9pt; font-family: Wingdings;"&gt;&lt;span style=""&gt;v&lt;span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9pt;"&gt;Debit&lt;span style=""&gt;           &lt;/span&gt;Balancing  Account&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-left: 117pt;"&gt;&lt;span style="font-size: 9pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-left: 54pt; text-indent: -18pt;"&gt;&lt;span style="font-size: 9pt;"&gt;&lt;span style=""&gt;3.&lt;span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9pt;"&gt;The distributed element has a negative run result value  then&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-left: 90pt; text-indent: -18pt;"&gt;&lt;span style="font-size: 9pt;"&gt;&lt;span style=""&gt;a.&lt;span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9pt;"&gt;Debit entry is made against Actual Element ( i.e. “NI  Employers Rebate” )&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-left: 90pt; text-indent: -18pt;"&gt;&lt;span style="font-size: 9pt;"&gt;&lt;span style=""&gt;b.&lt;span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9pt;"&gt;Multiple Credit entries are made against elements in  Distribution Set&lt;br /&gt;&lt;span style=""&gt; &lt;/span&gt;( i.e.  XXX_BASIC_SALARY, XXX_LONDON_ALLOWANCE etc)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;table class="MsoNormalTable" style="margin-left: 95.4pt; width: 261pt; border-collapse: collapse;" border="0" cellpadding="0" cellspacing="0" width="348"&gt; &lt;tbody&gt; &lt;tr style="height: 12.75pt;"&gt; &lt;td style="padding: 0cm 5.4pt; background: aqua none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 72pt; height: 12.75pt;" nowrap="nowrap" valign="bottom" width="96"&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;NI  Employers Rebate&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="padding: 0cm 5.4pt; background: aqua none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 45pt; height: 12.75pt;" nowrap="nowrap" valign="bottom" width="60"&gt; &lt;p class="MsoNormal" style="text-align: right;" align="right"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;2.25&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="padding: 0cm 5.4pt; background: aqua none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 27pt; height: 12.75pt;" nowrap="nowrap" valign="bottom" width="36"&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;Dr&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="padding: 0cm 5.4pt; width: 117pt; height: 12.75pt;" nowrap="nowrap" valign="bottom" width="156"&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;Balancing  Account&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr style="height: 12.75pt;"&gt; &lt;td style="padding: 0cm 5.4pt; background: aqua none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 72pt; height: 12.75pt;" nowrap="nowrap" valign="bottom" width="96"&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;Basic  Salary&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="padding: 0cm 5.4pt; background: aqua none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 45pt; height: 12.75pt;" nowrap="nowrap" valign="bottom" width="60"&gt; &lt;p class="MsoNormal" style="text-align: right;" align="right"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;2.15&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="padding: 0cm 5.4pt; background: aqua none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 27pt; height: 12.75pt;" nowrap="nowrap" valign="bottom" width="36"&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;Cr&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="padding: 0cm 5.4pt; width: 117pt; height: 12.75pt;" nowrap="nowrap" valign="bottom" width="156"&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;Actual  Account&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr style="height: 12.75pt;"&gt; &lt;td style="padding: 0cm 5.4pt; background: aqua none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 72pt; height: 12.75pt;" nowrap="nowrap" valign="bottom" width="96"&gt; &lt;p class="MsoNormal"&gt;&lt;st1:city&gt;&lt;st1:place&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;London&lt;/span&gt;&lt;/st1:place&gt;&lt;/st1:City&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;  Allowance&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="padding: 0cm 5.4pt; background: aqua none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 45pt; height: 12.75pt;" nowrap="nowrap" valign="bottom" width="60"&gt; &lt;p class="MsoNormal" style="text-align: right;" align="right"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;0.1&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="padding: 0cm 5.4pt; background: aqua none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 27pt; height: 12.75pt;" nowrap="nowrap" valign="bottom" width="36"&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;Cr&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="padding: 0cm 5.4pt; width: 117pt; height: 12.75pt;" nowrap="nowrap" valign="bottom" width="156"&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;Actual  Account&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 9pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 9pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-left: 54pt; text-indent: -18pt;"&gt;&lt;span style="font-size: 9pt;"&gt;&lt;span style=""&gt;4.&lt;span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9pt;"&gt;The distributed element has a positive run result value  then&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-left: 90pt; text-indent: -18pt;"&gt;&lt;span style="font-size: 9pt;"&gt;&lt;span style=""&gt;a.&lt;span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9pt;"&gt;Credit entry is made against Actual Element ( i.e. “NI  Employer” )&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal" style="margin-left: 90pt; text-indent: -18pt;"&gt;&lt;span style="font-size: 9pt;"&gt;&lt;span style=""&gt;b.&lt;span style="font-family: 'Times New Roman'; font-style: normal; font-variant: normal; font-weight: normal; font-size: 7pt; line-height: normal; font-size-adjust: none; font-stretch: normal;"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9pt;"&gt;Multiple Debit entries are made against elements in  Distribution Set&lt;br /&gt;( i.e. XXX_BASIC_SALARY, XXX_LONDON_ALLOWANCE  etc)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;table class="MsoNormalTable" style="margin-left: 95.4pt; width: 243pt; border-collapse: collapse;" border="0" cellpadding="0" cellspacing="0" width="324"&gt; &lt;tbody&gt; &lt;tr style="height: 12.75pt;"&gt; &lt;td style="padding: 0cm 5.4pt; background: rgb(51, 153, 102) none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 72pt; height: 12.75pt;" nowrap="nowrap" valign="bottom" width="96"&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;NI  Employer&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="padding: 0cm 5.4pt; background: rgb(51, 153, 102) none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 41.4pt; height: 12.75pt;" nowrap="nowrap" valign="bottom" width="55"&gt; &lt;p class="MsoNormal" style="text-align: right;" align="right"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;399.99&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="padding: 0cm 5.4pt; background: rgb(51, 153, 102) none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 21.6pt; height: 12.75pt;" nowrap="nowrap" valign="bottom" width="29"&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;C&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="padding: 0cm 5.4pt; background: rgb(51, 153, 102) none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 108pt; height: 12.75pt;" nowrap="nowrap" valign="bottom" width="144"&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;Balancing  Account&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr style="height: 12.75pt;"&gt; &lt;td style="padding: 0cm 5.4pt; background: rgb(51, 153, 102) none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 72pt; height: 12.75pt;" nowrap="nowrap" valign="bottom" width="96"&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;Basic  Salary&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="padding: 0cm 5.4pt; background: rgb(51, 153, 102) none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 41.4pt; height: 12.75pt;" nowrap="nowrap" valign="bottom" width="55"&gt; &lt;p class="MsoNormal" style="text-align: right;" align="right"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;382.57&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="padding: 0cm 5.4pt; background: rgb(51, 153, 102) none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 21.6pt; height: 12.75pt;" nowrap="nowrap" valign="bottom" width="29"&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;D&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="padding: 0cm 5.4pt; background: rgb(51, 153, 102) none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 108pt; height: 12.75pt;" nowrap="nowrap" valign="bottom" width="144"&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;Actual  Account&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr style="height: 12.75pt;"&gt; &lt;td style="padding: 0cm 5.4pt; background: rgb(51, 153, 102) none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 72pt; height: 12.75pt;" nowrap="nowrap" valign="bottom" width="96"&gt; &lt;p class="MsoNormal"&gt;&lt;st1:city&gt;&lt;st1:place&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;London&lt;/span&gt;&lt;/st1:place&gt;&lt;/st1:City&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;  Allowance&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="padding: 0cm 5.4pt; background: rgb(51, 153, 102) none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 41.4pt; height: 12.75pt;" nowrap="nowrap" valign="bottom" width="55"&gt; &lt;p class="MsoNormal" style="text-align: right;" align="right"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;17.42&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="padding: 0cm 5.4pt; background: rgb(51, 153, 102) none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 21.6pt; height: 12.75pt;" nowrap="nowrap" valign="bottom" width="29"&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;D&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style="padding: 0cm 5.4pt; background: rgb(51, 153, 102) none repeat scroll 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; width: 108pt; height: 12.75pt;" nowrap="nowrap" valign="bottom" width="144"&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;Actual  Account&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 9pt;"&gt;&lt;o:p&gt; &lt;/o: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/33112393-115651777618100219?l=appstechnical.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appstechnical.blogspot.com/feeds/115651777618100219/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33112393&amp;postID=115651777618100219' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/115651777618100219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/115651777618100219'/><link rel='alternate' type='text/html' href='http://appstechnical.blogspot.com/2006/08/oracle-payroll-accounting-costing.html' title=''/><author><name>Anil Passi</name><uri>http://www.blogger.com/profile/14859722075898946765</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-33112393.post-115642393462526068</id><published>2006-08-24T12:50:00.000Z</published><updated>2006-08-29T05:34:31.780Z</updated><title type='text'></title><content type='html'>&lt;h3&gt;Restart / Bounce Apache in Oracle Apps 11i&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Please find the two commands that I use for bouncing the Apache        $COMMON_TOP/admin/scripts/$TWO_TASK*/adapcctl.sh stop&lt;br /&gt;$COMMON_TOP/admin/scripts/$TWO_TASK*/adapcctl.sh start&lt;br /&gt;&lt;br /&gt;Of course this needs to be done in Middle Tier of Oracle Applications.&lt;br /&gt;In case you have modified any java or class file in OAF ( Oracle Applications Framework ), then Apache bounce becomes mandatory for those changes to take effect.   &lt;br /&gt;&lt;br /&gt;In case you modify and load the XML Document in Oracle Framework, then it is noticed, for those XML changes to take effect, complete bounce of Middle Tier is required in Oracle Apps.   &lt;br /&gt;&lt;br /&gt;If your client is still stuck with AK Developer, then Apache bounce will be required after akload has been executed.&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33112393-115642393462526068?l=appstechnical.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appstechnical.blogspot.com/feeds/115642393462526068/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33112393&amp;postID=115642393462526068' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/115642393462526068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/115642393462526068'/><link rel='alternate' type='text/html' href='http://appstechnical.blogspot.com/2006/08/restart-bounce-apache-in-oracle-apps.html' title=''/><author><name>Anil Passi</name><uri>http://www.blogger.com/profile/14859722075898946765</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>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-33112393.post-115619614400427820</id><published>2006-08-21T21:26:00.000Z</published><updated>2006-08-27T22:14:36.833Z</updated><title type='text'></title><content type='html'>&lt;h3&gt;Oracle Workflow Timeouts design with Bank Holidays and Weekends&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;Very often our client demand that they want to set reminder or timeout for Oracle Workflow notifications after &lt;xyz&gt; number of working days. Well surely, they always wish to exclude not only the weekends but also the bank holidays.&lt;/xyz&gt;    &lt;p class="MsoNormal"&gt;Having implemented an approach for various Oracle based Workflows, I am now in a position to share a very simple methodology which uses recursion in a pl/sql function.&lt;/p&gt;&lt;p class="MsoNormal"&gt;A site level profile option is assigned to global variable &lt;span style=""&gt;&lt;span style="font-size:85%;"&gt;g_number_of_wait_days&lt;/span&gt; &lt;/span&gt;to capture the offset days. This happens during the package initialization of the pl/sql code.&lt;/p&gt;    &lt;p class="MsoNormal"&gt;For example, let’s assume that we need to escalate/timeout a workflow notification after 3 Working Days. In this case &lt;span style=""&gt;&lt;span style="font-size:85%;"&gt;g_number_of_wait_days&lt;/span&gt; &lt;/span&gt;will be assigned a value of 3 via a profile option.&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1078/3631/1600/WFTimeout1.7.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/1078/3631/400/WFTimeout1.3.jpg" alt="" border="0" /&gt;&lt;/a&gt;  &lt;p class="MsoNormal" style="margin-left: 36pt; text-indent: -18pt;"&gt;=&gt;Ensure that you have a table say xxx_holiday_list, in which you capture bank holidays. This needs once per year maintenance only&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 36pt; text-indent: -18pt;"&gt;=&gt;In the Oracle workflow, create a activity names “&lt;span style="font-size:100%;"&gt;Set Wait Days for Timeout” that executes a procedure named &lt;/span&gt;&lt;span style=""&gt;set_wait_days_for_timeout within a pl/sql &lt;/span&gt;&lt;span style="font-size:100%;"&gt;package&lt;/span&gt;&lt;span style=""&gt;.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;    &lt;p class="MsoNormal" style="margin-left: 18pt;"&gt;&lt;i style=""&gt;&lt;span style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;&lt;i style=""&gt;&lt;span style=""&gt;FUNCTION&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;i style=""&gt;&lt;span style=""&gt; is_this_date_bank_holiday(p_date &lt;b&gt;IN&lt;/b&gt; &lt;b&gt;DATE&lt;/b&gt;) &lt;b&gt;RETURN&lt;/b&gt; &lt;b&gt;BOOLEAN&lt;/b&gt; &lt;b&gt;IS&lt;/b&gt;&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;b&gt;CURSOR&lt;/b&gt; c_get &lt;b&gt;IS&lt;/b&gt;&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;b&gt;SELECT&lt;/b&gt; &lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style=""&gt;'x'&lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style=""&gt;&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;b&gt;FROM&lt;/b&gt;&lt;span style=""&gt;   &lt;/span&gt;&lt;/span&gt;xxx_holiday_list&lt;/i&gt;&lt;i style=""&gt;&lt;span style=""&gt; ibh&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;b&gt;WHERE&lt;/b&gt;&lt;span style=""&gt;  &lt;/span&gt;ibh.bank_holiday_date = p_date;&lt;br /&gt;&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;p_get c_get%&lt;b&gt;ROWTYPE&lt;/b&gt;;&lt;br /&gt;&lt;b&gt;BEGIN&lt;/b&gt;&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;b&gt;OPEN&lt;/b&gt; c_get;&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;b&gt;FETCH&lt;/b&gt; c_get&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;b&gt;INTO&lt;/b&gt; p_get;&lt;br /&gt;&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;b&gt;IF&lt;/b&gt; c_get%&lt;b&gt;FOUND&lt;/b&gt;&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;b&gt;THEN&lt;/b&gt;&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;b&gt;CLOSE&lt;/b&gt; c_get;&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;b&gt;RETURN&lt;/b&gt; &lt;b&gt;TRUE&lt;/b&gt;;&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;b&gt;END&lt;/b&gt; &lt;b&gt;IF&lt;/b&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;b&gt;CLOSE&lt;/b&gt; c_get;&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;b&gt;RETURN&lt;/b&gt; &lt;b&gt;FALSE&lt;/b&gt;;&lt;br /&gt;&lt;b&gt;END&lt;/b&gt; is_this_date_bank_holiday;&lt;/span&gt;&lt;/i&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 18pt;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;F&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;i style=""&gt;&lt;span style=""&gt;UNCTION&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;i style=""&gt;&lt;span style=""&gt; get_next_working_date(p_estimated_next_working_date &lt;b&gt;IN&lt;/b&gt; &lt;b&gt;DATE&lt;/b&gt;)&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;b&gt;RETURN&lt;/b&gt; &lt;b&gt;DATE&lt;/b&gt; &lt;b&gt;IS&lt;/b&gt;&lt;br /&gt;&lt;b&gt;BEGIN&lt;/b&gt;&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;b&gt;IF&lt;/b&gt; is_this_date_bank_holiday(trunc(p_estimated_next_working_date))&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;b&gt;THEN&lt;/b&gt;&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;b&gt;RETURN&lt;/b&gt; get_next_working_date(p_estimated_next_working_date + &lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style=""&gt;1&lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style=""&gt;);&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;b&gt;END&lt;/b&gt; &lt;b&gt;IF&lt;/b&gt;;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;&lt;i style=""&gt;&lt;span style=""&gt;&lt;b&gt;IF&lt;/b&gt; to_char(p_estimated_next_working_date, &lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style=""&gt;'DY'&lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style=""&gt;) = &lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style=""&gt;'SAT'&lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style=""&gt;&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;b&gt;THEN&lt;/b&gt;&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;b&gt;RETURN&lt;/b&gt; get_next_working_date(p_estimated_next_working_date + &lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style=""&gt;2&lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style=""&gt;);&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;b&gt;END&lt;/b&gt; &lt;b&gt;IF&lt;/b&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;b&gt;IF&lt;/b&gt; to_char(p_estimated_next_working_date, &lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style=""&gt;'DY'&lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style=""&gt;) = &lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style=""&gt;'SUN'&lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style=""&gt;&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;b&gt;THEN&lt;/b&gt;&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;b&gt;RETURN&lt;/b&gt; get_next_working_date(p_estimated_next_working_date + &lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style=""&gt;1&lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style=""&gt;);&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;b&gt;END&lt;/b&gt; &lt;b&gt;IF&lt;/b&gt;;&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;b&gt;RETURN&lt;/b&gt; p_estimated_next_working_date;&lt;br /&gt;&lt;b&gt;END&lt;/b&gt; get_next_working_date;&lt;/span&gt;&lt;/i&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 18pt;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;F&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;i style=""&gt;&lt;span style=""&gt;UNCTION&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;i style=""&gt;&lt;span style=""&gt; get_next_working_date(&lt;br /&gt;&lt;span style=""&gt;   &lt;/span&gt;p_estimated_next_working_date &lt;b&gt;IN&lt;/b&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;b&gt;DATE&lt;/b&gt;&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;,p_offset_days&lt;span style=""&gt;                       &lt;/span&gt;&lt;b&gt;INTEGER&lt;/b&gt; )&lt;br /&gt;&lt;span style=""&gt;   &lt;/span&gt;&lt;b&gt;RETURN&lt;/b&gt; &lt;b&gt;DATE&lt;/b&gt;&lt;br /&gt;&lt;b&gt;IS&lt;/b&gt;&lt;br /&gt;&lt;span style=""&gt;   &lt;/span&gt;v_next_working_date&lt;span style=""&gt;           &lt;/span&gt;&lt;b&gt;DATE&lt;/b&gt;;&lt;br /&gt;&lt;b&gt;BEGIN&lt;/b&gt;&lt;br /&gt;&lt;span style=""&gt;   &lt;/span&gt;&lt;b&gt;IF&lt;/b&gt; p_offset_days &lt; &lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style=""&gt;2&lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style=""&gt;&lt;br /&gt;&lt;span style=""&gt;   &lt;/span&gt;&lt;b&gt;THEN&lt;/b&gt;&lt;br /&gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;b&gt;RETURN&lt;/b&gt; get_next_working_date( p_estimated_next_working_date + &lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style=""&gt;1&lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style=""&gt; );&lt;br /&gt;&lt;span style=""&gt;   &lt;/span&gt;&lt;b&gt;END&lt;/b&gt; &lt;b&gt;IF&lt;/b&gt;;&lt;br /&gt;&lt;br /&gt;&lt;span style=""&gt;   &lt;/span&gt;v_next_working_date&lt;span style=""&gt;    &lt;/span&gt;:= get_next_working_date( p_estimated_next_working_date + &lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style=""&gt;1&lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style=""&gt; );&lt;br /&gt;&lt;span style=""&gt;   &lt;/span&gt;&lt;b&gt;RETURN&lt;/b&gt; get_next_working_date( v_next_working_date, p_offset_days - &lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style=""&gt;1&lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style=""&gt; );&lt;br /&gt;&lt;b&gt;END&lt;/b&gt; get_next_working_date;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 18pt;"&gt;&lt;span style="font-size:85%;"&gt;&lt;i style=""&gt;&lt;span style=""&gt;&lt;span style="font-weight: bold;"&gt;F&lt;/span&gt;&lt;b&gt;UNCTION&lt;/b&gt; get_timeout_minutes &lt;b&gt;RETURN&lt;/b&gt; &lt;b&gt;NUMBER&lt;/b&gt; &lt;b&gt;IS&lt;/b&gt;&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;b&gt;BEGIN&lt;/b&gt;&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;b&gt;RETURN&lt;/b&gt;(get_next_working_date(&lt;b&gt;SYSDATE&lt;/b&gt;&lt;br /&gt;&lt;span style=""&gt;                                                &lt;/span&gt;,g_number_of_wait_days) -&lt;br /&gt;&lt;span style=""&gt;           &lt;/span&gt;&lt;b&gt;SYSDATE&lt;/b&gt;) * &lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style=""&gt;24&lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style=""&gt; * &lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style=""&gt;60&lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style=""&gt;;&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;b&gt;END&lt;/b&gt; get_timeout_minutes;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;&lt;i style=""&gt;&lt;span style=""&gt;&lt;span style="font-weight: bold;"&gt;P&lt;/span&gt;&lt;b&gt;ROCEDURE&lt;/b&gt; set_wait_days_for_timeout&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;(&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;itemtype &lt;b&gt;IN&lt;/b&gt; &lt;b&gt;VARCHAR2&lt;/b&gt;&lt;br /&gt;&lt;span style=""&gt;   &lt;/span&gt;,itemkey&lt;span style=""&gt;  &lt;/span&gt;&lt;b&gt;IN&lt;/b&gt; &lt;b&gt;VARCHAR2&lt;/b&gt;&lt;br /&gt;&lt;span style=""&gt;   &lt;/span&gt;,actid&lt;span style=""&gt;    &lt;/span&gt;&lt;b&gt;IN&lt;/b&gt; &lt;b&gt;NUMBER&lt;/b&gt;&lt;br /&gt;&lt;span style=""&gt;   &lt;/span&gt;,funcmode &lt;b&gt;IN&lt;/b&gt; &lt;b&gt;VARCHAR2&lt;/b&gt;&lt;br /&gt;&lt;span style=""&gt;   &lt;/span&gt;,&lt;b&gt;RESULT&lt;/b&gt;&lt;span style=""&gt;   &lt;/span&gt;&lt;b&gt;IN&lt;/b&gt; &lt;b&gt;OUT&lt;/b&gt; &lt;b&gt;VARCHAR2&lt;/b&gt;&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;) &lt;b&gt;IS&lt;/b&gt;&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;n_timeout_in_minutes &lt;b&gt;NUMBER&lt;/b&gt; := get_timeout_minutes;&lt;br /&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;b&gt;BEGIN&lt;/b&gt;&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;b&gt;IF&lt;/b&gt; (funcmode != &lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style=""&gt;'RUN'&lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style=""&gt;)&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;b&gt;THEN&lt;/b&gt;&lt;br /&gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;b&gt;RETURN&lt;/b&gt;;&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;b&gt;END&lt;/b&gt; &lt;b&gt;IF&lt;/b&gt;;&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;wf_engine.setitemattrnumber(itemtype =&gt; itemtype&lt;br /&gt;&lt;span style=""&gt;                               &lt;/span&gt;,itemkey&lt;span style=""&gt;  &lt;/span&gt;=&gt; itemkey&lt;br /&gt;&lt;span style=""&gt;                               &lt;/span&gt;,aname&lt;span style=""&gt;    &lt;/span&gt;=&gt; &lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style=""&gt;'WAIT_DAYS_INCLUSIVE_WEEEKEND_H'&lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style=""&gt;&lt;br /&gt;&lt;span style=""&gt;                               &lt;/span&gt;,avalue&lt;span style=""&gt;   &lt;/span&gt;=&gt; n_timeout_in_minutes);&lt;br /&gt;&lt;br /&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;b&gt;RESULT&lt;/b&gt; := &lt;/span&gt;&lt;/i&gt;&lt;i style=""&gt;&lt;span style=""&gt;'COMPLETE:Y'&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;i style=""&gt;&lt;span style=""&gt;&lt;span style="font-size:85%;"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;  &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;END&lt;/b&gt; set_wait_days_for_timeout;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;Rather than spoon feeding you to explain the code, let me simply list the broader logic&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;End result of the above procedures and functions is to assign a value in minutes to an attribute workflow “&lt;/span&gt;&lt;span style=""&gt;WAIT_DAYS_INCLUSIVE_WEEEKEND_H”&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;Oracle workflow calls a procedure that in-turn calls a function names &lt;/span&gt;&lt;span style=""&gt;get_timeout_minutes. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;Above function then makes a call to get_next_working_date. On a closer look you will notice that the function &lt;/span&gt;&lt;span style=""&gt;get_next_working_date &lt;/span&gt;&lt;span style="font-size:100%;"&gt;is overloaded and gets passed in either a Date or Date and an offset. It recursively keeps skipping the days until it has gone past all the bank holidays and also all the weekends that might be encountered plus the offset days as defined in a site level profile option.&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;Finally, the approval notification is assigned the Workflow Attributes that dictates the timeout in minutes.&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;My 2 cents, to my knowledge I am not yet aware of an out of the box solution from Oracle. Until Oracle Workflow delivers one out of the box, please feel free to use this methodology.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/1078/3631/1600/WFTimeout2.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/1078/3631/400/WFTimeout2.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;Thanks,&lt;br /&gt;Anil Passi&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33112393-115619614400427820?l=appstechnical.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appstechnical.blogspot.com/feeds/115619614400427820/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33112393&amp;postID=115619614400427820' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/115619614400427820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/115619614400427820'/><link rel='alternate' type='text/html' href='http://appstechnical.blogspot.com/2006/08/oracle-workflow-timeouts-design-with.html' title=''/><author><name>Anil Passi</name><uri>http://www.blogger.com/profile/14859722075898946765</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-33112393.post-115619236340971637</id><published>2006-08-21T20:31:00.000Z</published><updated>2006-11-23T20:08:49.370Z</updated><title type='text'></title><content type='html'>&lt;h3&gt;My Introduction&lt;/h3&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Hello All,&lt;br /&gt;&lt;br /&gt;I am a Oracle Apps Technie, with some functional background.&lt;br /&gt;&lt;br /&gt;On this blog I intend to post all that I know and all that I will learn in the due course.&lt;br /&gt;&lt;br /&gt;Comments are most welcome, both positive and negative.&lt;br /&gt;&lt;br /&gt;Thanks&lt;br /&gt;Anil Passi&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/33112393-115619236340971637?l=appstechnical.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://appstechnical.blogspot.com/feeds/115619236340971637/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=33112393&amp;postID=115619236340971637' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/115619236340971637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/33112393/posts/default/115619236340971637'/><link rel='alternate' type='text/html' href='http://appstechnical.blogspot.com/2006/08/my-introduction-hello-all-i-am-oracle.html' title=''/><author><name>Anil Passi</name><uri>http://www.blogger.com/profile/14859722075898946765</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>6</thr:total></entry></feed>
