<?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:blogger='http://schemas.google.com/blogger/2008' 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-1671258754727628685</id><updated>2025-05-22T08:26:01.656+02:00</updated><category term="OAF"/><category term="Oracle Application Object Library"/><category term="Oracle Workflow"/><category term="GL"/><category term="SPEL"/><category term="TOAD"/><category term="flexfield"/><category term="security rules"/><category term="Audit"/><category term="Books"/><category term="JRE"/><category term="Kraftwerk"/><category term="OA Framework"/><category term="Oracle"/><category term="all_arguments"/><title type='text'>Adventures of an Oracle EBS Developer</title><subtitle type='html'>My thoughts and experience on developing extensions for 11i and R12</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://robertjungerius.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://robertjungerius.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Robert</name><uri>http://www.blogger.com/profile/08644116810054072551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_vMD4wTf0c20/TE2bwIiu3VI/AAAAAAAAO1E/O1bb3NsVU0Q/S220/kraftwerk+eletric+cafe+anim_3.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>30</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1671258754727628685.post-5109023725031634856</id><published>2011-04-08T15:43:00.001+02:00</published><updated>2011-04-08T15:43:08.020+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="OA Framework"/><category scheme="http://www.blogger.com/atom/ns#" term="OAF"/><title type='text'>Building a generic upload page in OA Framework</title><content type='html'>&lt;p&gt;Let’s built a very simple page in OAF to enable end-users to upload files to the FND_LOBS table.&amp;#160; &lt;br /&gt;After they have been inserted in the table you have all kinds of options, use them as attachments or save them on the filesystem of the server, I use them as input for interfaces for example.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;First of all we need some standard stuff from Oracle (actually the VO for FND_LOBS), so zip the contents of the $JAVA_TOP/oracle/apps/fnd/server and unzip in your JDEV_USER_HOME/myclasses directory.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Create a new OA Workspace and project…&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7HF9Ew0ptfWGQdNy2jFghhgJ4K5RGqiyYpuHLVMmJjobq4NfhULv1197ZsDQTN-9afM4l5Qr84mlMoXxIR105cKI1pPPUULRJzYKU-s7QebFcrOWJo3BVSmDM6gjfNiRXrCws5AjNm0s/s1600-h/image11.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin-left: 0px; margin-right: 0px; border-right-width: 0px&quot; height=&quot;133&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjXUUBdMnZ7BLlDajJgNuxqBhtFxiSez0q8W__rcxenWAwQV0-G0q_Vt8XmLWYU-07UR46Dj0_xvWJ28hDN7gAhgHto5VX1dumZL30SfpOaEpFGzlqY7TMjXtsu0FF7BXqgb6IUJ7i6qE//?imgmax=800&quot; width=&quot;244&quot; align=&quot;left&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Set the default package to something like xx.oracle.apps.fnd.upload.webui    &lt;br /&gt;I use webui as default package as i plan to create a custom page and controller which reside in the webui package.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtk3mhsu6JnFduwGwFtrasmMwxekk5ynZHnb7otcGjlUJRUrQAzhe0O_Tm01qrHGhMIqY1IvWTV1OaR6U8m6t5HDMkSvOnkBfR42mWAAMxSlzkx3JwYZIUW5H0EroHSs8zT8EGvsVhxhU/s1600-h/image20.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin-left: 0px; margin-right: 0px; border-right-width: 0px&quot; height=&quot;299&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhh5GJbFk2IW5qi3V7JV9tJumHxniK8NY6wNsljwfBNxUvIdkkBwBEnOrAcRYvka19Fm9kG1BLhqVxdI6LOmpRkVBAkuj182YkXMBqafuP6RDvPHCELTDY9WhwEE4V8eg0lRTATB4A2Cc0//?imgmax=800&quot; width=&quot;447&quot; align=&quot;left&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Click next twice to get to step 3…&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjj3LRT8LAyhhSGzAkXPlQG28IGrhf5sMbwE2I3gGAQ8T8fMcbLlraFjQJ57Vs8f79Lb2kxK5eSjHAtEc_ZcviuT01rY1DgEPHPrc_Wn2lRU3QklKPdo27vabVDOQO-PVfeNvIU8X7_Xpg/s1600-h/image26.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin-left: 0px; margin-right: 0px; border-right-width: 0px&quot; height=&quot;319&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixw88w6SHVT-R-WQrLnwTPlDAOkaFHD0AFX3nQCzBghf1m-c4TGdBD45T-wixJOFvgIdBMzD6TC4zf1T_2dh1R_lGeVvL_JGmttrFndU6IkJQTBcvobfg992eYQSwvyCLxz0lWzPWZvzM//?imgmax=800&quot; width=&quot;472&quot; align=&quot;left&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;First the DBC file is needed, you can find this file on the server or via a URL, see this &lt;a href=&quot;http://robertjungerius.blogspot.com/2010/08/get-contents-of-dbc-file-without-access.html&quot; target=&quot;_blank&quot;&gt;article&lt;/a&gt; for details.     &lt;br /&gt;Enter a EBS username and password and a valid application (short name) and responsibility (key).     &lt;br /&gt;Off course the EBS user you just entered should have access to this responsibility.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Create a new business component.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiuWK2KfDlupenuQAogl7MUvnUaTUACzX6v7dQK3E-G_AonZOkxwIodPN4XlizEiatqy8dVzLF8NUGiEAGHSquxhFiSldX1W66SMibjAY2QciSnj5DUpdqGSp_2wkrugkN8oqqiWdwLHU/s1600-h/image36.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin-left: 0px; margin-right: 0px; border-right-width: 0px&quot; height=&quot;226&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhbFOcADBgd6qVUpwqpmSkbLBwueFKbiW9je0HlXRtDnNlWqoKt5ktrmvu0IXlR9VD_CldIyF_mM4ZQLIiDRokPi2qsybjWFEmAMH5HJMohPsh99OOThfWhc0xvto0DQY0DYo7y2qHpvMA//?imgmax=800&quot; width=&quot;420&quot; align=&quot;left&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Leave the package name as is…&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfJPUxtXbPDrEzwgsQv0H0tHNzomBPThItxZzeztx1wUjV-mh9DzWiV1WBvwc3ZaVBZJEpTldnMLMCpXCzOUt4TlE2_6lyAmxGbNO8Lt6aL_LXnx6IJVv9TWzY8AYl30d4D7VZDYdMiYo/s1600-h/image37.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin-left: 0px; margin-right: 0px; border-right-width: 0px&quot; height=&quot;270&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAf5eeD9SKJfUZs28MUpvOLGOew2m5vhJJUyfX-3mgktAO_c4AdRCPD5R2lCDAi9ZkPOTSue9D3sUiBqf0xRHlD-5LHUegBl62uAx203IYHsOUTC2iGvMwuwXUDPo2ClAGqrhxv5xjAvs//?imgmax=800&quot; width=&quot;403&quot; align=&quot;left&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Press next and press finish on page 2.&lt;/p&gt;  &lt;p&gt;Now we can import the files you copied from the server to myclasses.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiN8HroaikUC6P-ivQ-ebuARwZHtR27ERaD44_FMa54QLcVlqipEHa4vxzoHPdihced5h-vDcQqFOhxuuijhUaEObU8UEoY5vdKTUP-GDd56X4e2j-ZvZr3nYTuggqHaG0BJZwdw1-5Ik8/s1600-h/image39.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin-left: 0px; margin-right: 0px; border-right-width: 0px&quot; height=&quot;230&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjj2MWBFsnJor7vKTeSbU9-uPQ0Up1SeICxcm6ZjyIU_MevMhXb8M_s9eoMc2q-aJq3kBbeB0Adwirv99WvvHlUi6u_Dgi9402xng6B1dIQjnRW2t-q6T7A6H6CpqB6g1eAaDIPx1ibgg4//?imgmax=800&quot; width=&quot;377&quot; align=&quot;left&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Find your myclasses directory and goto myclasses/oracle/apps/fnd/server, there should be a server.xml file over there which we will import. &lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3rElGan0Ms097-rMqZymQun4gcg_KztciP1xO1auvcn-gg3GPBDRvjJvaLBVooU2ZoQO_qyvY7zmYYfV95bwlAnuKd2tSUmlyeIFYW9QrBBsHK-3DGTrZzuvIDeYgTQMn14mkSbcNgYs/s1600-h/image49.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin-left: 0px; margin-right: 0px; border-right-width: 0px&quot; height=&quot;294&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhES_CCsuekghlBCD5N7tkbbAGhO5Brywl6bvakX-OlWUZVdb6rY-1jYXRZ9FYzXNfFxm2Veq-u11sTEznZzcw6DM2IDaCsT2__rHH0N_ZK_8kkM_rBEYD3lSWpfgp_xYdVH7Q_CoU-Msc//?imgmax=800&quot; width=&quot;405&quot; align=&quot;left&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;You can get following message, answer with Yes.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimgig_Ecl4uPMitFkrhDlZsbeO42NUH6erI0OwUeUUwI_0Z8EPKOPjgMSg4wLLdDHZTGbqRKtq0Ao3sL7X-YPErP6VH3EIl5RHuNh2WWb1XmDfJjAHERoN50nmd_TjgTHZK-2z7CtT9lg/s1600-h/image53.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin-left: 0px; margin-right: 0px; border-right-width: 0px&quot; height=&quot;123&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiTPgcGARvj13NuzIacx7TQWkeKC0aJvEAJiK8FqdD-hm3kcnKhQ5I9u9ol72H1_0q_QX12En-PkJ1dQyS_8qo3zq1_2vgyFZp00LgNg7YsqYxTumQHMUt6XCJXZdVIVPPA-PMMTanWN2Q//?imgmax=800&quot; width=&quot;312&quot; align=&quot;left&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Your project should now look like below:&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiRjndfZBIH-VoD7dtx26ClYM5nrbOz9ds-lFEZyqtV0eJSg9SD-KuHOI_DC2vlgCjCal2sY0twDk2Vlct4xx0nqX-uIerShMbNTKoFn-JOlbAYZc1n2VEO3dEl4D5dI0R3ACZGS1BC8go/s1600-h/image58.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin-left: 0px; margin-right: 0px; border-right-width: 0px&quot; height=&quot;118&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmn-7sL9bnz5uxqZtxc_sZjQVlusRht9cJ7eMm-88RmfUNyDrZP-mEWYRe8ZAxcRTKGOgR00qUz78qI764bMO8nSEr32IN79P9wA8hnl9sPAKx5b4fpO805BqIuSX4Nm_lvUhecyxtAJ0//?imgmax=800&quot; width=&quot;277&quot; align=&quot;left&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;When you open oracle.apps.fnd.server you should see all standard FND objects, we are interested in &lt;strong&gt;FndLobsVO&lt;/strong&gt;, which should be there as well.&lt;/p&gt;  &lt;p&gt;Now let’s create the page from which we will upload the files.    &lt;br /&gt;Click File – New – Web Tier – OA Components and choose Page, name it something like xxUploadPG.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidarJ6I5dyWAmRfhxU6OeVaIddeQCVKdurd4edJi2eHWJTHywoX25BnF4039G0vxt0QQyTksITAj7B41kQzFC22-IWU5l9QxMCuOf5Btr4fti_EUiSSzwgSz6oDip8woaZd_tmItfDAJw/s1600-h/image6.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin-left: 0px; margin-right: 0px; border-right-width: 0px&quot; height=&quot;348&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjc-JFmaDGM_Lpg1OYkaQrUY7wtF7pvTX2dYDr9b-y6KoMkO_Kc0QIVQk_1eGUmx_LANkVsOAZkdioIIbdMaOULrBGO9C4XeXvYcFtweOjedrP54bwF3xHB5kZ8LxtNRVL-fdlOHuj8_n4//?imgmax=800&quot; width=&quot;496&quot; align=&quot;left&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8xdH6QI3PuP9ORo9v0Meb1mz6k0ZJUmZtalFANeHFmoXgyNrlnf62EUMes-H0cSAbx4c2_eGp3IQVIBUYi59w3Mo_N0puMJ-QRPprFq6cgWvSn5VWLF4xA3Qv-2H4TqVBEvy2tKnzILQ/s1600-h/image101%5B1%5D.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin-left: 0px; margin-right: 0px; border-right-width: 0px&quot; height=&quot;149&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEpotfYd_Z6EDPqljzRKmL22BKa8EQIm1HLed2sdiBO39VVyTR3XDMGdr052jTrFS_WLDeB_3Bt0Uvd421mA1efi7gwOvJ6a_1WA_xzC1KoDx4wS1_ZPUJlx5fhggbpXlKsquL8gqhDTY//?imgmax=800&quot; width=&quot;377&quot; align=&quot;left&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;You will see the default Page Layout Region which i renamed to pageLayoutRegion.    &lt;br /&gt;Set the following properties:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;AM Definition to oracle.apps.fnd.server.OAAttachmentsAM &lt;/li&gt;    &lt;li&gt;Window title to something like: xx Web Upload &lt;/li&gt;    &lt;li&gt;Title to something like: Web Upload &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2zxfwQ5wbJuKw8XLl5fBardophtV_vVrNv1u2DYBZI31d1DdsCTrCH1qXLXD6ldLDqBwZWZW6aRydoR40qGlm7FhQFYomtEKqskLsIMsYKiBcujrp9Tn5Xr7jW_tR9X2CBR3tak0TePs/s1600-h/image3.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin-left: 0px; margin-right: 0px; border-right-width: 0px&quot; height=&quot;87&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiI_xWwqJAGDbVpDaWSrQJnv1C1PG99w81RLeniEPlggCyyJlcvdbL9Dnjb8WYMK3ZC4U3Z5i2VlCt100ybYWeV9Ib6UeWuQyMvJ7h9FnETXsKjUyQ8vA-TyOdCSJBxXPwaPutmgP31kBQ//?imgmax=800&quot; width=&quot;244&quot; align=&quot;left&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_YSdgLSIPdO-L2JNWyMjrsiJKIQd2kyJCm6BNrV05TnaLk_cuoyZcjP_UmmBnPJnZoIqK3ssFHqgE55Zl8HPwKus2un3nNkM7PjdYHyAHQ6QvCnui9AT0WinSblv8G-oqoADBFpV5q2o/s1600-h/image911.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin-left: 0px; margin-right: 0px; border-right-width: 0px&quot; height=&quot;317&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiXF7GsE_ttzcJQ0S47laxEwD6H705mRokih71WWtYM1TpNHALbZRkJICpFifLP5F-vW1LgiiT5qLDKcocmGHixk0SI7BaGGOOx9y1DGFYW3pMwyEbmUbopQACw0hPbbhsPvwlPStQ-EnY//?imgmax=800&quot; width=&quot;493&quot; align=&quot;left&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Add an item to the pageLayout region with Item Style messageFileUpload.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIweFZd-6qakRvBKXUr0lI4JvF8f4VibC2YYkdOHRk1exRQ9hvyI7g2Jp4b5enXRJl-tWNRRrgRJAdg3mo_TarLPKKzyXrDCGZLf26uw0gaLgUAcWtxRdS9TULM2LfrqEWqxk6uULRzTY/s1600-h/image411.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin-left: 0px; margin-right: 0px; border-right-width: 0px&quot; height=&quot;109&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyGqpQL25v_LcTxC1ZPqMgpmi1GA5SrzVEJv-DhMMkfolgbdnAw73lCGrBdQsokPRcDWN75HHYJ1aqGVkOo1CnRzth_mDsOaMVDdtudgg89_Xn3hvYFF4iW3Q31FWl3P_XUM8xRxwyW4c//?imgmax=800&quot; width=&quot;275&quot; align=&quot;left&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Enter properties as follows:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;View Instance: FndLobsVO &lt;/li&gt;    &lt;li&gt;Data Type: BLOB &lt;/li&gt;    &lt;li&gt;View Attribute: FileData (This is the BLOB column FILE_DATA in FND_LOBS) &lt;/li&gt;    &lt;li&gt;Prompt to something like: File Name &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjH5uygOFLHtWeZYEdPs93tuSbXKVsGom4XeaYyZL7cVdShv1wgewzwT9hwc8mqVHEhY5sDfqVloPAi3-wDG1pkizJNCG6-YkkOv2rLZDUyWD9Nn_FGG8RNZlmvLIWTolog_8yFdZkdZu4/s1600-h/image9111.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; margin-left: 0px; margin-right: 0px; border-right-width: 0px&quot; height=&quot;356&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiouAQqN4hC0LDwD7g_WL8gFJ8ea-DI0LkxLUdlE073Y58qCWHl8cynaetoNiNkOeujiq9K1WmRiTjLjy7-INbWIIIHMVe1E8-H4hVzbkklSoGLZOTp0n5mnv5bAfy9hiKz8dNya88pzhM//?imgmax=800&quot; width=&quot;215&quot; align=&quot;left&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Add a region of type pageButtonBar to hold the buttons and add a Submit and Cancel button (item style submitButton) to this region so we are able to add code later on to submit the upload of the file.    &lt;br /&gt;If you run your page, it will look like this now:&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYAwcAcSEhYNW1WvevKKX57C6ySu15VHEt14oDpDB7rt-RUcqEZ-TB_xgVJSsFCc6g8rShNPIWP25xSrinA_EAnxCHsPJZBDcOfR_iujIWW7POT7xKtGTJZFSNCMnLxAjDgy4UuTqJyhg/s1600-h/image41%5B1%5D.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;116&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKR5ct_cuS6yZRCMMCL7VjZWeU-C8mSgFDyCEsItvY8Sgx-33vRIcDgt9dmm4sDmeQxagF3RIs0W7HWFhwfz5mBQSfm8jKoMdVYe0r6lJ98JLBRAC3Kbx7nNpBGjBKPbsUFxG_d81PZj0//?imgmax=800&quot; width=&quot;899&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;To be able to cancel without any validation and return to the homepage we have to change 2 properties of the cancel button first, set Disable Server Side Validation and Disable Client Side Validation to True.    &lt;br /&gt;    &lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEguDwF7th73mgpZjQjMdk3rdWUiFrihBEnRszhTsJb2gNb_UGjZ425aD8BKIQMv21wlqeri8b4w6MayOuuQMXoscQyBCaT9Jq9YtyIO3qecSUoN7Y4lJym58TbLoIPn8emIq8f-lQHBdqQ/s1600-h/image13.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;60&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIoNZJj8UUs7OdnddrhV5U5Fgah_VOuRC4xbFA4P1Vk2swFHFys5mMAOfFsiJAcyk7Y7-fjHlZhli502dOyQmLeffQQVpjEICTHj23e5SB6Z-8mexO487TAcY1VpX26I3Th137lnI17NA//?imgmax=800&quot; width=&quot;286&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Add a controller to the pageLayout region.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2I5RSdQAwGNRBO08CW78AdqBmpef5rdXdR3wKIX71Hxsr-vMzeWYkEk4keJSwS0uY3n3d_6o6MKMWiGOkhrl0uW_a6iiVgbaFdQQFGbHG9VyfhMm6DUQH0xxTn7AEyfuYUC9MOId9tO8/s1600-h/image9.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;128&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIRHb1kB0DPbGRZtFyEBkpvjI6AX1XYFTHHkOTMfOCABWgyeSpxlY0G47bYG1rkMC-gLWikDihSlywytnhgPAorUE3Pdm4SEU9e6-uFhEnmjefkQaAkNiWmgO5sEU1l7Kt24ocoTngzQg//?imgmax=800&quot; width=&quot;419&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; For this example we will add all code to the controller, in real situations you should consider moving parts of the code to the AM and/or EO to get cleaner code in the controller. &lt;/p&gt;  &lt;p&gt;This it the complete code of the controller xxUploadCO.java, i hope the inline comments will do all the explanation:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face=&quot;Terminal&quot; size=&quot;1&quot;&gt;/*===========================================================================+        &lt;br /&gt;|&amp;#160;&amp;#160; Copyright (c) 2001, 2005 Oracle Corporation, Redwood Shores, CA, USA&amp;#160;&amp;#160;&amp;#160; |         &lt;br /&gt;|&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; All rights reserved.&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; |         &lt;br /&gt;+===========================================================================+         &lt;br /&gt;|&amp;#160; HISTORY&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; |         &lt;br /&gt;|&amp;#160; 1.0&amp;#160; RJUNGERIUS&amp;#160;&amp;#160; 07-APR-11 Initial creation&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; |         &lt;br /&gt;+===========================================================================*/         &lt;br /&gt;package xx.oracle.apps.fnd.upload.webui; &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face=&quot;Terminal&quot; size=&quot;1&quot;&gt;import oracle.apps.fnd.common.VersionInfo;        &lt;br /&gt;import oracle.apps.fnd.framework.webui.OAControllerImpl;         &lt;br /&gt;import oracle.apps.fnd.framework.webui.OAPageContext;         &lt;br /&gt;import oracle.apps.fnd.framework.webui.beans.OAWebBean; &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face=&quot;Terminal&quot; size=&quot;1&quot;&gt;import oracle.apps.fnd.framework.webui.OAWebBeanConstants; &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face=&quot;Terminal&quot; size=&quot;1&quot;&gt;import oracle.apps.fnd.framework.OAApplicationModule;        &lt;br /&gt;import oracle.apps.fnd.framework.OAViewObject;         &lt;br /&gt;import oracle.apps.fnd.framework.OAException; &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face=&quot;Terminal&quot; size=&quot;1&quot;&gt;import oracle.jbo.Row; &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face=&quot;Terminal&quot; size=&quot;1&quot;&gt;import oracle.apps.fnd.framework.webui.beans.message.OAMessageFileUploadBean;        &lt;br /&gt;import oracle.apps.fnd.framework.webui.OADataBoundValueViewObject; &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face=&quot;Terminal&quot; size=&quot;1&quot;&gt;/**        &lt;br /&gt;* Controller for ...         &lt;br /&gt;*/         &lt;br /&gt;public class xxUploadCO extends OAControllerImpl         &lt;br /&gt;{         &lt;br /&gt;&amp;#160; public static final String RCS_ID=&amp;quot;$Header$&amp;quot;;         &lt;br /&gt;&amp;#160; public static final boolean RCS_ID_RECORDED =         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; VersionInfo.recordClassVersion(RCS_ID, &amp;quot;%packagename%&amp;quot;); &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face=&quot;Terminal&quot; size=&quot;1&quot;&gt;&amp;#160; /**        &lt;br /&gt;&amp;#160;&amp;#160; * Layout and page setup logic for a region.         &lt;br /&gt;&amp;#160;&amp;#160; * @param pageContext the current OA page context         &lt;br /&gt;&amp;#160;&amp;#160; * @param webBean the web bean corresponding to the region         &lt;br /&gt;&amp;#160;&amp;#160; */         &lt;br /&gt;&amp;#160; public void processRequest(OAPageContext pageContext, OAWebBean webBean)         &lt;br /&gt;&amp;#160; {         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; super.processRequest(pageContext, webBean);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; OAApplicationModule am = pageContext.getApplicationModule(webBean);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; OAViewObject vo = (OAViewObject)am.findViewObject(&amp;quot;FndLobsVO&amp;quot;);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; // Per the coding standards, this is the proper way to initialize a&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; // VO that is used for both inserts and queries.&amp;#160; See View Objects&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; // in Detail in the Developer&#39;s Guide for additional information.&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; if (!vo.isPreparedForExecution())         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; vo.executeQuery();         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Row row = vo.createRow();         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; vo.insertRow(row);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; // Required per OA Framework Model Coding Standard M69         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; row.setNewRowState(Row.STATUS_INITIALIZED);&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face=&quot;Terminal&quot; size=&quot;1&quot;&gt;&amp;#160;&amp;#160;&amp;#160; // Initialize columns        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; // Set column FILE_FORMAT to IGNORE, this column is used for the online help index         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; row.setAttribute(&amp;quot;FileFormat&amp;quot;,&amp;quot;IGNORE&amp;quot;);&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; // set upload date to current date and time         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; row.setAttribute(&amp;quot;UploadDate&amp;quot;, am.getOADBTransaction().getCurrentDBDate());         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; // set program name to the name of this module, i.e xxUpload         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; // This way it is easy to identify that the record was inserted by this customization         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; row.setAttribute(&amp;quot;ProgramName&amp;quot;, &amp;quot;xxUpload&amp;quot;);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; // get a handle to the uploadbean         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; OAMessageFileUploadBean uploadBean = (OAMessageFileUploadBean)webBean.findChildRecursive(&amp;quot;fileName&amp;quot;);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; // set file name display         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; OADataBoundValueViewObject displayNameBoundValue = new OADataBoundValueViewObject(uploadBean, &amp;quot;FileName&amp;quot;);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; uploadBean.setAttributeValue(DOWNLOAD_FILE_NAME,displayNameBoundValue);&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; // set content type (MIME)         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; OADataBoundValueViewObject contentBoundValue = new OADataBoundValueViewObject(uploadBean, &amp;quot;FileContentType&amp;quot;);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; uploadBean.setAttributeValue(FILE_CONTENT_TYPE, contentBoundValue);&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160; } &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face=&quot;Terminal&quot; size=&quot;1&quot;&gt;&amp;#160; /**        &lt;br /&gt;&amp;#160;&amp;#160; * Procedure to handle form submissions for form elements in         &lt;br /&gt;&amp;#160;&amp;#160; * a region.         &lt;br /&gt;&amp;#160;&amp;#160; * @param pageContext the current OA page context         &lt;br /&gt;&amp;#160;&amp;#160; * @param webBean the web bean corresponding to the region         &lt;br /&gt;&amp;#160;&amp;#160; */         &lt;br /&gt;&amp;#160; public void processFormRequest(OAPageContext pageContext, OAWebBean webBean)         &lt;br /&gt;&amp;#160; {         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; super.processFormRequest(pageContext, webBean);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; if (pageContext.getParameter(&amp;quot;cancelButton&amp;quot;) != null)         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // Perform a rollback on the database&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; OAApplicationModule am = pageContext.getApplicationModule(webBean);&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; am.getTransaction().rollback();         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // cancel button pressed, return to homepage         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pageContext.forwardImmediately(&amp;quot;OA.jsp?OAFunc=OAHOMEPAGE&amp;quot;,         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; null,         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; OAWebBeanConstants.KEEP_MENU_CONTEXT,         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; null,         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; null,         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; false, // do not retain AM         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; OAWebBeanConstants.ADD_BREAD_CRUMB_NO);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; else if (pageContext.getParameter(&amp;quot;submitButton&amp;quot;) != null)         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // Perform a commit on the database         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; OAApplicationModule am = pageContext.getApplicationModule(webBean);&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; am.getTransaction().commit();         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // Display upload confirmation message         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; OAViewObject vo = (OAViewObject)am.findViewObject(&amp;quot;FndLobsVO&amp;quot;);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; oracle.jbo.domain.Number fileId = (oracle.jbo.domain.Number)vo.getCurrentRow().getAttribute(&amp;quot;FileId&amp;quot;);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; String fileName = (String)vo.getCurrentRow().getAttribute(&amp;quot;FileName&amp;quot;);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; OAException confirmMessage = new OAException(&amp;quot;File &amp;quot;+fileName+&amp;quot; uploaded succesfully with ID &amp;quot;+fileId+&amp;quot;.&amp;quot;,OAException.CONFIRMATION);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pageContext.putDialogMessage(confirmMessage);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // return to upload page         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; pageContext.forwardImmediately(&amp;quot;OA.jsp?page=/xx/oracle/apps/fnd/upload/webui/xxUploadPG&amp;quot;,         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; null,         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; OAWebBeanConstants.KEEP_MENU_CONTEXT,         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; null,         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; null,         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; true, // retain AM         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; OAWebBeanConstants.ADD_BREAD_CRUMB_NO);&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face=&quot;Terminal&quot; size=&quot;1&quot;&gt;&amp;#160; } &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&lt;font face=&quot;Terminal&quot; size=&quot;1&quot;&gt;}&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Make and rebuild the complete project and run the page from within JDeveloper.    &lt;br /&gt;If you followed all steps then you should be able to select a file and after pressing Submit it will be inserted in FND_LOBS and the confirmation message is shown as below:&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnCnroy2bgPrVmPRjPnLr8MQgwz0IS4V1SpamkOWOm7ZvBxHqKIUTWRwowxfkEwngL9u_qPo6IrrZO5igB-acDz8EIKCo7na5wwjevk8pedjyD2bqQJDE1KJs6h-rmqD2cr-YUgK8mmEA/s1600-h/image61.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;196&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgl3hYbdsaN4M6xXuKkUgSy8E9FboF0KrlsiiH7gdo5AGeMIuTgujlGZItMWVo63be369xhyphenhyphenwBW2ftDzGjKOcIEvsdOM9Y2uZbTJF2GkpJT_gi6Dsy4N2B9cW42Iz2vMkxysYdbiCyxy8g//?imgmax=800&quot; width=&quot;543&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;To deploy copy the controller java file and the page xml file to $JAVA_TOP/xx/oracle/apps/fnd/upload/webui.    &lt;br /&gt;Compile the java file.     &lt;br /&gt;Import the page with the following command:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face=&quot;Terminal&quot; size=&quot;1&quot;&gt;java oracle.jrad.tools.xml.importer.XMLImporter \        &lt;br /&gt;$JAVA_TOP/xx/oracle/apps/fnd/upload/webui/xxUploadPG.xml \         &lt;br /&gt;-username apps -password &amp;lt;password&amp;gt; -rootdir $JAVA_TOP/xx/oracle/apps/fnd/upload/webui \         &lt;br /&gt;-rootPackage /xx/oracle/apps/fnd/upload/webui \         &lt;br /&gt;-dbconnection &amp;quot;(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=&amp;lt;host_name&amp;gt;)(PORT=&amp;lt;port&amp;gt;))(CONNECT_DATA=(SID=&amp;lt;your_SID&amp;gt;)))&amp;quot;&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Define a function via Functional Administrator responsibility like below:&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKfe9YdFDtL52tALj0A2anU73tYvSma6DIt41zF9fmu5sSmzlxB-SB0yC70HK-f0hE7G0gZESKJlqGF8jbZnLlFRLaydtUZcWrJPn6xuhKn9t-zx_PXdTgC0HnZDofGGTzk7_gxVXkEDg/s1600-h/image71.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;169&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgm5UTVdPhmM4I6mgO8fLl7odGqYFgjkp7AqPZ3xwQ16yYHVyeepXuYf3Qfr9S2YQ7gEzlFaUBi2aZm3F2SCT8kiRNAsJOWJ_RPuitZUupjrL9kUd2FgE8D48Jk22sI7v5IWg5FR2_sUuk//?imgmax=800&quot; width=&quot;500&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj54HpwjSZxayFcrqivOEO3OGjQTvlSHJ0IKlz28RW-Mc1KCV_XGrXpNjAlCT5a4ZuTRn607zv9ZcZIJYV343JpfqUYSnToS8vKg3ljtS3H5h62x7KQYW-2xi1KcNtrzE7XBFRAuKvL91I/s1600-h/image10.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;205&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3nXfsnK-A-VR67R7CpzeOvI4DnrG2H2qwu2UHJpaeyg6a-M-QIEU5TspBgBYWh5hK0ic_QoqF1FZMPIv2BhQxWj_9tzFCF04c60LWhyphenhyphenVRI48Cvu7DQvl5leIiSSi8j1BgJ2qft3BlO9Y//?imgmax=800&quot; width=&quot;502&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;That’s all folks, assign the function to an appropiate menu and users have access to it.    &lt;br /&gt;This has been done in 11i but it works exactly the same on R12 environments.&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://robertjungerius.blogspot.com/feeds/5109023725031634856/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1671258754727628685/5109023725031634856' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/5109023725031634856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/5109023725031634856'/><link rel='alternate' type='text/html' href='http://robertjungerius.blogspot.com/2011/04/building-generic-upload-page-in-oa.html' title='Building a generic upload page in OA Framework'/><author><name>Robert</name><uri>http://www.blogger.com/profile/08644116810054072551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_vMD4wTf0c20/TE2bwIiu3VI/AAAAAAAAO1E/O1bb3NsVU0Q/S220/kraftwerk+eletric+cafe+anim_3.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjXUUBdMnZ7BLlDajJgNuxqBhtFxiSez0q8W__rcxenWAwQV0-G0q_Vt8XmLWYU-07UR46Dj0_xvWJ28hDN7gAhgHto5VX1dumZL30SfpOaEpFGzlqY7TMjXtsu0FF7BXqgb6IUJ7i6qE/s72-c/?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1671258754727628685.post-8516100717806525078</id><published>2011-03-16T08:54:00.001+01:00</published><updated>2011-03-16T08:54:49.090+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Oracle Workflow"/><title type='text'>Customize the #HDR header attributes of notifications in a workflow</title><content type='html'>&lt;p&gt;Oracle uses a standard way to display header information and as such it is very easy to customize this part.    &lt;br /&gt;Let’s take the Purchase Requisition approval notification and replace the header attribute “Estimated Tax” with our own information or any other information already present in the workflow.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZD9JOUX9BKETkrWjZo0D4bvtDtN0mQwhBYZSCUtYZAswDHNf6DH0XUO9LRRD1A2mzrskO3ca1TjdMWDn5A9MrHX9xItyWvQst0SYqf_VFGXZJJ9sSlwfFgwviXkHbRIcBZqa_avdBmZI/s1600-h/image47.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;171&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvWrcJxtg0akbj2D3QP5dWmr3QpQ99YQQGp5hyc0ejvJ9m9E-6B1itJMvRls6aolmxlvGBQ2DalhLJKRMW34lnSGJNLk2OoLN5qJISBe8k1aLG4A25KCqvwrVyLCH9c0tv-e0vvB7k0t0//?imgmax=800&quot; width=&quot;644&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Open your workflow and open a message, in this case we use “Requisition Approved JRAD”.    &lt;br /&gt;    &lt;br /&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgS9ORjnPpluo5DP_jviRk5SbrxFiosVViL0xwygdPPAoXhe9HbDnaNuxTJxJGRaum9Jcz_32Fr4oq0euqd2EE_VYBh7jEwWGr3Ynm0__j9J1bFrb2IvoqxQPiYTMjt-DAIiq0DgQLjYNI/s1600-h/image%5B22%5D.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;281&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivPd3MTXnUoRBHnR0aFrwdtb18ticy7JSdkSEpyWBhyP34Gn9gLirIEf0gVrCjYdRft6wqheMm4C5UwRGHfyTREnlDyugRw1yvXEbpjFOSR4m9IvT7bENi7upBtkRXAD_VSm4zyimQ-Pk//?imgmax=800&quot; width=&quot;488&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;     &lt;br /&gt;    &lt;br /&gt;If you click “Description”, “Requisition Total” or “Estimated Tax” then you will see that these are marked as #HDR_1, #HDR2, #HDR3, etc.     &lt;br /&gt;These internal names have special meaning and will be used to build up the right part of the notification header.     &lt;br /&gt;There are some more special internal names like #ATTACHMENTS, but in this blog we will focus on customizing the #HDR attributes.     &lt;br /&gt;    &lt;br /&gt;You can find the definition of all the attributes, including #HDR, (per language) in the message as follows:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;     &lt;br /&gt;&lt;em&gt;SELECT *        &lt;br /&gt;FROM&amp;#160;&amp;#160; wf_message_attributes_tl         &lt;br /&gt;WHERE&amp;#160; message_type = &#39;REQAPPRV&#39;         &lt;br /&gt;AND&amp;#160;&amp;#160;&amp;#160; LANGUAGE=&#39;US&#39;         &lt;br /&gt;AND&amp;#160;&amp;#160;&amp;#160; message_name = &#39;PO_REQ_APPROVED_JRAD&#39;;         &lt;br /&gt;&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Furthermore you can find the values of these attributes per notification with this SQL:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;     &lt;br /&gt;&lt;em&gt;SELECT *        &lt;br /&gt;FROM&amp;#160;&amp;#160; wf_notification_attributes         &lt;br /&gt;WHERE&amp;#160; notification_id = &amp;lt;ntf_id&amp;gt;         &lt;br /&gt;AND&amp;#160;&amp;#160;&amp;#160; NAME = &#39;#HDR_1&#39;;&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This is the default #HDR_3, next we will replace it with another value.    &lt;br /&gt;For this example we will use a standard attribute “Emergency PO Number”, but you can also use a custom attribute off course.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-pXwFZYdP33m7DZM5r-5TFnHW9sC6wNrTtYbs334H3CVL0ZQRXxMxZAUVhC7WjlxvP472upaJPurvHGo4dphFTncqj-K5P7k9mxbP_tLIXos9QVKl5hul23hE4Wj9zsda7d0nZp8t7Ow/s1600-h/image%5B14%5D.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;342&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-_4m0fhFGHsN0ycB0nS0eezRBeksjVTS-sLrHVWd9IkksnRJ672VD3bGqFDk913VeD4k3fddOtimz9TzndgE1CmEe0kzMkylWdj10P7BxjB8kht4cYmjWaZ5ELbJ3mj-3x-uoZFsuZBU//?imgmax=800&quot; width=&quot;489&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160; &lt;br /&gt;#HDR3 replaced with our own information.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_Yd8qGFdFUhWaRT5u-E0O9cf_3ee48IkM-s8AiXIvJIxrlWEu4jUubgrRwVWRFGupYJWPtiwKVb9tFBtUPMfPgUfHzRmgKh04eZmwK13nh4cAtZYeG7A3rvl-JfX11VnuLzacakm_DB4/s1600-h/image%5B16%5D.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;253&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEjx-ANrfUqaqrG0JsYgYxDwmuioq8XkEiu90G1wn50iyQjq_Yhr5YgXVENDJOX61DQGZKTqr83IPOScF43jK1edaixWB6PpYI5QupEOr2nIeB13pi4QIp8cUq6vluJJRJ_OtECjjS1C4//?imgmax=800&quot; width=&quot;493&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;In all new notifications of this type you will now see the Emergency PO Number instead of the Estimated Tax.&lt;/p&gt; That’s all there is to it, this way you can easily customize the header section of any notification.     </content><link rel='replies' type='application/atom+xml' href='http://robertjungerius.blogspot.com/feeds/8516100717806525078/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1671258754727628685/8516100717806525078' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/8516100717806525078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/8516100717806525078'/><link rel='alternate' type='text/html' href='http://robertjungerius.blogspot.com/2011/03/customize-hdr-header-attributes-of.html' title='Customize the #HDR header attributes of notifications in a workflow'/><author><name>Robert</name><uri>http://www.blogger.com/profile/08644116810054072551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_vMD4wTf0c20/TE2bwIiu3VI/AAAAAAAAO1E/O1bb3NsVU0Q/S220/kraftwerk+eletric+cafe+anim_3.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvWrcJxtg0akbj2D3QP5dWmr3QpQ99YQQGp5hyc0ejvJ9m9E-6B1itJMvRls6aolmxlvGBQ2DalhLJKRMW34lnSGJNLk2OoLN5qJISBe8k1aLG4A25KCqvwrVyLCH9c0tv-e0vvB7k0t0/s72-c/?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1671258754727628685.post-5631832453923338764</id><published>2010-10-07T20:36:00.005+02:00</published><updated>2010-10-20T09:47:07.793+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="OAF"/><category scheme="http://www.blogger.com/atom/ns#" term="SPEL"/><title type='text'>Extending a VO: ReqLinesNotificationsVO in ReqLinesNotificationsRN</title><content type='html'>&lt;p&gt;The standard requisition approval notification is based on OA Framework regions and shows basic information for requisition lines. A common change request is to extend this line with additional information/columns.    &lt;br /&gt;So let’s find out how this is done.     &lt;br /&gt;    &lt;br /&gt;First let’s find out which VO is behind the requisition lines information.     &lt;br /&gt;Make you sure you have the “About this page” link available and open up a requisition approval notification.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh6.ggpht.com/_vMD4wTf0c20/TK4Syt01_mI/AAAAAAAAPw4/2qvHYv8D9WE/s1600-h/image27.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px&quot; height=&quot;113&quot; alt=&quot;image&quot; src=&quot;http://lh3.ggpht.com/_vMD4wTf0c20/TK4SzEFQCUI/AAAAAAAAPxA/SMjTjo9G52o/image_thumb17.png?imgmax=800&quot; width=&quot;729&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Click “About this page” and Click the Expand All link for the Page Definition.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh3.ggpht.com/_vMD4wTf0c20/TK4Sztp2e1I/AAAAAAAAPxI/hMjYPro1IMM/s1600-h/image9.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px&quot; height=&quot;142&quot; alt=&quot;image&quot; src=&quot;http://lh4.ggpht.com/_vMD4wTf0c20/TK4S0LTR3LI/AAAAAAAAPxQ/UbrSva3kTLQ/image_thumb5.png?imgmax=800&quot; width=&quot;585&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Find the section where the Requisition Lines are defined.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh4.ggpht.com/_vMD4wTf0c20/TK4S0pzL9GI/AAAAAAAAPxY/7mbzl5JDhxE/s1600-h/image161.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px&quot; height=&quot;264&quot; alt=&quot;image&quot; src=&quot;http://lh6.ggpht.com/_vMD4wTf0c20/TK4S1PwXUwI/AAAAAAAAPxg/7zhJaUMbEC0/image_thumb101.png?imgmax=800&quot; width=&quot;692&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;As you can see the VO to extend will be ReqLinesNotificationsVO.&lt;/p&gt;  &lt;p&gt;Click Collapse All on the Page Definition and open the Business Component References section.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh3.ggpht.com/_vMD4wTf0c20/TK4S1XoruOI/AAAAAAAAPxo/WLzSSCeqtRg/s1600-h/image20.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px&quot; height=&quot;63&quot; alt=&quot;image&quot; src=&quot;http://lh4.ggpht.com/_vMD4wTf0c20/TK4S15tqhuI/AAAAAAAAPxw/myDDspmD-bA/image_thumb12.png?imgmax=800&quot; width=&quot;285&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Here you can see the location of the ReqLinesNotificationsVO, i.e. $JAVA_TOP/oracle/apps/icx/por/wf/server.    &lt;br /&gt;Get all the directories and files from this location and place them on your pc in the myclasses directory.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh5.ggpht.com/_vMD4wTf0c20/TK4S2YZpSSI/AAAAAAAAPx4/eRm28KamTm0/s1600-h/image31.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px&quot; height=&quot;72&quot; alt=&quot;image&quot; src=&quot;http://lh4.ggpht.com/_vMD4wTf0c20/TK4S27ISULI/AAAAAAAAPyA/1Jo_Dszo_ko/image_thumb19.png?imgmax=800&quot; width=&quot;606&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Define a new OA workspace and OA project to host the extension we will develop.    &lt;br /&gt;Set the default package in the OA Project definition to xx.oracle.apps.icx.por.wf.server &lt;/p&gt;  &lt;p&gt;Create a new Business Components Package to host the extended VO&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh4.ggpht.com/_vMD4wTf0c20/TK4S3Hj9-3I/AAAAAAAAPyI/YV3GS_5lK-A/s1600-h/image42.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px&quot; height=&quot;161&quot; alt=&quot;image&quot; src=&quot;http://lh3.ggpht.com/_vMD4wTf0c20/TK4S3tIO0iI/AAAAAAAAPyQ/s5Mz39wPGPA/image_thumb26.png?imgmax=800&quot; width=&quot;335&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Make sure the package mentions xx.oracle.apps.icx.por.wf.server&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh5.ggpht.com/_vMD4wTf0c20/TK4S32-D5aI/AAAAAAAAPyY/2PipboX3Mxg/s1600-h/image48.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px&quot; height=&quot;242&quot; alt=&quot;image&quot; src=&quot;http://lh6.ggpht.com/_vMD4wTf0c20/TK4S4sHFeYI/AAAAAAAAPyg/wZ3OWs3MyaQ/image_thumb301.png?imgmax=800&quot; width=&quot;360&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Click Next and click Finish in Step 2 of 3.&lt;/p&gt;  &lt;p&gt;Import the standard Business Components you copied from the server to your myclasses directory.    &lt;br /&gt;Go to myclasses and click the server.xml file in myclasses\oracle\apps\icx\por\wf\server.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh4.ggpht.com/_vMD4wTf0c20/TK4S43wyqkI/AAAAAAAAPyo/GjycsyeEjDs/s1600-h/image52.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px&quot; height=&quot;185&quot; alt=&quot;image&quot; src=&quot;http://lh6.ggpht.com/_vMD4wTf0c20/TK4S5w94TII/AAAAAAAAPyw/0Q73nsr-6_0/image_thumb32.png?imgmax=800&quot; width=&quot;307&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh4.ggpht.com/_vMD4wTf0c20/TK4S6d00ANI/AAAAAAAAPy4/RgRNMq6JJGQ/s1600-h/image57.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px&quot; height=&quot;264&quot; alt=&quot;image&quot; src=&quot;http://lh4.ggpht.com/_vMD4wTf0c20/TK4S6qHrQrI/AAAAAAAAPzA/HU6fdFZVvvg/image_thumb35.png?imgmax=800&quot; width=&quot;367&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160; If all is ok then your project will now like this:&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh5.ggpht.com/_vMD4wTf0c20/TK4S7DsCtuI/AAAAAAAAPzI/o-ZSLYu8Ihc/s1600-h/image60.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;210&quot; alt=&quot;image&quot; src=&quot;http://lh4.ggpht.com/_vMD4wTf0c20/TK4S7ggTRMI/AAAAAAAAPzQ/rJDoLPjgt2M/image_thumb361.png?imgmax=800&quot; width=&quot;244&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Before we extend the VO we first need the original SQL so we can add additional columns to it.    &lt;br /&gt;Double-click the ReqLinesNotificationsVO.xml file and copy the complete SQL to the clipboard.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href=&quot;http://lh3.ggpht.com/_vMD4wTf0c20/TK4S8NlYrBI/AAAAAAAAPzY/XE65dW5bxxY/s1600-h/image7.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px&quot; height=&quot;357&quot; alt=&quot;image&quot; src=&quot;http://lh4.ggpht.com/_vMD4wTf0c20/TK4S8pUzSGI/AAAAAAAAPzg/SmpXxG9CCqw/image_thumb4.png?imgmax=800&quot; width=&quot;672&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;If all is ok then we can now define the new VO.&lt;/p&gt;  &lt;p&gt;&lt;a&gt;&lt;u&gt;&lt;font color=&quot;#88bb22&quot;&gt;&lt;/font&gt;&lt;/u&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px&quot; height=&quot;220&quot; alt=&quot;image&quot; src=&quot;http://lh3.ggpht.com/_vMD4wTf0c20/TK4S8wXlFUI/AAAAAAAAPzo/R335ScF7sgs/image_thumb39.png?imgmax=800&quot; width=&quot;439&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh4.ggpht.com/_vMD4wTf0c20/TK4S9eaY5kI/AAAAAAAAPzw/aOYu5jaLe6o/s1600-h/image661.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px&quot; height=&quot;293&quot; alt=&quot;image&quot; src=&quot;http://lh3.ggpht.com/_vMD4wTf0c20/TK4S9tWud6I/AAAAAAAAPz4/Ots2QpCW-NE/image66_thumb.png?imgmax=800&quot; width=&quot;387&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Make sure that you populate the Extends field with the original VO.    &lt;br /&gt;Proceed to step 5 and paste the SQL in the Query Statement field.     &lt;br /&gt;Now we can alter the SQL to include extra columns, for this example i will add the item category.     &lt;br /&gt;It is best to define PLSQL functions for the columns so that you can easily change the logic behind it later on without touching the VO again.&lt;/p&gt;  &lt;p&gt;The function we will use to get this category is as follows:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;CREATE OR REPLACE FUNCTION xx_category_fnc(p_requisition_line_id IN NUMBER)      &lt;br /&gt;&amp;#160; RETURN VARCHAR2 IS       &lt;br /&gt;&amp;#160; v_category mtl_categories_kfv.concatenated_segments%TYPE;       &lt;br /&gt;BEGIN       &lt;br /&gt;&amp;#160; SELECT mcat.concatenated_segments       &lt;br /&gt;&amp;#160; INTO&amp;#160;&amp;#160; v_category       &lt;br /&gt;&amp;#160; FROM&amp;#160;&amp;#160; po_requisition_lines_all prl       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,mtl_categories_kfv&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; mcat       &lt;br /&gt;&amp;#160; WHERE&amp;#160; prl.requisition_line_id = p_requisition_line_id       &lt;br /&gt;&amp;#160; AND&amp;#160;&amp;#160;&amp;#160; prl.category_id = mcat.category_id;       &lt;br /&gt;&amp;#160; RETURN v_category;       &lt;br /&gt;EXCEPTION       &lt;br /&gt;&amp;#160; WHEN OTHERS THEN       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; RETURN NULL;       &lt;br /&gt;END;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh6.ggpht.com/_vMD4wTf0c20/TK4S-T7iUXI/AAAAAAAAP0A/84_FyQqnYpU/s1600-h/image15.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px&quot; height=&quot;357&quot; alt=&quot;image&quot; src=&quot;http://lh3.ggpht.com/_vMD4wTf0c20/TK4S-8FllyI/AAAAAAAAP0I/QrqJsWs5iTw/image_thumb10.png?imgmax=800&quot; width=&quot;473&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Add the new column “xx_category_fnd(requisition_line_id) AS XX_CATEGORY” as the last column of the query.    &lt;br /&gt;Click Test to check if the query is valid.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh6.ggpht.com/_vMD4wTf0c20/TK4S_vFZsOI/AAAAAAAAP0Q/gGaeY4zbSGo/s1600-h/image18.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px&quot; height=&quot;104&quot; alt=&quot;image&quot; src=&quot;http://lh5.ggpht.com/_vMD4wTf0c20/TK4TAGtqepI/AAAAAAAAP0Y/BlL2CC8lrQM/image_thumb11.png?imgmax=800&quot; width=&quot;244&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Continue to step 7 and make sure you generate java files for the view row class, this is to comply with OA Framework coding guidelines. You can uncheck the view object class as we will not add any custom code.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh6.ggpht.com/_vMD4wTf0c20/TK4TAZrupoI/AAAAAAAAP0g/dLEwPCdBhoo/s1600-h/image21.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px&quot; height=&quot;117&quot; alt=&quot;image&quot; src=&quot;http://lh3.ggpht.com/_vMD4wTf0c20/TK4TA-LddsI/AAAAAAAAP0o/UNg7EvxF2hY/image_thumb121.png?imgmax=800&quot; width=&quot;244&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;We are almost there, now we need to register the substitution of the original ReqLinesNotificationsVO with the newly created xxReqLinesNotificationsVO, double-click the xxReqLinesNotifications.jpx file and select the Substitutions.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh3.ggpht.com/_vMD4wTf0c20/TK4TBkCWqOI/AAAAAAAAP0w/SZgnn-cghDc/s1600-h/image271.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px&quot; height=&quot;253&quot; alt=&quot;image&quot; src=&quot;http://lh6.ggpht.com/_vMD4wTf0c20/TK4TCMKzwLI/AAAAAAAAP04/pGvy69NLaro/image_thumb16.png?imgmax=800&quot; width=&quot;433&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;On the left side select the ReqLinesNotificationsVO and on the right side select xxReqLinesNotificationsVO, click Add to add the substitution and click Ok to close the dialog.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh3.ggpht.com/_vMD4wTf0c20/TK4TCWUzx2I/AAAAAAAAP1A/_oWuF9ezdn0/s1600-h/image35.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px&quot; height=&quot;270&quot; alt=&quot;image&quot; src=&quot;http://lh4.ggpht.com/_vMD4wTf0c20/TK4TCzmaP7I/AAAAAAAAP1I/MMeAZP2PCVY/image_thumb20.png?imgmax=800&quot; width=&quot;385&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Done (Click Save All to make sure everything is saved)!    &lt;br /&gt;Make and build the project and close JDeveloper.&lt;/p&gt;  &lt;p&gt;Go to your myclasses directory and move the complete directory “xx\oracle\apps\icx\por\wf\server” to the $JAVA_TOP on the server. Also copy the xxReqLinesNotifications.jpx to the $JAVA_TOP/xx/oracle/apps/icx/por/wf/server directory on the server so we can run jpximport from the server.    &lt;br /&gt;    &lt;br /&gt;Execute following command to import the jpx file (substitute the $variables with your own values):&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;java oracle.jrad.tools.xml.importer.JPXImporter \      &lt;br /&gt;&amp;#160; $JAVA_TOP/xx/oracle/apps/icx/por/wf/server/xxReqLinesNotifications.jpx \       &lt;br /&gt;-username $APPS_NAME -password $APPS_PASSWORD \       &lt;br /&gt;-dbconnection &amp;quot;(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=$IP_ADDRESS)(PORT=$PORT_NUMBER))(CONNECT_DATA=(SID=$DATABASE_SID)))&amp;quot; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This should return a message:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Imported document : /oracle/apps/icx/por/wf/server/customizations/site/0/ReqLinesNotificationsVO      &lt;br /&gt;Import completed successfully&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;DONE!&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Bounce the Apache server or the complete mid-tier and we can continue to define the new column in the EBS environment so it will be displayed.    &lt;br /&gt;To be able to personalize the page make sure the following profiles have been enabled on your account:     &lt;br /&gt;&lt;strong&gt;FND: Personalization Region Link Enabled      &lt;br /&gt;&lt;span id=&quot;N27:UserProfileOptionName:4&quot; title=&quot;Profile Name&quot;&gt;Personalize Self-Service Defn&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;span title=&quot;Profile Name&quot;&gt;Login to EBS and select a Requisition notification, click the “About this page” link so we can found out the attribute name of our newly defined column. You should be able to find your xxReqLinesNotificationsVO in the View Objects list now, click this one so we can see all attributes defined.&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span title=&quot;Profile Name&quot;&gt;If all is ok you will see the &lt;strong&gt;xx_category&lt;/strong&gt; column defined as attribute &lt;strong&gt;XxCategory&lt;/strong&gt;:&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh6.ggpht.com/_vMD4wTf0c20/TK4TDp_RLcI/AAAAAAAAP1Q/HdUYQiX9Ujw/s1600-h/image491.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px&quot; height=&quot;26&quot; alt=&quot;image&quot; src=&quot;http://lh5.ggpht.com/_vMD4wTf0c20/TK4TEecB9LI/AAAAAAAAP1Y/oAKfa8Gg7G4/image_thumb28.png?imgmax=800&quot; width=&quot;282&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;span title=&quot;Profile Name&quot;&gt;Return to the notification and now click the Personalize link of the requisition lines table.&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh3.ggpht.com/_vMD4wTf0c20/TK4TE-Hd65I/AAAAAAAAP1g/bUc8moDU648/s1600-h/image44.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px&quot; height=&quot;64&quot; alt=&quot;image&quot; src=&quot;http://lh5.ggpht.com/_vMD4wTf0c20/TK4TFdq5skI/AAAAAAAAP1o/F_DyNXWAP1E/image_thumb25.png?imgmax=800&quot; width=&quot;485&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Click the Create Item link on the Table:&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh5.ggpht.com/_vMD4wTf0c20/TK4TFzB3QpI/AAAAAAAAP1w/tZzZyuC2BX4/s1600-h/image531.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px&quot; height=&quot;80&quot; alt=&quot;image&quot; src=&quot;http://lh5.ggpht.com/_vMD4wTf0c20/TK4TGbS5ILI/AAAAAAAAP14/KxttJ8x_Ib0/image_thumb30.png?imgmax=800&quot; width=&quot;471&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Select Site as level and choose Message Styled Text as item style, populate the ID with a unique name:&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh4.ggpht.com/_vMD4wTf0c20/TK4TGlX3EDI/AAAAAAAAP2A/lRkiaPPwIY0/s1600-h/image72.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px&quot; height=&quot;124&quot; alt=&quot;image&quot; src=&quot;http://lh5.ggpht.com/_vMD4wTf0c20/TK4THIu-WhI/AAAAAAAAP2I/wXsIelwd_FA/image_thumb41.png?imgmax=800&quot; width=&quot;459&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Populate the Prompt&amp;#160; and the View Attribute and you are done, press Apply to finish.&lt;a href=&quot;http://lh6.ggpht.com/_vMD4wTf0c20/TK4THq8tVjI/AAAAAAAAP2Q/0Q1phTXYK-E/s1600-h/image63.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px&quot; height=&quot;242&quot; alt=&quot;image&quot; src=&quot;http://lh3.ggpht.com/_vMD4wTf0c20/TK4THzD5s4I/AAAAAAAAP2Y/BLZINklTUjs/image_thumb36.png?imgmax=800&quot; width=&quot;473&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Return to the notification and you should now see the newly defined column at the end of the line.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh3.ggpht.com/_vMD4wTf0c20/TK4TIhmeJMI/AAAAAAAAP2g/8XlUJl5ILTg/s1600-h/image87.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px&quot; height=&quot;96&quot; alt=&quot;image&quot; src=&quot;http://lh5.ggpht.com/_vMD4wTf0c20/TK4TI0FzrlI/AAAAAAAAP2o/WYbSzIDF104/image_thumb52.png?imgmax=800&quot; width=&quot;544&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;NOTE:      &lt;br /&gt;&lt;/strong&gt;It could well be that your requirements are to only show the columns for specific organizations. You would assume you can do this by setting the Rendered property False on site level and only set it to True on specific organization levels.     &lt;br /&gt;Unfortunately this will not work when opening notifications from the homepage worklist as at that point oracle has not set any context or organization (it is actually unaware at that point which org_id needs to be set in the context).     &lt;br /&gt;There is quick and easy way to solve this yourself and not rely on context switching anymore.&lt;/p&gt;  &lt;p&gt;See “&lt;a href=&quot;http://robertjungerius.blogspot.com/2010/10/using-spel-in-oa-framework-to-overcome.html&quot; target=&quot;_blank&quot;&gt;Using SPEL in OA Framework to overcome “context” issue in notifications&lt;/a&gt;” for detailed information.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://robertjungerius.blogspot.com/feeds/5631832453923338764/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1671258754727628685/5631832453923338764' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/5631832453923338764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/5631832453923338764'/><link rel='alternate' type='text/html' href='http://robertjungerius.blogspot.com/2010/10/extending-requisiton-notification.html' title='Extending a VO: ReqLinesNotificationsVO in ReqLinesNotificationsRN'/><author><name>Robert</name><uri>http://www.blogger.com/profile/08644116810054072551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_vMD4wTf0c20/TE2bwIiu3VI/AAAAAAAAO1E/O1bb3NsVU0Q/S220/kraftwerk+eletric+cafe+anim_3.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/_vMD4wTf0c20/TK4SzEFQCUI/AAAAAAAAPxA/SMjTjo9G52o/s72-c/image_thumb17.png?imgmax=800" height="72" width="72"/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1671258754727628685.post-2596333936279361994</id><published>2010-10-07T20:32:00.001+02:00</published><updated>2010-10-07T20:32:07.146+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="OAF"/><category scheme="http://www.blogger.com/atom/ns#" term="SPEL"/><title type='text'>Using SPEL in OA Framework to overcome “context” issue in notifications</title><content type='html'>&lt;p&gt;When you extend a VO used in a notification and you want to make sure that the custom columns are only visible for certain operating units then you will quickly notice that this is not possible using personalization&#39;s on organization level.    &lt;br /&gt;Easiest way to see this in action is to open a notification from the homepage worklist (without opening/selecting any responsibility/function). In that case oracle has not set any context yet, so OA Framework will also not apply personalization&#39;s on any level and will default to site level. If any custom columns have been added to the VO and you would expect them to only show up for a certain organization then you will notice that it is not working and other organizations will also see the custom columns.&lt;/p&gt;  &lt;p&gt;So how can we make sure that certain personalization&#39;s within notifications only show up for certain organizations without relying on oracle to set the context correctly ?&lt;/p&gt;  &lt;p&gt;we can achieve this by using SPEL and adding a new attribute to the VO.&lt;/p&gt;  &lt;p&gt;Add a new column to the VO query that will return a boolean that returns True/1 when you want the custom columns to render and False/0 when you don’t want them to render.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;     &lt;br /&gt;For example you can add a case statement to the VO query that will do the trick on org_id:       &lt;br /&gt;&lt;strong&gt;NOTE&lt;/strong&gt;: I would not use this in a real situation but always use a PLSQL function to return the flag, that way you can easily change the requirements in PLSQL without touching the VO again.       &lt;br /&gt;      &lt;br /&gt;&lt;em&gt;CASE org_id        &lt;br /&gt;&amp;#160; WHEN 65 THEN 1         &lt;br /&gt;&amp;#160; WHEN 67 THEN 1         &lt;br /&gt;&amp;#160; ELSE 0         &lt;br /&gt;END AS xx_display_flag&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;So in above case we want to make sure that the columns will display only for org_id 65 and 67.    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;We can now use this xx_display_flag column in SPEL to determine the rendered property of the custom columns.    &lt;br /&gt;Go to the Personalize Region screen again and select the custom column you want to apply this SPEL to.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh6.ggpht.com/_vMD4wTf0c20/TK4SJHbHQQI/AAAAAAAAPwo/laDAlwuEJ3k/s1600-h/image4.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px&quot; height=&quot;68&quot; alt=&quot;image&quot; src=&quot;http://lh6.ggpht.com/_vMD4wTf0c20/TK4SJgBlRUI/AAAAAAAAPww/cK8_7GhvJ3g/image_thumb1.png?imgmax=800&quot; width=&quot;641&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;In the Rendered property (on site level) set the value to SPEL and enter &lt;strong&gt;“${oa.&amp;lt;View Name&amp;gt;.&amp;lt;View Attribute&amp;gt;}”&lt;/strong&gt;.     &lt;br /&gt;Apply the change and you will immediately see that the custom column(s) will now only render when the data returned by the VO is for a org_id that makes the flag return True/1.     &lt;br /&gt;There is no need anymore to rely on oracle to set the context correctly.&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://robertjungerius.blogspot.com/feeds/2596333936279361994/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1671258754727628685/2596333936279361994' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/2596333936279361994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/2596333936279361994'/><link rel='alternate' type='text/html' href='http://robertjungerius.blogspot.com/2010/10/using-spel-in-oa-framework-to-overcome.html' title='Using SPEL in OA Framework to overcome “context” issue in notifications'/><author><name>Robert</name><uri>http://www.blogger.com/profile/08644116810054072551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_vMD4wTf0c20/TE2bwIiu3VI/AAAAAAAAO1E/O1bb3NsVU0Q/S220/kraftwerk+eletric+cafe+anim_3.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/_vMD4wTf0c20/TK4SJgBlRUI/AAAAAAAAPww/cK8_7GhvJ3g/s72-c/image_thumb1.png?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1671258754727628685.post-1557190419759124038</id><published>2010-08-26T09:00:00.001+02:00</published><updated>2010-08-26T09:00:30.337+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="OAF"/><title type='text'>Get contents of DBC file without access to server</title><content type='html'>&lt;p&gt;During OA Framework development you need to get the DBC file of the environment you want to work on.    &lt;br /&gt;This file is located in $FND_TOP/secure for 11i and $FND_SECURE for R12.&lt;/p&gt;  &lt;p&gt;But if you don’t have access to the server it is also possible to get the DBC file in a convenient way.    &lt;br /&gt;Open up a webbrowser and go to the homepage URL and append “/OA_HTML/jsp/fnd/aoljtest.jsp” to it.     &lt;br /&gt;(so for example: &lt;a href=&quot;http://vis11.server.com:8000/OA_HTML/jsp/fnd/aoljtest.jsp&quot;&gt;http://vis11.server.com:8000/OA_HTML/jsp/fnd/aoljtest.jsp&lt;/a&gt;)     &lt;br /&gt;    &lt;br /&gt;&lt;a href=&quot;http://lh3.ggpht.com/_vMD4wTf0c20/THYRBWmvoHI/AAAAAAAAPnE/VED8h4U9EtA/s1600-h/image%5B3%5D.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;196&quot; alt=&quot;image&quot; src=&quot;http://lh3.ggpht.com/_vMD4wTf0c20/THYRB0q1M9I/AAAAAAAAPnM/0UapxPAk4yw/image_thumb%5B1%5D.png?imgmax=800&quot; width=&quot;348&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Fill in the details and click “Test”.    &lt;br /&gt;If all your details are ok you will get an overview page with details, click on the link “Enter AOL/J Setup Test”.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh5.ggpht.com/_vMD4wTf0c20/THYRCDkyUEI/AAAAAAAAPnU/HoWiaXwd3OE/s1600-h/image%5B8%5D.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;128&quot; alt=&quot;image&quot; src=&quot;http://lh3.ggpht.com/_vMD4wTf0c20/THYRCoCyqRI/AAAAAAAAPnc/m4RJyQDitnA/image_thumb%5B4%5D.png?imgmax=800&quot; width=&quot;353&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;From this point find the menu entry “Locate DBC File” and click it…&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh3.ggpht.com/_vMD4wTf0c20/THYRDPXgZDI/AAAAAAAAPnk/y0e_yf5GwBk/s1600-h/image%5B11%5D.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;65&quot; alt=&quot;image&quot; src=&quot;http://lh6.ggpht.com/_vMD4wTf0c20/THYRDQjusPI/AAAAAAAAPns/xBe9DdfvZ58/image_thumb%5B5%5D.png?imgmax=800&quot; width=&quot;244&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;On the right side you will get the contents of the DBC file.   &lt;br /&gt;Copy/paste this to a &amp;lt;sid&amp;gt;.dbc file and place it in your JDeveloper JDEV_USER_HOME/dbc_files/secure.&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://robertjungerius.blogspot.com/feeds/1557190419759124038/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1671258754727628685/1557190419759124038' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/1557190419759124038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/1557190419759124038'/><link rel='alternate' type='text/html' href='http://robertjungerius.blogspot.com/2010/08/get-contents-of-dbc-file-without-access.html' title='Get contents of DBC file without access to server'/><author><name>Robert</name><uri>http://www.blogger.com/profile/08644116810054072551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_vMD4wTf0c20/TE2bwIiu3VI/AAAAAAAAO1E/O1bb3NsVU0Q/S220/kraftwerk+eletric+cafe+anim_3.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/_vMD4wTf0c20/THYRB0q1M9I/AAAAAAAAPnM/0UapxPAk4yw/s72-c/image_thumb%5B1%5D.png?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1671258754727628685.post-8161646415244793649</id><published>2010-08-17T10:55:00.001+02:00</published><updated>2010-08-17T10:56:19.750+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="OAF"/><title type='text'>Use a sequence value when saving a record in OA Framework</title><content type='html'>&lt;p&gt;Most tables in EBS have a unique identifier which can be generated using a database sequence.    &lt;br /&gt;For custom tables i also use the same approach.     &lt;br /&gt;In Oracle Forms this is relatively easy to achieve, how about OA Framework ?&lt;/p&gt;  &lt;p&gt;If you use an EO (Entity Object) then it is also very easy to achieve, just put the code in the setter method of the required column:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;public void setFileId(Number value) {      &lt;br /&gt;&amp;#160;&amp;#160; &lt;font color=&quot;#ff0000&quot;&gt;if (value == null) {        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; OADBTransaction t = getOADBTransaction();         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; value = t.getSequenceValue(&amp;quot;&amp;lt;sequence_name&amp;gt;&amp;quot;);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/font&gt;&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; setAttributeInternal(FILEID, value);      &lt;br /&gt;} &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;If you need to do it in the PR of PFR then use:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font color=&quot;#ff0000&quot;&gt;OAApplicationModule ap = pageContext.getApplicationModule(webBean);        &lt;br /&gt;// Assign a new sequence value to a row attribute for example         &lt;br /&gt;row.setAttribute(&amp;quot;FileId&amp;quot;,ap.getSequenceValue(&amp;quot;&amp;lt;sequence_name&amp;gt;&amp;quot;));&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;  </content><link rel='replies' type='application/atom+xml' href='http://robertjungerius.blogspot.com/feeds/8161646415244793649/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1671258754727628685/8161646415244793649' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/8161646415244793649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/8161646415244793649'/><link rel='alternate' type='text/html' href='http://robertjungerius.blogspot.com/2010/08/use-sequence-value-when-saving-record_17.html' title='Use a sequence value when saving a record in OA Framework'/><author><name>Robert</name><uri>http://www.blogger.com/profile/08644116810054072551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_vMD4wTf0c20/TE2bwIiu3VI/AAAAAAAAO1E/O1bb3NsVU0Q/S220/kraftwerk+eletric+cafe+anim_3.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1671258754727628685.post-3125169210415072924</id><published>2010-08-04T21:14:00.001+02:00</published><updated>2010-08-04T21:14:01.227+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="flexfield"/><category scheme="http://www.blogger.com/atom/ns#" term="GL"/><category scheme="http://www.blogger.com/atom/ns#" term="OAF"/><category scheme="http://www.blogger.com/atom/ns#" term="security rules"/><title type='text'>Extending a controller in OA Framework</title><content type='html'>&lt;p&gt;As an example i will take the change request i received to make the Oracle Internet Expense Audit page “security rule aware”.    &lt;br /&gt;Currently you will get all the expense reports in there but we would like to create different copies of the responsibility to which we assign different (GL) security rules on the cost centre segment:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;XX OIE Internal Audit (CC 0300-0399), will only see expense reports from cost centre 0300 - 0399 &lt;/li&gt;    &lt;li&gt;XX OIE Internal Audit (CC 0400-0499), will only see expense reports from cost centre 0400 - 0499 &lt;/li&gt;    &lt;li&gt;etc &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;To achieve this functionality the where clause of the query behind the results table in this page needs to be modified so it will check if the flex_concatenated column of ap_expense_report_headers_all table is between the assigned flex value security rules ranges.    &lt;br /&gt;To extend the OA Framework page you have 2 options, extend the VO or extend/create the controller behind the results table in the page.     &lt;br /&gt;Extending a VO is on a global level and you pick this option if you want to add extra columns.     &lt;br /&gt;Extending/creating a controller can be assigned on all levels (function/site/organization/responsibility/etc) and you can change the where clause in the ProcessRequest method, so extending the controller is definitely the way to go…&lt;/p&gt;  &lt;p&gt;Open up the standard Internet Expenses Internal Audit screen and click “&lt;a href=&quot;http://oracleebusinesssuite.wordpress.com/2008/08/28/how-to-turn-on-%E2%80%9Cabout-this-page%E2%80%9D-in-oracle-r12-web-forms/&quot; target=&quot;_blank&quot;&gt;About this page&lt;/a&gt;” in the lower left corner.     &lt;br /&gt;You can already see that it is the “Search Results” table we are after…&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh3.ggpht.com/_vMD4wTf0c20/TFm7zvHLUkI/AAAAAAAAPgw/zrJGHb4_Q8A/s1600-h/image17.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px&quot; height=&quot;263&quot; alt=&quot;image&quot; src=&quot;http://lh5.ggpht.com/_vMD4wTf0c20/TFm7zzLg79I/AAAAAAAAPg4/Oh94zscEqk0/image_thumb9.png?imgmax=800&quot; width=&quot;354&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Click “Expand All” below Page Definition&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh6.ggpht.com/_vMD4wTf0c20/TFm70aFHNsI/AAAAAAAAPhA/ryHVycYLc9Q/s1600-h/image16.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px&quot; height=&quot;163&quot; alt=&quot;image&quot; src=&quot;http://lh3.ggpht.com/_vMD4wTf0c20/TFm702VayNI/AAAAAAAAPhI/TLzH-_GTrJo/image_thumb8.png?imgmax=800&quot; width=&quot;475&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Now find the Search Results Table in the page definition list…&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh6.ggpht.com/_vMD4wTf0c20/TFm71TfDQvI/AAAAAAAAPhQ/WjeU2ugS32Y/s1600-h/image22.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px&quot; height=&quot;87&quot; alt=&quot;image&quot; src=&quot;http://lh4.ggpht.com/_vMD4wTf0c20/TFm714sTSwI/AAAAAAAAPhY/FVER-rhsAPE/image_thumb12.png?imgmax=800&quot; width=&quot;716&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;As you see there is already a controller assigned to the Search Results table, i.e. SearchTableCO.    &lt;br /&gt;So we need to extend this controller to be able to add a custom where clause to the query.&lt;/p&gt;  &lt;p&gt;Extending a controller is merely creating a new java file and as such could be done using any editor if you know all the details. I always rely on &lt;a href=&quot;http://garethroberts.blogspot.com/2008/06/find-jdeveloper-with-oa-extension-patch.html&quot; target=&quot;_blank&quot;&gt;JDeveloper&lt;/a&gt;.     &lt;br /&gt;We only need the source file of SearchTableCO, so that will be $JAVA_TOP/oracle/apps/ap/oie/audit/webui/SearchTableCO.class.     &lt;br /&gt;So login on your server and ftp the file over to JDEV_USER_HOME\myclasses\oracle\apps\ap\oie\audit\webui\SearchTableCO.class.&lt;/p&gt;  &lt;p&gt;Open up JDeveloper and create a new OA Workspace and project, follow below screenshots:&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh6.ggpht.com/_vMD4wTf0c20/TFm72dDrHxI/AAAAAAAAPhg/KMZU_jc45Hg/s1600-h/image27.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px&quot; height=&quot;232&quot; alt=&quot;image&quot; src=&quot;http://lh4.ggpht.com/_vMD4wTf0c20/TFm73LdSBSI/AAAAAAAAPho/AHBsiMU2Nug/image_thumb15.png?imgmax=800&quot; width=&quot;387&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Extended objects need to be placed in a custom package, usually it will be the original package prefixed with xx, i.e. &lt;strong&gt;xx.&lt;/strong&gt;oracle.apps.ap.oie.audit.webui&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh4.ggpht.com/_vMD4wTf0c20/TFm74F1OrWI/AAAAAAAAPhw/EQqGV5dDXXA/s1600-h/image32.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px&quot; height=&quot;266&quot; alt=&quot;image&quot; src=&quot;http://lh3.ggpht.com/_vMD4wTf0c20/TFm74h3XbDI/AAAAAAAAPh4/V2j5Stl3YyM/image_thumb18.png?imgmax=800&quot; width=&quot;396&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Move on to step 3 and specify a valid DBC file for the environment you are testing on (get this one from the server at $FND_TOP/secure and place it in JDEV_USER_HOME\dbc_files\secure).    &lt;br /&gt;Furthermore specify a valid applications user/password which has the correct responsibility assigned     &lt;br /&gt;and enter the correct application (SQLAP) and responsibility key.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh4.ggpht.com/_vMD4wTf0c20/TFm74wcPN6I/AAAAAAAAPiA/nm9D1ty7pME/s1600-h/image37.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px&quot; height=&quot;271&quot; alt=&quot;image&quot; src=&quot;http://lh5.ggpht.com/_vMD4wTf0c20/TFm75S-yYlI/AAAAAAAAPiI/hpETqNEhV0o/image_thumb21.png?imgmax=800&quot; width=&quot;401&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Right-click the newly created project and choose “New Class…”    &lt;br /&gt;Enter a name for the new class, i.e. xxSearchTableCO and check that the package defaults to the custom package of the project.     &lt;br /&gt;Use the browse button from “Extends” to lookup up the class SearchTableCO under oracle/apps/ap/oie/audit/webui as we want     &lt;br /&gt;to extend the original controller class from the Search Table. Click OK to create the new class file.     &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh3.ggpht.com/_vMD4wTf0c20/TFm75wxa6_I/AAAAAAAAPiQ/cP6CO7u6asI/s1600-h/image53.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px&quot; height=&quot;530&quot; alt=&quot;image&quot; src=&quot;http://lh4.ggpht.com/_vMD4wTf0c20/TFm76USxKyI/AAAAAAAAPiY/2ZXObNQ4Icw/image_thumb31.png?imgmax=800&quot; width=&quot;493&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Now that we have created a new class file that extends the original controller we can override the processRequest method.    &lt;br /&gt;In green you can see what needs to be added to the original file JDeveloper created for you:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;package xx.oracle.apps.ap.oie.audit.webui;        &lt;br /&gt;import oracle.apps.ap.oie.audit.webui.SearchTableCO;         &lt;br /&gt;&lt;font color=&quot;#008000&quot;&gt;import oracle.apps.fnd.framework.webui.beans.OAWebBean;          &lt;br /&gt;import oracle.apps.fnd.framework.webui.OAPageContext;           &lt;br /&gt;import oracle.apps.fnd.framework.OAApplicationModule;           &lt;br /&gt;import oracle.apps.fnd.framework.OAViewObject; &lt;/font&gt;&lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;public class xxSearchTableCO extends SearchTableCO        &lt;br /&gt;{         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;font color=&quot;#008000&quot;&gt;public void processRequest(OAPageContext pageContext, OAWebBean webBean)          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; super.processRequest(pageContext, webBean);           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // Get a handle to the AuditReportHeadersVO VO           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; OAApplicationModule ap = pageContext.getApplicationModule(webBean);           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; OAViewObject vo = (OAViewObject)ap.findViewObject(&amp;quot;AuditReportHeadersVO&amp;quot;);           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; // extend where clause           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; vo.setWhereClause(&amp;quot;((SELECT COUNT(1) FROM&amp;#160;&amp;#160; fnd_responsibility fr,fnd_flex_value_rule_usages ffvru,fnd_flex_value_rules ffvr&amp;quot;+           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot; WHERE&amp;#160; fr.responsibility_id = ffvru.responsibility_id AND ffvru.flex_value_rule_id = ffvr.flex_value_rule_id AND&amp;quot;+           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot; fr.responsibility_id = fnd_global.resp_id) = 0) OR&amp;quot;+           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot; (((SELECT COUNT(1) FROM fnd_responsibility fr, fnd_flex_value_rule_usages ffvru, fnd_flex_value_rules ffvr,&amp;quot;+           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot; fnd_flex_value_rule_lines ffvrl WHERE fr.responsibility_id = ffvru.responsibility_id AND&amp;quot;+           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot; ffvru.flex_value_rule_id = ffvr.flex_value_rule_id AND ffvr.flex_value_rule_id = ffvrl.flex_value_rule_id AND&amp;quot;+           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot; fr.responsibility_id = fnd_global.resp_id AND&amp;quot;+           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot; ffvrl.include_exclude_indicator = &#39;E&#39; AND&amp;quot;+           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot; flex_concatenated BETWEEN ffvrl.flex_value_low AND ffvrl.flex_value_high) = 0) AND&amp;quot;+           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot; ((SELECT COUNT(1) FROM fnd_responsibility fr, fnd_flex_value_rule_usages ffvru, fnd_flex_value_rules ffvr,&amp;quot;+           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot; fnd_flex_value_rule_lines ffvrl WHERE fr.responsibility_id = ffvru.responsibility_id AND&amp;quot;+           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot; ffvru.flex_value_rule_id = ffvr.flex_value_rule_id AND ffvr.flex_value_rule_id = ffvrl.flex_value_rule_id AND&amp;quot;+           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot; fr.responsibility_id = fnd_global.resp_id AND&amp;quot;+           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot; ffvrl.include_exclude_indicator = &#39;I&#39; AND&amp;quot;+           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot; flex_concatenated BETWEEN ffvrl.flex_value_low AND ffvrl.flex_value_high) &amp;gt; 0))&amp;quot;);           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }           &lt;br /&gt;&lt;/font&gt;}&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;: In above where clause below checks are done:     &lt;br /&gt;(&lt;u&gt;maybe it can be done in a smarter way, let me know!)&lt;/u&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Check if there are &lt;strong&gt;NO&lt;/strong&gt; security rules assigned to the current responsibility (count = 0)       &lt;br /&gt;OR &lt;/li&gt;    &lt;li&gt;Check if there are &lt;strong&gt;NO&lt;/strong&gt; EXCLUDE lines in the security rules assigned to the current responsibility (count = 0) for the cost centre of the expense report       &lt;br /&gt;AND &lt;/li&gt;    &lt;li&gt;Check if there &lt;strong&gt;ARE&lt;/strong&gt; INCLUDE lines in the security rules assigned to the current responsibility (count &amp;gt; 0) for the cost centre report &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;So the expense report is shown in the search table if check 1 is true OR (check 2 AND check 3 are true).&lt;/p&gt;  &lt;p&gt;Try if the class file compiles correctly, right-click on the project and Make and Rebuild the project.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;To deploy it is very simple, copy the xxSearchTableCO.java file to your server in directory $JAVA_TOP/xx/oracle/apps/ap/oie/audit/webui.    &lt;br /&gt;Open a terminal session on your server, set your environment and compile the java file.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh6.ggpht.com/_vMD4wTf0c20/TFm760Fx43I/AAAAAAAAPig/NGWOT43vyyM/s1600-h/image58.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px&quot; height=&quot;118&quot; alt=&quot;image&quot; src=&quot;http://lh6.ggpht.com/_vMD4wTf0c20/TFm77OZ0BVI/AAAAAAAAPio/4YxUA1saT_A/image_thumb34.png?imgmax=800&quot; width=&quot;628&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Last step to take is to assign the new controller class to the Search Results table.    &lt;br /&gt;Login into Oracle E-business Suite and click the Expenses Internal Audit responsibility. On the main page click “Personalize Search Results” link.&lt;/p&gt;  &lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;http://lh3.ggpht.com/_vMD4wTf0c20/TFm777dOgeI/AAAAAAAAPiw/i2wRJIHv-oY/s1600-h/image62.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;103&quot; alt=&quot;image&quot; src=&quot;http://lh3.ggpht.com/_vMD4wTf0c20/TFm78V6EdrI/AAAAAAAAPi4/BskAM51wLmQ/image_thumb36.png?imgmax=800&quot; width=&quot;348&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Click the Personalize Pencil on Table Search Results.&lt;/p&gt;  &lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;http://lh5.ggpht.com/_vMD4wTf0c20/TFm78txlCXI/AAAAAAAAPjA/qZ_WIuJdMRM/s1600-h/image66.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;87&quot; alt=&quot;image&quot; src=&quot;http://lh4.ggpht.com/_vMD4wTf0c20/TFm79G1SnxI/AAAAAAAAPjI/9IcVWD5bDDk/image_thumb38.png?imgmax=800&quot; width=&quot;500&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;We want the extension to be applied on organization level so we enter the new controller class xx.oracle.apps.ap.oie.audit.webui.xxSearchTableCO in the organization entry field. After you applied this change you can return to the personalization and you should see that the Result/Source column now shows your new controller class to be the active one on Organization level.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh6.ggpht.com/_vMD4wTf0c20/TFm79psWdYI/AAAAAAAAPjQ/i0Bme_Iub1c/s1600-h/image75.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px&quot; height=&quot;306&quot; alt=&quot;image&quot; src=&quot;http://lh5.ggpht.com/_vMD4wTf0c20/TFm7-PFfcII/AAAAAAAAPjY/VEjWmCuIz48/image_thumb45.png?imgmax=800&quot; width=&quot;887&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Bounce the Apache&amp;#160; server and you are done!    &lt;br /&gt;Create copies of the Internal Audit responsibility and assign different security rules to them to get the desired results.&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://robertjungerius.blogspot.com/feeds/3125169210415072924/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1671258754727628685/3125169210415072924' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/3125169210415072924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/3125169210415072924'/><link rel='alternate' type='text/html' href='http://robertjungerius.blogspot.com/2010/08/extending-controller-in-oa-framework.html' title='Extending a controller in OA Framework'/><author><name>Robert</name><uri>http://www.blogger.com/profile/08644116810054072551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_vMD4wTf0c20/TE2bwIiu3VI/AAAAAAAAO1E/O1bb3NsVU0Q/S220/kraftwerk+eletric+cafe+anim_3.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/_vMD4wTf0c20/TFm7zzLg79I/AAAAAAAAPg4/Oh94zscEqk0/s72-c/image_thumb9.png?imgmax=800" height="72" width="72"/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1671258754727628685.post-5012498150425040638</id><published>2010-07-29T08:25:00.001+02:00</published><updated>2010-07-29T08:25:27.184+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Oracle Workflow"/><title type='text'>Making sure (some) workflow notifications do not get sent via email</title><content type='html'>&lt;p&gt;When you define a workflow mailer on a test instance and/or on production you usually don’t want the complete history of pending notifications to be emailed.    &lt;br /&gt;To avoid this you need to set the mail status of the notifications in WF_NOTIFICATIONS to SENT     &lt;br /&gt;and rebuild the WF_NOTIFICATION_OUT queue/table (wfntfqup.sql).     &lt;br /&gt;What i found more convenient is to run a script to only dequeue the messages that you don’t want to sent out, so no need to do a complete rebuild. &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;-- Step 1: &lt;/p&gt;    &lt;p&gt;-- Clear mail status for ALL pending HR (item_type is HRSSA) notifications older then 1 day.      &lt;br /&gt;-- This will make sure they will not end up in the WF_NOTIFICATION_OUT queue in case of a rebuild. &lt;/p&gt;    &lt;p&gt;&lt;em&gt;UPDATE wf_notifications        &lt;br /&gt;SET&amp;#160;&amp;#160;&amp;#160; mail_status = &#39;SENT&#39;         &lt;br /&gt;WHERE&amp;#160; message_type = &#39;HRSSA&#39;         &lt;br /&gt;AND&amp;#160;&amp;#160;&amp;#160; TRUNC(begin_date) &amp;lt; TRUNC(SYSDATE)         &lt;br /&gt;AND&amp;#160;&amp;#160;&amp;#160; mail_status IN (&#39;MAIL&#39;, &#39;FAILED&#39;); &lt;/em&gt;&lt;/p&gt;    &lt;p&gt;COMMIT; &lt;/p&gt;    &lt;p&gt;-- Step 2: &lt;/p&gt;    &lt;p&gt;-- Run following pl/sql code from SQL*Plus on the server (logged in as APPS).      &lt;br /&gt;-- This will dequeue all pending HRSSA notifications older then 1 day from the mailer queue       &lt;br /&gt;-- NOTE: Enable serveroutput as it will display the number of notifications it will dequeue. &lt;/p&gt;    &lt;p&gt;&lt;em&gt;SET SERVEROUTPUT ON &lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;DECLARE        &lt;br /&gt;&amp;#160; q_version VARCHAR2(200);         &lt;br /&gt;&amp;#160; event sys.aq$_jms_text_message;         &lt;br /&gt;&amp;#160; dequeue_options dbms_aq.dequeue_options_t;         &lt;br /&gt;&amp;#160; message_properties dbms_aq.message_properties_t; &lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;&amp;#160; TYPE msgidtab IS TABLE OF RAW(16) INDEX BY BINARY_INTEGER; &lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;&amp;#160; msg_id msgidtab;        &lt;br /&gt;&amp;#160; dq_msg_id RAW(16);         &lt;br /&gt;&amp;#160; q_name VARCHAR2(60); &lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;&amp;#160; CURSOR target_msgids IS        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SELECT wfno.msg_id         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; FROM applsys.aq$wf_notification_out wfno         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; WHERE wfno.corr_id LIKE &#39;APPS:HRSSA:%&#39;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; AND TRUNC(wfno.enq_time) &amp;lt; TRUNC(SYSDATE)         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; AND wfno.msg_state = &#39;READY&#39;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ; &lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;BEGIN        &lt;br /&gt;&amp;#160; q_name := &#39;APPLSYS.WF_NOTIFICATION_OUT&#39;;         &lt;br /&gt;&amp;#160; dequeue_options.dequeue_mode := dbms_aq.remove_nodata;         &lt;br /&gt;&amp;#160; dequeue_options.wait := dbms_aq.no_wait;         &lt;br /&gt;&amp;#160; dequeue_options.navigation := dbms_aq.first_message;         &lt;br /&gt;&amp;#160; dequeue_options.consumer_name := &#39;WF_NOTIFICATION_OUT&#39;; &lt;/em&gt;&lt;/p&gt;    &lt;p&gt;&lt;em&gt;&amp;#160; OPEN target_msgids;        &lt;br /&gt;&amp;#160; FETCH target_msgids BULK COLLECT         &lt;br /&gt;&amp;#160; INTO msg_id;         &lt;br /&gt;&amp;#160; CLOSE target_msgids;         &lt;br /&gt;&amp;#160; --         &lt;br /&gt;&amp;#160; dbms_output.put_line(&#39;Dequeue of &#39;||msg_id.COUNT||&#39; messages.&#39;);         &lt;br /&gt;&amp;#160; --         &lt;br /&gt;&amp;#160; IF (msg_id.COUNT &amp;gt; 0) THEN         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; FOR i IN msg_id.FIRST .. msg_id.LAST LOOP dequeue_options.msgid := msg_id(i);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; dbms_aq.dequeue(queue_name&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; =&amp;gt; q_name         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,dequeue_options&amp;#160;&amp;#160;&amp;#160; =&amp;gt; dequeue_options         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,message_properties =&amp;gt; message_properties         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,payload&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; =&amp;gt; event         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,msgid&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; =&amp;gt; dq_msg_id);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; dequeue_options.navigation := dbms_aq.next_message;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; END LOOP;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; COMMIT;         &lt;br /&gt;&amp;#160; END IF;         &lt;br /&gt;EXCEPTION         &lt;br /&gt;--timeout will fall to here         &lt;br /&gt;WHEN OTHERS THEN         &lt;br /&gt;&amp;#160; dbms_output.put_line(SQLERRM);         &lt;br /&gt;&amp;#160; IF (target_msgids%ISOPEN) THEN         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; CLOSE target_msgids;         &lt;br /&gt;&amp;#160; END IF;         &lt;br /&gt;END;         &lt;br /&gt;/ &lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;: Dequeuing can take a few minutes to be processed so check the wf_notification_out table to make sure no messages are pending before starting the workflow mailer (&lt;em&gt;select count(1) from wf_notification_out where corrid like ‘APPS:HRSSA%’ and state=0;)&lt;/em&gt;&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://robertjungerius.blogspot.com/feeds/5012498150425040638/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1671258754727628685/5012498150425040638' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/5012498150425040638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/5012498150425040638'/><link rel='alternate' type='text/html' href='http://robertjungerius.blogspot.com/2010/07/making-sure-some-workflow-notifications.html' title='Making sure (some) workflow notifications do not get sent via email'/><author><name>Robert</name><uri>http://www.blogger.com/profile/08644116810054072551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_vMD4wTf0c20/TE2bwIiu3VI/AAAAAAAAO1E/O1bb3NsVU0Q/S220/kraftwerk+eletric+cafe+anim_3.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1671258754727628685.post-1701754747234547559</id><published>2010-07-26T16:27:00.001+02:00</published><updated>2010-07-26T16:27:01.360+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Oracle Application Object Library"/><category scheme="http://www.blogger.com/atom/ns#" term="TOAD"/><title type='text'>SQL to list profile values on all levels</title><content type='html'>&lt;p&gt;SELECT fpot.user_profile_option_name &amp;quot;Profile&amp;quot;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,fpov.profile_option_value &amp;quot;Value&amp;quot;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,decode(fpov.level_id     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,10001     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&#39;Site&#39;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,10002     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&#39;Application&#39;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,10003     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&#39;Responsibility&#39;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,10004     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&#39;User&#39;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&#39;UNKNOWN&#39;) &amp;quot;Level&amp;quot;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,decode(fpov.level_id     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,10002     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,fat.application_name     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,10003     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,frt.responsibility_name     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,10004     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,fu.user_name     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&#39;n/a&#39;) &amp;quot;Level value&amp;quot;     &lt;br /&gt;FROM&amp;#160;&amp;#160; applsys.fnd_application_tl&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; fat     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,applsys.fnd_user&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; fu     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,applsys.fnd_responsibility_tl&amp;#160;&amp;#160;&amp;#160;&amp;#160; frt     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,applsys.fnd_profile_option_values fpov     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,applsys.fnd_profile_options&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; fpo     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,applsys.fnd_profile_options_tl&amp;#160;&amp;#160;&amp;#160; fpot     &lt;br /&gt;WHERE&amp;#160; upper(fpot.user_profile_option_name) LIKE upper(&#39;%&amp;amp;v_profile%&#39;)     &lt;br /&gt;AND&amp;#160;&amp;#160;&amp;#160; fpot.profile_option_name = fpo.profile_option_name     &lt;br /&gt;AND&amp;#160;&amp;#160;&amp;#160; fpot.LANGUAGE = &#39;US&#39;     &lt;br /&gt;AND&amp;#160;&amp;#160;&amp;#160; fpo.application_id = fpov.application_id(+)     &lt;br /&gt;AND&amp;#160;&amp;#160;&amp;#160; fpo.profile_option_id = fpov.profile_option_id(+)     &lt;br /&gt;AND&amp;#160;&amp;#160;&amp;#160; fpov.level_value = frt.responsibility_id(+)     &lt;br /&gt;AND&amp;#160;&amp;#160;&amp;#160; frt.LANGUAGE(+) = &#39;US&#39;     &lt;br /&gt;AND&amp;#160;&amp;#160;&amp;#160; fpov.level_value = fu.user_id(+)     &lt;br /&gt;AND&amp;#160;&amp;#160;&amp;#160; fpov.level_value = fat.application_id(+)     &lt;br /&gt;AND&amp;#160;&amp;#160;&amp;#160; fat.LANGUAGE(+) = &#39;US&#39;     &lt;br /&gt;ORDER&amp;#160; BY &amp;quot;Profile&amp;quot;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&amp;quot;Level&amp;quot;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&amp;quot;Level value&amp;quot;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&amp;quot;Value&amp;quot;;&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://robertjungerius.blogspot.com/feeds/1701754747234547559/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1671258754727628685/1701754747234547559' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/1701754747234547559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/1701754747234547559'/><link rel='alternate' type='text/html' href='http://robertjungerius.blogspot.com/2010/07/sql-to-list-profile-values-on-all.html' title='SQL to list profile values on all levels'/><author><name>Robert</name><uri>http://www.blogger.com/profile/08644116810054072551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_vMD4wTf0c20/TE2bwIiu3VI/AAAAAAAAO1E/O1bb3NsVU0Q/S220/kraftwerk+eletric+cafe+anim_3.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1671258754727628685.post-2515766525932537159</id><published>2010-06-24T13:58:00.001+02:00</published><updated>2010-06-24T13:58:23.363+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="flexfield"/><category scheme="http://www.blogger.com/atom/ns#" term="GL"/><category scheme="http://www.blogger.com/atom/ns#" term="security rules"/><title type='text'>Flexfield security rule assignments to responsibility</title><content type='html'>&lt;p&gt;The following query will list all the security rules assigned to a responsibility&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;SELECT fr.responsibility_id       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,fr.responsibility_key        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,fr.responsibility_name        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,ffvr.flex_value_rule_name        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,ffvrl.include_exclude_indicator        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,ffvrl.flex_value_low        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,ffvrl.flex_value_high        &lt;br /&gt;FROM&amp;#160;&amp;#160; fnd_responsibility_vl&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; fr        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,fnd_flex_value_rule_usages ffvru        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,fnd_flex_value_rules_vl&amp;#160;&amp;#160;&amp;#160; ffvr        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,fnd_flex_value_rule_lines&amp;#160; ffvrl        &lt;br /&gt;WHERE&amp;#160; fr.responsibility_id = ffvru.responsibility_id        &lt;br /&gt;AND&amp;#160;&amp;#160;&amp;#160; ffvru.flex_value_rule_id = ffvr.flex_value_rule_id        &lt;br /&gt;AND&amp;#160;&amp;#160;&amp;#160; ffvr.flex_value_rule_id = ffvrl.flex_value_rule_id        &lt;br /&gt;AND&amp;#160;&amp;#160;&amp;#160; fr.responsibility_name = &#39;&amp;amp;resp_name’        &lt;br /&gt;ORDER&amp;#160; BY fr.responsibility_id        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,ffvr.flex_value_rule_name        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,ffvrl.include_exclude_indicator DESC        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,ffvrl.flex_value_low        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,ffvrl.flex_value_high;&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;  </content><link rel='replies' type='application/atom+xml' href='http://robertjungerius.blogspot.com/feeds/2515766525932537159/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1671258754727628685/2515766525932537159' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/2515766525932537159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/2515766525932537159'/><link rel='alternate' type='text/html' href='http://robertjungerius.blogspot.com/2010/06/flexfield-security-rule-assignments-to.html' title='Flexfield security rule assignments to responsibility'/><author><name>Robert</name><uri>http://www.blogger.com/profile/08644116810054072551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_vMD4wTf0c20/TE2bwIiu3VI/AAAAAAAAO1E/O1bb3NsVU0Q/S220/kraftwerk+eletric+cafe+anim_3.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1671258754727628685.post-6145807483551646286</id><published>2010-03-16T12:56:00.002+01:00</published><updated>2010-07-22T19:25:45.482+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Oracle Workflow"/><title type='text'>Join the WF_NOTIFICATIONS and WF_NOTIFICATION_OUT table</title><content type='html'>&lt;blockquote&gt;   &lt;p&gt;&lt;font face=&quot;System&quot;&gt;SELECT wno.*        &lt;br /&gt;FROM&amp;#160;&amp;#160; (SELECT o.deq_time deq_time         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,o.enq_time enq_time         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,decode(o.state         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,0         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&#39;PENDING&#39;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,2         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&#39;EMAIL SENT&#39;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,3         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&#39;EXCEPTION&#39;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,o.state) state         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,to_number((SELECT str_value         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; FROM&amp;#160;&amp;#160; TABLE(o.user_data.header.properties)         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WHERE&amp;#160; NAME = &#39;NOTIFICATION_ID&#39;)) p_notification_id         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,(SELECT str_value         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; FROM&amp;#160;&amp;#160; TABLE(o.user_data.header.properties)         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WHERE&amp;#160; NAME = &#39;ROLE&#39;) p_Role         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,o.user_data         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; FROM&amp;#160;&amp;#160; applsys.wf_notification_out o) wno         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,applsys.wf_notifications wn         &lt;br /&gt;WHERE&amp;#160; wn.notification_id = wno.p_notification_id;&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://robertjungerius.blogspot.com/feeds/6145807483551646286/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1671258754727628685/6145807483551646286' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/6145807483551646286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/6145807483551646286'/><link rel='alternate' type='text/html' href='http://robertjungerius.blogspot.com/2010/03/join-wfnotifications-and.html' title='Join the WF_NOTIFICATIONS and WF_NOTIFICATION_OUT table'/><author><name>Robert</name><uri>http://www.blogger.com/profile/08644116810054072551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_vMD4wTf0c20/TE2bwIiu3VI/AAAAAAAAO1E/O1bb3NsVU0Q/S220/kraftwerk+eletric+cafe+anim_3.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1671258754727628685.post-3601685357934998914</id><published>2010-03-02T14:19:00.001+01:00</published><updated>2010-03-02T14:19:43.107+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Oracle Application Object Library"/><title type='text'>Detailed login information via ICX_SESSIONS</title><content type='html'>&lt;p&gt;Often it is quite handy to be able to see which user logged in under which responsibility and used which function.    &lt;br /&gt;In a large environment it is even more convenient to limit this information per HR business group.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face=&quot;Terminal&quot; size=&quot;2&quot;&gt;-- Select all logins from a certain BG        &lt;br /&gt;-- Select user, responsibility and function used         &lt;br /&gt;-- First connect and last connect         &lt;br /&gt;SELECT to_char(first_connect, &#39;dd-mm-yyyy hh24:mi:ss&#39;) &amp;quot;First Connect&amp;quot;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,to_char(last_connect, &#39;dd-mm-yyyy hh24:mi:ss&#39;) &amp;quot;Last Connect&amp;quot;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,user_name         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,p.email_address         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,p.employee_number         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,(SELECT description         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; FROM&amp;#160;&amp;#160; fnd_responsibility_tl r         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WHERE&amp;#160; r.responsibility_id = a.responsibility_id         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; AND&amp;#160;&amp;#160;&amp;#160; r.LANGUAGE = &#39;US&#39;) &amp;quot;Responsibility&amp;quot;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,(SELECT user_function_name         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; FROM&amp;#160;&amp;#160; fnd_form_functions_vl fffv         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WHERE&amp;#160; (fffv.function_id = a.function_id)) &amp;quot;Current Function&amp;quot;         &lt;br /&gt;FROM&amp;#160;&amp;#160; icx_sessions&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; a         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,fnd_user&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; b         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,per_people_x&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; p         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,per_business_groups bg         &lt;br /&gt;WHERE&amp;#160; a.user_id = b.user_id         &lt;br /&gt;AND&amp;#160;&amp;#160;&amp;#160; b.employee_id = p.person_id         &lt;br /&gt;AND&amp;#160;&amp;#160;&amp;#160; p.business_group_id = bg.business_group_id         &lt;br /&gt;AND&amp;#160;&amp;#160;&amp;#160; bg.NAME = &#39;&amp;amp;business_group&#39;         &lt;br /&gt;-- Uncomment to only list today         &lt;br /&gt;--AND&amp;#160;&amp;#160;&amp;#160; TRUNC(last_connect)=TRUNC(SYSDATE)&lt;/font&gt;&lt;font face=&quot;Terminal&quot; size=&quot;2&quot;&gt;        &lt;br /&gt;ORDER&amp;#160; BY first_connect DESC;&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;  </content><link rel='replies' type='application/atom+xml' href='http://robertjungerius.blogspot.com/feeds/3601685357934998914/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1671258754727628685/3601685357934998914' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/3601685357934998914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/3601685357934998914'/><link rel='alternate' type='text/html' href='http://robertjungerius.blogspot.com/2010/03/detailed-login-information-via.html' title='Detailed login information via ICX_SESSIONS'/><author><name>Robert</name><uri>http://www.blogger.com/profile/08644116810054072551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_vMD4wTf0c20/TE2bwIiu3VI/AAAAAAAAO1E/O1bb3NsVU0Q/S220/kraftwerk+eletric+cafe+anim_3.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1671258754727628685.post-8873928328888608639</id><published>2010-01-20T21:38:00.001+01:00</published><updated>2010-01-20T21:38:22.223+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Audit"/><category scheme="http://www.blogger.com/atom/ns#" term="Oracle Application Object Library"/><title type='text'>How to enable auditing on custom tables</title><content type='html'>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;As i am currently working for a company that needs to comply with &lt;a href=&quot;http://en.wikipedia.org/wiki/Sarbanes%E2%80%93Oxley_Act&quot; target=&quot;_blank&quot;&gt;SOX&lt;/a&gt; (Sarbanes Oxley act) we are implementing standard Oracle auditing on almost all setup related tables. Lately also the question was asked to enable auditing on custom tables, as the contents of these tables becomes more important.&lt;/p&gt;  &lt;p&gt;To enable auditing on custom tables you first have to register the table, its columns and the primary key.&lt;/p&gt;  &lt;p&gt;I am using the following PLSQL block to automatically register the table and all its columns by using the dba_tab_columns view:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;DECLARE      &lt;br /&gt;&amp;#160; CURSOR c1 IS       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SELECT column_name       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,table_name       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,column_id       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,data_type       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,data_length       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,nullable       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; FROM&amp;#160;&amp;#160; dba_tab_columns       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; WHERE&amp;#160; table_name = &#39;XX_GL_REVALUATION_ACCOUNTS&#39;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ORDER&amp;#160; BY column_id;       &lt;br /&gt;&amp;#160; r1 c1%ROWTYPE;       &lt;br /&gt;BEGIN       &lt;br /&gt;&amp;#160; ad_dd.register_table(&#39;XXGL&#39;, &#39;XX_GL_REVALUATION_ACCOUNTS&#39;, &#39;T&#39;);       &lt;br /&gt;&amp;#160; FOR r1 IN c1 LOOP       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ad_dd.register_column(&#39;XXGEN&#39;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,r1.table_name       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,r1.column_name       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,r1.column_id       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,r1.data_type       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,r1.data_length       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,r1.nullable       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&#39;N&#39;);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; dbms_output.put_line(r1.column_name || &#39; registered.&#39;);       &lt;br /&gt;&amp;#160; END LOOP;       &lt;br /&gt;&amp;#160; ad_dd.register_primary_key(&#39;XXGL’       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&#39;XX_GL_REV_ACCOUNTS_PK&#39;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&#39;XX_GL_REVALUATION_ACCOUNTS&#39;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&#39;XX_GL_REVALUATION_ACCOUNTS&#39;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&#39;S&#39;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&#39;Y&#39;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&#39;Y&#39;);       &lt;br /&gt;&amp;#160; ad_dd.register_primary_key_column(&#39;XXGL&#39;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&#39;XX_GL_REV_ACCOUNTS_PK&#39;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&#39;XX_GL_REVALUATION_ACCOUNTS&#39;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&#39;SET_OF_BOOKS_ID&#39;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,1);       &lt;br /&gt;&amp;#160; ad_dd.register_primary_key_column(&#39;XXGL&#39;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&#39;XX_GL_REV_ACCOUNTS_PK&#39;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&#39;XX_GL_REVALUATION_ACCOUNTS&#39;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&#39;GAIN_CCID&#39;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,2);       &lt;br /&gt;&amp;#160; ad_dd.register_primary_key_column(&#39;XXGL’       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&#39;XX_GL_REV_ACCOUNTS_PK&#39;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&#39;XX_GL_REVALUATION_ACCOUNTS&#39;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&#39;LOSS_CCID&#39;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,3);       &lt;br /&gt;&amp;#160; COMMIT;       &lt;br /&gt;EXCEPTION       &lt;br /&gt;&amp;#160; WHEN OTHERS THEN       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ROLLBACK;       &lt;br /&gt;END;       &lt;br /&gt;/&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Registration of the primary key and primary key columns is another story.    &lt;br /&gt;This is required for auditing but we do have some tables that do not have a real primary key.     &lt;br /&gt;So these have to be registered manually by using the following code:     &lt;br /&gt;    &lt;br /&gt;ad_dd.register_primary_key(&#39;XXGL’     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&#39;XX_GL_REV_ACCOUNTS_PK&#39;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&#39;XX_GL_REVALUATION_ACCOUNTS&#39;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&#39;XX_GL_REVALUATION_ACCOUNTS&#39;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&#39;S&#39;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&#39;Y&#39;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&#39;Y&#39;);     &lt;br /&gt;&amp;#160; ad_dd.register_primary_key_column(&#39;XXGL&#39;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&#39;XX_GL_REV_ACCOUNTS_PK&#39;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&#39;XX_GL_REVALUATION_ACCOUNTS&#39;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&#39;SET_OF_BOOKS_ID&#39;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,1);     &lt;br /&gt;&amp;#160; ad_dd.register_primary_key_column(&#39;XXGL&#39;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&#39;XX_GL_REV_ACCOUNTS_PK&#39;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&#39;XX_GL_REVALUATION_ACCOUNTS&#39;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&#39;GAIN_CCID&#39;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,2);     &lt;br /&gt;&amp;#160; ad_dd.register_primary_key_column(&#39;XXGL’     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&#39;XX_GL_REV_ACCOUNTS_PK&#39;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&#39;XX_GL_REVALUATION_ACCOUNTS&#39;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,&#39;LOSS_CCID&#39;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,3);     &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;PS: Don’t forget to COMMIT !&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The table should now be available for auditing and you can add the table to an audit group.    &lt;br /&gt;Navigate to System Administrator responsibility and access the menu “Security –&amp;gt; Audittrail –&amp;gt; Tables”, you should be able to find the table.&lt;/p&gt;  &lt;p&gt;Also make sure that Audit installations on the custom schema (in this example XXGL) is enabled, otherwise it will still not work:&lt;/p&gt;  &lt;p&gt;&lt;img style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px&quot; title=&quot;image&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;https://lltjba.blu.livefilestore.com/y1mecv2tXra9Eom0rVI5bpDVOzevr7fpzt1Hjumihti4AAQ9GXRxUpu80gVNhmr_jJhf2wLTZYIN1O_2piGhYpiWG3jYXtsmoXssOdCR01KWSFTJq-bVJnNwDQfP-k1MMtIIY1Mh18o0FnHoucgOHTbMA/image[21].png&quot; width=&quot;657&quot; height=&quot;578&quot; /&gt;&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://robertjungerius.blogspot.com/feeds/8873928328888608639/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1671258754727628685/8873928328888608639' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/8873928328888608639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/8873928328888608639'/><link rel='alternate' type='text/html' href='http://robertjungerius.blogspot.com/2010/01/how-to-enable-auditing-on-custom-tables_20.html' title='How to enable auditing on custom tables'/><author><name>Robert</name><uri>http://www.blogger.com/profile/08644116810054072551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_vMD4wTf0c20/TE2bwIiu3VI/AAAAAAAAO1E/O1bb3NsVU0Q/S220/kraftwerk+eletric+cafe+anim_3.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1671258754727628685.post-1066778825610907818</id><published>2009-10-21T16:04:00.002+02:00</published><updated>2009-11-14T18:24:39.321+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Books"/><title type='text'>Oracle E-Business Suite Development &amp;amp; Extensibility Handbook</title><content type='html'>&lt;div&gt;Just got an email that Anil Passi&#39;s &lt;a href=&quot;http://amzn.com/0071629424&quot; target=&quot;_blank&quot;&gt;book&lt;/a&gt; (now also available via &lt;a href=&quot;http://www.bol.com/nl/p/boeken-engels/oracle-e-business-suite-development-extensibility-handbook/1001004006875754/index.html&quot;&gt;bol.com&lt;/a&gt;) is out.&lt;/div&gt;  &lt;div&gt;As i still use his website as a reference and also had the pleasure to attend a 2-day special about best practices on custom EBS development i think i can recommend this book to anybody who wants to learn more about developing customizations in EBS.&lt;/div&gt;  &lt;div&gt; &lt;/div&gt;  &lt;div&gt; &lt;/div&gt;  &lt;div&gt;&lt;a href=&quot;http://amzn.com/0071629424&quot;&gt;&lt;img style=&quot;display: block; float: none; margin-left: auto; margin-right: auto;&quot; alt=&quot;Oracle E-Business Suite Development &amp;amp; Extensibility Handbook (Osborne ORACLE Press Series)&quot; src=&quot;http://ecx.images-amazon.com/images/I/51O5C2fpw5L._BO2,204,203,200_PIsitb-sticker-arrow-click,TopRight,35,-76_AA240_SH20_OU01_.jpg&quot; border=&quot;0&quot; height=&quot;240&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;/div&gt;  &lt;div&gt; &lt;/div&gt;  &lt;div&gt;   &lt;p&gt;&lt;strong&gt;Extend and Customize Oracle E-Business Suite&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;Transform your Oracle E-Business Suite infrastructure to suit enterprise requirements using the comprehensive development methods in this Oracle Press guide. &lt;em&gt;Oracle E-Business Suite Development &amp;amp; Extensibility Handbook&lt;/em&gt; lays out each tool alongside reusable code and step-by-step examples. Learn how to create multiorg objects, integrate Java and PL/SQL, design custom user interfaces, and use Oracle Application Framework and Oracle Workflow. This detailed volume also explains how to work with Oracle XML Gateway, publish dynamic business intelligence reports, and tune your configuration.&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;div&gt;Manage an efficient development platform with Oracle Application Object Library&lt;/div&gt;     &lt;/li&gt;      &lt;li&gt;Develop concurrent programs, customized forms, and personalized graphical user interfaces &lt;/li&gt;      &lt;li&gt;Securely share data between organizations &lt;/li&gt;      &lt;li&gt;       &lt;div&gt;Distribute business communiqués through Oracle Reports and Oracle Business Intelligence Publisher&lt;/div&gt;     &lt;/li&gt;      &lt;li&gt;Develop Java extensions with Oracle JDeveloper and Oracle Application Framework &lt;/li&gt;      &lt;li&gt;Capture and graphically map business processes using Oracle Workflow &lt;/li&gt;      &lt;li&gt;Exchange data between applications via Oracle XML Gateway &lt;/li&gt;      &lt;li&gt;Change the appearance of applications using Custom Look and Feel &lt;/li&gt;      &lt;li&gt;Integrate Oracle E-Business Suite with service-oriented architecture using Oracle Applications Adapter On Demand &lt;/li&gt;   &lt;/ul&gt; &lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://robertjungerius.blogspot.com/feeds/1066778825610907818/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1671258754727628685/1066778825610907818' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/1066778825610907818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/1066778825610907818'/><link rel='alternate' type='text/html' href='http://robertjungerius.blogspot.com/2009/10/oracle-e-business-suite-development.html' title='Oracle E-Business Suite Development &amp;amp; Extensibility Handbook'/><author><name>Robert</name><uri>http://www.blogger.com/profile/08644116810054072551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_vMD4wTf0c20/TE2bwIiu3VI/AAAAAAAAO1E/O1bb3NsVU0Q/S220/kraftwerk+eletric+cafe+anim_3.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1671258754727628685.post-8803817695315970387</id><published>2009-10-20T13:25:00.001+02:00</published><updated>2009-10-20T13:25:29.777+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="JRE"/><title type='text'>Issues after moving from Oracle JInitiator to the Sun JRE</title><content type='html'>&lt;p&gt;We finally made the move from Jinitiator to the Sun JRE, but it appears that there are some small but annoying issues related to this move.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Performance issue:&lt;/strong&gt;     &lt;br /&gt;The first one i encountered on my laptop (and not on my desktop) is that it takes ages to drag a window from one position to a new position.     &lt;br /&gt;It takes more then 2 seconds to draw the outline of the window and afterwards another 5 or more seconds to draw the contents of the window.&lt;/p&gt;  &lt;p&gt;This issue is caused by hardware acceleration (DirectX) used by the JRE and does not occur on all hardware.    &lt;br /&gt;The solution to the root cause of this issue is currently expected to be provided by Sun in JRE 1.6.0_14,     &lt;br /&gt;in the meanwhile you can workaround it by following these instructions:&lt;/p&gt;  &lt;p&gt;1. Open the Java control panel    &lt;br /&gt;2. Go to the &amp;quot;Java&amp;quot; tab     &lt;br /&gt;3. Under &amp;quot;Java Applet Runtime Settings&amp;quot;, click &amp;quot;View&amp;quot;.     &lt;br /&gt;4. In the &amp;quot;Java Runtime Parameters&amp;quot;, enter &amp;quot;-Dsun.java2d.d3d=false&amp;quot;     &lt;br /&gt;5. Click OK and OK to close the Java control panel.&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6E9l5rIlnGNaTzIbE8MIiBtsHSYApnA6c9ITP8jYtDjQCR1AHzzUETfBeG2e9dNDD_-GzTHxdnXQmUxpMioTyLFuDT6i7mjmQBGr_OmnwUolsIfG-CpMUmW3VwVA980rUEjtb3nbV6vg/s1600-h/image%5B3%5D.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px&quot; height=&quot;217&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUxz5Vv7N_EvR35ixvYGJ2MvASmpsWWTiCl-kncrgX1-uyB0iySYZMlDVtaDAChhyfci95rnSDZW_UbuxPx8r59RMu1i5NYUZR1QRbRu1ZzodNjOogCDbOc-tlnno9_PHsLaD0CaetFCQ//?imgmax=800&quot; width=&quot;542&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a name=&quot;behind&quot;&gt;&lt;/a&gt;&lt;strong&gt;Focus issues: Browser window opens behind the Forms window :&lt;/strong&gt;     &lt;br /&gt;Opening a html page/OAF session from the Forms Navigator may cause the html window to open behind the Navigator window when using Internet Explorer. This issue occurs when using next-generation java plug-in technology with JRE 1.6.0_10 or later, however it does not appear to occur on all desktops.     &lt;br /&gt;This bug is currently under investigation by Sun.     &lt;br /&gt;    &lt;br /&gt;To workaround this issue perform the following actions:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Open the Java control panel &lt;/li&gt;    &lt;li&gt;Go to the “Advanced” tab &lt;/li&gt;    &lt;li&gt;Under “Java Plug-in” settings uncheck the “Enable the next-generation Java Plug-in” setting. &lt;/li&gt;    &lt;li&gt;Click OK and restart all your browser sessions. &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqw1Df2XZciJG-U9HicqIfIu9LPPaKFY9LULUtxwljDFe5CVXra7dC5cAhGOIeEcRValaFmSF_9XG-XKIiflyrpU2JNb8McOn2vg5HBK0vM5eo0ZXeBCUpNQSZ0PsFyaRGsYcRgSz5HbM/s1600-h/image%5B10%5D.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: block; border-left-width: 0px; float: none; border-bottom-width: 0px; margin-left: auto; margin-right: auto; border-right-width: 0px&quot; height=&quot;434&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjiGF8JeiJWdYumoL5fV4rDqheF9nhOMCKGmLTfs87GTcNtLa0ct-hk0jZzmuDsTh6AwLxi6aGwRB92KqnERcq2AFugHaZE_JziKSHMVbIgsByBExZFEvh4OCOMNrIG3abXXymg3xk9L7Q//?imgmax=800&quot; width=&quot;383&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://robertjungerius.blogspot.com/feeds/8803817695315970387/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1671258754727628685/8803817695315970387' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/8803817695315970387'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/8803817695315970387'/><link rel='alternate' type='text/html' href='http://robertjungerius.blogspot.com/2009/10/issues-after-moving-from-oracle.html' title='Issues after moving from Oracle JInitiator to the Sun JRE'/><author><name>Robert</name><uri>http://www.blogger.com/profile/08644116810054072551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_vMD4wTf0c20/TE2bwIiu3VI/AAAAAAAAO1E/O1bb3NsVU0Q/S220/kraftwerk+eletric+cafe+anim_3.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUxz5Vv7N_EvR35ixvYGJ2MvASmpsWWTiCl-kncrgX1-uyB0iySYZMlDVtaDAChhyfci95rnSDZW_UbuxPx8r59RMu1i5NYUZR1QRbRu1ZzodNjOogCDbOc-tlnno9_PHsLaD0CaetFCQ/s72-c/?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1671258754727628685.post-6808654431696795573</id><published>2009-10-15T14:06:00.001+02:00</published><updated>2009-10-15T14:06:43.587+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Oracle"/><title type='text'>Larry Ellison on cloud computing</title><content type='html'>&lt;div class=&quot;wlWriterEditableSmartContent&quot; id=&quot;scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:63970d41-7d6b-491a-9178-aecaf3599a86&quot; style=&quot;padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px&quot;&gt;&lt;div id=&quot;240df66a-14ad-4910-8f72-01b28e89d94f&quot; style=&quot;margin: 0px; padding: 0px; display: inline;&quot;&gt;&lt;div&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=KmXJSeMaoTY&amp;amp;hl=en&amp;amp;fs=1&amp;amp;&quot; target=&quot;_new&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJlpXubP0lEb_JBzpVWl0inV6D_-7iZ7CFXVU3Dx39Z4EHE9pMyIXvACzpbYwNJ5e9nBRTBCvd8a9TfKwTYx6Fdt3MmMhrJjiUSzguK9qwgcxLe-k81s55IDyResvjbCTc7pEjFKSK3BI//?imgmax=800&quot; style=&quot;border-style: none&quot; galleryimg=&quot;no&quot; onload=&quot;var downlevelDiv = document.getElementById(&#39;240df66a-14ad-4910-8f72-01b28e89d94f&#39;); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;object width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/KmXJSeMaoTY&amp;amp;hl=en&amp;amp;fs=1&amp;amp;&amp;amp;hl=en\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;embed src=\&amp;quot;http://www.youtube.com/v/KmXJSeMaoTY&amp;amp;hl=en&amp;amp;fs=1&amp;amp;&amp;amp;hl=en\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/object&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;  </content><link rel='replies' type='application/atom+xml' href='http://robertjungerius.blogspot.com/feeds/6808654431696795573/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1671258754727628685/6808654431696795573' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/6808654431696795573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/6808654431696795573'/><link rel='alternate' type='text/html' href='http://robertjungerius.blogspot.com/2009/10/larry-ellison-on-cloud-computing.html' title='Larry Ellison on cloud computing'/><author><name>Robert</name><uri>http://www.blogger.com/profile/08644116810054072551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_vMD4wTf0c20/TE2bwIiu3VI/AAAAAAAAO1E/O1bb3NsVU0Q/S220/kraftwerk+eletric+cafe+anim_3.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1671258754727628685.post-629254555546265070</id><published>2009-10-14T20:21:00.001+02:00</published><updated>2009-10-14T20:21:55.614+02:00</updated><title type='text'>Oracle Workflow Special Notification Mailer Attributes</title><content type='html'>&lt;p&gt;You can use special message attributes to control how a notification mailer generates the e-mail message for a notification, if the recipient has a notification preference to receive e-mail notifications. For example, if you want to customize notifications from a particular department, you can define these attributes for those notifications. &lt;/p&gt;  &lt;ul&gt;   &lt;ul&gt;     &lt;li&gt;&lt;a&gt;&lt;/a&gt;&lt;a&gt;&lt;/a&gt;#WFM_FROM - Define this attribute for a message to specify the value that appears in the From field of the message header when the e-mail notification message is delivered to a user. If the #WFM_FROM message attribute is defined for a notification, the notification mailer that sends the message will use the #WFM_FROM attribute value in the From field for that message, overriding the mailer&#39;s From Address parameter value. &lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;ul&gt;     &lt;li&gt;&lt;a&gt;&lt;/a&gt;&lt;a&gt;&lt;/a&gt;#WFM_REPLYTO - Define this attribute for a message to specify the address of the e-mail account that receives incoming messages, to the which e-mail notification response should be sent. If the #WFM_REPLYTO message attribute is defined for a notification, the notification mailer that sends the message will use the #WFM_REPLYTO attribute value as the reply address for that message, overriding the mailer&#39;s Reply To parameter value. &lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;ul&gt;     &lt;li&gt;&lt;a&gt;&lt;/a&gt;&lt;a&gt;&lt;/a&gt;#WFM_HTMLAGENT - Define this attribute for a message to specify the base URL that identifies the HTML web agent that handles HTML notification responses. This URL is required to support e-mail notifications with HTML attachments. The default URL is derived from the Workflow Web Agent specified in the Global Preferences web page in standalone Oracle Workflow, or from the Applications Web Agent (APPS_WEB_AGENT) profile option in Oracle Applications. However, you can override this default by defining a different value for this attribute. If the #WFM_HTMLAGENT message attribute is defined for a notification, the notification mailer that sends the message will use the #WFM_HTMLAGENT attribute value as the HTML web agent for that message, overriding the mailer&#39;s HTML Agent parameter value. &lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;NOTE: Text copied from &lt;a title=&quot;http://download.oracle.com/docs/cd/B14099_19/integrate.1012/b12161/defcom38.htm&quot; href=&quot;http://download.oracle.com/docs/cd/B14099_19/integrate.1012/b12161/defcom38.htm&quot; target=&quot;_blank&quot;&gt;http://download.oracle.com/docs/cd/B14099_19/integrate.1012/b12161/defcom38.htm&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;There are a few more attributes which can be used then the one mentioned above:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;#WFM_CC – Set a CC email address on the notification &lt;/li&gt;    &lt;li&gt;#WFM_BCC – set a BCC email address on the notification &lt;/li&gt;    &lt;li&gt;#FROM_ROLE – Specify the role that is the source of a notification &lt;/li&gt;    &lt;li&gt;#HIDE_REASSIGN – Set to Y to hide the reassign button in the notification &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;In Workflow builder this looks as follows:&lt;/p&gt;  &lt;p&gt;First define the attributes:&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://o1qpag.blu.livefilestore.com/y1mAWt4f97npRMq3JgdKLDtU7sDnpXnEHZQuv9fiE6ivJGV9D6NoOGoF_kY8li2dg73kEGL3V8rBMQKbj66rQ4RU_GJk7G3vid1of4A4iEDreadmXKAfVrxHSHaXnuEfnIv2Lhze2VNiSDjWbhxovKeXg/image[2].png&quot; rel=&quot;WLPP&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; title=&quot;image&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;https://o1qpag.blu.livefilestore.com/y1mTYovrzYg5cyV5m89qhc9ztGzvMTAlkauNUGKWuRJmP4i9xSGwTPUDe3CsMnPddJBEX5NzktoCX8HsUVlGrv9Ui0N52eV5QbFV3BGYUCupKei8uCeSq_3QFi_DqIvlc8eSSdzdQW2ocVHZV5XU_3vig/image_thumb.png&quot; width=&quot;232&quot; height=&quot;178&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;On message level define it as follows:&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://o1qpag.blu.livefilestore.com/y1mFo1u84W82ZivxCJVjIlA0SHVUXTEHEI2RZX-3BeXl7-ESMQ5zcyk0DWhCCM_Dfp-AJ4fikATHizE_vg80FRGuOjz9PAhPVt7Wdbs9LRpZNKNc6kzuK-XFPX8rUVKIzRAaNjKxSWXC6Zy4Kahu4qUYA/image[8].png&quot; rel=&quot;WLPP&quot;&gt;&lt;img style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px&quot; title=&quot;image&quot; border=&quot;0&quot; alt=&quot;image&quot; src=&quot;https://o1qpag.blu.livefilestore.com/y1mAi6vTPVPyDl2ANA4B5J0cqRsPqEToUh0WnLvw1kw1Ax2CVXtCEptA2T1WzPkiALe70aGsXJgRIGd_-3ZiqR29RDKa_wDKByBliyUWRXYB0eBcSLGMtls5K4UQRyxXLbOaxJbbA124Y6CxVXDad2DLw/image_thumb[4] 3A8C5B85.png&quot; width=&quot;505&quot; height=&quot;309&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The WFM_FROM attribute can now be programmatically set and will be set on the message level automatically.&lt;/p&gt;  &lt;p&gt;For example:    &lt;br /&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;wf_engine.setitemattrtext(itemtype =&amp;gt; itemtype        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,itemkey&amp;#160; =&amp;gt; itemkey         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,aname&amp;#160;&amp;#160;&amp;#160; =&amp;gt; ‘WFM_FROM&#39;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ,avalue&amp;#160;&amp;#160; =&amp;gt; &lt;/em&gt;&lt;a href=&quot;mailto:&amp;lsquo;robert.jungerius@gmail.com&amp;rsquo;&quot;&gt;&lt;em&gt;‘robert.jungerius@gmail.com’&lt;/em&gt;&lt;/a&gt;&lt;em&gt;);&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;  </content><link rel='replies' type='application/atom+xml' href='http://robertjungerius.blogspot.com/feeds/629254555546265070/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1671258754727628685/629254555546265070' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/629254555546265070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/629254555546265070'/><link rel='alternate' type='text/html' href='http://robertjungerius.blogspot.com/2009/10/oracle-workflow-special-notification_14.html' title='Oracle Workflow Special Notification Mailer Attributes'/><author><name>Robert</name><uri>http://www.blogger.com/profile/08644116810054072551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_vMD4wTf0c20/TE2bwIiu3VI/AAAAAAAAO1E/O1bb3NsVU0Q/S220/kraftwerk+eletric+cafe+anim_3.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1671258754727628685.post-964068516421785078</id><published>2009-10-14T11:25:00.001+02:00</published><updated>2009-10-14T11:25:36.294+02:00</updated><title type='text'>Oracle Workflow scripts, removing a complete item type definition</title><content type='html'>&lt;p&gt;From within Workflow Builder you can save new workflow item types, but removing a complete workflow definition is not in there.&lt;/p&gt;  &lt;p&gt;Oracle provides some scripts to perform this task for you, deleting an item type for example:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Wfrmitt.sql&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Use wfrmitt.sql to delete all data in all Oracle Workflow design time and runtime tables for a particular item type. This script prompts you for an item type from a list of valid item types.&lt;/p&gt;  &lt;p&gt;Use the script as follows: &lt;/p&gt;  &lt;pre&gt;&lt;tt&gt;sqlplus &amp;lt;apps &lt;i&gt;user/apps pwd&lt;/i&gt;&amp;gt; @$FND_TOP/sql/wfrmitt&lt;/tt&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;strong&gt;Warning: &lt;/strong&gt;This script deletes &lt;b&gt;ALL&lt;/b&gt; workflow data for a specified item type.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&amp;#160; &lt;br /&gt;See this link for all workflow scripts:&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;a title=&quot;http://download.oracle.com/docs/cd/B14099_19/integrate.1012/b12160/admsql.htm&quot; href=&quot;http://download.oracle.com/docs/cd/B14099_19/integrate.1012/b12160/admsql.htm&quot;&gt;http://download.oracle.com/docs/cd/B14099_19/integrate.1012/b12160/admsql.htm&lt;/a&gt;&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://robertjungerius.blogspot.com/feeds/964068516421785078/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1671258754727628685/964068516421785078' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/964068516421785078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/964068516421785078'/><link rel='alternate' type='text/html' href='http://robertjungerius.blogspot.com/2009/10/oracle-workflow-scripts-removing.html' title='Oracle Workflow scripts, removing a complete item type definition'/><author><name>Robert</name><uri>http://www.blogger.com/profile/08644116810054072551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_vMD4wTf0c20/TE2bwIiu3VI/AAAAAAAAO1E/O1bb3NsVU0Q/S220/kraftwerk+eletric+cafe+anim_3.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1671258754727628685.post-8161066800876416713</id><published>2009-10-14T11:14:00.001+02:00</published><updated>2009-10-14T11:14:01.752+02:00</updated><title type='text'>Forms Personalizations: Enabling LOV validation on vendor and vendor location in the Requisitions entry form</title><content type='html'>&lt;p&gt;Requirement is to set the (suggested) vendor and (suggested) vendor location as required and to also make them LOV validated so you cannot enter non-existing vendors.&lt;/p&gt;  &lt;p&gt;Settings form items to required is an easy task, it can be done by a Forms personalization.    &lt;br /&gt;Settings form items LOV validated is unfortunately only possible from the CUSTOM.pll.     &lt;br /&gt;    &lt;br /&gt;As these settings have to be controlled per entity and we don’t want to edit the custom.pll everytime a new entity is added we solved it like this…&lt;/p&gt;  &lt;p&gt;In CUSTOM.pll we added a custom event name, so we can call this one from within Forms Personalizations:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;procedure event(event_name varchar2) is        &lt;br /&gt;….         &lt;br /&gt;IF event_name=&#39;XX_POXRQERQ_SUPPL_LOV_VAL&#39; THEN         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; set_item_property(&#39;LINES.SUGGESTED_VENDOR_NAME&#39;,LOV_VALIDATION,PROPERTY_TRUE);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; set_item_property(&#39;LINES.SUGGESTED_VENDOR_LOCATION&#39;,LOV_VALIDATION,PROPERTY_TRUE);         &lt;br /&gt;END IF;         &lt;br /&gt;….         &lt;br /&gt;end event;&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Now in the Forms Personalizations we can easily meet the requirements (per entity, per responsibility or whatever) as follows:&lt;/p&gt;  &lt;p&gt;1. First set the lines.suggested_vendor_name and lines.suggested_vendor_location to required as follows&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZpxuugGRfNsSJNdMNmYLVgGlxd52txr3IJh47Pvd1mQX5bzHLF5uOLlIWzcjhyphenhyphenriZ5RhCZXENaDT03vihXBpO1IlMGhbpmMEyy29cVTCdcWoHyXaIqxgMHWHQKm-KAShzVaK5eLpuP4E/s1600-h/image%5B5%5D.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;201&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRshmXH0PR5HXAAc9AF-r-q5mps1rl-QNxJhBblPkJYkmu0Vzr7cVKCp0mGfy0eWUwWhgxWaS2bp1NXK05_j4xTlXnYVjFihkvLvumeKi2K0DTHsP8aon3vcM0MpDNkbMsXlW9blxSf68//?imgmax=800&quot; width=&quot;646&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;2. Call the custom event name we defined in the CUSTOM.pll&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNe7XcsdvTwM6nXLFJ8-7PIRgYZlR8hjONDIfz7ZAciiPUwy8p6k2fROW3qRvb4AvdvCF13ZuvTq0ycLmwKeUwZFBDcAbjEdBIpE2HGNN2sXitM15kYmQFZiUWtzqw8i6Lpz5V0e0eQm4/s1600-h/image%5B11%5D.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;187&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjXeUpbPfaROg6nyXR7im4pdHhmsabWWT_yFJ9BSFfrQ6G8GoHSoLpVRKxigQGS2mgcMug53IwxxksvG3X4mf_jzGhhNAs8RJe4__wLRsc_FkAHLRggt9JoI_iAc90mBw7J4mDor8H2xqI//?imgmax=800&quot; width=&quot;649&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;This last step will set the LOV_VALIDATION property to TRUE on vendor and vendor location.    &lt;br /&gt;Solving it this way we are flexible as we can call this custom event from any personalization and we don’t have to edit the CUSTOM.pll anymore.&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://robertjungerius.blogspot.com/feeds/8161066800876416713/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1671258754727628685/8161066800876416713' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/8161066800876416713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/8161066800876416713'/><link rel='alternate' type='text/html' href='http://robertjungerius.blogspot.com/2009/10/forms-personalizations-enabling-lov.html' title='Forms Personalizations: Enabling LOV validation on vendor and vendor location in the Requisitions entry form'/><author><name>Robert</name><uri>http://www.blogger.com/profile/08644116810054072551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_vMD4wTf0c20/TE2bwIiu3VI/AAAAAAAAO1E/O1bb3NsVU0Q/S220/kraftwerk+eletric+cafe+anim_3.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRshmXH0PR5HXAAc9AF-r-q5mps1rl-QNxJhBblPkJYkmu0Vzr7cVKCp0mGfy0eWUwWhgxWaS2bp1NXK05_j4xTlXnYVjFihkvLvumeKi2K0DTHsP8aon3vcM0MpDNkbMsXlW9blxSf68/s72-c/?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1671258754727628685.post-2354903099951032897</id><published>2009-10-14T10:53:00.001+02:00</published><updated>2009-10-14T10:53:29.038+02:00</updated><title type='text'>Forms Personalizations: Set vendor LOV in Requisitions form to only display vendors in current OU</title><content type='html'>&lt;p&gt;Requirement is to make the LOV on vendor in the Requisitions entry form to only display vendors that have at least 1 vendor site in the current operating unit.&lt;/p&gt;  &lt;p&gt;This can be easily solved with Forms Personalizations as follows:&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCjHNqxtKINK3Ts-xx83qPMfbDbbnRvaxyGM9vECMbBAn_-1FWnv7nH7eChGLkmvN2MxpIMsKI_QudDjEruy8A8FloON68UmIc7EVz6vLEPokt8_kGRCyg4J82cdvY_iROkil2Nfuv3Ms/s1600-h/image10.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;236&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqe54nS3x_iHQbnYWrKsEnA1Y9bkrBy1yzPGMsyr3tKTHzk41j5VOTc_-pQK1e6kw9RPgs5qWJHl7jJJYsoZyDHSFGBsA9prvem2_NcoZiGE68sXwZECJhcEo7fx5QlBbhyWH91VsPWZA//?imgmax=800&quot; width=&quot;736&quot; border=&quot;0&quot; /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Note: the condition displays some custom code i cannot display because of copyright, but it basically is a custom function that takes the fnd_profile.value(‘ORG_ID’) and returns the operating unit name/country name, so we can control on which operating unit this personalization will fire.&lt;/p&gt;  &lt;p&gt;In the actions tab the following actions have to be performed:&lt;/p&gt;  &lt;p&gt;1. Create a new custom record group that will replace the current record group behind the vendor LOV&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_uH4qyqlkRIZ_dP1qlGj9czfh13NNbGKjon8zag-6jgldYuLE9lO7boIlJHIRY5DVecLdM0L5Tlh-4yPpg7ldsqW8zkP5DQRosN43wgfnBWvsOhhZ1g9dvaq9q4CFYJ6-mbW6UL-YFqo/s1600-h/image9.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;216&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTZ_t8AVDmws90Zazzz5WBKLJpz1cVEgs2c6pwcmqw0-4KnORIHdqjAHYfdG3RIyd3BV3yMpyMnV2t2I_voo5r1oqTDPTZYX5dnms7iBYTel3VC52ZX_61RoxbJlEv8YeBPNCKXn7H2lU//?imgmax=800&quot; width=&quot;742&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;SQL statement is as follows:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;select pv.vendor_name,        &lt;br /&gt;pv.segment1 ,         &lt;br /&gt;decode (hold_status, &#39;Y&#39;, &#39;*&#39;, &#39;&#39;) on_hold,         &lt;br /&gt;pv.num_1099 taxpayer_id,         &lt;br /&gt;pv.vat_registration_num tax_registration_num,         &lt;br /&gt;pv.vendor_id         &lt;br /&gt;from po_suppliers_val_v pv,&amp;#160; &lt;br /&gt;po_vendor_sites pvs         &lt;br /&gt;where pv.vendor_id = pvs.vendor_id         &lt;br /&gt;and (pvs.INACTIVE_DATE is null         &lt;br /&gt;or         &lt;br /&gt;pvs.INACTIVE_DATE &amp;gt; sysdate)         &lt;br /&gt;group by (pv.vendor_name, pv.segment1, hold_status, pv.num_1099,pv.vat_registration_num,pv.vendor_id)         &lt;br /&gt;order by upper(vendor_name)&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;So this SQL will make sure that only vendors with a join to a vendor site in the current operating unit (po_vendor_sites is an org-enabled view) will pop up.&lt;/p&gt;  &lt;p&gt;2. Attach the newly created record group as a LOV to the supplier&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj190dDeKoPnK74lL8b7p7jtmk4pFtUUr5nn53gdTunEpmELcTbuAfLRRQdVanx5TzNTYGo-V4R-ncf9jzeBxNyNr6xelyud_pBIxrFbdAbkon3f9w3lDR3F3d9uc48HZP9_iClwiRO36U/s1600-h/image%5B7%5D.png&quot;&gt;&lt;img title=&quot;image&quot; style=&quot;border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px&quot; height=&quot;240&quot; alt=&quot;image&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiB8p-EfV6xT_jCdKUeXNF4urd_qVlqdpNE6I-vpFc3HCAnOuxlNSOhu_XXyuY8PzYkR_BznpAAVs5R_bIOpFQehsBuwESGIKmhOUqsJRz8KwbBk0bsnbtZFIobSn3q9G_brDagX6xfRpY//?imgmax=800&quot; width=&quot;753&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://robertjungerius.blogspot.com/feeds/2354903099951032897/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1671258754727628685/2354903099951032897' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/2354903099951032897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/2354903099951032897'/><link rel='alternate' type='text/html' href='http://robertjungerius.blogspot.com/2009/10/forms-personalizations-set-vendor-lov.html' title='Forms Personalizations: Set vendor LOV in Requisitions form to only display vendors in current OU'/><author><name>Robert</name><uri>http://www.blogger.com/profile/08644116810054072551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_vMD4wTf0c20/TE2bwIiu3VI/AAAAAAAAO1E/O1bb3NsVU0Q/S220/kraftwerk+eletric+cafe+anim_3.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqe54nS3x_iHQbnYWrKsEnA1Y9bkrBy1yzPGMsyr3tKTHzk41j5VOTc_-pQK1e6kw9RPgs5qWJHl7jJJYsoZyDHSFGBsA9prvem2_NcoZiGE68sXwZECJhcEo7fx5QlBbhyWH91VsPWZA/s72-c/?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1671258754727628685.post-3687155963488248601</id><published>2009-10-14T09:03:00.002+02:00</published><updated>2009-11-04T19:26:11.046+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="OAF"/><title type='text'>OAF: Setting initial focus on an input field</title><content type='html'>&lt;p&gt;Nothing more annoying in web entry forms if the cursor is not blinking in the first enterable input field upon first load. And yet i see that a lot in web forms.   &lt;br /&gt;  &lt;br /&gt;In OAF it is easy to set the focus to the first input field so the user can start typing and does not need the mouse.    &lt;br /&gt;  &lt;br /&gt;Add the following to processRequest:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;public void processRequest(OAPageContext pageContext, OAWebBean webBean)       &lt;br /&gt;{        &lt;br /&gt;  super.processRequest(pageContext, webBean); &lt;br /&gt; &lt;span style=&quot;color:#ff0000;&quot;&gt; // Set focus on the first search item segment1         &lt;br /&gt;  OABodyBean oabean = (OABodyBean)pageContext.getRootWebBean();          &lt;br /&gt;  oabean.setInitialFocusId(&quot;Segment1&quot;);&lt;/span&gt;        &lt;br /&gt;}&lt;/em&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Don’t forget to add the import of OABodyBean:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;import oracle.apps.fnd.framework.webui.beans.OABodyBean;&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://robertjungerius.blogspot.com/feeds/3687155963488248601/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1671258754727628685/3687155963488248601' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/3687155963488248601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/3687155963488248601'/><link rel='alternate' type='text/html' href='http://robertjungerius.blogspot.com/2009/10/oaf-setting-initial-focus-on-input.html' title='OAF: Setting initial focus on an input field'/><author><name>Robert</name><uri>http://www.blogger.com/profile/08644116810054072551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_vMD4wTf0c20/TE2bwIiu3VI/AAAAAAAAO1E/O1bb3NsVU0Q/S220/kraftwerk+eletric+cafe+anim_3.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1671258754727628685.post-1394994036089432797</id><published>2009-10-13T14:18:00.003+02:00</published><updated>2009-10-13T14:24:27.604+02:00</updated><title type='text'>Recreating a tablespace, totally forgot… DBMS_METADATA to the rescue</title><content type='html'>&lt;p&gt;After many years of only developing in oracle i totally forgot the sql statement to (re)create a tablespace.    &lt;br /&gt;This week i was asked to install a new version of APRO on our 11.5.10.2 environment and it basically was as simple as creating two tablespaces and running 2 sql scripts.     &lt;br /&gt;But the first part already blocked me, because i did not know the statement by head and i also wanted to create the tablespaces the same way as the previous version of APRO. I don’t use TOAD anymore so also have no easy way to get a DDL script from an existing tablespace.     &lt;br /&gt;    &lt;br /&gt;It actually proved to be quite easy to get a DDL script from any object you want:     &lt;br /&gt;TABLESPACES: &lt;strong&gt;select dbms_metadata.get_ddl(‘TABLESPACE’, ‘&amp;lt;tablespace_name&amp;gt;’) from dual;      &lt;br /&gt;&lt;/strong&gt;USERS: &lt;strong&gt;select dbms_metadata.get_ddl(&#39;USER&#39;,&#39;XXABET&#39;) FROM dual;      &lt;/strong&gt;&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://robertjungerius.blogspot.com/feeds/1394994036089432797/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1671258754727628685/1394994036089432797' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/1394994036089432797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/1394994036089432797'/><link rel='alternate' type='text/html' href='http://robertjungerius.blogspot.com/2009/10/recreating-tablespace-totally-forgot.html' title='Recreating a tablespace, totally forgot… DBMS_METADATA to the rescue'/><author><name>Robert</name><uri>http://www.blogger.com/profile/08644116810054072551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_vMD4wTf0c20/TE2bwIiu3VI/AAAAAAAAO1E/O1bb3NsVU0Q/S220/kraftwerk+eletric+cafe+anim_3.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1671258754727628685.post-2332741116558041473</id><published>2009-10-13T14:18:00.001+02:00</published><updated>2009-10-13T14:21:47.104+02:00</updated><title type='text'>31-12-4712, end of life as we know it</title><content type='html'>&lt;p&gt;When dealing with Oracle HRMS development you are inevitably going to hit the date-track tables/views.    &lt;br /&gt;I have built and also seen a lot of views with the &lt;strong&gt;to_date(‘31-12-4712’,’DD-MM-RRRR’)&lt;/strong&gt; coding and in a lot of situations also the&lt;strong&gt; to_date(‘31-DEC-4712’,’DD-MON-RRRR’)&lt;/strong&gt; which will surely get you into trouble in an NLS environment.&lt;/p&gt;  &lt;p&gt;But finally found a better and cleaner solution to code your where clauses:    &lt;br /&gt;&lt;strong&gt;select hr_general.start_of_time, hr_general.end_of_time from dual;      &lt;br /&gt;&lt;/strong&gt;    &lt;br /&gt;These function calls return the standard start and end of time in HRMS as DATE’s.&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://robertjungerius.blogspot.com/feeds/2332741116558041473/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1671258754727628685/2332741116558041473' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/2332741116558041473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/2332741116558041473'/><link rel='alternate' type='text/html' href='http://robertjungerius.blogspot.com/2009/10/31-12-4712-end-of-life-as-we-know-it.html' title='31-12-4712, end of life as we know it'/><author><name>Robert</name><uri>http://www.blogger.com/profile/08644116810054072551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_vMD4wTf0c20/TE2bwIiu3VI/AAAAAAAAO1E/O1bb3NsVU0Q/S220/kraftwerk+eletric+cafe+anim_3.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1671258754727628685.post-3887801169905575920</id><published>2009-06-01T21:20:00.000+02:00</published><updated>2009-10-13T21:21:02.277+02:00</updated><title type='text'>BI-expert van Mei 2009 (sorry, only in dutch)</title><content type='html'>&lt;div&gt;&lt;a href=&quot;http://www.scamander.com/&quot; target=&quot;_blank&quot;&gt;Scamander &lt;/a&gt;was the company that awarded me this precious title: BI Expert of the month.&lt;/div&gt;  &lt;div&gt;It is only in dutch, but do take a look.... &lt;a href=&quot;http://www.bi-expert.nl/index.php?option=com_content&amp;amp;view=article&amp;amp;id=51&amp;amp;Itemid=3&quot; target=&quot;_blank&quot;&gt;BI-expert van Mei 2009&lt;/a&gt;&lt;/div&gt;  &lt;div&gt;&amp;#160;&lt;/div&gt;  &lt;div&gt;&lt;a href=&quot;https://o1qpag.blu.livefilestore.com/y1mdXFHVsBxK7jHiOkx-LA9CaMB6MXm_er1ZCyB2-mpEa8c59RRk8AiHVH3lupAMgRNJuz-fPznCgydOPLxeUzTG00ukwjsWO13zRUsa1xnPzfQ3JNbiNtHuKxKd4K6ECwtKjUNfleWTQkxlErqD0J-lQ/logobiexpert.jpg&quot; rel=&quot;WLPP;url=https://o1qpag.blu.livefilestore.com/y1mdXFHVsBxK7jHiOkx-LA9CaMB6MXm_er1ZCyB2-mpEa8c59RRk8AiHVH3lupAMgRNJuz-fPznCgydOPLxeUzTG00ukwjsWO13zRUsa1xnPzfQ3JNbiNtHuKxKd4K6ECwtKjUNfleWTQkxlErqD0J-lQ/logobiexpert.jpg&quot; target=&quot;_blank&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://o1qpag.blu.livefilestore.com/y1mdXFHVsBxK7jHiOkx-LA9CaMB6MXm_er1ZCyB2-mpEa8c59RRk8AiHVH3lupAMgRNJuz-fPznCgydOPLxeUzTG00ukwjsWO13zRUsa1xnPzfQ3JNbiNtHuKxKd4K6ECwtKjUNfleWTQkxlErqD0J-lQ/logobiexpert.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;  </content><link rel='replies' type='application/atom+xml' href='http://robertjungerius.blogspot.com/feeds/3887801169905575920/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1671258754727628685/3887801169905575920' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/3887801169905575920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/3887801169905575920'/><link rel='alternate' type='text/html' href='http://robertjungerius.blogspot.com/2009/06/bi-expert-van-mei-2009-sorry-only-in.html' title='BI-expert van Mei 2009 (sorry, only in dutch)'/><author><name>Robert</name><uri>http://www.blogger.com/profile/08644116810054072551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_vMD4wTf0c20/TE2bwIiu3VI/AAAAAAAAO1E/O1bb3NsVU0Q/S220/kraftwerk+eletric+cafe+anim_3.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1671258754727628685.post-1322781161984677971</id><published>2008-09-01T21:26:00.004+02:00</published><updated>2008-09-01T21:35:04.970+02:00</updated><title type='text'>ORA-39700 after RDBMS upgrade</title><content type='html'>Just upgraded my Oracle 10g EE database 10.2.0.1.0 to 10.2.0.2.0 as this is a prereq if you want to install SOA Suite.&lt;br /&gt;Running the upgrade process went very smooth, but when trying to open the database i ran into the following error:&lt;br /&gt;---------------------------------&lt;br /&gt;Errors in file /app/oracle/product/10.2.0/db/admin/orcl/udump/orcl_ora_8351.trc:&lt;br /&gt;ORA-00704: bootstrap process failure&lt;br /&gt;ORA-39700: database must be opened with UPGRADE option&lt;br /&gt;Mon Sep 1 19:53:32 2008&lt;br /&gt;Error 704 happened during db open, shutting down database&lt;br /&gt;USER: terminating instance due to error 704&lt;br /&gt;----------------------------------&lt;br /&gt;&lt;br /&gt;Hmmm, as i am still preparing for my 10g OCA certification i did not encounter this error before.&lt;br /&gt;But the solution is off course very simple and reading the README would have been a great idea too ;-)&lt;br /&gt;1. sqlplus / as sysdba&lt;br /&gt;2. startup upgrade&lt;br /&gt;3. @$ORACLE_HOME/rdbms/admin/catupgrd.sql&lt;br /&gt;4. shutdown immediate&lt;br /&gt;5. startup&lt;br /&gt;&lt;br /&gt;This can run for quite some time (at least it is for me, but mine is running inside a Virtualbox VM)&lt;br /&gt;&lt;br /&gt;Let&#39;s continue with the SOA Suite and see if this one is willing to install...</content><link rel='replies' type='application/atom+xml' href='http://robertjungerius.blogspot.com/feeds/1322781161984677971/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/1671258754727628685/1322781161984677971' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/1322781161984677971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1671258754727628685/posts/default/1322781161984677971'/><link rel='alternate' type='text/html' href='http://robertjungerius.blogspot.com/2008/09/ora-39700-after-rdbms-upgrade.html' title='ORA-39700 after RDBMS upgrade'/><author><name>Robert</name><uri>http://www.blogger.com/profile/08644116810054072551</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/_vMD4wTf0c20/TE2bwIiu3VI/AAAAAAAAO1E/O1bb3NsVU0Q/S220/kraftwerk+eletric+cafe+anim_3.gif'/></author><thr:total>0</thr:total></entry></feed>