<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5406107793530126650</id><updated>2012-01-27T21:49:56.368-08:00</updated><category term='OAF BI Publisher'/><category term='xdo.cfg'/><category term='Reports6i to BIP Conversion Utilities'/><category term='xdodelivery.cfg'/><category term='XLIFF'/><category term='Web Services'/><category term='PL/SQL'/><category term='Lexicals'/><category term='BI Publisher ToolBox'/><category term='Format Templates'/><category term='XDO Protocol'/><category term='PDFDocMerger'/><category term='Charts'/><category term='Bursting'/><category term='BIPublisherIDE'/><category term='Data Templates'/><category term='Template Builder versions'/><category term='BIP Conversion'/><category term='XDO Loader'/><category term='xdodebug.cfg'/><category term='Bursting Designer'/><category term='Downloads'/><category term='Font Setup'/><category term='XDO Uri'/><category term='Logo'/><title type='text'>BI Publisher Blog</title><subtitle type='html'>Your one stop shop for tips &amp;amp; tricks!</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://bipublisher.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://bipublisher.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Ike Wiggins</name><uri>http://www.blogger.com/profile/03629933955296401382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_tbV38YrrIv4/RxgXvw8IBwI/AAAAAAAAAAw/lgP6jbAaB2M/s320/ike.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>44</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5406107793530126650.post-7028177910585399004</id><published>2012-01-21T06:37:00.000-08:00</published><updated>2012-01-21T06:37:04.621-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Downloads'/><category scheme='http://www.blogger.com/atom/ns#' term='BI Publisher ToolBox'/><title type='text'>BI Publisher Blog News</title><content type='html'>&lt;b&gt; Source Code Link Changes&lt;/b&gt;&lt;br /&gt;I wanted to give everyone who views this blog a heads-up that some of the links to my source code and home grown apps will be changing in the next couple of months to a new server.  My apple mobile me account is being transitioned and I will no longer have server space so I have to do it :-)&amp;nbsp;  In the event a link is dead, do me a solid and send me an e-mail or post a comment that it's dead!&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt; BI Publisher Toolbox Updates&lt;/b&gt;&lt;br /&gt;In dec 2010, I stated I would be releasing a standalone version of the toolbox for windows.&amp;nbsp; This will be rolled into the link change and I wanted to apologize for the long delay.&amp;nbsp; Also, going forward if you have any suggestions or improvements for the tool please let me know!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5406107793530126650-7028177910585399004?l=bipublisher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bipublisher.blogspot.com/feeds/7028177910585399004/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5406107793530126650&amp;postID=7028177910585399004' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/7028177910585399004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/7028177910585399004'/><link rel='alternate' type='text/html' href='http://bipublisher.blogspot.com/2012/01/bi-publisher-blog-news.html' title='BI Publisher Blog News'/><author><name>Ike Wiggins</name><uri>http://www.blogger.com/profile/03629933955296401382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_tbV38YrrIv4/RxgXvw8IBwI/AAAAAAAAAAw/lgP6jbAaB2M/s320/ike.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5406107793530126650.post-650552338322025531</id><published>2010-04-23T20:45:00.000-07:00</published><updated>2010-04-23T20:45:00.582-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Bursting Designer'/><category scheme='http://www.blogger.com/atom/ns#' term='BI Publisher ToolBox'/><title type='text'>BI Publisher Toolbox 4.5</title><content type='html'>&lt;span style="font-weight: bold;font-size:130%;" &gt;BI Publisher Toolbox    Development Suite Fixes Part III&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Last series of updates!!!&lt;br /&gt;&lt;br /&gt;A new  version of the BI Publisher  Toolbox has been released.  The following  things are fixed in version 4.5&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Bursting Designer randomly crashes when bursting&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;There are several reasons why the Bursting Designer crashes.  It mainly has to do with incorrect or blank data.  So, I've coded so more validation to catch these problems before a control file is run.  You will still be able to enter invalid file paths (just not in the bursting designer).   The following error messages will be displayed if you have incorrectly keyed data in your control file:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Document output type cannot be null.  See deliveries:  [ something]&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Document key cannot be null.  See deliveries:  [ something]&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Document Delivery Id must be assigned!&lt;/li&gt;&lt;li&gt;Template type must be populated!&lt;/li&gt;&lt;li&gt;Template Location file-path is invalid&lt;/li&gt;&lt;/ol&gt;If the Bursting Designer still crashes please let me know and I'll fix it.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Download&lt;/span&gt;&lt;br /&gt;The BI Publisher  Toolbox  can be downloaded &lt;a href="http://web.me.com/beth.wiggins/ike/bipublisher/BIPublisherToolBoxDist/launch.html"&gt;here&lt;/a&gt;.    I'm still working on the standalone version of the application.    Should be available for download in the next couple of days.  I'll    update the blog when it's out there!&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;http: com=""&gt;&lt;/http:&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5406107793530126650-650552338322025531?l=bipublisher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bipublisher.blogspot.com/feeds/650552338322025531/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5406107793530126650&amp;postID=650552338322025531' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/650552338322025531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/650552338322025531'/><link rel='alternate' type='text/html' href='http://bipublisher.blogspot.com/2010/04/bi-publisher-toolbox-45.html' title='BI Publisher Toolbox 4.5'/><author><name>Ike Wiggins</name><uri>http://www.blogger.com/profile/03629933955296401382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_tbV38YrrIv4/RxgXvw8IBwI/AAAAAAAAAAw/lgP6jbAaB2M/s320/ike.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5406107793530126650.post-5364143238968537778</id><published>2010-04-22T17:16:00.001-07:00</published><updated>2010-04-22T17:32:31.025-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Bursting Designer'/><category scheme='http://www.blogger.com/atom/ns#' term='BI Publisher ToolBox'/><title type='text'>BI Publisher Toolbox 4.2.3</title><content type='html'>&lt;span style="font-weight: bold;font-size:130%;" &gt;BI Publisher Toolbox   Development Suite Fixes Part II&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Once, again....&lt;br /&gt;A new version of the BI Publisher  Toolbox has been released.  The following things are fixed:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; BI Publisher Toolbox fail to email reports when running burst control files&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Bursting Designer fails to e-mail reports, there are no errors&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Delivery Designer does nothing when the run button is pushed for email&lt;/li&gt;&lt;/ul&gt;The reason the output files were not being emailed is simple.  The javamail-1.4.3.zip is required to make this functionality work.  If you don't have these jar files you should see the following error message: &lt;span style="font-weight: bold;"&gt;Unable to locate provider for protocol: smtp&lt;/span&gt;.  Below is some sample output from the delivery designer....Also, that's how I was  able to fix this issue. The Delivery Designer is a great utility for bursting troubleshooting....&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Known Issues&lt;/span&gt;&lt;br /&gt;There is still an outstanding issue with the Bursting Designer crashing.  This is caused by a space or an invalid location to a format template.  Be sure to verify the template location is valid.  I should have another patch out this week for this issue.&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Download&lt;/span&gt;&lt;br /&gt;The BI Publisher  Toolbox can be downloaded &lt;a href="http://web.me.com/beth.wiggins/ike/bipublisher/BIPublisherToolBoxDist/launch.html"&gt;here&lt;/a&gt;.   I'm still working on the standalone version of the application.   Should be available for download in the next couple of days.  I'll   update the blog when it's out there!&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Sample output from the Delivery Designer&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;[042210_050359941][][STATEMENT] XDO_CFG Location:  null&lt;br /&gt;[042210_050359941][oracle.apps.xdo.delivery.smtp.SMTPDeliveryRequest][STATEMENT] submit(DeliveryResponseListener): Called&lt;br /&gt;[042210_050359941][oracle.apps.xdo.delivery.smtp.SMTPDeliveryRequest][STATEMENT] submit(DeliveryResponseListener): Starting status checking thread.&lt;br /&gt;[042210_050400004][oracle.apps.xdo.delivery.AbstractDeliveryRequest$RequestChecker][STATEMENT] Constructor called. [Check interval : 10000 ms][Timeout : 86400000 ms][Retry : 0][Retry interval : 60000]&lt;br /&gt;[042210_050400020][oracle.apps.xdo.delivery.AbstractDeliveryRequest$RequestChecker][STATEMENT] run(): Called. Start the request checking thread for request id #1&lt;br /&gt;[042210_050400020][oracle.apps.xdo.delivery.AbstractDeliveryRequest$RequestChecker][STATEMENT] run(): Begin retry loop : 0&lt;br /&gt;[042210_050400020][oracle.apps.xdo.delivery.AbstractDeliveryRequest$RequestChecker][STATEMENT] run(): Calling submit()&lt;br /&gt;[042210_050400020][oracle.apps.xdo.delivery.smtp.SMTPDeliveryRequest][STATEMENT] submit(): Called&lt;br /&gt;[042210_050400066][oracle.apps.xdo.delivery.smtp.SMTPDeliveryRequest][STATEMENT] setDefaultServerProperties(): No properties for the server '' were found.&lt;br /&gt;[042210_050400066][oracle.apps.xdo.delivery.smtp.SMTPDeliveryRequest][STATEMENT] setDefaultServerProperties(): properties defined in this request.&lt;br /&gt;----&lt;br /&gt;[PORT:Integer] [25]&lt;br /&gt;[SMTP_FROM:String] [Ike_Wiggins@starkey.com]&lt;br /&gt;[SMTP_CHARSET:String] [UTF-8]&lt;br /&gt;[SMTP_CHARACTER_ENCODING:String] [UTF-8]&lt;br /&gt;[SMTP_CONTENT_TYPE:String] [application/pdf]&lt;br /&gt;[ASYNC_TIMEOUT:Integer] [86400000]&lt;br /&gt;[SMTP_ENCODING:String] [B]&lt;br /&gt;[HOST:String] [mail.starkey.com &lt;http: com=""&gt; ]&lt;br /&gt;[RETRY:Integer] [0]&lt;br /&gt;[ASYNC_CHECK_INTERVAL:Integer] [10000]&lt;br /&gt;[SMTP_TO_RECIPIENTS:String] [Ike_Wiggins@starkey.com]&lt;br /&gt;[TEMP_FILE_SUFFIX:String] [.tmp]&lt;br /&gt;[BUFFERING_MODE:Boolean] [true]&lt;br /&gt;[SMTP_ATTACHMENT_FIRST:Boolean] [false]&lt;br /&gt;[SMTP_SUBJECT:String] [This is a converison test!]&lt;br /&gt;[TEMP_FILE_PREFIX:String] [dlvr]&lt;br /&gt;[RETRY_INTERVAL:Integer] [60000]&lt;br /&gt;----&lt;br /&gt;&lt;br /&gt;[042210_050400066][oracle.apps.xdo.delivery.smtp.SMTPDeliveryRequest][STATEMENT] submit(): BUFFERING_MODE is ON.&lt;br /&gt;[042210_050400066][oracle.apps.xdo.delivery.smtp.SMTPDeliveryRequest][STATEMENT] submit(): TEMP_DIR not found. Turn off the BUFFERING_MODE.&lt;br /&gt;[042210_050400066][oracle.apps.xdo.delivery.smtp.SMTPDeliveryRequest][STATEMENT] submit(): Start reading the document file. : C:\SALES.pdf&lt;br /&gt;[042210_050400066][oracle.apps.xdo.delivery.smtp.SMTPDeliveryRequest][STATEMENT] submit(): Calling DeliveryRequestHandler.submitRequest()&lt;br /&gt;[042210_050400066][oracle.apps.xdo.delivery.smtp.SMTPDeliveryRequestHandler][STATEMENT] submitRequest(): called&lt;br /&gt;[042210_050400113][oracle.apps.xdo.delivery.smtp.SMTPDeliveryRequestHandler][STATEMENT] submitRequest(): This request has never been submitted before.&lt;br /&gt;[042210_050400145][oracle.apps.xdo.delivery.smtp.Attachment][STATEMENT] addAttachment(): Adding an attachment ...[filename]=[null], [content-type]=[application/pdf], [index]=[0], [disposition]=[inline]&lt;br /&gt;[042210_050400145][oracle.apps.xdo.delivery.smtp.Attachment][STATEMENT] addAttachment(): Character set for MIME headers : UTF-8&lt;br /&gt;[042210_050400145][oracle.apps.xdo.delivery.smtp.Attachment][STATEMENT] addAttachment(): Character encoding for MIME headers : B&lt;br /&gt;[042210_050400145][oracle.apps.xdo.delivery.smtp.Attachment][STATEMENT] addAttachment(): Exiting addAttachment()&lt;br /&gt;[042210_050400160][oracle.apps.xdo.delivery.smtp.SMTPDeliveryRequestHandler][STATEMENT] submitRequest(): Character set for MIME headers : UTF-8&lt;br /&gt;[042210_050400160][oracle.apps.xdo.delivery.smtp.SMTPDeliveryRequestHandler][STATEMENT] submitRequest(): Character encoding for MIME headers : B&lt;br /&gt;[042210_050400176][oracle.apps.xdo.delivery.AbstractDeliveryRequest$RequestChecker][STATEMENT] run(): Calling Thread.sleep() before checking status : 10000&lt;br /&gt;[042210_050410176][oracle.apps.xdo.delivery.AbstractDeliveryRequest$RequestChecker][STATEMENT] run(): Checking request status. (10172 millisec passed since thread started.&lt;br /&gt;[042210_050410176][oracle.apps.xdo.delivery.AbstractDeliveryRequest$RequestChecker][STATEMENT] run(): Got request status. (Status id : 19)&lt;br /&gt;[042210_050410176][oracle.apps.xdo.delivery.AbstractDeliveryRequest$RequestChecker][STATEMENT] run(): Calling callback - DeliveryResponseListener.responseReceived()&lt;br /&gt;[042210_050410176][][STATEMENT] Request done!&lt;br /&gt;[042210_050410176][][STATEMENT] Request status id : 19&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;[042210_050410176][][STATEMENT] Request status msg: Unable to locate provider for protocol: smtp&lt;/span&gt;&lt;br /&gt;[042210_050410176][][STATEMENT] Request body: null&lt;/http:&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5406107793530126650-5364143238968537778?l=bipublisher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bipublisher.blogspot.com/feeds/5364143238968537778/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5406107793530126650&amp;postID=5364143238968537778' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/5364143238968537778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/5364143238968537778'/><link rel='alternate' type='text/html' href='http://bipublisher.blogspot.com/2010/04/bi-publisher-toolbox-423.html' title='BI Publisher Toolbox 4.2.3'/><author><name>Ike Wiggins</name><uri>http://www.blogger.com/profile/03629933955296401382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_tbV38YrrIv4/RxgXvw8IBwI/AAAAAAAAAAw/lgP6jbAaB2M/s320/ike.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5406107793530126650.post-3828688887793326265</id><published>2010-04-20T19:33:00.000-07:00</published><updated>2010-04-20T19:42:09.089-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BI Publisher ToolBox'/><title type='text'>BI Publisher Toolbox 4.2.1</title><content type='html'>&lt;span style="font-weight: bold;font-size:130%;" &gt;BI Publisher Toolbox  Development Suite&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A new version of the BI Publisher Toolbox has been released.  The following things are fixed:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Toolbox configuration fails to save or load&lt;/li&gt;&lt;li&gt;Adhoc PL/SQL attempts to execute when the field is blank or null&lt;/li&gt;&lt;li&gt;Parameters dialog doesn't open when you click on the button in cell and error is displayed&lt;/li&gt;&lt;li&gt;Data Template fails to execute and errors out&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;The BI Publisher Toolbox can be downloaded &lt;a href="http://web.me.com/beth.wiggins/ike/bipublisher/BIPublisherToolBoxDist/launch.html"&gt;here&lt;/a&gt;.  On a side-note, there will be standalone version of the application that will be available for download in the next couple of days.  I'll update this post when it's available.&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5406107793530126650-3828688887793326265?l=bipublisher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bipublisher.blogspot.com/feeds/3828688887793326265/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5406107793530126650&amp;postID=3828688887793326265' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/3828688887793326265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/3828688887793326265'/><link rel='alternate' type='text/html' href='http://bipublisher.blogspot.com/2010/04/bi-publisher-toolbox-421.html' title='BI Publisher Toolbox 4.2.1'/><author><name>Ike Wiggins</name><uri>http://www.blogger.com/profile/03629933955296401382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_tbV38YrrIv4/RxgXvw8IBwI/AAAAAAAAAAw/lgP6jbAaB2M/s320/ike.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5406107793530126650.post-3694626905142795927</id><published>2010-02-22T19:05:00.000-08:00</published><updated>2011-06-15T10:23:52.369-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Bursting Designer'/><category scheme='http://www.blogger.com/atom/ns#' term='Reports6i to BIP Conversion Utilities'/><category scheme='http://www.blogger.com/atom/ns#' term='BI Publisher ToolBox'/><category scheme='http://www.blogger.com/atom/ns#' term='xdodelivery.cfg'/><title type='text'>BI Publisher:  BI Publisher Toolbox Development Suite</title><content type='html'>&lt;span style="font-size: 130%; font-weight: bold;"&gt;BI Publisher Toolbox Development Suite&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What’s new in the BI Publisher Toolbox&lt;/span&gt;&lt;br /&gt;The toolbox is back and packed with more features!  Every wanted to convert a report6i report, build a Burst control file or test the Delivery APIs? You now can do that with the Toolbox. Haven’t heard about the toolbox, click &lt;a href="http://www.oracle.com/technetwork/articles/wiggins-bipublisher-085427.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Besides, the new tools, the toolbox is also faster, easier to use and has a new look and feel.   Below is a list of the all the new features.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;New features and updates&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Performance&lt;/li&gt;&lt;li&gt;Cancel Long Running Tasks&lt;/li&gt;&lt;li&gt;Parameters&lt;/li&gt;&lt;li&gt;Global Properties&lt;/li&gt;&lt;li&gt;Ad Hoc PL/SQL&lt;/li&gt;&lt;li&gt;File Browser(s)&lt;/li&gt;&lt;li&gt;Connection Screens&lt;/li&gt;&lt;li&gt;XDO Protocol Support&lt;/li&gt;&lt;li&gt;Tools:&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;*Bursting Designer&lt;br /&gt;*Delivery Designer&lt;br /&gt;*Report&lt;/blockquote&gt;&lt;span style="font-weight: bold;"&gt;Installation&lt;/span&gt;&lt;br /&gt;&lt;a href="http://web.me.com/beth.wiggins/ike/bipublisher/BIPublisherToolBoxDist/launch.html"&gt;BI Publisher Toolbox&lt;/a&gt; - By clicking on the download link you will be redirected to a different site.  The standalone client is no longer supported and the toolbox is now a java webstart application.  Webstart applications allow for automatic updates and real-time fixes for developers.  Don’t worry though just because it’s a webstart application doesn’t mean the performance will lack luster; the jar files are automatically loaded and saved on your PC. It's recommended to bookmark this page and the download site.&lt;br /&gt;&lt;span style="font-size: 130%;"&gt;&lt;br /&gt;&lt;span style="font-size: 130%; font-weight: bold;"&gt;BI Publisher Toolbox 4.2&lt;/span&gt;&lt;span style="font-size: 180%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_tbV38YrrIv4/S3nATaoyydI/AAAAAAAAAHA/ybEOJmBnPFI/s1600-h/toolbox_main.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5438589464827054546" src="http://3.bp.blogspot.com/_tbV38YrrIv4/S3nATaoyydI/AAAAAAAAAHA/ybEOJmBnPFI/s400/toolbox_main.png" style="cursor: pointer; height: 302px; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Performance&lt;/span&gt;&lt;br /&gt;All of the performance issues in previous version of the toolbox have now been resolved. As an example, the previous version of the toolbox would perform poorly when clicking the execute button. That issue is now resolved and the performance is significantly better.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Long Running Tasks&lt;/span&gt;&lt;br /&gt;Sometimes when you miss a join in a query a data template can run forever. Now, when clicking the execute button there is an option now to kill long running tasks. In the previous version the only option was to kill the program through windows task manager, which is less than ideal.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Parameters&lt;/span&gt;&lt;br /&gt;One of the best improvements in the toolbox is the parameters screen. In the past, scrolling was required to enter parameters and it was a bit cumbersome (See Figure 1), now it's very intuitive. With one click of a button a parameters screen will popup (See Figure 2).&lt;br /&gt;&lt;br /&gt;Now, if you can't remember what parameters are in your Data Template the toolbox has you covered.  Click the look up button, the toolbox will automatically parse the Data Template and provide a list of available parameters to select.&lt;br /&gt;&lt;br /&gt;Also, there is no longer a limit on the number of parameters that can be entered!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_tbV38YrrIv4/S3nATnxGDvI/AAAAAAAAAHI/81OOXzjPtEE/s1600-h/Old+Toolbox.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5438589468351532786" src="http://4.bp.blogspot.com/_tbV38YrrIv4/S3nATnxGDvI/AAAAAAAAAHI/81OOXzjPtEE/s400/Old+Toolbox.jpg" style="cursor: pointer; height: 97px; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Figure 1 &lt;/span&gt;Old version of the parameters for the toolbox.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_tbV38YrrIv4/S3nAT29q18I/AAAAAAAAAHQ/BiO6sJYD0j0/s1600-h/toolbox_parameters.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5438589472430806978" src="http://1.bp.blogspot.com/_tbV38YrrIv4/S3nAT29q18I/AAAAAAAAAHQ/BiO6sJYD0j0/s400/toolbox_parameters.png" style="cursor: pointer; height: 400px; width: 384px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Figure 2 &lt;/span&gt;New parameters form with Data Template parameter lookup feature&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Global Properties&lt;/span&gt;&lt;br /&gt;All of the standard and non-standard features of the template manager are now available in the toolbox (See Figure 3). As an example if you wanted to set the system-temp-dir or password protect a pdf you now can!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_tbV38YrrIv4/S3nAUYbAyiI/AAAAAAAAAHY/Dc-Bs_xc85k/s1600-h/global+properties.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5438589481412250146" src="http://1.bp.blogspot.com/_tbV38YrrIv4/S3nAUYbAyiI/AAAAAAAAAHY/Dc-Bs_xc85k/s400/global+properties.png" style="cursor: pointer; height: 143px; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Figure 3 &lt;/span&gt;Global properties tab&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Ad Hoc PL/SQL&lt;/span&gt;&lt;br /&gt;Developer can stage data, initialize sessions, etc using the “Add Hoc PL/SQL” feature.  This feature will execute pl/sql statements before a Data Template executes. The purpose of the ad-hoc pl/sql is to limit hard-coding in your data template. In the E-business suite as example, most views are org secured views.  With very little effort a developer can use this new feature to execute apps_initialize before your data template queries are run.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_tbV38YrrIv4/S3nAU5JBRrI/AAAAAAAAAHg/PYh4Pl2JwJs/s1600-h/toolbox_adhoc_plsql.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5438589490195154610" src="http://4.bp.blogspot.com/_tbV38YrrIv4/S3nAU5JBRrI/AAAAAAAAAHg/PYh4Pl2JwJs/s400/toolbox_adhoc_plsql.png" style="cursor: pointer; height: 400px; width: 360px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Figure 4&lt;/span&gt; Ad Hoc PL/SQL  - Example of apps initialize&lt;br /&gt;&lt;br /&gt;File Browser for Data Templates, Format Templates and Burst Control Files&lt;br /&gt;A file browser has now been incorporated into several fields for locating Data Templates, Format Templates and Burst control files.  It’s not mandatory to use the new file browser and an absolute path to your files can be manually entered.  Also, Data Templates, Format Templates and output files can be in separate directories, which was a restriction in the first release of the toolbox.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;XDO Protocol Support&lt;/span&gt;&lt;br /&gt;The toolbox also supports the XDO Protocol. To use this new feature a DBC file must be assigned. Go to the Action menu and select “Set DBC File.” The DBC file will be preloaded the next time you open the Toolbox or the Bursting designer.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_tbV38YrrIv4/S3nCOmGb8DI/AAAAAAAAAHo/WVYcRzVy2d4/s1600-h/toolbox_xdo_protocol.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5438591581028085810" src="http://1.bp.blogspot.com/_tbV38YrrIv4/S3nCOmGb8DI/AAAAAAAAAHo/WVYcRzVy2d4/s400/toolbox_xdo_protocol.png" style="cursor: pointer; height: 88px; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;By setting the DBC file developers can run format templates that have import statements in them and prevents errors from occurring. This is something that the Template Builder in msword cannot currently do. As an example in your format template if your doing and import like this: import:xdo://ONT.ONTBSAERTF.en.00/ that should work in the toolbox.&lt;br /&gt;&lt;br /&gt;Not only is the XDO Protocol supported for import in format templates, its also supported in the toolbox itself. There is no longer a requirement to have a format template physically located on a PC. An XDO URL can be entered directly into the format template field. The toolbox will pull the format template from the database using the assigned DBC file.  For the URL don’t put getSource=true.   ie: xdo://ONT.ONTBSAERTF.en.00/?getSource=true&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Connection creation and removal&lt;/span&gt;&lt;br /&gt;The previous version of the toolbox was very difficult to update or remove connections and it usually required manually editing of the toolbox config. Going forward, the connection portion of the application has also been completely redone. Creating or removing a connection couldn't be easier (See Figure 5 &amp;amp; 6).&lt;br /&gt;&lt;br /&gt;*Connections 10g databases are supported, 9i and earlier versions are not.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_tbV38YrrIv4/S3nCO59wXzI/AAAAAAAAAHw/AnpMftClmcg/s1600-h/toolbox_new_connection.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5438591586360385330" src="http://3.bp.blogspot.com/_tbV38YrrIv4/S3nCO59wXzI/AAAAAAAAAHw/AnpMftClmcg/s400/toolbox_new_connection.png" style="cursor: pointer; height: 294px; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Figure 5&lt;/span&gt; New connection setup screen&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_tbV38YrrIv4/S3nCPP-tLlI/AAAAAAAAAH4/mHkhwcW73Ck/s1600-h/toolbox_edit_connection.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5438591592269950546" src="http://1.bp.blogspot.com/_tbV38YrrIv4/S3nCPP-tLlI/AAAAAAAAAH4/mHkhwcW73Ck/s400/toolbox_edit_connection.png" style="cursor: pointer; height: 305px; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Figure 6&lt;/span&gt; Edit/Remove connection screen&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Tools&lt;/span&gt;&lt;br /&gt;One of the new features of the toolbox is external applications integration (See Figure 1). The tools menu has a list of applications that can be run:&lt;br /&gt;&lt;br /&gt;1. Bursting&lt;br /&gt;2. Delivery Designer&lt;br /&gt;3. Report Conversion&lt;br /&gt;&lt;br /&gt;Before running one of these applications be sure to click the save button or your toolbox changes will be lost.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_tbV38YrrIv4/S3nDaENqntI/AAAAAAAAAIA/xBSydVX-dHM/s1600-h/toolbox_tools.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5438592877601660626" src="http://2.bp.blogspot.com/_tbV38YrrIv4/S3nDaENqntI/AAAAAAAAAIA/xBSydVX-dHM/s400/toolbox_tools.png" style="cursor: pointer; height: 108px; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Figure 7&lt;/span&gt; tools menu&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 130%; font-weight: bold;"&gt;Bursting Designer 3.7 XDO Protocol Supported&lt;/span&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_tbV38YrrIv4/S3nDmeuMP3I/AAAAAAAAAII/Q3wUR0wV6hY/s1600-h/bursting_designer_1.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5438593090875834226" src="http://1.bp.blogspot.com/_tbV38YrrIv4/S3nDmeuMP3I/AAAAAAAAAII/Q3wUR0wV6hY/s400/bursting_designer_1.png" style="cursor: pointer; height: 331px; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;About the Bursting Designer&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The Bursting Designer allows developers of any skill level to create, run and test Burst control files.  The tool provides the following benefits:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Preview a burst control file as it's being built (See Figure 8.)&lt;/li&gt;&lt;li&gt;Test the burst control file (See Figure 9.)&lt;/li&gt;&lt;li&gt;Test XDO Delivery configurations&lt;/li&gt;&lt;li&gt;Onscreen real-time logfile (See Figure 10.)&lt;/li&gt;&lt;li&gt;Review/Analyze your Bursting delivery channels&lt;/li&gt;&lt;li&gt;XDO Protocol Support&lt;/li&gt;&lt;li&gt;XDO Delivery Configurations (xdodelivery.cfg) &amp;amp; XDO_TOP support&lt;/li&gt;&lt;li&gt;Authentication support (email, printer, fax)&lt;/li&gt;&lt;li&gt;Printer Delivery Properties&lt;/li&gt;&lt;li&gt;Data Expressions (implicitly supported)&lt;/li&gt;&lt;li&gt;Template File Browser&lt;/li&gt;&lt;li&gt;File History&lt;/li&gt;&lt;li&gt;Improved UI (Quick Keys &amp;amp; Menus)&lt;/li&gt;&lt;li&gt;Fixed - Crash when opening test file&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_tbV38YrrIv4/S3nD9DN1xYI/AAAAAAAAAIY/8XpvzCT6YOY/s1600-h/bursting_designer_preview.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5438593478629377410" src="http://1.bp.blogspot.com/_tbV38YrrIv4/S3nD9DN1xYI/AAAAAAAAAIY/8XpvzCT6YOY/s400/bursting_designer_preview.png" style="cursor: pointer; height: 287px; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Figure 8:&lt;/span&gt;  Preview a control file&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_tbV38YrrIv4/S3nD8jbk7VI/AAAAAAAAAIQ/NADJ19jvmY4/s1600-h/bursting_designer_request_tree.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5438593470097059154" src="http://2.bp.blogspot.com/_tbV38YrrIv4/S3nD8jbk7VI/AAAAAAAAAIQ/NADJ19jvmY4/s400/bursting_designer_request_tree.png" style="cursor: pointer; height: 300px; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Figure 9:&lt;/span&gt;  Request tree – Hierarchal view of request and their related deliveries.  Note:  Double click the link to view the file.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_tbV38YrrIv4/S3nD9ToscsI/AAAAAAAAAIg/2mhB1_Q3cHI/s1600-h/bursting_designer_logfile.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5438593483036979906" src="http://1.bp.blogspot.com/_tbV38YrrIv4/S3nD9ToscsI/AAAAAAAAAIg/2mhB1_Q3cHI/s400/bursting_designer_logfile.png" style="cursor: pointer; height: 300px; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Figure 10: &lt;/span&gt;Real-time log file&lt;br /&gt;&lt;br /&gt;How to build a control file using the Bursting Designer&lt;br /&gt;Below is a list of video tutorials for the Bursting Designer.  The tutorials explain how Bursting works and how to create a Burst Control file in the Bursting Designer.&lt;br /&gt;&lt;a href="http://web.me.com/beth.wiggins/ike/bipublisher/BurstDesignerDist/BurstingDesignerLesson_1.m4v"&gt;&lt;br /&gt;Bursting Designer Lesson 1 - What is Bursting&lt;/a&gt;&lt;br /&gt;&lt;a href="http://web.me.com/beth.wiggins/ike/bipublisher/BurstDesignerDist/BurstingDesignerLesson_2.m4v"&gt;Bursting Designer Lesson 2 - Creating a Burst Control File&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The basic steps to create a control file are:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;Step 1: &lt;/span&gt; Request setup&lt;br /&gt;Enter an xpath expression for the XML you would like to be burst.  Multiple requests can be added and resorted (it’s drag and drop).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;Step 2:&lt;/span&gt;  Create a delivery.&lt;br /&gt;&lt;br /&gt;When creating a delivery your using oracle’s document delivery APIs .  The following Deliveries are supported:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;File&lt;/li&gt;&lt;li&gt;FTP&lt;/li&gt;&lt;li&gt;Webdav&lt;/li&gt;&lt;li&gt;Printer&lt;/li&gt;&lt;li&gt;Email&lt;/li&gt;&lt;li&gt;Fax&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;General rules:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Multiple deliveries can be created for request&lt;/li&gt;&lt;li&gt;Deliveries do not have to be assigned, but unassigned deliveries will not be used by the bursting engine&lt;/li&gt;&lt;li&gt;Deliveries are not global available across multiple requests, a delivery is request specific.&lt;/li&gt;&lt;li&gt;For file output, make sure the file name is unique.  In most instances you would want to use the same value in the KEY field (see document tab).&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;Step 3:  &lt;/span&gt;Assign a delivery to a document.&lt;br /&gt;All the fields on this tab are required.  One or more deliveries can be assigned to one document row.  The Bursting Designer will allow for more than one document to be created, however, Oracles bursting engine does not support this.  When choosing a key make sure the value is unique.  Real world examples would be invoice number, transaction number, etc.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;Step 4: &lt;/span&gt; Assign a template.&lt;br /&gt;All the fields on this tab are required except for the filter field. The location to a format template is the absolute path.  You may hand-key the path or use the template file browser button.  Another option besides local format template is to use the XDO Protocol (see in section below).&lt;br /&gt;&lt;br /&gt;One or more templates can be assigned to a document row.  However, if there are multiple template rows the filter field is required (you will not be prompted though).  Assign multiple templates with caution.  If a filter doesn’t get applied, the last template row will be applied to the output.  An alternative to filters would be to create multiple requests with predicates for each template.  Neither way is a best practice and is purely a personal choice.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Previewing a control file&lt;/span&gt;&lt;br /&gt;At any point in the development process a control file can be previewed.  To preview the control file go to the Actions menu and choose “View Control File.”&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Run a control file&lt;/span&gt;&lt;br /&gt;Before running a control file be sure to save it first. To run a control file go to the Actions menu and choose “Run Control File.”   You will be prompted to select a data file.  Once a data file is selected it will be cached permanently unless you decided otherwise.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;XDO Protocol Support&lt;/span&gt;&lt;br /&gt;XDO Protocol support allows a control file to be seamless loaded into the Bursting Designer from the E-Business Suite.  The syntax to import a format template is as follows:   xdo://&amp;lt;appname&amp;gt;.&amp;lt;templatecode&amp;gt;.&amp;lt;language&amp;gt;.&amp;lt;territory&amp;gt;/?getSource=true&lt;br /&gt;&lt;br /&gt;Example:  xdo://ONT.ONTBSAERTF.en.00/?getSource=true&lt;br /&gt;&lt;br /&gt;In order to use this new feature a DBC file must be loaded. To load a DBC file, go to the Actions menu and select “Set DBC File.” The DBC file will be preloaded the next time you open the Bursting designer.  When you load a DBC file the designer will test it to see if a connection can be created. If a connection cannot be created then the likely cause is a bad DBC file. The typical reasons for bad DBC file are it’s dated or the JDBC connection needs to be manually edited. To fix the JDBC connection string, remove any slashes (\), save and retry the “Set DBC File” action.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;XDO Delivery configuration support&lt;/span&gt;&lt;br /&gt;Perhaps you didn't know this but Oracle's Bursting engine can use XDO Delivery configurations (xdodelivery.cfg).  Setting the server-alias will utilize the configurations in a xdodelivery.cfg file.  The sever-alias field is available on the following deliveries:  Email, Print, Fax.&lt;br /&gt;&lt;br /&gt;To load a use a XDO Delivery Configuration file, go to the Actions menu and chose set XDO_TOP(see below). XDO_TOP should be the path to the resource directory. The location will be preloaded the next time you open the Bursting designer.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Why use an XDO Delivery configuration file?&lt;/span&gt;&lt;br /&gt;Simplified administration is the key benefit of using xdodelivery.cfg. However, there are some other advantages. As an example, what if a printer can only accept postscript output. What’s a programmer to do?  BIP &amp;amp; Bursting only support pdf, so I guess were out of options or are we? The filter option in an XDO Delivery configuration would allow a developer to automatically convert a pdf to post script. Something like this should do the trick:  filter="pdftops {infile} {outfile}."  They’re many more features an XDO Delivery Configuration file can provide.  For more information on how to setup one up click &lt;a href="http://download.oracle.com/docs/cd/E12844_01/doc/bip.1013/e12693/toc.htm"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Authentication support&lt;/span&gt;&lt;br /&gt;The Bursting designer now supports authentication nodes under specific delivery types. To use authentication set the user name and password fields on the following tabs: email, print and fax.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Printer Delivery Properties&lt;/span&gt;&lt;br /&gt;Below is a list of the enhanced printer options that are undocumented by Oracle (at least for Bursting). The following attributes are available on the Printer delivery tab:&lt;br /&gt;1. attributes-charset&lt;br /&gt;2. attributes-natural-language&lt;br /&gt;3. document-format&lt;br /&gt;4. job-name&lt;br /&gt;5. media *this is the tray option!&lt;br /&gt;6. orientation-requested&lt;br /&gt;7. requesting-user-name&lt;br /&gt;8. sides&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Data Expressions&lt;/span&gt;&lt;br /&gt;Data expressions are implicitly supported for e-mail, ftp and webdav.  Oracles Bursting Engine uses the Delivery Manager APIs, so by default that functionality works for Bursting. For more information on data expressions see &lt;a href="http://blogs.oracle.com/xmlpublisher/2009/12/dynamic_delivery_file_naming.html"&gt;Tim Dexters Blog.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Example:&lt;br /&gt;&amp;lt;xapi:ftp id="ftp" server="localhost" user="hidden" password="hidden" directory="/Users/ike/ " file="ftp_${TRX_NUMBER}_%y.%m.%d.%S" ftp="false"&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;File History&lt;/span&gt;&lt;br /&gt;Another major time saving benefit of the Bursting Designer is file history support.&lt;br /&gt;Every time a control file is opened, file history is created. Under the file menu, the last 5 five control files opened (see Figure 1) will be available.&lt;br /&gt;&lt;br /&gt;Also, when a data file (Action Menu --&amp;gt; Run Control File) is selected to run against a control file, the data file will be cached and will pre-populate next time the Bursting Designer is opened.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_tbV38YrrIv4/S3nD99MQK7I/AAAAAAAAAIo/swiE03zZB0M/s1600-h/bursting_designer_file_history.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5438593494191975346" src="http://3.bp.blogspot.com/_tbV38YrrIv4/S3nD99MQK7I/AAAAAAAAAIo/swiE03zZB0M/s400/bursting_designer_file_history.png" style="cursor: pointer; height: 333px; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Figure 11&lt;/span&gt;  File History&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Crash when opening test file&lt;/span&gt;&lt;br /&gt;This was the number one issue that developers had with the Bursting Designer.  The reason for the crash was because of an invalid path to a format template.  There is a bug in one BIP classes that Oracle is working on. With that said, I'm overriding oracles class with my own in order to fix the issue.&lt;br /&gt;&lt;span style="font-size: 130%;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Delivery Designer 1.1 &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_tbV38YrrIv4/S3nGu0_MwPI/AAAAAAAAAJA/ZgAMbuykgK0/s1600-h/deliverydesigner.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5438596532826587378" src="http://3.bp.blogspot.com/_tbV38YrrIv4/S3nGu0_MwPI/AAAAAAAAAJA/ZgAMbuykgK0/s400/deliverydesigner.png" style="cursor: pointer; height: 280px; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you ever wanted to test the Document Delivery APIs or a delivery configuration this tool is for you. The Delivery Designer allows a developer to test the all of the Delivery APIs without writing any code.&lt;br /&gt;&lt;br /&gt;The Delivery Designer’s use is not strictly related to testing how the Delivery APIs work, it also allows a developer to troubleshoot Bursting delivery problems. As an example, when trying to troubleshoot a Burst control file, it can be difficult to identify a misconfigured printer.  In this situation the designer will allow repeated, lightweight troubleshooting of a printer issue without the overhead of running the Bursting Engine.&lt;br /&gt;&lt;br /&gt;It’s also never been easier to test an XDO Delivery configuration! The Delivery Designer not only allows XDO Delivery configuration testing, it also can generate a sample XDO delivery configuration.&lt;br /&gt;&lt;br /&gt;The Designer supports all of Oracles Documents delivery channels.  Below is a list of the Delivery types that are supported:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Email &lt;/li&gt;&lt;li&gt;Printer &lt;/li&gt;&lt;li&gt;Fax &lt;/li&gt;&lt;li&gt;Webdav &lt;/li&gt;&lt;li&gt;Ftp &lt;/li&gt;&lt;li&gt;Sftp &lt;/li&gt;&lt;li&gt;Http &lt;/li&gt;&lt;li&gt;AS2&lt;/li&gt;&lt;li&gt;External Command &lt;/li&gt;&lt;li&gt;File&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Setting a Particular Delivery Property&lt;/span&gt;&lt;br /&gt;There is an abundance of properties that can be set for a particular delivery channel. The Delivery Designer needs the literal value to be entered for delivery channels.  It’s because of this fact the every property in the Delivery Designer has note in the info column.  The purpose of the note is not only for informational purposes but what values can be entered. As an example, the IPP_AUTHTYPE (Figure 12) shows the valid values that can be entered are none, basic or digest.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_tbV38YrrIv4/S3nGvZU_CnI/AAAAAAAAAJI/NqRNzHOgSIY/s1600-h/delivery_designer_info.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5438596542581639794" src="http://4.bp.blogspot.com/_tbV38YrrIv4/S3nGvZU_CnI/AAAAAAAAAJI/NqRNzHOgSIY/s400/delivery_designer_info.png" style="cursor: pointer; height: 158px; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Figure 12&lt;/span&gt; IPP_AUTHTYPE printer delivery attribute and related info&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Setting up XDO Delivery Configurations&lt;/span&gt;&lt;br /&gt;There is only step to utilizing an XDO Delivery configuration.   Navigate to the global property tab, select property called XDO_TOP, add the path to XDO_TOP.  Be sure to create a directory called resource and place your xdodelivery.cfg document in that directory.&lt;br /&gt;&lt;br /&gt;To use a server defined in an XDO Delivery configuration enter the server name in the property called “SERVER_NAME”.  The SERVER_NAME property is available for most delivery types.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;XDO Delivery Configuration file generation &lt;/span&gt;&lt;br /&gt;An XDO Delivery Configuration can be generated at any point in time by clicking the delivery config button.  The Delivery Designer will take the current properties for a delivery and generate the XDO Delivery Configuration. The deliveries that can automatically be generated are IPP, SMTP, Webdav, FTP, SFTP &amp;amp; External Command.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_tbV38YrrIv4/S3nGuCaFONI/AAAAAAAAAIw/749wVq9Y00U/s1600-h/deliverydesignerxdocfg.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5438596519249131730" src="http://1.bp.blogspot.com/_tbV38YrrIv4/S3nGuCaFONI/AAAAAAAAAIw/749wVq9Y00U/s400/deliverydesignerxdocfg.png" style="cursor: pointer; height: 285px; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Figure 1&lt;/span&gt;3 Sample XDO Delivery Configuration file generation&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Real-time log file&lt;/span&gt;&lt;br /&gt;When a Delivery Request is submitted, instant feedback is provided about the delivery request on the log screen. The log screen is continually updated till the &lt;a href="http://download.oracle.com/docs/cd/E12844_01/doc/bip.1013/e12693/toc.htm"&gt;Oracle DeliveryResponseListener&lt;/a&gt; returns the final status of the delivery.&lt;br /&gt;&lt;br /&gt;The Delivery Designer also supports undocumented properties that manipulate Oracles Delivery Reponse Listener.  Changing these properties will determine how and when a delivery times out.  Below is a list of properties that are available for every delivery.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;ASYNC_TIMEOUT - Sets the timeout period for the delivery&lt;/li&gt;&lt;li&gt;ASYNC_CHECK_INTERVAL- Set this property to change the minimum wait time before refreshing the log screen&lt;/li&gt;&lt;li&gt;RETRY - Set this property to change the number of times to re-attempt sending this delivery&lt;/li&gt;&lt;li&gt;RETRY_INTERVAL- Set this property to change the minimum wait time before re-attempting to send this delivery&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_tbV38YrrIv4/S3nGuuG6cKI/AAAAAAAAAI4/C0jO95JRzfw/s1600-h/deliverydesignerstatuslog.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5438596530979893410" src="http://4.bp.blogspot.com/_tbV38YrrIv4/S3nGuuG6cKI/AAAAAAAAAI4/C0jO95JRzfw/s400/deliverydesignerstatuslog.png" style="cursor: pointer; height: 224px; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Figure 14&lt;/span&gt; Real-time log file&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 130%; font-weight: bold;"&gt;Report Conversion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It's never been easier to convert a reports6i report to BI Publisher using the toolbox.  Reports can be converted in mere seconds.  To get an idea of how easy it is click here to watch the demonstration video.&lt;br /&gt;Prerequisites&lt;br /&gt;&lt;br /&gt;Forms and reports 10g locally must be installed.  The report6i files must be converted to an xml format. To convert reports6i report, use the rwconverter.exe.  A dos batch or shell script can be written to accomplish a batch conversion task (See Figure 15)&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;REM WINDOWS CONVERTING REPORT&lt;br /&gt;::report_batch_converter.bat&lt;br /&gt;cls&lt;br /&gt;Echo compiling Report .....&lt;br /&gt;for %%f IN (%1*.rdf) do rwconverter.exe batch=yes source=%%f dest=%%f.xml dtype=xmlfile overwrite=yes logfile=%1reports.log&lt;br /&gt;Echo FINISHED CONVERTING REPORT&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;Figure 15  &lt;/span&gt;Sample batch script for converting a reports6i report to an xml format&lt;/blockquote&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;span style="font-weight: bold;"&gt;Conversion Steps&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;Step 1:&lt;/span&gt;  First part of conversion is converting your reports6i report to xml.  To do this use rwconverter.exe or create a batch script (see above, Figure 1)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;Step 2:  &lt;/span&gt;The next step is to take the xml files and convert them to bi publisher files.  In order to do this we need to run the ReportConversion.exe.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;Step 3: &lt;/span&gt;Click on the folder icon to select reports6i the xml files.  You may optional change the format template and the log file name after the files are loaded.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;Step 4: &lt;/span&gt;The final step is to click the process button.&lt;br /&gt;&lt;br /&gt;Navigate to your conversion directory.  The following should be present:&lt;br /&gt;1. Format Template&lt;br /&gt;2. Data Template&lt;br /&gt;3. Related PL/SQL Packages&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Other Known Issues&lt;/span&gt;&lt;br /&gt;&lt;table border="1" cellpadding="3" cellspacing="0" class="" id="dbdr" style="color: #cccccc; height: 58px; width: 454px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="background-color: #cccccc; color: black;" width="50%"&gt;&lt;span style="font-weight: bold;"&gt;Issue&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color: #cccccc; color: black;" width="50%"&gt;&lt;span style="font-weight: bold;"&gt;Resolution&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;/Workaround&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="50%"&gt;Application starts to load but fails&lt;/td&gt;&lt;td width="50%"&gt;Java 6 is required to run this application.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="50%"&gt;JNLP file does not execute in browser&lt;/td&gt;&lt;td width="50%"&gt;Follow these &lt;a href="http://web.me.com/beth.wiggins/ike/bipublisher/BIPublisherToolBoxDist/launch.html"&gt;instructions&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="50%"&gt;Application runs in Java 1.5 but none of the cell browsers work.&lt;/td&gt;&lt;td width="50%"&gt;Java 6 is required to run this application.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="50%"&gt;: XSL-1031: (Error) Variable not defined:  '_XDONFSEPARATORS'.&lt;/td&gt;&lt;td width="50%"&gt;Import statements in format template will on only work for R12 or 6241631 patchsets&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="50%"&gt;Can’t find DBC File&lt;/td&gt;&lt;td width="50%"&gt;DBC files can be found under $FND_TOP/secure.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="50%"&gt;Sftp  &amp;amp; AS2 – Fail for Delivery Designer&lt;/td&gt;&lt;td width="50%"&gt;There is no workaround for this.  The delivery designer is coded to execute these classes when there available from oracle&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="50%"&gt;Cannot connect to database for Data Templates&lt;/td&gt;&lt;td width="50%"&gt;Verify your connection is setup correctly.  Tnsping &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="50%"&gt;There is no option to specify a custom xdodelivery.cfg file for bursting.&lt;/td&gt;&lt;td width="50%"&gt;Future release will allow ad/hoc xdodelivery.cfg files outside of $XDO_TOP&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="50%"&gt;There is no standalone version of the application (executable)&lt;/td&gt;&lt;td width="50%"&gt;The BI Publisher Toolbox is a webstart  application.  This allows for developers to run the most current version of the application automatically.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="50%"&gt;XDO Loader Features are missing&lt;/td&gt;&lt;td width="50%"&gt;XDO Loader features are being redeveloped.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="50%"&gt;After keying data in a field, it disappears when I click save or a menu item.&lt;/td&gt;&lt;td width="50%"&gt;Be sure to always tab out of each field before performing a save action.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="50%"&gt;The report6i xml file is malformed or does not convert at all.&lt;/td&gt;&lt;td width="50%"&gt;Identify that 10g version rwconverter.exe is being used to convert the rdf to xml.  It’s not uncommon that 6i version of rwconverter.exe gets used instead.&lt;br /&gt;&lt;br /&gt;Goto My Computer System Properties  Environment Variables.  Modify the path variable to point at the 10g directory&lt;br /&gt;&lt;br /&gt;or&lt;br /&gt;&lt;br /&gt;Manually run the rwconverter.exe&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;In this post you learned about the new features and updates to the BI Publisher ToolBox Development Suite. The ability to run BI Publisher reporting components has never been simpler. With ToolBox, the majority of your development can now be done locally on your PC.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5406107793530126650-3694626905142795927?l=bipublisher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bipublisher.blogspot.com/feeds/3694626905142795927/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5406107793530126650&amp;postID=3694626905142795927' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/3694626905142795927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/3694626905142795927'/><link rel='alternate' type='text/html' href='http://bipublisher.blogspot.com/2010/01/bi-publisher-bi-publisher-toolbox.html' title='BI Publisher:  BI Publisher Toolbox Development Suite'/><author><name>Ike Wiggins</name><uri>http://www.blogger.com/profile/03629933955296401382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_tbV38YrrIv4/RxgXvw8IBwI/AAAAAAAAAAw/lgP6jbAaB2M/s320/ike.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_tbV38YrrIv4/S3nATaoyydI/AAAAAAAAAHA/ybEOJmBnPFI/s72-c/toolbox_main.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5406107793530126650.post-5214928301760870634</id><published>2010-01-15T16:13:00.000-08:00</published><updated>2010-04-22T20:59:11.191-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Bursting'/><category scheme='http://www.blogger.com/atom/ns#' term='Bursting Designer'/><category scheme='http://www.blogger.com/atom/ns#' term='XDO Protocol'/><category scheme='http://www.blogger.com/atom/ns#' term='XDO Uri'/><title type='text'>Bursting Designer 3.7 XDO Protocol Support!</title><content type='html'>Thats right folks, there is a new version of the Bursting Designer out.  One of the best new features of the Bursting Designer 3.7 is XDO Protocol support*.  If you used the previous versions and were unsatisfied, please give the app a second try!&lt;br /&gt;&lt;br /&gt;*In order to use the XDO Protocol a DBC file is required.  The DBC for the EBS application suite can be found under $FND_TOP/secure.&lt;br /&gt;&lt;br /&gt;Also, the previous versions of the application could crash because of invalid path to a format template.  That issue has now been resolved and the app is very stable (and faster).  If you do have issues, please let me know.  I can't fix what I don't know about.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Bursting Designer &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Download &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Site&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;*Desupported 04.22.2010 - please  use the BI Publisher Toolbox.&lt;/span&gt;&lt;br /&gt;&lt;a href="http://web.me.com/beth.wiggins/ike/bipublisher/BurstDesignerDist/launch.html"&gt;Bursting Designer&lt;/a&gt; - By clicking on the download link you will be redirected to a different site.  The bursting designer is java webstart application.  Java 6 is required to run this application.  It's recommended to bookmark this particular blog and the download site.  This is because you will need to use these links every time you wish to run the Bursting Designer or find news about updates. It's technically not a requirement to use the webstart application for the java savvy developers but in doing so you will miss out on future updates and releases.  It's important to note the Bursting Designer jar files will be loaded on your machine.  This allows for a significant increase in performance.  If you need to remove this application for some reason, go to add/remove applications.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5406107793530126650-5214928301760870634?l=bipublisher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bipublisher.blogspot.com/feeds/5214928301760870634/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5406107793530126650&amp;postID=5214928301760870634' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/5214928301760870634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/5214928301760870634'/><link rel='alternate' type='text/html' href='http://bipublisher.blogspot.com/2010/01/bursting-designer-37.html' title='Bursting Designer 3.7 XDO Protocol Support!'/><author><name>Ike Wiggins</name><uri>http://www.blogger.com/profile/03629933955296401382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_tbV38YrrIv4/RxgXvw8IBwI/AAAAAAAAAAw/lgP6jbAaB2M/s320/ike.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5406107793530126650.post-2677929090903886664</id><published>2009-12-22T07:43:00.001-08:00</published><updated>2009-12-22T08:15:18.375-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Bursting'/><category scheme='http://www.blogger.com/atom/ns#' term='Bursting Designer'/><title type='text'>BI Publisher:  Bursting Designer Version 1.2</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Whats new in the Bursting Designer 1.2?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Version 1.2 is here and it includes the following enhancements:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Excel Output&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Templates tab fix. If you enter more than one template row it may have potentially caused the application to crash. Also, the templates could potentially be assigned to all the deliveries.&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-weight: bold;"&gt;Whats next?&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;The Bursting Designer 1.3 will include enhanced printer options that are undocumented by Oracle.  The following attributes will be added to the Printer delivery tab:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;attributes-charset&lt;/li&gt;&lt;li&gt;attributes-natural-language&lt;/li&gt;&lt;li&gt;document-format&lt;/li&gt;&lt;li&gt;job-name&lt;/li&gt;&lt;li&gt;media&lt;/li&gt;&lt;li&gt;orientation-requested&lt;/li&gt;&lt;li&gt;requesting-user-name&lt;/li&gt;&lt;li&gt;sides&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;The Delivery Designer is also another skunk works project that I'm working on.  The tentative release will be sometime in December or late January.  This tool will allow a developer to test the delivery APIs without writing a lick of code.  There is no need to speculate, whether or not a delivery API is capable of a particular integration point.&lt;br /&gt;&lt;br /&gt;Ever been asked, "Can we send a document to an EDI system using as2 Document Delivery APIs?" I know I have and I really didn't have a confident answer of yes or no and I had no way of finding out without writing some code.  So, the Delivery Designer will let you kick the tires so speak before making a coding commitment.  You'll be able to tell your manager confidently, yes this will work!&lt;br /&gt;&lt;br /&gt;More details to follow....&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;POST A QUESTION&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;If you have questions about the Bursting Designer or if you find a bug please post a question on this blog.  &lt;/span&gt;Please no cross posting and make sure the question matches the topic.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5406107793530126650-2677929090903886664?l=bipublisher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bipublisher.blogspot.com/feeds/2677929090903886664/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5406107793530126650&amp;postID=2677929090903886664' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/2677929090903886664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/2677929090903886664'/><link rel='alternate' type='text/html' href='http://bipublisher.blogspot.com/2009/12/bi-publisher-bursting-designer-version_22.html' title='BI Publisher:  Bursting Designer Version 1.2'/><author><name>Ike Wiggins</name><uri>http://www.blogger.com/profile/03629933955296401382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_tbV38YrrIv4/RxgXvw8IBwI/AAAAAAAAAAw/lgP6jbAaB2M/s320/ike.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5406107793530126650.post-45245432281315528</id><published>2009-12-19T06:46:00.000-08:00</published><updated>2010-01-15T16:13:05.651-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Bursting'/><category scheme='http://www.blogger.com/atom/ns#' term='Bursting Designer'/><title type='text'>BI Publisher: Troubleshooting Bursting</title><content type='html'>&lt;span style="font-weight: bold;font-size:130%;" &gt;How to Troubleshoot the Bursting Designer&lt;/span&gt; &lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;&amp;amp; Bursting&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Since the bursting designer has come out I been getting quite a few questions lately.   This post tackles some common issues that most developers run into when using the Bursting Designer or using Oracles BI Publisher Bursting Engine.    If you haven't used the Bursting Designer yet,  go on ahead and start kickin' the tires!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Issue: &lt;/span&gt; Bursting Designer Web application crashes when the application is downloading.  Something like this might occur, " Java 6 splash screen shows, then "Warning - Security" window blips by, then nothing."&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Resolution: &lt;/span&gt; There can be a wide variety of reasons why this might occur.  The first thing to do is make sure your an administrator or windows power user.  Because your installing software you need to make sure you have the appropriate rights.&lt;br /&gt;&lt;br /&gt;The second thing you should do is check that java 1.6 is installed.&lt;br /&gt;&lt;br /&gt;To find out what version your running go to&lt;br /&gt;start-&gt;run&lt;br /&gt;type: cmd, hit return&lt;br /&gt;type: java -version&lt;br /&gt;&lt;br /&gt;If java 1.6 is installed that can be eliminated.  The next step would be to verify the amount of memory you have on your machine.&lt;br /&gt;&lt;br /&gt;By default the Bursting Designer does not support dated hardware.  The minimum amount of memory required is 512 megs.  If you do not have 512 megs installed on your machine the Bursting Designer will not open.  In order to fix this, modify the JNLP file and replace the memory options with this line:&lt;br /&gt;&lt;br /&gt;&amp;lt;j2se args="-Xms128m -Xmx256m -Xdebug" version="1.5+"/&amp;gt;&lt;br /&gt;&lt;br /&gt;Then manually open the JNLP file through IE or Firefox locally on your PC.  Do not try and use the download link because it will use the standard memory options.  I don't advice against modifying the memory settings, but I would recommend that you talk to your hardware guy in your organization and either request a new pc or ram upgrade.  It's the 21st century and you should have a computer that has 21st century power.    What are we in russia?  I kid for all the Russians who read my blog :-)&lt;br /&gt;&lt;br /&gt;Now, if the Bursting Designer is still crashing. Turn on the java debugger. Go to the control panel in windows and you should see an icon for java. Double click on the app. Select the show console option in Java Control Panel in the Advanced tab. This will let you see an errors that are occurring in the application or general debug info.&lt;br /&gt;&lt;br /&gt;See the link below and go to the debug section for the java console:&lt;br /&gt;&lt;br /&gt;http://java.sun.com/j2se/1.5.0/docs/guide/deployment/deployment-guide/jcp.html&lt;br /&gt;http://java.sun.com/j2se/1.5.0/docs/guide/deployment/deployment-guide/console.html&lt;br /&gt;&lt;br /&gt;If you cannot figure-out what the errors means in the debug console, post a comment here with the error message or find my email address and I'll do my best to help resolve the issue.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Issue: &lt;/span&gt;JNLP downloads but doesn't open the Bursting Designer&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Resolution: &lt;/span&gt;The JNLP file is not associated correctly in windows or it's pointed at the wrong java runtime environment.&lt;br /&gt;&lt;br /&gt;I ran into this issue myself when I first deployed and tested the Bursting Designer in windows. That's why I set up the JNLP associations on the download page.  I have instructions for most browsers and I have tested the Bursting Designer on Firefox, IE &amp;amp; Safari.   http://web.me.com/beth.wiggins/ike/bipublisher/BurstDesignerDist/launch.html&lt;br /&gt;&lt;br /&gt;For IE and windows users follow these steps:&lt;br /&gt;&lt;br /&gt;To set up the association between *.jnlp files and javaws.exe in Windows which also handles IE:&lt;br /&gt;1. In Windows, not IE, click Start | Settings | Control Panel | Folder Options | File Types.&lt;br /&gt;2. Check to see if there is already an association for *.jnlp files.&lt;br /&gt;3. If there is no entry for *.jnlp files already then click new | advanced | select "jnlp file"&lt;br /&gt;4. If there is an entry, select it and click advanced.&lt;br /&gt;5. Then edit the open application used to perform action field and make sure it is set to "C:\Program Files\java\jre...\bin\&lt;b&gt;javaws.exe&lt;/b&gt; ""%1". Uncheck DDE.&lt;br /&gt;6. Click OK.&lt;br /&gt;7. Click Set As Default to make Open the default action. Likely Open will be the only action.&lt;br /&gt;8. Click OK | Close.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Issue: &lt;/span&gt;Bursting Designer crashes and the web app log file says it's pointing to this directory:  file:/Users/ike/Code/NetBeansProjects/Bursting%20Designer/dist/&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Resolution: &lt;/span&gt;Contact me, I need to fix the JNLP file. If your in a bind you can do it yourself by changing the code base node to:&lt;br /&gt;&lt;br /&gt;codebase="http://web.me.com/beth.wiggins/ike/bipublisher/BurstDesignerDist/"&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Issue: &lt;/span&gt;Bursting Designer crashes when I click the run button.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Resolution: &lt;/span&gt;Follow the steps above to turn on java  debug console.  If you can not identify the issue or a workaround post the error on my blog or send me an e-mail.  There is a known issue on the templates tab.  If you enter more than one template row it may potentially cause the application to crash.  This will be fixed in Bursting Designer Version 1.2.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Issue: &lt;/span&gt;Templates are shown across document deliveries.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Resolution: &lt;/span&gt;This will be fixed in Bursting Designer Version 1.2.  I had a bug in my code that allowed a user to circumvent document to template associations.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Question: &lt;/span&gt;Printer node not found when when bursting.  Example:  &lt;!--StartFragment--&gt;&lt;span style=";font-family:Calibri,Verdana,Helvetica,Arial;font-size:100%;"  &gt;ipp://localhost:631/printers/${CF_PRINTER_NAME}.&lt;/span&gt; &lt;!--EndFragment--&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Answer: &lt;/span&gt;&lt;br /&gt;1.  XML is case sensitive, is the printer xml node upper case?&lt;br /&gt;2. Is the printer node a child of the of the parent node selected in the xpath expression?&lt;br /&gt;3. Are you using a document key?  It's important, you need this to burst the file correctly.  This is new for EBS users, it was not a feature in the original 5.6.3 version of BI Publisher.  If you don't have a document key, it will not work.&lt;br /&gt;4. Finally, it could be a pruning issue. See: http://bipublisher.blogspot.com/2007/10/bi-publisher-bursting-how-to-resolve.html&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Question: &lt;/span&gt;How do I identify a printing issue.   &lt;!--EndFragment--&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Answer: &lt;/span&gt;Use the Bursting Designer and review the log file.  In the example below we can see that the issues is related to the printer name.&lt;br /&gt;&lt;br /&gt;IPP version: 10&lt;br /&gt;operation id: 02&lt;br /&gt;charset: utf-8&lt;br /&gt;request id: 1&lt;br /&gt;-- operation attrs --&lt;br /&gt;[1]attributes-charset:utf-8&lt;br /&gt;[1]attributes-natural-language:en&lt;br /&gt;[1]printer-uri:ipp://localhost:631/printers&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;/null&lt;/span&gt;&lt;br /&gt;[1]document-format:application/pdf&lt;br /&gt;-- printer attrs --&lt;br /&gt;-- job attrs --&lt;br /&gt;[1]copies:1&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;After adding the document key:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;IPP version: 10&lt;br /&gt;operation id: 02&lt;br /&gt;charset: utf-8&lt;br /&gt;request id: 1&lt;br /&gt;-- operation attrs --&lt;br /&gt;[1]attributes-charset:utf-8&lt;br /&gt;[1]attributes-natural-language:en&lt;br /&gt;[1]printer-uri:ipp://localhost:631/printers/&lt;span style="color: rgb(0, 153, 0); font-weight: bold;"&gt;HP_TEST_PRINTER&lt;/span&gt;&lt;br /&gt;[1]document-format:application/octet-stream&lt;br /&gt;-- printer attrs --&lt;br /&gt;-- job attrs --&lt;br /&gt;[1]copies:1&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Question&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;: &lt;/span&gt;Printer not found when when bursting.   &lt;!--EndFragment--&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Answer&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;: &lt;/span&gt;You will see a message in the logfile that looks something like this:&lt;br /&gt;&lt;br /&gt;IPP version: 10&lt;br /&gt;operation id: 46&lt;br /&gt;charset: utf-8&lt;br /&gt;request id: 20&lt;br /&gt;-- operation attrs --&lt;br /&gt;[1]attributes-charset:utf-8&lt;br /&gt;[1]attributes-natural-language:en&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;[1]status-message:The printer or class was not found.&lt;/span&gt;&lt;br /&gt;-- printer attrs --&lt;br /&gt;-- job attrs --&lt;br /&gt;&lt;br /&gt;During upgrades sometimes printers that are setup can get wiped out. I know this true on a Mac. So the first step would be to verify the printer actually exists in the setup. If it doesn't add it. Now it's important to note, if you can't bring up the printer in your browser: http://localhost:631/printers then you may have a CUPS issue depending on how your system is setup.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Question&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;: &lt;/span&gt;FTP files fail&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Answer&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;: &lt;/span&gt;Before starting a ftp control file, I would suggest you initial create file delivery instead.  This will allow you to work out the kinks and make sure your control file is first class as well as your format template.  Once you know there are no issues, then I would try setting up the FTP delivery.  To troubleshoot FTP issues do the following:&lt;br /&gt;&lt;br /&gt;1. Check the permissions.  Suggest that you open a session in telnet and attempt to manually FTP.  If you can't do it in telnet, you can't do it with BIP!&lt;br /&gt;2.  Verify the user name and password is correct.  Remember it's case sensitive.&lt;br /&gt;3.  Verify the files are actually being generated.  If there not, than obviously there is nothing to FTP.  Also, verify the files aren't being generated with just an extension, in which case there is an issue with the document key.&lt;br /&gt;4.  Related to number 3, Verify the document key exists and is correct.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Question&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;: &lt;/span&gt;Delivery Fails to show in the logfile or the delivery does not get processed.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Answer&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;: &lt;/span&gt;&lt;span&gt;BI Publisher Bursting Engine has some undocumented issues for multiple deliveries, below is a breakdown&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1.  Multiple deliveries for the same request are supported.  If you assign the deliveries to one  document you should be okay.  See example 1.&lt;br /&gt;2. Multiple &lt;span style="font-weight: bold;"&gt;distinct&lt;/span&gt; deliveries, that are individually assigned to a document will only process the last delivery (LIFO) in the document list.   This is a very common mistake new developers make regardless if there using the Bursting Designer or not.  Should you design your control file this way?  No.&lt;br /&gt;&lt;br /&gt;Example 1 is okay, Example 2 is wrong and it needs to be put in another request.   The Bursting Designer application will allow you to setup a control file like example 2.  Could this be a feature someday?  Who knows.....Basically, if oracle allows you to do something and doesn't throw an error the Bursting Designer does the same.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Example 1: &lt;/span&gt; One Request - Multiple deliveries assigned to a document.&lt;br /&gt;document key="${TRX_NUMBER}" output-type="pdf" delivery="&lt;span style="color: rgb(0, 153, 0); font-weight: bold;"&gt;ftp2, print&lt;/span&gt;"&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="font-weight: bold;"&gt;Example 2: &lt;/span&gt; One Request - Multiple distinct deliveries assigned to a document. &lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;&lt;br /&gt;document key="${TRX_NUMBER}" output-type="pdf" delivery="ftp2"&lt;/span&gt;&lt;br /&gt;...some template assigned...&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;document key="${TRX_NUMBER}" output-type="pdf" delivery="print"&lt;/span&gt;&lt;br /&gt;...some template assigned...&lt;br /&gt;&lt;br /&gt;Also, putting a filter on each template will not resolve the issue with example 2.  You will still have the same issue.  Word of advice, when in doubt just create two requests and you use the template filters.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Question&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;: &lt;/span&gt;Can there be multiple templates assigned for a delivery?&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Answer&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;: &lt;/span&gt;&lt;span&gt;Yes.  If a filter does not exist, all templates will be applied to the output.&lt;span style="font-weight: bold;"&gt; &lt;/span&gt; When all templates are applied to the output file it will occur in LIFO order.&lt;br /&gt;&lt;br /&gt;Example:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;xapi:document key="${TRX_NUMBER}" output-type="pdf" delivery="file"&lt;br /&gt;xapi:template type="rtf"location="/Users/temp.rtf" filter=""&lt;br /&gt;xapi:template type="rtf"location="/Users/temp2.rtf" filter=""&lt;br /&gt;xapi:document&lt;br /&gt;&lt;br /&gt;Template temp2.rtf will be applied first, and then temp.rtf.  Also, there will only be one output file.  I do not know if this desired functionality by Oracle or not, so you can use this at your own risk.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Question&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;: &lt;/span&gt;Are document keys required for all document elements?&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Answer&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;: &lt;/span&gt;Absolutely, if a key node is left blank or doesn't exist your requested delivery may process but no results will be generated.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Question&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;: &lt;/span&gt;Is there an alternative to creating template filters&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Answer&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;: &lt;/span&gt;&lt;span&gt;Predicates are allowed for request xpath expressions.  Now, don't think that because they are you can start getting fancy.  There are very limited.&lt;br /&gt;&lt;br /&gt;Is it better or worse than a template filter?  No, the two are the same.  Personally, I think it's easier to understand by having it in the request itself.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Question&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;: &lt;/span&gt;Is CSV supported for bursting?&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Answer&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;: &lt;/span&gt;&lt;span&gt;Yes, you will need to use etext templates.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Question&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;: &lt;/span&gt;Is xdo:// uri syntax supported for Bursting?&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Answer&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;: &lt;/span&gt;&lt;span&gt;Yes.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Question&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;: &lt;/span&gt;Is xdo:// uri syntax supported for Bursting Designer?&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Answer&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;: &lt;/span&gt;&lt;span&gt;No.&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;Jan-15-2010:  XDO Protocol is supported in the Bursting Designer&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Question&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;: &lt;/span&gt;&lt;span&gt;I want to use bursting as a way to apply one or multiple format templates indiscriminately to the output file and I only want a single file(s) to be generated, I actually don't want it bursted.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Answer: &lt;/span&gt;&lt;span&gt;Seems like an oxymoron, but it's really not.  You may very well run into this situation, I know I have.  In your request, just use slash "/" and for the key field generate a something in the data template that is below the root node and use that.  As an example, lets say user requested that they need have 3 separate csv files.  You could create 3 etext and burst the xml file.  Make sense?&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Question&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;: &lt;/span&gt;&lt;span&gt;I want to use excel as an output format in the Bursting Designer&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Answer: &lt;/span&gt;&lt;span&gt;That will be available in version 1.1 of the application.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Question&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;: &lt;/span&gt;&lt;span&gt;Are Data Expressions supported in Bursting?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Answer: &lt;/span&gt;&lt;span&gt;Absolutely.  &lt;/span&gt;It's supported for e-mail, ftp and webdav.  Bursting uses the delivery manager APIs so by default that functionality works for bursting.  For more info data expressions see Tim D. blog&lt;br /&gt;&lt;br /&gt;http://blogs.oracle.com/xmlpublisher/2009/12/dynamic_delivery_file_naming.html&lt;br /&gt;&lt;br /&gt;Example:&lt;br /&gt;&lt;br /&gt;xapi:ftp id="ftp" server="localhost" user="hidden"&lt;br /&gt;password="hidden"&lt;br /&gt;remote-directory="/Users/ike/Desktop/Mallika/"&lt;br /&gt;remote-file="ftp_${TRX_NUMBER}_%y.%m.%d.%S" secure-ftp="false"&lt;br /&gt;xapi:ftp&lt;br /&gt;&lt;br /&gt;[ASYNC_TIMEOUT:Integer] [86400000]&lt;br /&gt;[HOST:String] [localhost]&lt;br /&gt;[RETRY:Integer] [0]&lt;br /&gt;[ASYNC_CHECK_INTERVAL:Integer] [60000]&lt;br /&gt;[TEMP_FILE_SUFFIX:String] [.tmp]&lt;br /&gt;[USERNAME:String] [hidden]&lt;br /&gt;[PASSWORD:String] [*******]&lt;br /&gt;[TEMP_FILE_PREFIX:String] [dlvr]&lt;br /&gt;[FTP_REMOTE_DIRECTORY:String] [/Users/ike/Desktop/Mallika/]&lt;br /&gt;[FTP_REMOTE_FILENAME:String] [ftp_1537394_%y.%m.%d.%S]&lt;br /&gt;[RETRY_INTERVAL:Integer] [60000]&lt;br /&gt;&lt;br /&gt;[121909_020451288][oracle.apps.xdo.delivery.ftp.FTPDeliveryRequestHandler][STATEMENT] submitRequest(): Opening connection : [localhost][21][hidden][****][/Users/ike/Desktop/Mallika/][ftp_1537384_2009.12.19.51][true]&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Question&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;: &lt;/span&gt;Is xdodelivery.cfg supported for Bursting?&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Answer: &lt;/span&gt;&lt;span&gt;Although, I have never tried it, &lt;/span&gt;&lt;span&gt;I suspect it is.&lt;/span&gt;&lt;span&gt;  If you do try it let me know.&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;Jan-15-2010:  xdodelivery.cfg is supported&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Question&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;: &lt;/span&gt;Is xdodelivery.cfg supported for the Bursting Designer?&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Answer: &lt;/span&gt;&lt;span&gt;No.  If I ever decide to support it, I will create a property on the properties tab.&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;Jan-15-2010:  xdodelivery.cfg is supported in the Bursting Designer&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Question&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;: &lt;/span&gt;Does Bursting support custom delivery channels?&lt;br /&gt; &lt;span style="font-weight: bold;"&gt;Answer: &lt;/span&gt;&lt;span&gt;No.  Would it be possible for oracle to do this?  Absolutely, but not many organizations need this functionality.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;POST A QUESTION&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;If you have questions about the Bursting Designer or if you find a bug please post a question on this blog.  &lt;/span&gt;Please no cross posting and make sure the question matches the topic.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5406107793530126650-45245432281315528?l=bipublisher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bipublisher.blogspot.com/feeds/45245432281315528/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5406107793530126650&amp;postID=45245432281315528' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/45245432281315528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/45245432281315528'/><link rel='alternate' type='text/html' href='http://bipublisher.blogspot.com/2009/12/bi-publisher-troubleshooting-bursting.html' title='BI Publisher: Troubleshooting Bursting'/><author><name>Ike Wiggins</name><uri>http://www.blogger.com/profile/03629933955296401382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_tbV38YrrIv4/RxgXvw8IBwI/AAAAAAAAAAw/lgP6jbAaB2M/s320/ike.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5406107793530126650.post-812035834485045269</id><published>2009-12-15T21:01:00.000-08:00</published><updated>2010-04-22T20:58:35.278-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Bursting'/><category scheme='http://www.blogger.com/atom/ns#' term='Bursting Designer'/><title type='text'>BI Publisher:  Bursting Designer Version 1.0</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Whats new in the Bursting Designer?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The Bursting Designer has moved out of the beta phase!  Version 1.0 is here and includes the following enhancements:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;FTP and Secure FTP (depends on the patch level)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Webdav&lt;/li&gt;&lt;li&gt;Key support&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Latest Version of BIP Libraries&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Memory Adjustment&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;So if you have written a Bursting Listener to FTP files you no longer have to do that anymore. You now can FTP reports in seconds with Oracle's Bursting Engine and the Bursting Designer!  A lot of developers are not aware of the fact that BI Publisher Bursting supports FTP.  I can't confirm it but I think FTP is an undocumented feature for burst control files.  Will have to ask Leslie Studdard from oracle if that's the case or not, she's got people and the answers.&lt;br /&gt;&lt;br /&gt;What about Webdav?  Thats another option in the Bursting Designer.  Webadv is really not a utilized feature but a powerful one.  A developer could use a sharepoint portal to create a report repository or pseudo reporting dashboard.  I've never had the request for it but when I do I know the Bursting Designer should do the trick!&lt;br /&gt;&lt;br /&gt;Key support is available, finally!  The beta version was working off of the 5.6.2 version.  Version 1.0 works off of BIP 5.6.3 (patch 6241631) .  Developers don't have to rollback to old version when creating control files.  Also, developers are working with the latest APIs for BI Publisher (11.5.10.2).   Should be close enough for R12 developers too!&lt;br /&gt;&lt;br /&gt;Run time memory options have also changed for the Bursting Designer.  Most developers didn't experience issues with the with web start application but some did :-(  The developers that had problems had out-dated hardware.    If you don't have less than 256 megs of ram that is so 1999 and you need to get with the program (literally) and get a modern machine.  I've changed the app to use -Xms256m -Xmx512m instead of -Xms512m -Xmx1024m.  Funny story, back in 1999 I begged my father to give me some coin so I could pick up some ram to make my machine have 128 megs of ram.  Back then, 128 megs was the shizzle and I was ridding high on the hog.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Future Functionality&lt;/span&gt;&lt;br /&gt;There are some features that are still being developed below is a list:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;XDO uri support&lt;/li&gt;&lt;li&gt;Request Removal &lt;span style="font-style: italic;"&gt;*Manually edit the  burst control file to remove a request&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;File Browsing for File Delivery and Template Fields&lt;/li&gt;&lt;/ul&gt;&lt;span&gt;If you would like to request an enhancement please feel free to post a question on this blog. Also, If you would like to participate in the development of the Bursting Designer contact me via e-mail.  To date I have had no developers volunteer.  If you do help out, you'll be elite like a level 3 black sage*&lt;br /&gt;&lt;br /&gt;*I went to go get a hair-cut at a salon once (it was proximity thing).  The stylist told me that they had there "level 2" people on and it would cost 40.00.  I'm a dude, dudes don't need a $40.00 hair cut.  Anyways, I responded with "Can you ask your level 2 people to see if they can cut me a deal.  I'm a level 3 black sage and I can guarantee safe passage through the mushroom forest."  Needless to say the stylist did not responsed to my request.  It's easy to understand why, if I were in her shoes looking a level 3 black sage I would be spooked or &lt;/span&gt;&lt;span&gt;maybe I would just blew a funny fuse.&lt;/span&gt;&lt;span&gt;  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Bursting Designer &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Download &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Site&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;*Desupported 04.22.2010 - please  use the BI Publisher Toolbox.&lt;/span&gt;&lt;br /&gt;&lt;a href="http://web.me.com/beth.wiggins/ike/bipublisher/BurstDesignerDist/launch.html"&gt;Bursting Designer&lt;/a&gt; - By clicking on the download link you will be redirected to a different site.  The bursting designer is java webstart application.  Java 6 is required to run this application.  It's recommended to bookmark this particular blog and the download site.  This is because you will need to use these links every time you wish to run the Bursting Designer or find news about updates. It's technically not a requirement to use the webstart application for the java savvy developers but in doing so you will miss out on future updates and releases.  It's important to note the Bursting Designer jar files will be loaded on your machine.  This allows for a significant increase in performance.  If you need to remove this application for some reason, go to add/remove applications.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;IMPORTANT:  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;If you have questions about the Bursting Designer or if you find a bug please post a question on this blog. If you do not post your comment on this post, I will reject your comment. I've had some complaints in recent months that it's hard to find answers on my blog because of cross post Q&amp;amp;A. If you e-mail me a question about the Bursting Designer be forewarned, I may ask you to post your question on this post. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Also, The source code is available for the Bursting Designer upon request. Note: You cannot sell, copyright, distribute or reproduce the software without the express written consent of Ike Wiggins. &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5406107793530126650-812035834485045269?l=bipublisher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bipublisher.blogspot.com/feeds/812035834485045269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5406107793530126650&amp;postID=812035834485045269' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/812035834485045269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/812035834485045269'/><link rel='alternate' type='text/html' href='http://bipublisher.blogspot.com/2009/12/bi-publisher-bursting-designer-version.html' title='BI Publisher:  Bursting Designer Version 1.0'/><author><name>Ike Wiggins</name><uri>http://www.blogger.com/profile/03629933955296401382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_tbV38YrrIv4/RxgXvw8IBwI/AAAAAAAAAAw/lgP6jbAaB2M/s320/ike.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5406107793530126650.post-1594271367960851366</id><published>2009-10-30T09:20:00.000-07:00</published><updated>2011-06-15T10:23:09.929-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BIPublisherIDE'/><category scheme='http://www.blogger.com/atom/ns#' term='BI Publisher ToolBox'/><title type='text'>BI Publisher ToolBox</title><content type='html'>Ever wished that using the Oracle BI Publisher APIs could be easier to use? Ever wanted a single-click template load application for EBS Template Builder? Ever wanted to be able to test your reports with a single click? Look no further! These features and many more are provided in the BI Publisher ToolBox, a free configuration management tool I created for &lt;a class="bodylink" href="http://www.oracle.com/technology/products/xml-publisher/index.html"&gt;Oracle BI Publisher &lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The BI Publisher ToolBox is the predecessor to the &lt;a href="http://bipublisher.blogspot.com/search/label/BIPublisherIDE"&gt; BIPublisherIDE&lt;/a&gt;.  It's another application, I've written to help supplement BI Publisher Development.  To learn more about how this free utility can make running Oracle BI Publisher reporting components incredibly easy click the link below. &lt;a href="http://www.oracle.com/technetwork/articles/wiggins-bipublisher-085427.html"&gt;OTN Tech Article: Getting Started with BI Publisher ToolBox&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Like the other applications I've written, the Toolbox is a 100% java.  If you don't have JRE 1.6 installed you need to do so (click &lt;span style="text-decoration: underline;"&gt; &lt;/span&gt;&lt;a href="http://jdl.sun.com/webapps/getjava/BrowserRedirect?locale=en&amp;amp;host=www.java.com:80"&gt;here&lt;/a&gt;).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5406107793530126650-1594271367960851366?l=bipublisher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bipublisher.blogspot.com/feeds/1594271367960851366/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5406107793530126650&amp;postID=1594271367960851366' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/1594271367960851366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/1594271367960851366'/><link rel='alternate' type='text/html' href='http://bipublisher.blogspot.com/2009/10/bi-publisher-toolbox.html' title='BI Publisher ToolBox'/><author><name>Ike Wiggins</name><uri>http://www.blogger.com/profile/03629933955296401382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_tbV38YrrIv4/RxgXvw8IBwI/AAAAAAAAAAw/lgP6jbAaB2M/s320/ike.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5406107793530126650.post-4589925771197680816</id><published>2009-10-13T08:00:00.000-07:00</published><updated>2009-10-20T17:59:54.315-07:00</updated><title type='text'>Oracle Open World</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Open World is a blast!  &lt;/span&gt;&lt;br /&gt;It has been great putting names with faces!   Met up with fellow bippers yesterday:  Cory Keogh (from Gallup and fellow presenter), Pradeep Sharma, Noelle Bartlam, Klaus Fabian, Leslie, Osama Elkady and Mike Donahue.  Fun crowd!&lt;br /&gt;&lt;br /&gt;A little known fact about the infamous Klaus. Ever heard of a pink elephant gift?  Klaus has taken this to a whole new level with the pink iPhone.  Rumor has it  Klaus got a very good deal on this phone, from a disgruntled husband who got his wife’s &lt;span style="font-weight: bold; color: rgb(255, 204, 204);"&gt;pink phone&lt;/span&gt;.   Classic example of checking your pride at the door or a possible lack of shame; regardless Klaus mantra, it’s all about the technology, pink it’s the color of passion!  &lt;span style="font-style: italic; color: rgb(255, 204, 204); font-weight: bold;"&gt;Correction:  It's a pink razor. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Also, met up briefly with &lt;a href="http://garethroberts.blogspot.com/"&gt;Gareth Roberts&lt;/a&gt;.  He's working the press scene here at Open World and answering BIP questions.  If you get a chance, say hi but I warn you everything is on the record :-)&lt;br /&gt;&lt;br /&gt;Wondering what’s new with Oracle Business Intelligence Publisher for Oracle Applications? If you get a chance check out Noelle Bartlam session, she’ll give you the low down on how to use BIP across platforms.  Check it out!  &lt;span style="font-style: italic;"&gt;The reporting platform for Applications:  Oracle Business Intelligence Publisher (S309970).  The session covers implementations of Oracle Business Intelligence Publisher in Oracle E-Business Suite; Oracle’s Siebel Customer Relationship Management, PeopleSoft, and JD Edwards products; and other Oracle Applications.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;What’s hot?  How about the HTTP Analyzer!  Don’t know about this hidden gem in JDeveloper11g?  It’s a great tool that allows developers to easily create and test existing web services.  If you ever wanted to test out the web service or build one from scratch this is the ticket!   Went to the &lt;span style="font-weight: bold;"&gt;"Hands-on Lab: Web Services Development and Consumption with Oracle JDeveloper"&lt;/span&gt; and did three different exercises in 45 min.  I walked away with a really good understanding of the tool.  If you’re at open world, I would highly recommend this session or similar sessions.  If you not at open world or would like to take a quick tutorial click &lt;a href="http://www.oracle.com/technology/obe/obe1013jdev/10131/devdepandmanagingws/devdepandmanagingws.htm"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5406107793530126650-4589925771197680816?l=bipublisher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bipublisher.blogspot.com/feeds/4589925771197680816/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5406107793530126650&amp;postID=4589925771197680816' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/4589925771197680816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/4589925771197680816'/><link rel='alternate' type='text/html' href='http://bipublisher.blogspot.com/2009/10/oracle-open-world.html' title='Oracle Open World'/><author><name>Ike Wiggins</name><uri>http://www.blogger.com/profile/03629933955296401382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_tbV38YrrIv4/RxgXvw8IBwI/AAAAAAAAAAw/lgP6jbAaB2M/s320/ike.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5406107793530126650.post-516413942977448520</id><published>2009-09-20T07:00:00.000-07:00</published><updated>2009-09-26T09:23:29.494-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Bursting'/><category scheme='http://www.blogger.com/atom/ns#' term='Bursting Designer'/><title type='text'>BI Publisher:  Bursting Designer</title><content type='html'>&lt;span style="font-weight: bold;"&gt;What is the Bursting Designer?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The bursting designer is a new application that allows developers to build, run and test burst control files (see Figure 1).  Developers of all skill levels can now implement bursting easily!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Why use the Bursting Designer?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The Bursting Designer will enhance your productivity significantly and make your  bursting development easier.  Below is a high-level list of benefits the tool provides:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Minimal knowledge is needed to build a configuration&lt;/li&gt;&lt;li&gt;Build a burst control file in minutes &lt;/li&gt;&lt;li&gt;Preview a burst control file as it's being built (See Figure 2)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Test the burst control file (See Figure 3)&lt;/li&gt;&lt;li&gt;Review/Analyze your delivery channels&lt;/li&gt;&lt;li&gt;View errors or troubleshoot misconfiguration&lt;/li&gt;&lt;li&gt;It's free!&lt;/li&gt;&lt;/ul&gt; &lt;span style="font-weight: bold;"&gt;Getting Started&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Below is a list of video tutorials.  It's recommend that developers of all skill levels review each video before trying to create a control file.  This is especially true for rookie's.  The video's are fast paced so you may need to pause or replay them to get the full value.  This is especially true for the Bursting Designer Features.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Video Tutorials - Quicktime Required&lt;/span&gt;&lt;br /&gt;&lt;a href="http://web.me.com/beth.wiggins/ike/bipublisher/BurstDesignerDist/BurstingDesignerFeatures.m4v"&gt;Bursting Designer Features&lt;/a&gt;&lt;br /&gt;&lt;a href="http://web.me.com/beth.wiggins/ike/bipublisher/BurstDesignerDist/BurstingDesignerLesson_1.m4v"&gt;Bursting Designer Lesson 1 - What is Bursting&lt;/a&gt;&lt;br /&gt;&lt;a href="http://web.me.com/beth.wiggins/ike/bipublisher/BurstDesignerDist/BurstingDesignerLesson_2.m4v"&gt;Bursting Designer Lesson 2 - Creating a Burst Control File&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Bursting Designer &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Download &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Site&lt;/span&gt;&lt;br /&gt;&lt;a href="http://web.me.com/beth.wiggins/ike/bipublisher/BurstDesignerDist/launch.html"&gt;Bursting Designer&lt;/a&gt; - By clicking on the download link you will be redirected to a different site.  The bursting designer is java webstart application.  Java 6 is required to run this application.  It's recommended to bookmark this particular blog and the download site.  This is because you will need to use these links every time you wish to run the Bursting Designer or find news about updates. It's technically not a requirement to use the webstart application for the java savvy developers but in doing so you will miss out on future updates and releases.  It's important to note the Bursting Designer jar files will be loaded on your machine.  This allows for a significant increase in performance.  If you need to remove this application for some reason, go to add/remove applications.&lt;br /&gt;&lt;br /&gt;This is a beta release of the Bursting Designer.  There are some features that are still being developed below is a list:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;XDO uri support&lt;/li&gt;&lt;li&gt;Request Removal &lt;span style="font-style: italic;"&gt;*Manually edit the  burst control file to remove a request&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;File Browsing for File Delivery and Template Fields&lt;/li&gt;&lt;/ul&gt;&lt;span&gt;If you would like to request an enhancement please feel free to post a question on this blog.  Also, If you would like to participate in the development of the Bursting Designer contact me via e-mail.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Updates/Bug Fixes&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;Request Removal is now fixed.  Before removing a request make sure it's the selected one,  the selected one gets removed.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Figure 1:&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tbV38YrrIv4/SrZFZe27eYI/AAAAAAAAAFE/8QaPcaDJ0BE/s1600-h/bursting_designer_main_Screen.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 293px;" src="http://1.bp.blogspot.com/_tbV38YrrIv4/SrZFZe27eYI/AAAAAAAAAFE/8QaPcaDJ0BE/s400/bursting_designer_main_Screen.png" alt="" id="BLOGGER_PHOTO_ID_5383566708650506626" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Figure 2:&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tbV38YrrIv4/SrZFZ_Bxy1I/AAAAAAAAAFM/x--ooSMKQ7g/s1600-h/bursting_designer_preview_screen.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 225px;" src="http://1.bp.blogspot.com/_tbV38YrrIv4/SrZFZ_Bxy1I/AAAAAAAAAFM/x--ooSMKQ7g/s400/bursting_designer_preview_screen.png" alt="" id="BLOGGER_PHOTO_ID_5383566717285944146" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Figure 3:&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tbV38YrrIv4/SrZFaZShOYI/AAAAAAAAAFU/FX7Q8xdz4oc/s1600-h/bursting_designer_request_tree.pg.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 293px;" src="http://3.bp.blogspot.com/_tbV38YrrIv4/SrZFaZShOYI/AAAAAAAAAFU/FX7Q8xdz4oc/s400/bursting_designer_request_tree.pg.png" alt="" id="BLOGGER_PHOTO_ID_5383566724335483266" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;IMPORTANT:  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;If you have questions about the Bursting Designer or if you find a bug please post a question on this blog.  If you do not post your comment on this post, I will reject your comment.  I've had some complaints in recent months that it's hard to find answers on my blog because of cross post Q&amp;amp;A.  If you e-mail me a question about the Bursting Designer be forewarned, I may ask you to post your question on this post.  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Also, The source code is available for the Bursting Designer upon request.  Note:  You cannot sell, copyright, distribute or reproduce the software without the express written consent of Ike Wiggins.  &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5406107793530126650-516413942977448520?l=bipublisher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bipublisher.blogspot.com/feeds/516413942977448520/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5406107793530126650&amp;postID=516413942977448520' title='48 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/516413942977448520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/516413942977448520'/><link rel='alternate' type='text/html' href='http://bipublisher.blogspot.com/2009/09/bi-publisher-bursting-designer.html' title='BI Publisher:  Bursting Designer'/><author><name>Ike Wiggins</name><uri>http://www.blogger.com/profile/03629933955296401382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_tbV38YrrIv4/RxgXvw8IBwI/AAAAAAAAAAw/lgP6jbAaB2M/s320/ike.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_tbV38YrrIv4/SrZFZe27eYI/AAAAAAAAAFE/8QaPcaDJ0BE/s72-c/bursting_designer_main_Screen.png' height='72' width='72'/><thr:total>48</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5406107793530126650.post-8300824079239552469</id><published>2009-08-09T16:52:00.000-07:00</published><updated>2009-09-26T09:42:53.582-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Format Templates'/><title type='text'>BI Publisher: Advanced Line Wrapping</title><content type='html'>&lt;span style="color: rgb(0, 102, 0);font-size:180%;" &gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;Over the years, programmatically controlling line wrapping has been a very popular topic!  There have been many requests   in the &lt;a href="http://forums.oracle.com/forums/forum.jspa?forumID=245&amp;amp;start=0"&gt;BI Publisher forum&lt;/a&gt;, this blog, or via e-mail for a solution.  Unfortunately, I wasn't able to provide a relatively simple solution until now.&lt;br /&gt;&lt;br /&gt;If your new to this issue let me run down some technical scenarios on why line wrapping causes so many headaches!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Examples&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;My company's bill of ladding only has seven lines for comments.  The comment field is stored as one text field in the database.   The text field in the database allows for 70 character but the cell on the BOL can only have 50 characters.  I need to only print what will fit on 7 lines maximum.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;or&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;I expanded my cell to support 35 characters of text without wrapping but in some rare instances it wraps with 35 character because of the font I'm using.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;or&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;My Swiss Declarations report can only print two lines on page 1 and there are several lines thereafter on the next page I can use.  The text when added needs to create a new row (Cell) in the table and simply not add a carriage return in the one cell.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It's difficult to solve any of these examples in a format template.  This is because BI Publisher does not have a string tokenizer api or something like a character array.    However we do have ways of creating similar frameworks.&lt;br /&gt;&lt;br /&gt;In order to solve the line wrapping problem were going to need to be able to do the following:&lt;br /&gt;&lt;br /&gt;1.  Have a controlled for-loop&lt;br /&gt;2. Know how many times to loop to break-up a string (iterations) into a specified length&lt;br /&gt;3.  Storing the string that's going to get broken up&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Controlled for-loop&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The for loop down below cannot be directly ported  to xsl syntax or BI Publisher.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;for-loop java&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;for(int i=1; i&amp;lt;11; i++){&lt;br /&gt;System.out.println("Count is: " + i);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;We do have some workarounds though for controlled looping. There are some quietly documented features in the development guide and some other examples that can be found on &lt;a href="http://blogs.oracle.com/xmlpublisher/"&gt;Tim Dexter blog&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;foreach_number  can be used to control how many times a for-each statement can loop.  It's may seem counter intuitive but for-loops in BI Publisher do not require an xml nodes to loop.  The following statement is valid in BI Publisher:&lt;br /&gt;&lt;br /&gt;for-each:xdoxslt:foreach_number($_XDOCTX,1,&lt;span style="font-weight: bold;"&gt;3&lt;/span&gt;,1)&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;Note:  This will loop 3 times&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;&lt;br /&gt;Iterations&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The math for figuring-out how many iterations are needed to break-up a string is pretty easy. Take the string below, if I have a cell length of 20, I can deduce the number of likely characters to fit in that cell by taking the length of the string, divided by the length of the cell.   In the text below the length is 107.        When we take 107 (text) divided by 20 (cell) equals 5 rounded iterations.&lt;br /&gt;&lt;br /&gt;"Ike likes to walk the walk and talk the talk all of the time. End result is very long sentence of text."&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Storage&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Although it's not commonly used in the BIP world,  xsl variables can be created in BI Publisher. XSL variables can be used globally in a template and or they can be used locally in an xsl template. Variables can also be re-assigned.  If you were assuming that assignment can happen multiple times, all of the time, your mistaken.   Here's the syntax break-down for creating an xsl variable:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;Example 1:  Create a variable with one value that's reset&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; in a loop&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;creating a variable:   variable&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;@incontext&lt;/span&gt;:first_line_text; substring(//LONG_STRING,1,20)&lt;br /&gt;getting the value:  &lt;/span&gt;&lt;span style="font-size:85%;"&gt;$first_line_text&lt;/span&gt;&lt;span style="font-size:85%;"&gt;  (should be "&lt;/span&gt;Ike likes to walk"&lt;span style="font-size:85%;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt; Misc Example 2:  Create a variable with one value that is the length of a field.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;creating a variable:   variable:field_length; round(string-length(string(//LONG_STRING)))&lt;br /&gt;getting the value:  $field_length  (should be 170)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;Misc Example 3&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;:  Create two variables and summing both values&lt;/span&gt;&lt;br /&gt;creating a variable:  variable: bill_only; //ORDER_LINES[QTY &gt; 10 and LINE_TYPE ='Bill Only' ]/QTY)&lt;br /&gt;creating a variable:  variable: ship_only; //ORDER_LINES[QTY &gt; 10 and LINE_TYPE ='Ship Only' ]/QTY)&lt;br /&gt;getting the value: sum($bill_only | $bill_only)  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Solution&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We now have the basic elements to create a parser utility.  The xml text that were going to breaking up is below.&lt;br /&gt;&lt;span&gt;XML Doc&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;WRAPPING&amp;gt;&lt;br /&gt;&amp;lt;LONG_STRING&amp;gt;Ike likes to walk the walk and talk the talk all of the time.&lt;br /&gt;End result is very long sentence of text.&amp;lt;/LONG_STRING&amp;gt;&lt;br /&gt;&amp;lt;LONG_STRING&amp;gt;This is some other text that will have to get parsed.&amp;lt;LONG_STRING&amp;gt;&lt;br /&gt;&amp;lt;WRAPPING&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Here's the &lt;a href="http://web.me.com/beth.wiggins/ike/bipublisher/LIMITING%20TEXT%20PER%20ROW.zip"&gt;template&lt;/a&gt; that will break it up.  Below is the code from the format template.   This template will be breaking up the text in lengths of 20.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;BIP Code:&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;?param@begin:cell_length;20?&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;?for-each:WRAPPING/LONG_STRING?&amp;gt;&lt;br /&gt; &amp;lt;?call-template: string_variables?&amp;gt;&lt;br /&gt; &amp;lt;?variable@incontext:iterations; ceiling(string-length(string(.)) div $cell_length)?&amp;gt;&lt;br /&gt; &amp;lt;?$iterations?&amp;gt;&lt;br /&gt; &amp;lt;?for-each:xdoxslt:foreach_number($_XDOCTX,1,$iterations,1)?&amp;gt;&lt;br /&gt;   &amp;lt;?call-inline-template:string_parser?&amp;gt;&lt;br /&gt; &amp;lt;?end for-each?&amp;gt;&lt;br /&gt;&amp;lt;?end for-each?&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;?template:string_variables?&amp;gt;&lt;br /&gt;&amp;lt;?xdoxslt:set_variable($_XDOCTX, 'text_string',.)?&amp;gt;&lt;br /&gt;&amp;lt;?end template?&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;?template:string_parser?&amp;gt;&lt;br /&gt;&amp;lt;?variable@incontext:start; ((position()-1)*20)+1?&amp;gt;&lt;br /&gt;&amp;lt;?variable@incontext:first_line_text; substring(xdoxslt:get_variable($_XDOCTX,  'text_string'),1, $cell_length)?&amp;gt;&lt;br /&gt;&amp;lt;?variable@incontext:line_text; substring(xdoxslt:get_variable($_XDOCTX, 'text_string'),$start, $cell_length)?&amp;gt;&lt;br /&gt;&amp;lt;?variable@incontext:last_line_text; substring(xdoxslt:get_variable($_XDOCTX,  'text_string'), $start, $cell_length)?&amp;gt;&lt;br /&gt;&amp;lt;?choose:?&amp;gt;&lt;br /&gt;&amp;lt;? When: position() = 1?&amp;gt;&lt;br /&gt;&amp;lt;?$first_line_text?&amp;gt;(FIRST LINE)&lt;br /&gt;&amp;lt;?end when?&amp;gt;&lt;br /&gt;&amp;lt;? When: position() = last()?&amp;gt;&lt;br /&gt;&amp;lt;?$last_line_text?&amp;gt;(LAST  LINE)&lt;br /&gt;&amp;lt;?end when?&amp;gt;&lt;br /&gt;&amp;lt;?otherwise:?&amp;gt;&lt;br /&gt;&amp;lt;?$line_text?&amp;gt;(REGULAR  LINE)&lt;br /&gt;&amp;lt;?end otherwise?&amp;gt;&lt;br /&gt;&amp;lt;?end choose:?&amp;gt;&lt;br /&gt;&amp;lt;?end template?&amp;gt;&lt;br /&gt;&lt;/pre&gt;This is the best solution that I could come up.   It doesn't account for the fact that specific characters may be bigger or smaller for a particular font (basically characters are not uniform).  When implementing this solution be very conservative about how many characters can fit in a cell.  I would suggest using the largest character in caps to figure-out the maximum length.&lt;br /&gt;&lt;br /&gt;I'll throw this out there too,  if anyone has a better or different way of doing it, please send me an e-mail with your solution on I'll post it on my blog with your name.&lt;br /&gt;&lt;br /&gt;Also, it's important to note that a data template with a pipelined function can be used to solve line wrapping issues.....&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;Is there topic you would like me to cover?  Post a comment and I'll see what I can do!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5406107793530126650-8300824079239552469?l=bipublisher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bipublisher.blogspot.com/feeds/8300824079239552469/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5406107793530126650&amp;postID=8300824079239552469' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/8300824079239552469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/8300824079239552469'/><link rel='alternate' type='text/html' href='http://bipublisher.blogspot.com/2009/08/bi-publisher-advanced-line-wrapping.html' title='BI Publisher: Advanced Line Wrapping'/><author><name>Ike Wiggins</name><uri>http://www.blogger.com/profile/03629933955296401382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_tbV38YrrIv4/RxgXvw8IBwI/AAAAAAAAAAw/lgP6jbAaB2M/s320/ike.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5406107793530126650.post-6934954618512622016</id><published>2009-07-29T08:50:00.000-07:00</published><updated>2009-10-01T15:05:49.129-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Font Setup'/><title type='text'>BI Publisher: Font Setup &amp; Troubleshooting</title><content type='html'>&lt;span style="color: rgb(0, 102, 0);font-size:180%;" &gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;Recently, Tim Dexter at oracle has been writing up a storm about barcode fonts implementations.   This is an overview on how to do a relatively simple installation of fonts for BI Publisher on a PC.  There are really only three steps to setting up a font for BI Publisher.   The first step is to install it in windows, the second step is configuring the font for BI Publisher (java) and the third step is troubleshooting the setup font setup.&lt;br /&gt;&lt;br /&gt;The following posts from Tim Dexter are useful as well for font setup or config:&lt;br /&gt;&lt;a href="http://blogs.oracle.com/xmlpublisher/2006/06/how_to_install_a_font_using_xm.html"&gt;How to install a font using XML Publisher Administrator?&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blogs.oracle.com/xmlpublisher/2007/07/i_want_a_default_font.html"&gt;I want a default font!&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blogs.oracle.com/xmlpublisher/2008/09/ps_font_support.html"&gt;PS Font Support?&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blogs.oracle.com/xmlpublisher/2007/05/barcoding_101.html"&gt;Barcoding 101&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Installing the new fonts in word&lt;/span&gt;&lt;br /&gt;1. Close any open Windows applications, such as Microsoft Word or Microsoft Outlook®.&lt;br /&gt;2. In Control Panel, click Appearance and Themes.&lt;br /&gt;Note:  If you are using Control Panel Classic view or Microsoft Windows 2000, double-click Fonts, and then go to step 4.&lt;br /&gt;3. In the task pane, under See Also, click Fonts.&lt;br /&gt;Note:  If a folder tree appears instead of the task pane, click Folders on the toolbar, and then under See Also, click Fonts.&lt;br /&gt;4. On the File menu, click Install New Font.&lt;br /&gt;5. In the Drives list, click the drive you want.&lt;br /&gt;6. In the Folders list, double-click the folder that contains the fonts you want to add.&lt;br /&gt;7. Under List of fonts, click the font you want to add, and then click OK.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Installing the new fonts in BI Publisher&lt;/span&gt;&lt;br /&gt;1. Locate the JRE for BI Publisher (JAVA_HOME/lib).  This can be done by going to Tools -&gt; Options, then click the preview tab.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tbV38YrrIv4/SnB0Z2_DjDI/AAAAAAAAAE8/gkEK0G20_Bg/s1600-h/BIP_OPTIONS.bmp"&gt;&lt;img style="cursor: pointer; width: 400px; height: 244px;" src="http://1.bp.blogspot.com/_tbV38YrrIv4/SnB0Z2_DjDI/AAAAAAAAAE8/gkEK0G20_Bg/s400/BIP_OPTIONS.bmp" alt="" id="BLOGGER_PHOTO_ID_5363915143803800626" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;xdo.cfg&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;config version="1.0.0" xmlns="http://xmlns.oracle.com/oxp/config/"&amp;gt;&amp;lt;!-- Properties --&amp;gt;&lt;br /&gt;&amp;lt;properties&amp;gt;&lt;br /&gt;&amp;lt;!-- System level properties    --&amp;gt;&lt;br /&gt;&amp;lt;property name="system-temp-dir"&amp;gt;c:\tmp&amp;lt;/property&amp;gt;&lt;br /&gt;&amp;lt;!-- PDF compression&lt;br /&gt;&amp;lt;property name="pdf-compression"&amp;gt;true&amp;lt;/property&amp;gt;     --&amp;gt;&lt;br /&gt;&amp;lt;!-- PDF Security&lt;br /&gt;&amp;lt;property name="pdf-security"&amp;gt;true&amp;lt;/property&amp;gt;&lt;br /&gt;&amp;lt;property name="pdf-open-password"&amp;gt;user&amp;lt;/property&amp;gt;&lt;br /&gt;&amp;lt;property name="pdf-permissions-password"&amp;gt;owner&amp;lt;/property&amp;gt;&lt;br /&gt;&amp;lt;property name="pdf-no-printing"&amp;gt;true&amp;lt;/property&amp;gt;&lt;br /&gt;&amp;lt;property name="pdf-no-changing-the-document"&amp;gt;true&amp;lt;/property&amp;gt;     --&amp;gt;&lt;br /&gt;&amp;lt;/properties&amp;gt;&lt;br /&gt;&amp;lt;!-- Font setting --&amp;gt;&lt;br /&gt;&amp;lt;fonts&amp;gt;&lt;br /&gt;&amp;lt;!-- Font setting (for FO to PDF etc...) --&amp;gt;&lt;br /&gt;&amp;lt;font family="Arial" style="normal" weight="normal"&amp;gt;&lt;br /&gt;&amp;lt;truetype path="/fonts/Arial.ttf"/&amp;gt;&lt;br /&gt;&amp;lt;/font&amp;gt;&lt;br /&gt;&amp;lt;font family="Default" style="normal" weight="normal"&amp;gt;&lt;br /&gt;&amp;lt;truetype path="/fonts/ALBANWTJ.ttf"/&amp;gt;&lt;br /&gt;&amp;lt;/font&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&amp;lt;font family="BC 3of9" style="normal" weight="normal"&amp;gt;&lt;br /&gt;&amp;lt;truetype path="C:\Program Files\Java\jre6\lib\fonts\B39R00.ttf"/&amp;gt;&lt;br /&gt;&amp;lt;/font&amp;gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!--Font substitute setting (for PDFForm filling etc...) --&amp;gt;&lt;br /&gt;&amp;lt;font-substitute name="MSGothic"&amp;gt;&lt;br /&gt;&amp;lt;truetype path="/fonts/msgothic.ttc" ttcno="0"/&amp;gt;&lt;br /&gt;&amp;lt;/font-substitute&amp;gt;&lt;br /&gt;&amp;lt;/fonts&amp;gt;&lt;br /&gt;&amp;lt;/config&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;3.  Configure the xdodebug.cfg.  This is the standard debug configuration file for BI Publisher.  xdodebug.cfg allows you to set the BI Publisher debugging level and to specify the directory where the log file should  be written.&lt;br /&gt;&lt;br /&gt;This is an example of what should be in the xdodebug.cfg&lt;br /&gt;LogLevel=STATEMENT&lt;br /&gt;LogDir=c:\tmp&lt;br /&gt;&lt;br /&gt;If you would like to know more about xdodebug.cfg file it’s available in the Oracle BI Publisher documentation or see the following metalink Note:364547.1.    Also, the following posts are good:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://bipublisher.blogspot.com/2008/09/bi-publisher-xdodebugcfg.html"&gt;BI Publisher: xdodebug.cfg troubleshooting&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blogs.oracle.com/xmlpublisher/2007/05/10/"&gt;Get Logging&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Troubleshooting the font setup&lt;br /&gt;Step 1: When you run your template and you export to rtf, the specified font should show up correctly.  If the font does not show up correctly it's because of the following issues:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;A. You may need to do barcode implementation&lt;/span&gt; &lt;span style="font-style: italic;"&gt;&lt;br /&gt;B. The font is not configured  *Most likely the issue&lt;/span&gt;&lt;br /&gt;Step 2: Run the template again, but select the output format for PDF.     If the barcode font does not show up it could be caused by the followings issues:&lt;br /&gt;&lt;br /&gt;A. Verify the font is the fonts directory under the JAVA_HOME/lib/fonts&lt;br /&gt;&lt;span style="font-style: italic;"&gt;B. Verify the path is correct.  I always use the absolute path to the font.&lt;br /&gt;Example:  C:\Program Files\Java\jre6\lib\fonts\B39R00.ttf&lt;br /&gt;C. Verify the font is being found by BI Publisher. In the example above for the xdodebug.cfg we set the log directory to C:\tmp.   Navigate to the tmp directory and open the xdo.log file.  Locate any errors that might be present.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Example error:&lt;/span&gt;&lt;br /&gt;[072909_090808562][oracle.apps.xdo.common.font.FontFactory$FontDef][ERROR] &lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;Failed to open TrueType font: /fonts/B39R00.ttf(0)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Example fix:  &lt;/span&gt;&lt;br /&gt;[072909_091211224][oracle.apps.xdo.common.font.FontFactory$FontDef][STATEMENT] &lt;span style="font-weight: bold; color: rgb(51, 51, 255);"&gt;TrueType font created: C:\Program Files\Java\jre6\lib\fonts\B39R00.ttf(0)&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5406107793530126650-6934954618512622016?l=bipublisher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bipublisher.blogspot.com/feeds/6934954618512622016/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5406107793530126650&amp;postID=6934954618512622016' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/6934954618512622016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/6934954618512622016'/><link rel='alternate' type='text/html' href='http://bipublisher.blogspot.com/2009/07/bi-publisher-font-setup-troubleshooting.html' title='BI Publisher: Font Setup &amp; Troubleshooting'/><author><name>Ike Wiggins</name><uri>http://www.blogger.com/profile/03629933955296401382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_tbV38YrrIv4/RxgXvw8IBwI/AAAAAAAAAAw/lgP6jbAaB2M/s320/ike.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_tbV38YrrIv4/SnB0Z2_DjDI/AAAAAAAAAE8/gkEK0G20_Bg/s72-c/BIP_OPTIONS.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5406107793530126650.post-3354786104632904903</id><published>2009-06-19T18:13:00.000-07:00</published><updated>2009-09-26T09:43:15.538-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Format Templates'/><title type='text'>BI Publisher:  Conditionally Limiting Rows on a Page</title><content type='html'>&lt;span style="color: rgb(0, 102, 0);font-size:180%;" &gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;Recently, I've been getting quite a few questions about row manipulation. Besides the solution posted here there are two really good examples for developers to look at that Tim Dexter at oracle created.&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;Tim D. Examples&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://blogs.oracle.com/xmlpublisher/2008/02/across_not_down.html"&gt;Across not Down!&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.oracle.com/xmlpublisher/2007/12/multi_column_row_woes.html"&gt;Multi Column Row Woes &lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;&lt;span style="font-weight: bold;"&gt;Question&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-style: italic;"&gt;Hello Iceman,&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;I came across your posts on internet.  I have trouble with a BI publisher report presentation and was hoping to get a quick answer from you.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;I have a query result (4 simple columns) that could result records anywhere between 10 to 70.  There is no grouping in this query and it is flat.  I have a requirement to show 15 records in each page.  Since, I have used  syntax, it is showing about 22 records per page in the pdf report.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Is there a parameter in for-each element to limit the number of rows per page in the report?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Thanks in advance,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Srinath Sura&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;The question that Sirnath posed is quite common.  It's not atypical for a business to specify the amount of lines they want to be displayed on a customer facing document (invoice, packing slip, etc). Fortunately, Srinath is not being asked to account for the number of printed lines.  That gets tricky because we would have to account for line wrapping.  The solution here does not account for line wrapping.  If their is interest in seeing how one would go about doing that, post a comment.&lt;br /&gt;&lt;br /&gt;In order to tackle Srinath problem were going to have to use two bip functions:  position() and mod.&lt;br /&gt;&lt;br /&gt;For those of you new to xpath or xsl, position() is the current position in a for-each loop.  For each iteration the position is incremented by one automatically. Typically, position does not need to be used in most Xpath operations.&lt;br /&gt;&lt;br /&gt;Modulus is a basic mathematical function that  divides a number and returns the reminder.  It's usefullness is not strictly limited to mathematical applications.  As an example, if you have ever written program that creates a Gregorian calendar you have used modulus.   Anyways, it's also a valuable function in bip as we will see shortly.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Pseudo Code&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; Solution&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;If position() mod 15 = 0 then&lt;br /&gt;  Use bip section break&lt;br /&gt;End if&lt;br /&gt;&lt;/pre&gt; &lt;span style="font-weight: bold;"&gt;BIP Solution&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;?for-each@section:DEPT?&amp;gt; &amp;lt;?//NAME?&amp;gt;&lt;br /&gt;&amp;lt;?../DEPT_NAME?&amp;gt;&lt;br /&gt;&amp;lt;?for-each:EMPLOYEE?&amp;gt;&lt;br /&gt;  Name:  &amp;lt;?ENAME?&amp;gt;   Salary: &amp;lt;?SAL?&amp;gt;&lt;br /&gt;  &amp;lt;?if: position() mod 3 = 0?&amp;gt;&lt;br /&gt;      PAGE BREAK APPLIED&lt;br /&gt;      &amp;lt;?split-by-page-break:?&amp;gt;&lt;br /&gt;  &amp;lt;?end if?&amp;gt;&lt;br /&gt;&amp;lt;?end for-each?&amp;gt;&lt;br /&gt;&amp;lt;?end for-each?&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Pretty simple solution huh!  All we have to do is test if the position is divisible by 15, if it's not then we do nothing, otherwise, we do a page-break.&lt;br /&gt;&lt;br /&gt;Download the limiting 3 rows per page &lt;a href="http://web.me.com/beth.wiggins/ike/bipublisher/Limiting%203%20employee%20rows%20to%20a%20page.zip"&gt;example&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Up and coming posts:&lt;/span&gt;  Webservices Mayhem&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5406107793530126650-3354786104632904903?l=bipublisher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bipublisher.blogspot.com/feeds/3354786104632904903/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5406107793530126650&amp;postID=3354786104632904903' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/3354786104632904903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/3354786104632904903'/><link rel='alternate' type='text/html' href='http://bipublisher.blogspot.com/2009/06/bi-publisher-conditionally-limiting.html' title='BI Publisher:  Conditionally Limiting Rows on a Page'/><author><name>Ike Wiggins</name><uri>http://www.blogger.com/profile/03629933955296401382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_tbV38YrrIv4/RxgXvw8IBwI/AAAAAAAAAAw/lgP6jbAaB2M/s320/ike.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5406107793530126650.post-4213202818362792180</id><published>2009-05-10T19:53:00.000-07:00</published><updated>2009-09-26T09:42:43.888-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BIP Conversion'/><category scheme='http://www.blogger.com/atom/ns#' term='Reports6i to BIP Conversion Utilities'/><title type='text'>BI Publisher:  Reports6i to BIP Conversion Utilities</title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;&lt;span style="color: rgb(0, 102, 0);"&gt;&lt;/span&gt;&lt;/span&gt;Currently, many organizations and developers would really like to make the leap to BI Publisher. One potential option to ease into the BIP tool set is to convert some relatively simple reports6i reports.&lt;br /&gt;&lt;br /&gt;There are two ways to do the conversion. Manually do it (see links below) or use the BIP Conversion Utilities. &lt;blockquote&gt;&lt;a href="http://download.oracle.com/docs/cd/E10415_01/doc/bi.1013/e10416/convertrpts.htm"&gt;Oracle OBIEE Documentation&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blogs.oracle.com/xmlpublisher/files/RDFtoBIP.zipped"&gt;RDFtoBIP.zipped&lt;/a&gt;&lt;/blockquote&gt;Doing it manually without a GUI is a good option but it's more time consuming because there is less automation and it doesn't really tell you where your at in the conversion process. Using the BIP conversion utilities is really the way to go though because of it's simplicity. It reminds me of quote by Walter Chrysler &lt;blockquote&gt;"Whenever there is a hard job to be done, I assign it to a lazy man; he is sure to find an easy way of doing it."&lt;/blockquote&gt;It's refreshingly easy to do the conversion using the BIP Conversion Utilities and extremely fast. Here are the main advantages of using them:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;BIP technical expertise is not required for the conversion&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Complete automation from start to finish&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-style: italic;"&gt;Download the tutorial video&lt;/span&gt;&lt;/span&gt; &lt;strong&gt;&lt;em&gt;(Quicktime)&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://web.me.com/beth.wiggins/ike/bipublisher/ReportConversion/ReportConversion.mp4"&gt;&lt;img id="BLOGGER_PHOTO_ID_5334706939571825922" style="width: 48px; cursor: pointer; height: 48px;" alt="" src="http://2.bp.blogspot.com/_tbV38YrrIv4/SgivsnH9bQI/AAAAAAAAAE0/MGsO7Yz8n-c/s400/quicktime-48x48.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-style: italic;"&gt;Download the code&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://web.me.com/beth.wiggins/ike/bipublisher/ReportConversion/ReportConversion.zip"&gt;&lt;img id="BLOGGER_PHOTO_ID_5334706934263315810" style="width: 48px; cursor: pointer; height: 48px;" alt="" src="http://3.bp.blogspot.com/_tbV38YrrIv4/SgivsTWT_WI/AAAAAAAAAEs/B7rD7TvFxTQ/s400/binary-48x48.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;*By downloading the software you agree that you will not sell or license the BIP conversion Utilities. It's free software for everyone to use capiche.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Instructions&lt;br /&gt;&lt;/span&gt;Step 1 : Extract the zip&lt;br /&gt;Step 2: Navigate to directory to the bin directory (ReportConversion-&gt;bin)&lt;br /&gt;Step 3: Copy the batch the dos batch file to the directory where you will be converting your reports6i binary to xml. Double click to run.&lt;br /&gt;Step 4: Run the ReportConversion.exe (ReportsConversion-&gt;bin, do not move the executable)&lt;br /&gt;Step 5. Click the folder icon&lt;br /&gt;Step 6. Navigate to your conversion directory. Select the files named .rdf.xml&lt;br /&gt;Step 7. Click process button.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Report Conversion FAQ&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Q. &lt;/span&gt;I need to have reports9i installed on the apps server in order to do the conversion.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A. &lt;/span&gt;This is the number one misconception about the conversion process. &lt;span style="font-weight: bold;"&gt;&lt;/span&gt;I have heard a lot of developers say they don't have 10g setup in there apps server environment, so they will have to wait until release 12. In reality all a developer needs to do is install forms and reports 10g locally on there PC. Also, it's possible to have multiple versions oracle forms and reports installed on a PC, just be sure to create a new home for each installation.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Q. &lt;/span&gt;The conversion has to take place in unix; it must be done from the command line.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A. &lt;/span&gt;Because BIP is written in java it allows the conversion APIs to run anywhere there is a JVM. To resolve this issue you need to grab the BIP jar files. The BIP jar files are included with the conversion utility so there is no need to worry.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Q. &lt;/span&gt;The reports6i Binary to XML conversion is a manual process and I have to manually key everything into rwconverter.exe.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A. &lt;/span&gt;A dos batch or shell script can be written to accomplish this task. A dos batch script is included with the code.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Q. &lt;/span&gt;The conversion is time consuming.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A. &lt;/span&gt;It's remarkable fast. The conversion utility is running so fast (30 seconds) that it was very difficult to add an voice over for each clip step in the process. As a matter of fact, the video was extended by nearly a minute to allow for a voice over.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Q. &lt;/span&gt;The conversion is flawless.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A. &lt;/span&gt;Definitely not. The conversion has some known issues: format triggers, bind variables, etc that don't port (there is a log that can be reviewed after the conversion)! You can find more about those issues on this blog, &lt;a href="http://blogs.oracle.com/xmlpublisher/"&gt;Tim Dexter blog at oracle&lt;/a&gt; or if your feeling lucky you can convert your reports and see for yourself. The utility does a really good job but there is no magic bullet.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5406107793530126650-4213202818362792180?l=bipublisher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bipublisher.blogspot.com/feeds/4213202818362792180/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5406107793530126650&amp;postID=4213202818362792180' title='37 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/4213202818362792180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/4213202818362792180'/><link rel='alternate' type='text/html' href='http://bipublisher.blogspot.com/2009/05/bi-publisher-reports6i-to-bip.html' title='BI Publisher:  Reports6i to BIP Conversion Utilities'/><author><name>Ike Wiggins</name><uri>http://www.blogger.com/profile/03629933955296401382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_tbV38YrrIv4/RxgXvw8IBwI/AAAAAAAAAAw/lgP6jbAaB2M/s320/ike.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_tbV38YrrIv4/SgivsnH9bQI/AAAAAAAAAE0/MGsO7Yz8n-c/s72-c/quicktime-48x48.png' height='72' width='72'/><thr:total>37</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5406107793530126650.post-7209217875500144599</id><published>2009-03-09T06:05:00.000-07:00</published><updated>2009-09-26T09:22:03.796-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Charts'/><title type='text'>BI Publisher:  Charts tips and tricks</title><content type='html'>The purpose of this post is a tips and tricks guide that explains effective and efficient ways of designing custom charts with BIP and BI Beans.  When possible it's always preferable to use Oracle Charting Wizard in the Word plug-in.  However if their is a requirement to do conditional logic or dynamic logic, the charting wizard was not designed for this.  In this case you would have to manually manipulate the chart xml.&lt;br /&gt;&lt;br /&gt;Before getting started on manually manipulating a chart xml file your going to needs some tools and resources.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 153, 0);"&gt;Tools and Resources:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1.  Use an XML Editor.  Do not use Microsoft word to edit the chart xml.  When you edit it in MSword your much more likely to make syntax errors, and there is no validation that your xml is syntactically correct.  I highly recommend XML Pad as editor:  http://www.wmhelp.com/&lt;br /&gt;&lt;br /&gt;2.  Get the chart DTD from oracle.  While an XSD is eaiser to use than DTD, it's still better than the alternative which is nothing.  The charting DTD is an excellent resource that gets passed over by most developers.   Below are two links which should be helpful in your charting endeavors.  The first one is Oracle Reports Graphing Faq and the second is the DTD.  Note:  You will need to copy the dtd and paste it in a file to use it with XML Pad.&lt;br /&gt;&lt;br /&gt;I highly recommend reading the Oracle Reports Technical FAQ for graphs. This document is a hidden gem for setting and creating particular properties of a graph. As an example, I was able to find an obscure information like getting a reference line in a graph.  I wouldn't have even been able to guess that this was an option by looking at the graph.dtd&lt;br /&gt;&lt;br /&gt;http://www.oracle.com/technology/products/reports/htdocs/faq/Graph_FAQ_with_style.html&lt;br /&gt;http://www.oracle.com/technology/products/reports/htdocs/getstart/whitepapers/graphdtd/graph_dtd_technote_2.html&lt;br /&gt;&lt;br /&gt;When developers look at the graphing DTD, it seems like it's an impossible document to read and understand.  In reality their is no need to understand the DTD.  The real purpose of DTD is to assign it to an XML document.  When it's assigned your xml editor will validate to make sure your creating a valid structure.  The editor will also highlight available attributes for the applicable xml elements.  This is one of the most important features of assigning the DTD because the heavy lifting is done automatically for you ie: the editor determines the required elements and attributes.&lt;br /&gt;&lt;br /&gt;To assign a DTD in XML Pad go to the menu: XML-&gt;Assign Schema/DTD.  See that wasn't to bad now was it!  Now you should be good to go.  Below is a screen shot (sorry for the blurriness, blame blogger, click it to view the whole image) . Notice to the left side of the screen there is a list of properties available.  This is the benefit of assigning a DTD.  When I clicked on a series line I was able to see all of the available attributes.  It gets better though, when I clicked on the markerShape field, a drop down was provided with all the available shapes.  Nice...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tbV38YrrIv4/SbkV2HwBTUI/AAAAAAAAAEE/AMpTYW90BaE/s1600-h/XML_Screen_Shot.jpg"&gt;&lt;img style="cursor: pointer; width: 667px; height: 171px;" src="http://1.bp.blogspot.com/_tbV38YrrIv4/SbkV2HwBTUI/AAAAAAAAAEE/AMpTYW90BaE/s400/XML_Screen_Shot.jpg" alt="" id="BLOGGER_PHOTO_ID_5312301254997790018" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3.  Use Oracle’s template viewer.   This tool is another hidden gem and it’s extremely useful for debugging your format template charting issues.   The tool can be found in the bi publisher directory in your program files.  When running the template viewer be sure to change the “log (debug) level” on the Settings Tab to “STATEMENT” before running the template. As an example, I was able to figure-out a string comparison was being done to a number and the xml element could not be found because it was being treated as a literal string.&lt;br /&gt;&lt;blockquote&gt;Caused by: java.lang.NumberFormatException: For input string: ".//P_ACTIVE_ENGAGEMENT_RATE"&lt;/blockquote&gt;Also, did you know that the template viewer is capable of running in any environment that has the jre?   Below is an example the template viewer on my mac.  All one would need to do is use the Mac OS X jar bundler and you can have this baby up and running in no time....perhaps a topic for another post :-)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_tbV38YrrIv4/SblS9RhSuzI/AAAAAAAAAEM/JlVenwvVlBc/s1600-h/BIP+on+Mac+OS+X.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 187px;" src="http://3.bp.blogspot.com/_tbV38YrrIv4/SblS9RhSuzI/AAAAAAAAAEM/JlVenwvVlBc/s400/BIP+on+Mac+OS+X.jpg" alt="" id="BLOGGER_PHOTO_ID_5312368448088750898" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 153, 0);"&gt;Questions and Answers&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This section contains some of the most common questions I have been asked.   I tried to put in actual examples so it makes more sense.  If you would like to ask a charting question please leave a comment and I'll see what I can do.&lt;br /&gt;&lt;br /&gt;Q.  Can I do &lt;span style="font-style: italic;"&gt;if&lt;/span&gt; statements in charts.&lt;br /&gt;A.  Yes, remember this is xsl and you have to use that syntax over bip syntax.&lt;br /&gt;&lt;br /&gt;Q.  Can I do &lt;span style="font-style: italic;"&gt;choose&lt;/span&gt; statements in charts.&lt;br /&gt;A.  Yes, remember this is xsl and you have to use that syntax over bip syntax.     (See Example 1)&lt;br /&gt;&lt;br /&gt;Q.  Can I use xsl variables.&lt;br /&gt;A.  Yes     (See Example 1)&lt;br /&gt;&lt;br /&gt;Q.  Do I have to use for-each-group for row data.&lt;br /&gt;A. No .  This is a common mistake that people think they have to group the data always.  The only reason to group the data would be if you need to aggregate it.  If your data is aggregated or you can use xpath with the sum function then the answer is always no.     (See Example 1)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Example 1&lt;/span&gt;: Get the current month sales, using an xsl variable and default it to zero if there is no data for the month.&lt;br /&gt;&lt;textarea name="comments" cols="70" rows="10"&gt;&amp;lt;RowData&amp;gt;                                                                      &amp;lt;xsl:for-each select="MONTHS"&amp;gt;                                        &amp;lt;xsl:sort select="current()/MONTH_ORDER" data-type="number" order="descending"&amp;gt;   &amp;lt;Cell&amp;gt;                                                                         &amp;lt;xsl:choose&amp;gt;                                                              &amp;lt;xsl:when test="sum($SALES[../../R_MY=current()/MM_YYYY]/amt) &amp;gt; 0"&amp;gt;                                                                 &amp;lt;xsl:value-of select="sum ($SALES[../../R_MY=current()MM_YYYY]/amt)"&amp;gt;          &amp;lt;xsl:when&amp;gt;                                                                  &amp;lt;xsl:otherwise&amp;gt;0&amp;lt;xsl:otherwise&amp;gt;                                          &amp;lt;xsl:choose&amp;gt;                                         &amp;lt;Cell&amp;gt;                                                                   &amp;lt;xsl:for-each&amp;gt;                                                     &amp;lt;RowData&gt;&lt;/textarea&gt;&lt;br /&gt;&lt;br /&gt;Q. If statements are not evaluating correctly or just plain not working.&lt;br /&gt;A. It's likely the if statement may be evaluating the value as string and not number.  To solve this use number()   (See Example 2)&lt;br /&gt;&lt;br /&gt;Q. If statements fail when I use in less than or greater than signs.&lt;br /&gt;A. Use &amp;amp; lt;  or &amp;amp; gt;  (See Example 2)&lt;br /&gt;&lt;br /&gt;Q.  My chart keeps failing because the xml field is being recognized as literal.&lt;br /&gt;A.  Use the squiggles { } to avoid this issue.  (See Example 2)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Example 2&lt;/span&gt;:  If statement, number check, avoiding literal interpretations&lt;br /&gt;&lt;textarea name="comments" cols="70" rows="10"&gt;&amp;lt;xsl:if test="number(//P_ACTIVE_ENGAGEMENT_RATE) &amp;gt; number(0)"&amp;gt;        &amp;lt;Y1ReferenceLine&amp;gt;                                                   &amp;lt;ReferenceLine index="0" visible="true" lineWidth="2" text="Default Active Engagement Rate" value="{.//P_ACTIVE_ENGAGEMENT_RATE}" displayedInLegend="true" lineColor="#ff00"&amp;gt;                                              &amp;lt;/Y1ReferenceLine&amp;gt;                                                   &amp;lt;/xsl:if&amp;gt;&lt;/textarea&gt;&lt;br /&gt;&lt;br /&gt;Q. How do I mix static text with dynamic text without using append.&lt;br /&gt;A. This is actually surprisingly simple.  Create a “some text like this for {$YOUR_VAR or YOUR_XML_NODE} "  (See Example 3)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Example 3&lt;/span&gt;:  Dynamic substitution text&lt;br /&gt;&lt;textarea name="comments" cols="70" rows="10"&gt;&amp;lt;Title text="Monthly Sales - {$CURRENT_MONTH_NAME}" visible="true" horizontalAlignment="CENTER"&amp;gt;        &amp;lt;LocalGridData colCount="1" rowCount="5"&amp;gt;&amp;lt;RowLabels&amp;gt;&lt;/textarea&gt;&lt;br /&gt;&lt;br /&gt;Q.  Can I use reports1og to create a chart.&lt;br /&gt;A. Yes you can use repors10g to setup your graph.  There is one caveat; it’s not runnable in BIP.  However, it’s a great starting point for complex charting were the bip wizard can be sometimes lacking.  When you’re done creating your mockup, save the report as xml file.  You can rip out the nodes to figure-out what you need to do in chart in BIP.&lt;br /&gt;&lt;br /&gt;This all I got for now.  Like I said before if you have a question don't hesitate to leave a comment!&lt;br /&gt;&lt;br /&gt;Ike&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5406107793530126650-7209217875500144599?l=bipublisher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bipublisher.blogspot.com/feeds/7209217875500144599/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5406107793530126650&amp;postID=7209217875500144599' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/7209217875500144599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/7209217875500144599'/><link rel='alternate' type='text/html' href='http://bipublisher.blogspot.com/2009/03/bi-publisher-charts-tips-and-tricks.html' title='BI Publisher:  Charts tips and tricks'/><author><name>Ike Wiggins</name><uri>http://www.blogger.com/profile/03629933955296401382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_tbV38YrrIv4/RxgXvw8IBwI/AAAAAAAAAAw/lgP6jbAaB2M/s320/ike.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_tbV38YrrIv4/SbkV2HwBTUI/AAAAAAAAAEE/AMpTYW90BaE/s72-c/XML_Screen_Shot.jpg' height='72' width='72'/><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5406107793530126650.post-8219094655200731792</id><published>2009-01-20T09:37:00.000-08:00</published><updated>2009-09-26T09:21:53.308-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Data Templates'/><title type='text'>BI Publisher:  Data Templates vs. Reports6i</title><content type='html'>&lt;span style="color: rgb(0, 102, 0);font-size:180%;" &gt;Top 5 Reasons to use Data Templates over Reports6i&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To start off there are more than 5 reasons!&lt;br /&gt;&lt;br /&gt;1. Displaying a reports in real-time&lt;br /&gt;2.  Advanced PL/SQL&lt;br /&gt;3.  Easy of use&lt;br /&gt;4.  Multiple Integration Points&lt;br /&gt;5.  No Binary Conversions&lt;br /&gt;6.  Used across multiple platforms&lt;br /&gt;7.  Integration with multiple data sources&lt;br /&gt;8. Excellent debugging facilities&lt;br /&gt;9. Eliminates Ambiguous Crashing (who doesn't love terminated by signal 11)&lt;br /&gt;&lt;br /&gt;I forgot to mention a couple of other benefit about data templates vs reports6i that we haven't ever discussed.   Data templates are the only way a developer can generate the xml in real-time in the eBusiness suite or locally on there pc.   In comparison, a developer always has to submit a concurrent request in order to generate an xml file with reports6i.&lt;br /&gt;&lt;br /&gt;Other benefits of using data templates would be that the logic has to be put into a pl/sql package, whice essentially makes the business logic globally available to all other objects in the database.  This provides an amazing code reduction.   Developers can create other data templates (that are similar but different) and reuse existing business logic.&lt;br /&gt;&lt;br /&gt;Ike&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5406107793530126650-8219094655200731792?l=bipublisher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bipublisher.blogspot.com/feeds/8219094655200731792/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5406107793530126650&amp;postID=8219094655200731792' title='19 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/8219094655200731792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/8219094655200731792'/><link rel='alternate' type='text/html' href='http://bipublisher.blogspot.com/2008/11/bi-publisher-data-templates-vs.html' title='BI Publisher:  Data Templates vs. Reports6i'/><author><name>Ike Wiggins</name><uri>http://www.blogger.com/profile/03629933955296401382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_tbV38YrrIv4/RxgXvw8IBwI/AAAAAAAAAAw/lgP6jbAaB2M/s320/ike.jpg'/></author><thr:total>19</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5406107793530126650.post-1607999167269531277</id><published>2008-12-01T07:25:00.000-08:00</published><updated>2009-09-26T09:43:43.815-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Data Templates'/><title type='text'>BI Publisher:  Data Templates - Simplified Error Handling</title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;&lt;span style="color: rgb(0, 102, 0);"&gt;&lt;/span&gt;&lt;/span&gt;Debugging data templates and "calculated formulas"/"report triggers" can be tricky.  This is especially true if a developer needs to test there queries in sql*plus or concurrent manager (what output utility should be used).  Or what about user requests for putting error messages directly into format templates dynamically.   Well there is a solution to all of these problems and yes you can have your cake and eat it too.&lt;br /&gt;&lt;br /&gt;Now in the past I have talked up a storm about pipelined functions and how useful they are for reporting and not just etl.  If you haven't read-up on pipelined functions I suggest you do so, you don't know what your missing out on! (see &lt;a href="http://bipublisher.blogspot.com/2007/09/plsql-taking-it-to-next-level.html"&gt;first article&lt;/a&gt;, &lt;a href="http://bipublisher.blogspot.com/2007/10/bi-publisher-taking-it-to-next-level.html"&gt;second article&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Below is the outlined technical approach:&lt;br /&gt;&lt;br /&gt;1.  Pass in a debug parameter that specifies the debug output ie:  DBMS, CONCURRENT, XML&lt;br /&gt;2.  In the beforeReportTrigger set the debugging method&lt;br /&gt;3.  Call a debugging procedure which is able to determine the right logging mechanism.&lt;br /&gt;&lt;br /&gt;Now, I know what your thinking, this is way too simple, it can't be that easy.  DBMS and CONCURRENT manager output mechanisms are straight forward but how would XML work.  This where the pipelined function comes in.  Click on the pic below.   Notice what happens when the debug procedure finds that g_debug is set to xml.   The debug procedure instead populates a pl/sql table, I wonder what were going to with that!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tbV38YrrIv4/STAFhzd7deI/AAAAAAAAACo/KPivfvtjxS4/s1600-h/sample_pkg_pic1.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 307px;" src="http://1.bp.blogspot.com/_tbV38YrrIv4/STAFhzd7deI/AAAAAAAAACo/KPivfvtjxS4/s320/sample_pkg_pic1.JPG" alt="" id="BLOGGER_PHOTO_ID_5273721241960412642" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;All one would need to do now is create a pipelined function to get the values out the table.    Below is another code snippet.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tbV38YrrIv4/STAGtzgnOfI/AAAAAAAAACw/Wu7awsTz_QU/s1600-h/sample_pkg_pic2.JPG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 146px;" src="http://1.bp.blogspot.com/_tbV38YrrIv4/STAGtzgnOfI/AAAAAAAAACw/Wu7awsTz_QU/s320/sample_pkg_pic2.JPG" alt="" id="BLOGGER_PHOTO_ID_5273722547641727474" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;From there it's a simple one line query to get everything out of the pl/sql table:&lt;br /&gt;SELECT seq, message FROM table(sample_pkg.get_debug_log)  Click &lt;a href="http://www.mediafire.com/file/y2rmzmxwl4m/sample_pkg.zip"&gt;here&lt;/a&gt; to download the sample package pl/sql source code.&lt;br /&gt;&lt;br /&gt;A couple of things to keep in mind.  Because the debugging is parametrized an ebs developer can configure there concurrent program setup ie:  set the default for the p_debug parameter to be "CONCURRENT".   This is a really nice/flexible feature.  As an example a developer could be running this same code locally in toad (or the BIPublisherIDE) and could change the output to DBMS or what have you with no worries because it's parametrized.....&lt;br /&gt;&lt;br /&gt;For the reports6i developers you have to admit this sure beats the socks off of srw.message!  So, why fight the feeling, make the switch :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5406107793530126650-1607999167269531277?l=bipublisher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bipublisher.blogspot.com/feeds/1607999167269531277/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5406107793530126650&amp;postID=1607999167269531277' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/1607999167269531277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/1607999167269531277'/><link rel='alternate' type='text/html' href='http://bipublisher.blogspot.com/2008/12/bi-publisher-data-templates-simplified.html' title='BI Publisher:  Data Templates - Simplified Error Handling'/><author><name>Ike Wiggins</name><uri>http://www.blogger.com/profile/03629933955296401382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_tbV38YrrIv4/RxgXvw8IBwI/AAAAAAAAAAw/lgP6jbAaB2M/s320/ike.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_tbV38YrrIv4/STAFhzd7deI/AAAAAAAAACo/KPivfvtjxS4/s72-c/sample_pkg_pic1.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5406107793530126650.post-2124185081315190482</id><published>2008-11-10T08:17:00.000-08:00</published><updated>2009-09-26T09:44:18.552-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BIPublisherIDE'/><title type='text'>BI Publisher:  Troublshooting the BIPublisherIDE</title><content type='html'>&lt;div&gt;&lt;/div&gt;For sometime now, I have been receiving request for a troubleshooting guide.  I must apologize for not getting one at sooner since it seems like I'm getting monthly help requests.  On the right side of the page there is a new link called BIPublisherIDE Troubleshooting.  If you think something is missing or you have a suggestion, please add a comment to this blog and I'll see what I can do.&lt;br /&gt;&lt;br /&gt;Also, if you have already downloaded the BIPublisherIDE in the past and could it to work, I would suggest you download it again (I fixed a couple of things) and use the troubleshooting manual.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5406107793530126650-2124185081315190482?l=bipublisher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bipublisher.blogspot.com/feeds/2124185081315190482/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5406107793530126650&amp;postID=2124185081315190482' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/2124185081315190482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/2124185081315190482'/><link rel='alternate' type='text/html' href='http://bipublisher.blogspot.com/2008/07/bipublisheride-troublshooting.html' title='BI Publisher:  Troublshooting the BIPublisherIDE'/><author><name>Ike Wiggins</name><uri>http://www.blogger.com/profile/03629933955296401382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_tbV38YrrIv4/RxgXvw8IBwI/AAAAAAAAAAw/lgP6jbAaB2M/s320/ike.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5406107793530126650.post-8706181752682869043</id><published>2008-10-25T07:41:00.000-07:00</published><updated>2009-09-26T09:44:40.355-07:00</updated><title type='text'>BI Publisher:  500 Plus Downloads</title><content type='html'>&lt;span style="color: rgb(0, 102, 0);font-size:180%;" &gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;The BIPublisherIDE standard and OAF edition have been downloaded over 500+ times from this site!&lt;br /&gt;&lt;br /&gt;If you are interested an integrated bi publisher developer environment then BIPublisherIDE is the right fit for you.  To find more out about the BIPublisherIDE I would suggest you read the following posts:&lt;br /&gt;&lt;br /&gt;http://bipublisher.blogspot.com/2008/03/bi-publisher-bipublisheride.html&lt;br /&gt;&lt;br /&gt;If your an experienced developer looking to do cutting edge reporting inside the eBusiness suite using the OA Framework I would suggest the following posts:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Part I:  &lt;/span&gt; http://bipublisher.blogspot.com/2008/03/bi-publisher-bip-in-oa-framework-part-1.html&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Part II:&lt;/span&gt;  http://bipublisher.blogspot.com/2008/03/bi-publisher-bip-in-oa-framework-part.html&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5406107793530126650-8706181752682869043?l=bipublisher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bipublisher.blogspot.com/feeds/8706181752682869043/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5406107793530126650&amp;postID=8706181752682869043' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/8706181752682869043'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/8706181752682869043'/><link rel='alternate' type='text/html' href='http://bipublisher.blogspot.com/2008/10/bi-publisher-500-plus-downloads.html' title='BI Publisher:  500 Plus Downloads'/><author><name>Ike Wiggins</name><uri>http://www.blogger.com/profile/03629933955296401382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_tbV38YrrIv4/RxgXvw8IBwI/AAAAAAAAAAw/lgP6jbAaB2M/s320/ike.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5406107793530126650.post-5330610516727052867</id><published>2008-10-08T08:01:00.000-07:00</published><updated>2009-09-26T09:44:49.541-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xdodebug.cfg'/><title type='text'>BI Publisher:  xdodebug.cfg troubleshooting</title><content type='html'>&lt;span style="color: rgb(0, 102, 0);font-size:180%;" &gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;Using the xdodebug.cfg file is a great way to debug the BI Publisher API's for custom code that is calling the BI Publisher API's. Below is the metalink note (Note:&lt;strong&gt;364547.1&lt;/strong&gt;) on how to do this but beware.....&lt;br /&gt;&lt;blockquote&gt;Direct report publishing via the XML Publisher Core APIs (without concurrent processing)&lt;br /&gt;1. Connect to the Apache Server as ‘applmgr’. Run the APPSORA.env to set the APPS environment (Windows: envshell.cmd).&lt;br /&gt;2. Create an $XDO_TOP/temp directory.&lt;br /&gt;3. Go to the $OA_JRE_TOP/jre/lib directory.&lt;br /&gt;4. Create an xdodebug.cfg file with the following 2 lines:&lt;br /&gt;LogLevel=STATEMENT&lt;br /&gt;LogDir=[full XDO_TOP]/temp&lt;br /&gt;5. Restart the Apache server.&lt;br /&gt;6. Reproduce the problem.&lt;/blockquote&gt;Unfortunately, Oracle's metalink note is missing one key setup that has to be done. In order for debugging to work you must have a temp directory setup via the template manager. Unbelievably, if you do not have the temp directory setup, debugging actually causes the BI Publisher API's to crash.&lt;br /&gt;&lt;br /&gt;The situation is really a quagmire since the reason one would turn on the debugging is to troubleshoot a template issue and in doing so they have exacerbated the issue. Below is the error you can expect to see.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;java.io.FileNotFoundException: xdo-1225988068296.tmp (Permission denied)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I retrived this from JSERV log file, see Stack Trace below. Note: We had turned on debugging for the BIPublisher_OAF (bi publisher report pop-ups from forms6i) code to troubleshoot an issue. If your interested in learning how to develop pop bip reports for forms6i, see http://bipublisher.blogspot.com/2008/03/bi-publisher-bip-in-oa-framework-part.html&lt;br /&gt;&lt;br /&gt;So, what's happening here is that the bip api's are trying to create a temporary file in $XDO_TOP code tree which only has r-x permissions, hence a file not being able to be created.&lt;br /&gt;&lt;br /&gt;The resolution was to setup the temp directory in the template manager (see below) and to do a graceful bounce of apache. Ironically afterwards, there was no issue except turning on the debugging so beware about this configuration in production environments if you have not setup temp directory!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_tbV38YrrIv4/SSBRP85fsII/AAAAAAAAACQ/blc7fi6CY8g/s1600-h/settings2.bmp"&gt;&lt;img id="BLOGGER_PHOTO_ID_5269300898510647426" style="width: 320px; cursor: pointer; height: 276px;" alt="" src="http://1.bp.blogspot.com/_tbV38YrrIv4/SSBRP85fsII/AAAAAAAAACQ/blc7fi6CY8g/s320/settings2.bmp" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;java.io.FileNotFoundException: xdo-1225988068296.tmp (Permission denied)&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:78%;"&gt;at java.io.RandomAccessFile.open(Native Method)&lt;br /&gt;at java.io.RandomAccessFile.&lt;init&gt;(RandomAccessFile.java:204)&lt;br /&gt;at java.io.RandomAccessFile.&lt;init&gt;(RandomAccessFile.java:94)&lt;br /&gt;at oracle.apps.xdo.dataengine.ScalableStringList.initSessionIfNecessary(ScalableStringList.java:53)&lt;br /&gt;at oracle.apps.xdo.dataengine.StringList.&lt;init&gt;(StringList.java:51)&lt;br /&gt;at oracle.apps.xdo.dataengine.ScalableStringList.&lt;init&gt;(ScalableStringList.java:38)&lt;br /&gt;at oracle.apps.xdo.dataengine.StringList.createStringList(StringList.java:43)&lt;br /&gt;at oracle.apps.xdo.dataengine.DataGroup.&lt;init&gt;(DataGroup.java:76)&lt;br /&gt;at oracle.apps.xdo.dataengine.DataTemplateParser.groupParser(DataTemplateParser.java:779)&lt;br /&gt;at oracle.apps.xdo.dataengine.DataTemplateParser.dataStructureParser(DataTemplateParser.java:745)&lt;br /&gt;at oracle.apps.xdo.dataengine.DataTemplateParser.templateParser(DataTemplateParser.java:324)&lt;br /&gt;at oracle.apps.xdo.dataengine.XMLPGEN.setDataTemplate(XMLPGEN.java:599)&lt;br /&gt;at oracle.apps.xdo.dataengine.DataProcessor.setDataTemplate(DataProcessor.java:193)&lt;br /&gt;at oracle.apps.xdo.oa.util.DataTemplate.&lt;init&gt;(DataTemplate.java:136)&lt;br /&gt;at oracle.apps.xbol.bipublisher.api.XMLPublisherApi.oaDataEngine(XMLPublisherApi.java:193)&lt;br /&gt;at oracle.apps.xbol.pfp.execsumm.webui.EXECSummGenerator.&lt;init&gt;(EXECSummGenerator.java:92)&lt;br /&gt;at oracle.apps.xbol.pfp.execsumm.webui.EXECSummCO.processRequest(EXECSummCO.java:35)&lt;br /&gt;at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequest(OAWebBeanHelper.java:587)&lt;br /&gt;at oracle.apps.fnd.framework.webui.OAWebBeanContainerHelper.processRequest(OAWebBeanContainerHelper.java:247)&lt;br /&gt;at oracle.apps.fnd.framework.webui.OAPageLayoutHelper.processRequest(OAPageLayoutHelper.java:1136)&lt;br /&gt;at oracle.apps.fnd.framework.webui.beans.layout.OAPageLayoutBean.processRequest(OAPageLayoutBean.java:1569)&lt;br /&gt;at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequestChildren(OAWebBeanHelper.java:959)&lt;br /&gt;at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequestChildren(OAWebBeanHelper.java:926)&lt;br /&gt;at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequest(OAWebBeanHelper.java:646)&lt;br /&gt;at oracle.apps.fnd.framework.webui.OAWebBeanContainerHelper.processRequest(OAWebBeanContainerHelper.java:247)&lt;br /&gt;at oracle.apps.fnd.framework.webui.beans.form.OAFormBean.processRequest(OAFormBean.java:385)&lt;br /&gt;at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequestChildren(OAWebBeanHelper.java:959)&lt;br /&gt;at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequestChildren(OAWebBeanHelper.java:926)&lt;br /&gt;at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequest(OAWebBeanHelper.java:646)&lt;br /&gt;at oracle.apps.fnd.framework.webui.OAWebBeanContainerHelper.processRequest(OAWebBeanContainerHelper.java:247)&lt;br /&gt;at oracle.apps.fnd.framework.webui.beans.OABodyBean.processRequest(OABodyBean.java:353)&lt;br /&gt;at oracle.apps.fnd.framework.webui.OAPageBean.processRequest(OAPageBean.java:2335)&lt;br /&gt;at oracle.apps.fnd.framework.webui.OAPageBean.preparePage(OAPageBean.java:1734)&lt;br /&gt;at oracle.apps.fnd.framework.webui.OAPageBean.preparePage(OAPageBean.java:508)&lt;br /&gt;at oracle.apps.fnd.framework.webui.OAPageBean.preparePage(OAPageBean.java:429)&lt;br /&gt;at _oa__html._OA._jspService(_OA.java:85)&lt;br /&gt;at oracle.jsp.runtime.HttpJsp.service(HttpJsp.java:119)&lt;br /&gt;at oracle.jsp.app.JspApplication.dispatchRequest(JspApplication.java:417)&lt;br /&gt;at oracle.jsp.JspServlet.doDispatch(JspServlet.java:267)&lt;br /&gt;at oracle.jsp.JspServlet.internalService(JspServlet.java:186)&lt;br /&gt;at oracle.jsp.JspServlet.service(JspServlet.java:156)&lt;br /&gt;at javax.servlet.http.HttpServlet.service(HttpServlet.java:588)&lt;br /&gt;at oracle.jsp.provider.Jsp20RequestDispatcher.forward(Jsp20RequestDispatcher.java:162)&lt;br /&gt;at oracle.jsp.runtime.OraclePageContext.forward(OraclePageContext.java:187)&lt;br /&gt;at _oa__html._RF._jspService(_RF.java:102)&lt;br /&gt;at oracle.jsp.runtime.HttpJsp.service(HttpJsp.java:119)&lt;br /&gt;at oracle.jsp.app.JspApplication.dispatchRequest(JspApplication.java:417)&lt;br /&gt;at oracle.jsp.JspServlet.doDispatch(JspServlet.java:267)&lt;br /&gt;at oracle.jsp.JspServlet.internalService(JspServlet.java:186)&lt;br /&gt;at oracle.jsp.JspServlet.service(JspServlet.java:156)&lt;br /&gt;at javax.servlet.http.HttpServlet.service(HttpServlet.java:588)&lt;br /&gt;at org.apache.jserv.JServConnection.processRequest(JServConnection.java:456)&lt;br /&gt;at org.apache.jserv.JServConnection.run(JServConnection.java:294)&lt;br /&gt;at java.lang.Thread.run(Thread.java:534)&lt;/init&gt;&lt;/init&gt;&lt;/init&gt;&lt;/init&gt;&lt;/init&gt;&lt;/init&gt;&lt;/init&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;oracle.apps.fnd.framework.OAException: EXECSummGenerator - Failed to generate xml file&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:0pt;"&gt;&lt;span style="font-size:78%;"&gt;at oracle.apps.xbol.pfp.execsumm.webui.EXECSummGenerator.&lt;init&gt;(EXECSummGenerator.java:97)&lt;br /&gt;at oracle.apps.xbol.pfp.execsumm.webui.EXECSummCO.processRequest(EXECSummCO.java:35)&lt;br /&gt;at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequest(OAWebBeanHelper.java:587)&lt;br /&gt;at oracle.apps.fnd.framework.webui.OAWebBeanContainerHelper.processRequest(OAWebBeanContainerHelper.java:247)&lt;br /&gt;at oracle.apps.fnd.framework.webui.OAPageLayoutHelper.processRequest(OAPageLayoutHelper.java:1136)&lt;br /&gt;at oracle.apps.fnd.framework.webui.beans.layout.OAPageLayoutBean.processRequest(OAPageLayoutBean.java:1569)&lt;br /&gt;at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequestChildren(OAWebBeanHelper.java:959)&lt;br /&gt;at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequestChildren(OAWebBeanHelper.java:926)&lt;br /&gt;at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequest(OAWebBeanHelper.java:646)&lt;br /&gt;at oracle.apps.fnd.framework.webui.OAWebBeanContainerHelper.processRequest(OAWebBeanContainerHelper.java:247)&lt;br /&gt;at oracle.apps.fnd.framework.webui.beans.form.OAFormBean.processRequest(OAFormBean.java:385)&lt;br /&gt;at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequestChildren(OAWebBeanHelper.java:959)&lt;br /&gt;at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequestChildren(OAWebBeanHelper.java:926)&lt;br /&gt;at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequest(OAWebBeanHelper.java:646)&lt;br /&gt;at oracle.apps.fnd.framework.webui.OAWebBeanContainerHelper.processRequest(OAWebBeanContainerHelper.java:247)&lt;br /&gt;at oracle.apps.fnd.framework.webui.beans.OABodyBean.processRequest(OABodyBean.java:353)&lt;br /&gt;at oracle.apps.fnd.framework.webui.OAPageBean.processRequest(OAPageBean.java:2335)&lt;br /&gt;at oracle.apps.fnd.framework.webui.OAPageBean.preparePage(OAPageBean.java:1734)&lt;br /&gt;at oracle.apps.fnd.framework.webui.OAPageBean.preparePage(OAPageBean.java:508)&lt;br /&gt;at oracle.apps.fnd.framework.webui.OAPageBean.preparePage(OAPageBean.java:429)&lt;br /&gt;at _oa__html._OA._jspService(_OA.java:85)&lt;br /&gt;at oracle.jsp.runtime.HttpJsp.service(HttpJsp.java:119)&lt;br /&gt;at oracle.jsp.app.JspApplication.dispatchRequest(JspApplication.java:417)&lt;br /&gt;at oracle.jsp.JspServlet.doDispatch(JspServlet.java:267)&lt;br /&gt;at oracle.jsp.JspServlet.internalService(JspServlet.java:186)&lt;br /&gt;at oracle.jsp.JspServlet.service(JspServlet.java:156)&lt;br /&gt;at javax.servlet.http.HttpServlet.service(HttpServlet.java:588)&lt;br /&gt;at oracle.jsp.provider.Jsp20RequestDispatcher.forward(Jsp20RequestDispatcher.java:162)&lt;br /&gt;at oracle.jsp.runtime.OraclePageContext.forward(OraclePageContext.java:187)&lt;br /&gt;at _oa__html._RF._jspService(_RF.java:102)&lt;br /&gt;at oracle.jsp.runtime.HttpJsp.service(HttpJsp.java:119)&lt;br /&gt;at oracle.jsp.app.JspApplication.dispatchRequest(JspApplication.java:417)&lt;br /&gt;at oracle.jsp.JspServlet.doDispatch(JspServlet.java:267)&lt;br /&gt;at oracle.jsp.JspServlet.internalService(JspServlet.java:186)&lt;br /&gt;at oracle.jsp.JspServlet.service(JspServlet.java:156)&lt;br /&gt;at javax.servlet.http.HttpServlet.service(HttpServlet.java:588)&lt;br /&gt;at org.apache.jserv.JServConnection.processRequest(JServConnection.java:456)&lt;br /&gt;at org.apache.jserv.JServConnection.run(JServConnection.java:294)&lt;br /&gt;at java.lang.Thread.run(Thread.java:534)&lt;/init&gt;&lt;/span&gt;&lt;/span&gt;&lt;init&gt;&lt;br /&gt;&lt;/init&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5406107793530126650-5330610516727052867?l=bipublisher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bipublisher.blogspot.com/feeds/5330610516727052867/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5406107793530126650&amp;postID=5330610516727052867' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/5330610516727052867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/5330610516727052867'/><link rel='alternate' type='text/html' href='http://bipublisher.blogspot.com/2008/09/bi-publisher-xdodebugcfg.html' title='BI Publisher:  xdodebug.cfg troubleshooting'/><author><name>Ike Wiggins</name><uri>http://www.blogger.com/profile/03629933955296401382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_tbV38YrrIv4/RxgXvw8IBwI/AAAAAAAAAAw/lgP6jbAaB2M/s320/ike.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_tbV38YrrIv4/SSBRP85fsII/AAAAAAAAACQ/blc7fi6CY8g/s72-c/settings2.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5406107793530126650.post-2645829575160555732</id><published>2008-07-29T08:12:00.000-07:00</published><updated>2009-09-26T09:44:59.824-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Logo'/><title type='text'>BI Publisher: Let Go My Logo</title><content type='html'>&lt;strong&gt;&lt;span style="color: rgb(0, 102, 0);font-size:180%;" &gt;&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-weight: bold;"&gt;There have been some questions of late on how to get a logo (blob) converted to base64 in the e-business suite. The process is quite simple. Below is a sample snippet I took out of the BIP forum that can be used in ANY Data Template.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;FUNCTION mob_getbase64String( P_blob BLOB )&lt;br /&gt;RETURN CLOB&lt;br /&gt;IS&lt;br /&gt;l_result CLOB;&lt;br /&gt;BEGIN&lt;br /&gt;DBMS_LOB.createtemporary(lob_loc =&gt; l_result, CACHE =&gt; FALSE, dur =&gt; 0);&lt;br /&gt;Wf_Mail_Util.EncodeBLOB ( P_blob&lt;br /&gt;, l_result&lt;br /&gt;);&lt;br /&gt;RETURN ( l_result );&lt;br /&gt;END mob_getbase64String;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Sample Select: &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;sqlstatement name="Q_MLOGO"&gt;select file_name, to_char(XXPA_COST_PLUS_BILLING_PKG.mob_getbase64String(blob_content)) blob_content&lt;br /&gt;from xxfnd_logo_images where file_id = :p_mlogo_id&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;Note: to_char has to be used for version of 5.6.2 of xml publisher, clobs are okay in 5.6.3&lt;/span&gt;&lt;br /&gt;&lt;/sqlstatement&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The syntax to add an image field to your format template is down below:&lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;fo:instream-foreign-object content-type="image/jpg"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&amp;lt;xsl:value-of select="BLOB_CONTENT"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&amp;lt;/fo:instream-foreign-object&amp;gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5406107793530126650-2645829575160555732?l=bipublisher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bipublisher.blogspot.com/feeds/2645829575160555732/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5406107793530126650&amp;postID=2645829575160555732' title='21 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/2645829575160555732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/2645829575160555732'/><link rel='alternate' type='text/html' href='http://bipublisher.blogspot.com/2008/07/bi-publisher-let-go-my-logo.html' title='BI Publisher: Let Go My Logo'/><author><name>Ike Wiggins</name><uri>http://www.blogger.com/profile/03629933955296401382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_tbV38YrrIv4/RxgXvw8IBwI/AAAAAAAAAAw/lgP6jbAaB2M/s320/ike.jpg'/></author><thr:total>21</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5406107793530126650.post-7627368005424926779</id><published>2008-07-28T02:28:00.000-07:00</published><updated>2009-09-26T09:18:32.150-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Services'/><category scheme='http://www.blogger.com/atom/ns#' term='Bursting'/><title type='text'>Bursting with Web Services</title><content type='html'>&lt;strong&gt;&lt;em&gt;Background&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;I come from an Oracle Forms 6i background (hardcore PL/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;SQL&lt;/span&gt; only). I'm now exploring a whole new development world using &lt;a href="http://apex.oracle.com/i/index.html"&gt;Oracle Application Express (APEX)&lt;/a&gt;. In order to make APEX dance and sing, &lt;em&gt;from a reporting perspective&lt;/em&gt;, you really need BI Publisher.&lt;br /&gt;&lt;br /&gt;My requirement was to get users in my APEX application bulk printing and emailing documents seamlessly. One solution was to generate my documents as &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;PDFs&lt;/span&gt; and store them as &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;BLOBs&lt;/span&gt; in the database. There are APEX &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;APIs&lt;/span&gt; that allow you to do this. This works fine if a user wants to print a document on an ad-&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;hoc&lt;/span&gt; basis. They can just open the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;PDF&lt;/span&gt; in their browser and print it in the normal way. The problem is that I needed to both bulk print and bulk email documents. These documents needed different templates for each result of the data set so BI Publisher seemed the best way to go.&lt;br /&gt;&lt;br /&gt;Now there are ways and means of doing this using JAVA and the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;BIP&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;APIs&lt;/span&gt; but, I don't know Java. Sadly, I didn't have time to learn it to the requisite level in time for my project deadline so I needed to find a different way to skin this particular cat.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The beauty of IT is that there's always another way...&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The first thing I needed to do was to get APEX communicating with my &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;BIP&lt;/span&gt; instance. After some trawling through the forums I came across this excellent article by &lt;a href="http://tylermuth.wordpress.com/2008/03/31/call-bi-publisher-web-services-from-apex/"&gt;Tyler &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;Muth&lt;/span&gt;. &lt;/a&gt; This gave me the starter I needed. It shows you how to get APEX communicating with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;BIP&lt;/span&gt; via Web Services.&lt;br /&gt;&lt;br /&gt;My call to the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;BIP&lt;/span&gt; Web Service passes over a unique identifier. This is used in a temporary table in the database that I &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;pre&lt;/span&gt;-populate from within my APEX application. This then gives my &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;BIP&lt;/span&gt; Data Template query, amongst other things, a Key column with one or more unique IDs of the documents I want to print or email.&lt;br /&gt;&lt;br /&gt;Within the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;BIP&lt;/span&gt; report definition I also set up several customer-specific report layout templates. Utilising the Bursting facility in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;BIP&lt;/span&gt; I can now split the reports by a Key and also pick up different templates on the fly as appropriate.&lt;br /&gt;&lt;br /&gt;I got a printer in the office configured on &lt;a href="http://en.wikipedia.org/wiki/Common_Unix_Printing_System"&gt;C.U.P.S.&lt;/a&gt; Once this was set up in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;BIP&lt;/span&gt; Admin as a Print Server, it was simple enough to configure the Bursting query to send the output to the printer. Reading through the documentation &lt;em&gt;(always a good idea)&lt;/em&gt; it also seems that it's simple enough to configure &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;BIP&lt;/span&gt; to burst to file. Something that again, until I found this Web Service method, I thought I couldn't achieve without a good handle on Java.&lt;br /&gt;&lt;br /&gt;My last requirement was to get my documents display a logo which was picked up from the database. My logos are stored as &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;BLOBs&lt;/span&gt; in the database and I needed a way to get these out into the XML that &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;BIP&lt;/span&gt; uses. Again, a trawl of the forums led me to the "&lt;a href="http://marcsewtz.blogspot.com/2008/06/one-question-about-pdf-printing-feature.html"&gt;Using Dynamic Images in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;PDF&lt;/span&gt; reports&lt;/a&gt;" guide on Marc &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;Sewtz's&lt;/span&gt; BLOG. My &lt;a href="http://forums.oracle.com/forums/thread.jspa?threadID=664800"&gt;post on the APEX forum &lt;/a&gt;highlights a subtle difference in the implementation of Marc's guide depending on how you want to use the image in your reports.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;Getting the report to BURST using the Web Service. &lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;I tested the bursting of the report from within &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;BIP&lt;/span&gt; by manually Scheduling the report to run and it was working fine. I then set about configuring the SOAP request to call the report and let the bursting/delivery be handled by &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;BIP&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Looking at the SOAP request I saw it had a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;deliveryRequest&lt;/span&gt; element. I figured that, as &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;BIP&lt;/span&gt; was handling the delivery, I no longer needed the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;deliveryRequest&lt;/span&gt; in my SOAP call.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;WRONG!!&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;I found that I needed the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;deliveryRequest&lt;/span&gt; element in order for the SOAP call to be syntactically correct. Failure to include one meant that the Web Service would fail with an error stating...&lt;br /&gt;&lt;br /&gt;oracle.apps.xdo.webservice.exception.InvalidParametersException: &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;PublicReportService&lt;/span&gt;::&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_29"&gt;generateScheduledReport&lt;/span&gt; Failure: &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_30"&gt;DeliveryRequest&lt;/span&gt; is EMPTY&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;The solution?&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Keep the &lt;deliveryrequest&gt; element in your SOAP call. If you have your report configured for Bursting and have Bursting 'Enabled' then this will override whatever Delivery Request you make in your SOAP call to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_31"&gt;BIP&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;What's next?&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;I will shortly be testing to see if I can use CASE statements in the Bursting query to handle Email and Printer delivery from one report definition.&lt;br /&gt;&lt;br /&gt;I will also be trying to get the report to run without the need for passing a user name and password over to &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_32"&gt;BIP&lt;/span&gt; via the web service. My report is residing in the GUEST folder but, at the moment, I seem to need to pass a UN &amp;amp; PW for the web service to work.&lt;br /&gt;&lt;br /&gt;When time permits, I intend to revisit the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_33"&gt;PDF&lt;/span&gt; merge facility of the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_34"&gt;BIP&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_35"&gt;APIs&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;Summary&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;So, there you have it! The Java-Agnostic way of getting &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_36"&gt;BIP&lt;/span&gt; to do it's thing using Web Services.&lt;/deliveryrequest&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5406107793530126650-7627368005424926779?l=bipublisher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bipublisher.blogspot.com/feeds/7627368005424926779/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5406107793530126650&amp;postID=7627368005424926779' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/7627368005424926779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/7627368005424926779'/><link rel='alternate' type='text/html' href='http://bipublisher.blogspot.com/2008/07/bursting-with-web-services.html' title='Bursting with Web Services'/><author><name>Simon Gadd</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5406107793530126650.post-5924171513548160709</id><published>2008-07-17T02:27:00.000-07:00</published><updated>2009-09-26T09:18:46.945-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Template Builder versions'/><title type='text'>BI Publisher: Template Builder Versions</title><content type='html'>&lt;span style="font-family:verdana;"&gt;&lt;span style="color: rgb(102, 51, 0);font-size:130%;" &gt;&lt;strong&gt;Version chaos!&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The good thing about evolving software is that each version brings new functionality and improvements (bug-fixes). The dark side is that compatibility of versions should be watched closely. This also holds for BI Publisher, the Template builder version should be of the same version as the installation that resides on the server or in E-Business Suite.Therefore an overview of the Template Builder versions that I could get a hand on:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;ul&gt;&lt;li&gt;Oracle XML Publisher version 5.6.3 (for R12) - patch 5887917&lt;/li&gt;&lt;li&gt;Oracle XML Publisher version 5.6.3 (for 11i) - patch 5887917&lt;/li&gt;&lt;li&gt;Oracle XML Publisher version 5.6.2 - patch 5027437&lt;/li&gt;&lt;li&gt;Oracle XML Publisher version 5.6.1 - no new builder use patch 4561835&lt;/li&gt;&lt;li&gt;Oracle XML Publisher version 5.6.0 - no new builder use patch 4561835&lt;/li&gt;&lt;li&gt;Oracle XML Publisher version 5.5 - patch 4561835&lt;/li&gt;&lt;li&gt;Oracle XML Publisher version 5.0 - patch 4239263&lt;/li&gt;&lt;li&gt;Oracle XML Publisher version 4.5 - no template builder :-( &lt;/li&gt;&lt;/ul&gt;Whenever you start working with another BI Publisher version, you should ideally de-install the current version and install the most suitable Template Builder version. &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5406107793530126650-5924171513548160709?l=bipublisher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bipublisher.blogspot.com/feeds/5924171513548160709/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5406107793530126650&amp;postID=5924171513548160709' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/5924171513548160709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/5924171513548160709'/><link rel='alternate' type='text/html' href='http://bipublisher.blogspot.com/2008/07/bi-publisher-template-builder-versions.html' title='BI Publisher: Template Builder Versions'/><author><name>Kevin Bouwmeester</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5406107793530126650.post-8061940735570078000</id><published>2008-07-15T13:08:00.000-07:00</published><updated>2009-09-26T09:17:25.613-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XLIFF'/><title type='text'>BI Publisher: An alternative approach to translations</title><content type='html'>&lt;span style="color: rgb(102, 51, 0);font-family:verdana;font-size:180%;"  &gt;&lt;strong&gt;To XLIFF or not to...&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Due to internationalization of businesses and the business processes for which BI Publisher is used, more and more templates need translation. Translation for BI Publisher reports is two-fold; we need to translate the XML data (i.e. Reports or the Data Template) and we need to translate the boilerplates (hard-coded texts) on the template. Step 1 is easy, based on the language you want to create the report in, you can select data in a specific language from the "_tl" tables or "_vl" views. Given the fact that you have installed the language you want to translate to. For the hard-coded texts, prompts and the boilerplates the job is a bit more complex.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: rgb(102, 51, 0);"&gt;How to work with XLIFF&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;BI Publisher supports translation with the eXtensible Localization Interchange File Format (XLIFF for short). XLIFF is an XML-based format that contains translations. The procedure for using this in E-Business Suite is simple: you let BI Publisher extract the hard-coded texts that are to be translated into an XLIFF file. Then you let the translation agency (or yourself if you like) fill in the translations. This XLIFF file is then used as some kind of search and replace resource; during translation single words and even whole sentences are searched and replaced. The good thing about this concept is that it is fully integrated in the BI Publisher engine and the E-Business Suite setup. This makes it easy to setup. However, maintainance is required each time you change your template; each change in the boilerplates requires you to update the XLIFF file. If you lack to do this, there is a big chance the search and replace won't work anymore. XLIFF translation files are template specific, each word or sentence is translated for one template only. This is unfortunate as a change in grammar rules in a language will require you to adapt all XLIFF files for all templates that translate to that language. Also, the maintainer of the translations needs to be someone with knowledge about XML or XLIFF. As XLIFF is not easlily understood by someone with only a functional view on BI Publisher. More on XLIFF: see &lt;a href="http://en.wikipedia.org/wiki/XLIFF"&gt;XLIFF on wikipedia&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 0);"&gt;&lt;strong&gt;The alternative - use E-Business Suite Messages&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;What alternatives to XLIFF are there? I personally do not like to redo the XLIFF file after each (textual) template change and I want the customer to be able to maintain their own translations. The solution I have implemented at several customers now, leaves the terrain of XLIFF files and uses the E-Business Suite's messages to create and maintain translations. This is how it works:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;Create messages for all hard-coded texts in each language you want to translate to. Give them a general name like XXCUS_TEMPLATE%&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;Add query to the data layer to select the messages for the language the report needs to be generated for (select message_name, message_text from fnd_new_messages where language_code = 'NL' and message_name like 'XXCUS_TEMPLATE%').&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;Add form fields. In the layout-template replace each hard-coded text for an XPath statement to pick up a message from the XML (./LIST_G_MESSAGE/G_MESSAGE[MESSAGE_NAME='XXKB_CUSTOMER_NAME'] where XXKB_CUSTOMER_NAME is the message name).&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The good things about this solution is that the customer can easilly maintain the messages from the E-Business Suite screens. There is no re-generation of XLIFF files when the template layout changes. And for the common prompts, messages can be setup for multiple templates at once; simply use these messages on multiple templates. The drawback of this solution is that all the translation texts will be in the XML data. If you are generating a batch of documents in multiple languages then the messages will be in the batch XML multiple times. I have choosen for this solution, because the alternative slows the performance; when the messages are inserted in the XML just under the root instead of under the reporting element. This will require the BI Publisher engine to switch context from a lower level XML group to the root level mutiple times, and this takes additional time. I believe it is better to have a bigger XML file then a slow performing report.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: rgb(102, 51, 0);"&gt;Conclusion - When to use which?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Probably the best answer here is -- it depends. If you wish to create translation for a steady well-developed template, that is not likely to change and you need only 1 translation it is probably save to choose for the XLIFF solution. On the other hand, if you have several translations for muliple templates and both template and translations will be bound to be changed for several times it is best to go for the message solution as it will save you a lot of maintenance overhead. &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5406107793530126650-8061940735570078000?l=bipublisher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bipublisher.blogspot.com/feeds/8061940735570078000/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5406107793530126650&amp;postID=8061940735570078000' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/8061940735570078000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/8061940735570078000'/><link rel='alternate' type='text/html' href='http://bipublisher.blogspot.com/2008/07/bi-publisher-alternative-approach-to.html' title='BI Publisher: An alternative approach to translations'/><author><name>Kevin Bouwmeester</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5406107793530126650.post-2947931768323794075</id><published>2008-06-02T19:00:00.000-07:00</published><updated>2009-09-26T09:45:13.233-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OAF BI Publisher'/><title type='text'>BI Publisher: BIP in the OA Framework part II</title><content type='html'>&lt;div&gt;&lt;strong&gt;&lt;span style="color: rgb(0, 102, 0);font-size:180%;" &gt;&lt;/span&gt;&lt;/strong&gt;In the last article &lt;a href="http://bipublisher.blogspot.com/2008/03/bi-publisher-bip-in-oa-framework-part-1.html"&gt;BI Publisher:  BIP in the OA Framework part I&lt;/a&gt; we covered how the PO communicate process works. Going forward I will be explaining a project that I wrote that will allow developers to see how all the pieces of the puzzle come together. This project leverages the BIPubliserIDE code. It's been modified to be put into a 11.5.10 cu2 environment, there is a seperate download for this code see &lt;a href="http://www.mediafire.com/?npyrdemmbpf"&gt;BIPublisherIDE_OAF&lt;/a&gt; (it's meant to run in OA JDeveloper9i, there is sax issue I'm working around). The classes for this project were refactored but there are very little changes except for coding for AppsContect and OAPageContext. There are some real advantages of doing all your development with BIPublisherIDE.    Note:  You will probably want to refactor the classes for your company.&lt;br /&gt;&lt;br /&gt;As always you are allowed to download this code, modify this code, etc. but you cannot sell it or copyright it for commercial purposes. It's free for everyone to use.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Also, I might generate an avi video that shows the program running and explain a little more about what's going on so you can get this code up and running.  That will likely take place in another post...sorry&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);font-size:180%;" &gt;The Environment: JDeveloper&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The main requirement for to run this &lt;a href="http://www.mediafire.com/?npyrdemmbpf"&gt;BIPublisherIDE_OAF&lt;/a&gt; locally is that you need to grab all of the classes for $JAVA_TOP/oracle/* or you can use the apps.zip. I prefer to use the classes over the apps.zip, the apps.zip seems to really slow down JDeveloper9i. If you don't have these classes you won't be able to compile the project.&lt;br /&gt;&lt;br /&gt;There is a gotcha too in the aol.jar file in the JDeveloper9i. You will need to use this i18nAPI_v3.jar. For more info on this issue, you can read up on it in this post in OAF forum. It's very likely you will also need to remove these classes from the aol.jar file oracle.apps.fnd.common.* (only in JDeveloper9i)&lt;br /&gt;&lt;br /&gt;The following jar files are not included in the project and you will have to download them. The following files are needed in order to run the project (see BIP library):&lt;br /&gt;&lt;br /&gt;1. j5472959_xdo.zip&lt;br /&gt;2. collections.jar&lt;br /&gt;3. versioninfo.jar&lt;br /&gt;4. i18nAPI_v3.jar&lt;br /&gt;5. xdoparser.jar&lt;br /&gt;6. xmlparserv2-904.jar&lt;br /&gt;&lt;br /&gt;*Files 2-6 can be found under $JAVA_TOP/oracle, Item 1. you will have to download the patch&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;&lt;span style="font-size:180%;"&gt;The Environment: (linux, unix or windows)&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;A lot of companies get "fussy" and there is a generally misunderstanding that you have to put java classes in the oracle's code tree. This is simply not true.&lt;/div&gt;&lt;p&gt;This is not a mandatory step or requirement to understanding the OA Framwork or Java Concurrent Programs, but generally speaking this is a best practice. If your doing java development in the EBS you might not have your environment setup correctly or at all. Here's what you should have setup:&lt;/p&gt;&lt;div&gt;Under YOUR custom top create the following directory structure for your customizations: $XX_TOP/java/oracle/apps/[your_top_here]&lt;br /&gt;&lt;br /&gt;Note this is not to be confused with $JAVA_TOP. This is the code tree for your companies customizations. You will also need to add this as the VERY FIRST classpath in the jserv.properties file in apache and do a hardbounce.  This will not only allow your classes to be loaded but it will also allow you to override oracles classes without removing/overwriting them in $JAVA_TOP.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="color: rgb(0, 102, 0);font-size:180%;" &gt;How It Works&lt;/span&gt;&lt;br /&gt;&lt;p&gt;The design for the &lt;a href="http://www.mediafire.com/?npyrdemmbpf"&gt;BIPublisherIDE_OAF&lt;/a&gt; is to allow developer to have a standardized way of interacting with the BIP Api's seemsly despite what environment there in. There are two ways of running data templates and format templates using the BIP Api's in the EBS:&lt;/p&gt;&lt;div&gt;1. XML Publisher Repository (EBS environment)&lt;br /&gt;2. Flat-files (Non-EBS environments or Development)&lt;br /&gt;&lt;br /&gt;The solution a developer should use for the OAF is pulling the data template and format template from the XML Publisher Repository. The two oracle bip classes to help you achieve this are:&lt;br /&gt;&lt;br /&gt;1. Data Templates: DataTemplate.class&lt;br /&gt;2. Format Templates: TemplateHelper.class&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://www.mediafire.com/?jyhdtu2gvwh"&gt;BIPublisherIDE_OAF&lt;/a&gt; code has done all of the wrapping around these classes.  A developer doesn't really have to worry about much except for a basic understanding of the OA Framework.  In order to get a report to display in a browser the developer has to  code the following:&lt;br /&gt;&lt;br /&gt;1. have the application short name for the format template&lt;br /&gt;2. have the code (name) for the format template&lt;br /&gt;3. have the application short name for the data template&lt;br /&gt;4. have the code (name) for the data template&lt;/div&gt;&lt;div&gt;5. set the parameters. note the code is designed for the OAF piece to map the session parameters to BIP parameters for the data template. This is unnecessary for java concurrent programs, because the parameter are in hashTable already.&lt;/div&gt;&lt;div&gt;6. Output type (PDF, EXCEL, HTML, RTF) (this is done in XMPublisherAPI constructor)&lt;/div&gt;&lt;div&gt;7. generate the xml&lt;/div&gt;&lt;div&gt;8. apply the template&lt;/div&gt;&lt;div&gt;9. display the document in the OAF.&lt;br /&gt;&lt;br /&gt;Here's the sample code. Pretty basic. You will need to extend the XMLPublisherAPI, call the superclass and everything is good to go.    All you have to do is call the api's for format and data templates.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;You'll also notice in the snippet below that an assumption is &lt;u&gt;not&lt;/u&gt; made that the data template code and format template code match.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-weight: bold;"&gt;package oracle.apps.xbol.ipt.webui;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;import oracle.apps.fnd.common.AppsContext;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;import com.sun.java.util.collections.Hashtable;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;import oracle.apps.fnd.framework.webui.OAPageContext;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;import oracle.apps.fnd.framework.OAException;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;import oracle.apps.fnd.common.EnvironmentStore;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;import java.util.Enumeration;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;import java.io.File;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;//import java.util.Random;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;import oracle.apps.fnd.common.VersionInfo;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 204, 0);"&gt;import oracle.apps.xbol.bipublisher.api.XMLPublisherApi;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;import oracle.apps.fnd.framework.webui.beans.OAWebBean;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;public class IPTInvoiceGenerator extends&lt;span style="color: rgb(51, 204, 0);"&gt; XMLPublisherApi&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;  static  oracle.apps.xdo.common.log.Logger logger;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;  public IPTInvoiceGenerator (OAPageContext pageContext, AppsContext appsContext, OAWebBean webBean)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;  {&lt;br /&gt;//output type is mandatory!!!!!&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;    super(pageContext, appsContext, webBean, pageContext.getParameter("output"), getOALookup());&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    StringBuffer sb = new StringBuffer();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 153, 0);"&gt;    String xdoTempCode  ="";  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 153, 0);"&gt;    String xdoTempShort ="";  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 153, 0);"&gt;    String xdoDataCode  =""; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 153, 0);"&gt;    String xdoDataShort ="";  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    try&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    { &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      setStatus("SUCCESS");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      //int i = System.getProperty("os.name").indexOf("Linux");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      //set the org if were in linux....&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      if (System.getProperty("os.name").indexOf("Windows") == -1 )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;         String orgId = pageContext.getParameter("orgId");  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;         setOrgContext(orgId);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      logger.getLog().setLevel(logger.STATEMENT);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      setOutputDirectory(getFileDirectory(pageContext));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      setOutputFile("COSTPLUS_"+getRequestId());&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      //setup data template code&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      if (System.getProperty("os.name").indexOf("Windows") == -1 )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;         String orgId = pageContext.getParameter("orgId");  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;         setOrgContext(orgId);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 153, 0);"&gt;         xdoTempCode  = pageContext.getParameter("template");  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 153, 0);"&gt;         xdoTempShort = pageContext.getParameter("tempShort");  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 153, 0);"&gt;         xdoDataCode  = pageContext.getParameter("dataTemplate");  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 153, 0);"&gt;         xdoDataShort = pageContext.getParameter("dataShort");  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      } else &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;         //hard-coding for windows...See screen shots of BIP config to make sense of&lt;br /&gt;//whats going on&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;         xdoTempCode  = "XXPO_INT_INVOICE";  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;         xdoTempShort = "XBOL";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;         xdoDataCode  = "XXPO_INT_INVOICE";  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;         xdoDataShort = "XBOL";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      if (xdoTempCode == null) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;        throw new OAException("IPTInvoiceGenerator- Template code not provided", OAException.ERROR); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      if (xdoTempShort == null) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;        throw new OAException("IPTInvoiceGenerator- Template short name not provided", OAException.ERROR); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      if (xdoDataCode == null) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;        throw new OAException("IPTInvoiceGenerator- Data Template code not provided", OAException.ERROR); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      if (xdoDataShort == null) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;        throw new OAException("IPTInvoiceGenerator- Data Template short name not provided", OAException.ERROR); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 102, 0);"&gt;      //set data template code&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-weight: bold; color: rgb(0, 102, 0);"&gt;, no link is required to the format template&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 153, 0);"&gt;      setXdoDataDefinitionCode(xdoDataCode);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 153, 0);"&gt;      setXdoDataDefinitionApplicationShortName(xdoDataShort);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 102, 0);"&gt;      //setup format template code, no link is required to the data template&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 153, 0);"&gt;      setXdoTemplateCode(xdoTempCode); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 153, 0);"&gt;      setXdoTemplateApplicationShortName(xdoTempShort);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      //if it's windows than use hard-coded hashtable, otherwise parameters are set in super class&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      if (System.getProperty("os.name").indexOf("Windows") &gt;= 0 )&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 153, 0);"&gt;         setParameters(getHashtable());&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; &lt;span style="color: rgb(0, 102, 0);"&gt;     //apply the format template&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      if ("SUCCESS".equalsIgnoreCase(getStatus())) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 153, 0);"&gt;         oaDataEngine();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      if ("FAILURE".equalsIgnoreCase(getStatus())) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;          throw new OAException("IPTInvoiceGenerator- Failed to generate xml file", OAException.ERROR); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;     &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 102, 0);"&gt;      //apply the format template&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      if ("SUCCESS".equalsIgnoreCase(getStatus())) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 153, 0);"&gt;         applyTemplate();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      } &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 153, 0);"&gt;displayOAFDocument();  //pop the document up on the browser&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      if ("FAILURE".equalsIgnoreCase(getStatus())) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;         throw new OAException("IPTInvoiceGenerator- Failed to apply format template", OAException.ERROR);  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      //dumpProperties(pageContext,appsContext);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    catch (Exception e)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;        e.printStackTrace();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;        pageContext.writeDiagnostics(this, "IPTInvoiceGenerator::constructor - error - " + e.getMessage(), 1);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    } finally &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;       appsContext.releaseJDBCConnection();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;  }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;   public final static Hashtable getOALookup()&lt;br /&gt;{&lt;br /&gt;Hashtable parameters = new Hashtable();&lt;br /&gt;/**@Mapping:&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;      *===================  OA Parameter | @BIP Parameter (see form function call =============&lt;br /&gt;bi publisher ide will search oa parameters, get there values and map them to the data template parms.&lt;br /&gt;&lt;/span&gt;      */&lt;br /&gt;parameters.put("P_MLOGO_ID"               , "P_MLOGO_ID");&lt;br /&gt;parameters.put("P_CONC_REQUEST_ID"        , "P_CONC_REQUEST_ID");&lt;br /&gt;parameters.put("P_DIR_PROJECT_ID"           , "&lt;span style="color: rgb(204, 0, 0);"&gt;P_DIR_PROJECT_ID&lt;/span&gt;");&lt;br /&gt;parameters.put("P_INDIR_PROJECT_ID"       , "P_INDIR_PROJECT_ID");&lt;br /&gt;parameters.put("P_INVOICE_NUMBER"         , "&lt;span style="color: rgb(204, 0, 0);"&gt;P_INVOICE_NUMBER&lt;/span&gt;");&lt;br /&gt;parameters.put("P_COST_PLUS_BILLING_ID"   , "&lt;span style="color: rgb(204, 0, 0);"&gt;P_COST_PLUS_BILLING_ID&lt;/span&gt;");&lt;br /&gt;parameters.put("P_TO_DATE"                         , "P_TO_DATE");&lt;br /&gt;parameters.put("P_FROM_DATE"              , "P_FROM_DATE");&lt;br /&gt;parameters.put("P_ORDER_BY"               , "&lt;span style="color: rgb(204, 0, 0);"&gt;P_ORDER_BY&lt;/span&gt;");&lt;br /&gt;parameters.put("P_ORDER_BY_BILL_CODE"     , "&lt;span style="color: rgb(204, 0, 0);"&gt;P_ORDER_BY_BILL_CODE&lt;/span&gt;");&lt;br /&gt;parameters.put("orgId"                                     , "&lt;span style="color: rgb(204, 0, 0);"&gt;P_ORG_ID&lt;/span&gt;");&lt;br /&gt;parameters.put("P_DEBUG"                            , "&lt;span style="color: rgb(204, 0, 0);"&gt;P_DEBUG&lt;/span&gt;");&lt;br /&gt;return parameters;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//this is for testing in windows...&lt;br /&gt;public static Hashtable getHashtable()&lt;br /&gt;{&lt;br /&gt;Hashtable parameters = new Hashtable();&lt;br /&gt;parameters.put("P_MLOGO_ID"               ,"1");&lt;br /&gt;parameters.put("P_CONC_REQUEST_ID"        ,"0");&lt;br /&gt;parameters.put("P_DIR_PROJECT_ID"         ,"798");&lt;br /&gt;parameters.put("P_INDIR_PROJECT_ID"       ,"");&lt;br /&gt;parameters.put("P_INVOICE_NUMBER"         ,"24636");&lt;br /&gt;parameters.put("P_COST_PLUS_BILLING_ID"   , "");&lt;br /&gt;parameters.put("P_TO_DATE"                ,"");&lt;br /&gt;parameters.put("P_FROM_DATE"              ,"");&lt;br /&gt;parameters.put("P_ORDER_BY"               ,"D");&lt;br /&gt;parameters.put("P_ORDER_BY_BILL_CODE"     , "YES");&lt;br /&gt;parameters.put("P_ORG_ID"                 , "84");&lt;br /&gt;parameters.put("P_DEBUG"                  ,"XML");&lt;br /&gt;return parameters;&lt;br /&gt;}&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;  public String nvl(String str, String replacementValue)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;  {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    return str == null || str.equalsIgnoreCase("")? replacementValue: str;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;  }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;  public String getFileDirectory(OAPageContext pageContext)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;  {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    StringBuffer path = new StringBuffer();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    try&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      String osName = System.getProperty("os.name");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      pageContext.writeDiagnostics(this,  "IPTInvoiceGenerator::getFileDirectory() resolved operating system - " + osName.toString(), 1);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      if (osName != null &amp;amp;&amp;amp; osName.indexOf("Windows") &gt;= 0)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;         //files go right to the c: drive&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;         path.append("C:");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;         path.append(File.separator);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      else&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;         //files go to the tmp directory in unix.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;         path.append(File.separator);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;         path.append("tmp");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;         path.append(File.separator);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;      }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    catch (Exception e)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;       pageContext.writeDiagnostics(this,  "IPTInvoiceGenerator::getFileDirectory() - " + e.getMessage(), 1);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    pageContext.writeDiagnostics(this,  "IPTInvoiceGenerator::getFileDirectory() resolved file dir - " + path.toString(), 1);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    return path.toString();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;  }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;  public static final String RCS_ID = "$Header: COSTPlusGenerator.java 115.1 2008/03/27 08:18:27 iwiggins noship $";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;  public static final boolean RCS_ID_RECORDED = VersionInfo.recordClassVersion("$Header: COSTPlusGenerator.java 115.1 2008/03/27 08:18:27 iwiggins noship $", "oracle.apps.xbol.costplus.webui");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The design to associate a format template with and data template is intentional.  This will allow a developer to link up any format template with any data template and this is the way it should work.  Going forward oracle fusion publisher will probably work the same way which is great!&lt;br /&gt;&lt;br /&gt;See Tim Dexter's blog:  http://blogs.oracle.com/xmlpublisher/2008/06/02#a986&lt;br /&gt;&lt;br /&gt;So now that we have the code, how do we call this from a form?  It's really simple...We have to call an OAF page and the controller class has to run something similar to the snippet above.   Now your probably wondering how do I call an oaf page from forms?  We need to leverage fnd_function.execute and call a menu function for the OA page and the rest is history.&lt;br /&gt;&lt;br /&gt;Here's a snippet of how in your form:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;--NOTICE THESE MAP OUT IN THE JAVA SNIPPET ABOVE (see getOALookup())&lt;br /&gt;--For the sake of consistency I named the parameters the same for oaf and the data template.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 255);font-family:Arial;font-size:85%;"  &gt;&lt;span style="color: rgb(0, 0, 0);font-size:85%;" &gt;&lt;span style="color: rgb(204, 0, 0);"&gt;    --you can't see it but this form actually supports 3 similar reports!!!!&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;          fnd_function.execute(&lt;br /&gt;function_name =&gt; '&lt;span style="font-weight: bold;"&gt;XX_VIEW_IPT_DOCUMENT&lt;/span&gt;',&lt;br /&gt;other_params=&gt;'&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;P_DIR_PROJECT_ID&lt;/span&gt;='||:BILL_ITEMS.PROJECT_ID||&lt;br /&gt;--'&amp;amp;P_INVOICE_NUMBER='||:BILL_ITEMS.INVOICE_NUMBER||&lt;br /&gt;'&amp;amp;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;orgId&lt;/span&gt;='||:BILL_ITEMS.ORG_ID||&lt;br /&gt;'&amp;amp;&lt;span style="color: rgb(204, 0, 0); font-weight: bold;"&gt;output&lt;/span&gt;='||:CTRL_BLOCK.XDO_OUTPUT_TYPE||&lt;br /&gt;'&amp;amp;&lt;span style="color: rgb(204, 0, 0); font-weight: bold;"&gt;template&lt;/span&gt;='||:CTRL_BLOCK.TEMPLATE_CODE||&lt;br /&gt;'&amp;amp;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;tempShort&lt;/span&gt;='||:CTRL_BLOCK.TEMPLATE_APP_SHORT_NAME||&lt;br /&gt;'&amp;amp;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;dataTemplate&lt;/span&gt;='||:CTRL_BLOCK.DATA_SOURCE_CODE||&lt;br /&gt;'&amp;amp;&lt;span style="color: rgb(204, 0, 0); font-weight: bold;"&gt;dataShort&lt;/span&gt;='||:CTRL_BLOCK.DATA_TEMPLATE_APP_SHORT_NAME||&lt;br /&gt;'&amp;amp;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;P_DEBUG&lt;/span&gt;=XML'||&lt;br /&gt;'&amp;amp;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;P_COST_PLUS_BILLING_ID&lt;/span&gt;='||:BILL_ITEMS.COST_PLUS_BILLING_ID||&lt;br /&gt;'&amp;amp;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;P_ODRDER_BY_BILL_CODE&lt;/span&gt;=YES'||&lt;br /&gt;'&amp;amp;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;P_ORDER_BY&lt;/span&gt;=D'&lt;br /&gt;);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;Now to fill in some of the gaps, below is a highlevel diagram, the form and bip config.  You may need to click on the image to see the whole picture.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://img2.freeimagehosting.net/uploads/2a8f31ca7a.jpg"&gt;&lt;img src="http://img2.freeimagehosting.net/uploads/2a8f31ca7a.jpg" alt="Free Image Hosting" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Notice that BIP code, data template and format templates can now be leveraged with a concurrent request or in forms6i!!!!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://img2.freeimagehosting.net/uploads/ed61a3a3f6.jpg"&gt;&lt;img src="http://img2.freeimagehosting.net/uploads/ed61a3a3f6.jpg" alt="Free Image Hosting" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Have to make it sswa!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://img2.freeimagehosting.net/uploads/489e410b0a.jpg"&gt;&lt;img src="http://img2.freeimagehosting.net/uploads/489e410b0a.jpg" alt="Free Image Hosting" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Wow, are there two oaf pages here, does the other page pop up another report?  Yep it sure does.  It works really slick, users never have to key a single parameter and they can also run a series of reports right from the form!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://img2.freeimagehosting.net/uploads/d054249db0.jpg"&gt;&lt;img src="http://img2.freeimagehosting.net/uploads/d054249db0.jpg" alt="Free Image Hosting" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://img2.freeimagehosting.net/uploads/797e5ef550.jpg"&gt;&lt;img src="http://img2.freeimagehosting.net/uploads/797e5ef550.jpg" alt="Free Image Hosting" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Notice the data template!  If you still creating xml from reports6i, you should really stop doing this, your coding yourself in a corner!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://img2.freeimagehosting.net/uploads/25ac1a7ef9.jpg"&gt;&lt;img src="http://img2.freeimagehosting.net/uploads/25ac1a7ef9.jpg" alt="Free Image Hosting" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5406107793530126650-2947931768323794075?l=bipublisher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bipublisher.blogspot.com/feeds/2947931768323794075/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5406107793530126650&amp;postID=2947931768323794075' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/2947931768323794075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/2947931768323794075'/><link rel='alternate' type='text/html' href='http://bipublisher.blogspot.com/2008/03/bi-publisher-bip-in-oa-framework-part.html' title='BI Publisher: BIP in the OA Framework part II'/><author><name>Ike Wiggins</name><uri>http://www.blogger.com/profile/03629933955296401382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_tbV38YrrIv4/RxgXvw8IBwI/AAAAAAAAAAw/lgP6jbAaB2M/s320/ike.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5406107793530126650.post-3283641876280213881</id><published>2008-06-02T15:32:00.001-07:00</published><updated>2009-09-26T09:45:28.378-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BIPublisherIDE'/><category scheme='http://www.blogger.com/atom/ns#' term='xdodebug.cfg'/><category scheme='http://www.blogger.com/atom/ns#' term='xdo.cfg'/><title type='text'>BI Publisher:  xdo.cfg &amp; BIPublisherIDE</title><content type='html'>&lt;div&gt;&lt;strong&gt;&lt;/strong&gt;For those of you out there that have downloaded the BIPublisherIDE a question may be plaguing you:   "How do I use the xdo.cfg or xdodebug.cfg file, where do I put those suckers?"&lt;br /&gt;&lt;br /&gt;After some digging today I helped out a soon to be poster on this blog, Brett Baldwin.  Here's how you dig into this problem.&lt;br /&gt;&lt;br /&gt;Step 1:  Run the BIPublisherIDE&lt;br /&gt;Step 2:  Pause it in JDeveloper and look at the log for the following text:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(255, 0, 0);"&gt;Note:  Directory structures will differ based on your versions of jre or drive letters&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;[060208_051345725][][STATEMENT] XDO version   = Oracle XML Publisher 5.6.3&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;[060208_051345725][][STATEMENT] java.home     = C:\Program Files\Java\jre1.6.0_06&lt;/span&gt;&lt;br /&gt;[060208_051345725][][STATEMENT] XDO_TOP       = null&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;[060208_051345725][][STATEMENT] Config Path   = null&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;[060208_051345725][][STATEMENT] Debug Cfg Path= null&lt;/span&gt;&lt;br /&gt;[060208_051345740][][STATEMENT] Font dir      = C:\Program Files\Java\jre1.6.0_06\lib\fonts\&lt;br /&gt;[060208_051345740][][STATEMENT] Locale        = en-US&lt;br /&gt;[060208_051345740][][STATEMENT] Fallback font = type1.Helvetica&lt;br /&gt;&lt;br /&gt;Step 3:  Find the java home, see above and blue and create two files in the lib directory for our example it would the following:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;C:\Program Files\Java\jre1.6.0_06\&lt;span style="font-weight: bold;"&gt;lib&lt;/span&gt;\xdo.cfg&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;C:\Program Files\Java\jre1.6.0_06\&lt;span style="font-weight: bold;"&gt;lib&lt;/span&gt;\xdodebug.cfg&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Step 4:  Add whatever additions you need to these files, for xdo.cfg this is particularly useful for fonts (barcodes), currencies, etc (see oracle's bip manual).  For xdodebug, you can use the xdodebug.cfg (really not necessary client side, however very useful server-side and for oaf customizations.&lt;br /&gt;&lt;br /&gt;Step 5:  Re-run or click debug, You should see the following the configs are now being picked up!&lt;br /&gt;&lt;br /&gt;&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size:85%;"&gt;[060208_052916553][][STATEMENT] [ PDF GENERATOR ]---------------------------------------------&lt;br /&gt;[060208_052916553][][STATEMENT] XDO version   = Oracle XML Publisher 5.6.3&lt;br /&gt;[060208_052916553][][STATEMENT] java.home     = C:\Program Files\Java\jre1.6.0_06&lt;br /&gt;[060208_052916553][][STATEMENT] XDO_TOP       = null&lt;br /&gt;[060208_052916553][][STATEMENT] &lt;span style="font-weight: bold;"&gt;Config Path   = C:\Program Files\Java\jre1.6.0_06\lib\xdo.cfg&lt;/span&gt;&lt;br /&gt;[060208_052916553][][STATEMENT] &lt;span style="font-weight: bold;"&gt;Debug Cfg Path= C:\Program Files\Java\jre1.6.0_06\lib\xdodebug.cfg&lt;/span&gt;&lt;br /&gt;[060208_052916553][][STATEMENT] Font dir      = C:\Program Files\Java\jre1.6.0_06\lib\fonts\&lt;br /&gt;[060208_052916553][][STATEMENT] Locale        = en-US&lt;br /&gt;[060208_052916553][][STATEMENT] Fallback font = type1.Helvetica&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Hope this was helpful, Keep on Bipin!&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5406107793530126650-3283641876280213881?l=bipublisher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bipublisher.blogspot.com/feeds/3283641876280213881/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5406107793530126650&amp;postID=3283641876280213881' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/3283641876280213881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/3283641876280213881'/><link rel='alternate' type='text/html' href='http://bipublisher.blogspot.com/2008/06/bi-publisher-xdocfg-bipublisheride.html' title='BI Publisher:  xdo.cfg &amp; BIPublisherIDE'/><author><name>Ike Wiggins</name><uri>http://www.blogger.com/profile/03629933955296401382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_tbV38YrrIv4/RxgXvw8IBwI/AAAAAAAAAAw/lgP6jbAaB2M/s320/ike.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5406107793530126650.post-8776131963710745089</id><published>2008-05-07T16:24:00.000-07:00</published><updated>2009-09-26T09:19:14.541-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Format Templates'/><title type='text'>BI Publisher:  Totals got ya down</title><content type='html'>Alright, if you have ever converted a report6i to a data template in bi publisher using the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;api's&lt;/span&gt; or by hand you will know one thing, removal of the integration of summary columns and formula columns or vice versa in lower groups is a total "beach."&lt;br /&gt;&lt;br /&gt;I said it, "beach." There is a sneaky workaround, not pleasant but doable. When your report gets converted you might see something like this:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Functional flow in reports6i:&lt;/strong&gt;&lt;br /&gt;[First Group (CF_TOTAL_AMOUNT combines summaries columns)]--&gt;[First Group has summary columns (:cs_detail_amount, :cs_detail_state, :cs_detail_federal)]&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;SQL Example:&lt;/strong&gt;&lt;br /&gt;select&lt;br /&gt;cf_total_amount(:cs_detail_amount, :cs_detail_state, :cs_detail_federal&lt;br /&gt;...&lt;br /&gt;...&lt;br /&gt;from &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;ap&lt;/span&gt;_invoices&lt;br /&gt;where blah, blah&lt;br /&gt;&lt;br /&gt;The basic probably we have here is that cs fields are in the same group, but when the query runs the summed amounts haven't taken place, nor will they, a classic paradox. You will get nothing for the cf_total_amount. Quite the conundrum....or is it.&lt;br /&gt;&lt;br /&gt;I guess, it;s time to pull this calculated formula out and give up. The business your working for will totally understand that there are limitations to technology. Alright, back to reality, let's make this puppy work.&lt;br /&gt;&lt;br /&gt;Solution remove the functions and create something like this for a sqlQuery and new group :&lt;br /&gt;&lt;br /&gt;select&lt;br /&gt;cf_total_amount(:cs_detail_amount, :cs_detail_state, :cs_detail_federal&lt;br /&gt;...&lt;br /&gt;...&lt;br /&gt;from&lt;strong&gt; &lt;/strong&gt;dual&lt;br /&gt;&lt;br /&gt;Organize your data template to do the summing below all of the other current group(s). Follow up with the new group with the calculated formula's select from dual with the summary columns. Here's the logic breakdown:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Order of execution:&lt;/strong&gt;&lt;br /&gt;1. [First Group (get all the fields that will be summed)]&lt;br /&gt;2. [Summary Elements (summary columns here)]&lt;br /&gt;3. [Second Group (select calculated formula(s) from dual with summary column values)]&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Why:&lt;/strong&gt;&lt;br /&gt;Fields that are going to be summed must be higher than the summary columns. It's simple, we select the calculated formula's from dual with the summary bind variables.&lt;br /&gt;&lt;br /&gt;This approach should work for those of you that are aspiring new bip developers that are converting reports6i to data templates. You will find that people believe or not will have functions calling summary columns in the same group. This example should help with other "minor" limitations with bip with summary columns and calculated formulas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5406107793530126650-8776131963710745089?l=bipublisher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bipublisher.blogspot.com/feeds/8776131963710745089/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5406107793530126650&amp;postID=8776131963710745089' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/8776131963710745089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/8776131963710745089'/><link rel='alternate' type='text/html' href='http://bipublisher.blogspot.com/2008/05/bi-publisher-totals-got-ya-down.html' title='BI Publisher:  Totals got ya down'/><author><name>Ike Wiggins</name><uri>http://www.blogger.com/profile/03629933955296401382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_tbV38YrrIv4/RxgXvw8IBwI/AAAAAAAAAAw/lgP6jbAaB2M/s320/ike.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5406107793530126650.post-3841950264871737742</id><published>2008-03-17T07:00:00.000-07:00</published><updated>2009-09-26T09:20:14.788-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OAF BI Publisher'/><title type='text'>BI Publisher:  BIP in the OA Framework part I</title><content type='html'>&lt;span style="color: rgb(102, 102, 102);font-family:arial;font-size:85%;"  &gt;&lt;a href="http://2.bp.blogspot.com/_tbV38YrrIv4/RxgCFw8IBvI/AAAAAAAAAAo/cjHFndCfS1w/s1600-h/screaming.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5122846874193626866" style="" alt="" src="http://2.bp.blogspot.com/_tbV38YrrIv4/RxgCFw8IBvI/AAAAAAAAAAo/cjHFndCfS1w/s320/screaming.jpg" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Have you ever wondered how the PO report pops up without a submitting a concurrent request? Pretty sweet huh! Well your going to know how do it after you reading this blog.&lt;br /&gt;&lt;br /&gt;When this type of functionality came out in 11.5.10 myself and others wondered how is this possible, how can you generate a document and display it in "real-time." After digging into in 2005, I figured out that it was using the OA Framework. The problem for me at the time though was that I didn't have a clue about the OA Framework. I was literally baffeled and frustrated (see screaming baby above). I kept searching for the poViewDocumentPG and for the life of me I couldn't freakin' find it.&lt;br /&gt;&lt;br /&gt;Well it's a two years later and I finally spent some time into figuring it out. A couple of key factors was reading the documentation, plus, I've started doing some OA Framework development. When we look at bare-bones how a pdf can be displayed on a screen in using the OA Framework it's really straightforward. Throughout this document I'm going to refer to this type of development as the "Real-Time" model.&lt;br /&gt;&lt;p&gt;&lt;span style="color: rgb(0, 102, 0);font-size:180%;" &gt;How the Oracle PO Works&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Step 1.&lt;/strong&gt; find the form function PO_VIEW_DOCUMENT, &lt;/p&gt;&lt;p&gt;HTML CALL: OA.jsp?page=/oracle/apps/po/communicate/webui/poViewDocumentPG&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Step 2.&lt;/strong&gt; Create an OA framework page, very simple. This is ridicuosly easily. You need to have a controller and application module. Note, the application module doesn't have to have anything it but it must exist. &lt;/p&gt;&lt;p&gt;FYI: For our example, the PO_VIEW_DOCUMENT function has a page called poViewDocumentPG, however when we go out to the code tree (/oracle/apps/po/communicate/webui/) it doesn't exist. This because the xml files are loaded in the database. We can use this utility to download it: &lt;/p&gt;&lt;p&gt;begin &lt;/p&gt;&lt;p&gt;JDR_UTILS.printDocument('/oracle/apps/po/communicate/webui/poViewDocumentPG');&lt;/p&gt;&lt;p&gt;end;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;We can see it's a bare bones page with one region and zero fields. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Step 3:&lt;/strong&gt; write the logic in the controller class to get the document and return it. Note: this is a weird way to create an OAF page, usually you call the Application Module to generate the data and set the where clauses for the view objects in the AM, which bind to the OAF page. However the controller in this example generates the data/document and use HttpServletResponse to create the page, the application module doesn't really do anything. The application module could if you wanted it to, the blanket sales agreement is an example where the AM generates the xml. &lt;/p&gt;&lt;p&gt;sample code snippet:&lt;/p&gt;public class poViewDocumentCO extends oracle.apps.fnd.framework.webui.OAControllerImpl&lt;br /&gt;{&lt;br /&gt;public void processRequest(oracle.apps.fnd.framework.webui.OAPageContext oapagecontext, oracle.apps.fnd.framework.webui.beans.OAWebBean oawebbean)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;int j = java.lang.Integer.parseInt(oapagecontext.getParameter("DocumentId"));&lt;/strong&gt;&lt;br /&gt;....&lt;br /&gt;....&lt;br /&gt;....&lt;br /&gt;....&lt;br /&gt;httpservletresponse.setContentType("application/pdf");&lt;br /&gt;httpservletresponse.setContentLength(abyte0.length);&lt;br /&gt;httpservletresponse.setHeader("Content-Disposition", "attachment;Filename = " + pogeneratedocument.getfileName());&lt;br /&gt;&lt;strong&gt;httpservletresponse.getOutputStream().write(abyte0, 0, abyte0.length);&lt;br /&gt;&lt;/strong&gt;httpservletresponse.getOutputStream().flush();&lt;br /&gt;httpservletresponse.getOutputStream().close();&lt;br /&gt;return;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Step 4:&lt;/strong&gt; Call the function from your form to create basically a pop up and generate the document. Exluded in step 3's code above is the snippet to grab all the parameters that are appended together below from the function call in the form. I left just one so you would get the point.&lt;br /&gt;&lt;br /&gt;fnd_function.execute( function_name =&gt; 'PO_VIEW_DOCUMENT',&lt;br /&gt;other_params=&gt;'&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;DocumentId&lt;/span&gt;='l_document_id'&lt;br /&gt;&amp;amp;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;RevisionNum&lt;/span&gt;=':HEADERS_FOLDER.REVISION_&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;NUM&lt;/span&gt;'&lt;br /&gt;&amp;amp;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;LanguageCode&lt;/span&gt;='&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;userenv&lt;/span&gt;('LANG''&lt;br /&gt;&amp;amp;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;DocumentType&lt;/span&gt;='l_document_type'&lt;br /&gt;&amp;amp;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;DocumentSubtype&lt;/span&gt;='l_document_subtype'&lt;br /&gt;&amp;amp;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;OrgId&lt;/span&gt;=' &lt;strong&gt;:&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;po&lt;/span&gt;_&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;startup&lt;/span&gt;_values.org_id&lt;/strong&gt;'&lt;br /&gt;&amp;amp;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;AuthorizationStatus&lt;/span&gt;=':headers_folder.authorization_status'&lt;br /&gt;&amp;amp;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;UserSecurity&lt;/span&gt;='&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;userSecurity&lt;/span&gt; '&lt;br /&gt;&amp;amp;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;StoreFlag&lt;/span&gt;=N'&lt;br /&gt;&amp;amp;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;ViewOrCommunicate&lt;/span&gt;=View');&lt;br /&gt;&lt;br /&gt;DONE DEAL&lt;br /&gt;&lt;br /&gt;Yes that's it, there really is no &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;OA&lt;/span&gt; Framework code to write for the application module or controller. Note, as a best practice if you decide to do this development, your controller class should call another class to generate the final output, the purpose of the controller in this case is purely to push the document &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;upto&lt;/span&gt; the browser. This is a better practice because it allows the developer to create new and additional constructors for one class that generates the document, versus copying and pasting the logic in each implementation (OAF, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;JavaConcurrentProgram&lt;/span&gt;, etc).&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 102, 0);font-size:180%;" &gt;Things to Keep in Mind&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If your still doing report development using reports6i you really need to stop that. While reports6i is a great tool, it has one big downside (&lt;em&gt;besides being dated and replaced with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;BIP&lt;/span&gt;&lt;/em&gt;) and that is in-order to generate &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;xml&lt;/span&gt; file, you have to submit a concurrent request (there are workarounds for this, none that are pleasant). This doesn't work in the "real-time" model.&lt;br /&gt;&lt;br /&gt;In the above example the PO will actually generate the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;xml&lt;/span&gt; using pl/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;sql&lt;/span&gt; package. While this was acceptable in the past, you really shouldn't be doing this either.&lt;br /&gt;&lt;br /&gt;Data templates should be used for generating the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;xml&lt;/span&gt;. Besides ease of use and it being less intense than using pure pl/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;sql&lt;/span&gt;, in this model it works because it can be run in "real-time."&lt;br /&gt;&lt;br /&gt;There are a lot of possibilities with &lt;strong&gt;form personalization's&lt;/strong&gt; to plug reports in line with standard oracle forms. Simply create a menu and call a built-in function which submits a function call to the &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;OA&lt;/span&gt; Framework page. This allows the developer to have even more flexibility in customizing the application and reporting, while saving users time for keying and submitting concurrent requests.&lt;br /&gt;&lt;br /&gt;A caveat here is don't do the real-time model with slow reports. Slow reports should be concurrent requests so they can be managed and maintained more effectively. From a high-level it doesn't make any sense at all to have a slow running report in real-time, it's a distraction for end-users and it may make it harder for them to manage there report(s), hence concurrent manager.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;Part II: The next article will have a zip of an &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;OA&lt;/span&gt; Framework project that will push a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;pdf&lt;/span&gt; up on the screen. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;Booyah&lt;/span&gt;!&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;Part III: Understand BIP Integration points&lt;/span&gt;&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5406107793530126650-3841950264871737742?l=bipublisher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://bipublisher.blogspot.com/2008/03/bi-publisher-bip-in-oa-framework-part-2.html' title='BI Publisher:  BIP in the OA Framework part I'/><link rel='replies' type='application/atom+xml' href='http://bipublisher.blogspot.com/feeds/3841950264871737742/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5406107793530126650&amp;postID=3841950264871737742' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/3841950264871737742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/3841950264871737742'/><link rel='alternate' type='text/html' href='http://bipublisher.blogspot.com/2008/03/bi-publisher-bip-in-oa-framework-part-1.html' title='BI Publisher:  BIP in the OA Framework part I'/><author><name>Ike Wiggins</name><uri>http://www.blogger.com/profile/03629933955296401382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_tbV38YrrIv4/RxgXvw8IBwI/AAAAAAAAAAw/lgP6jbAaB2M/s320/ike.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_tbV38YrrIv4/RxgCFw8IBvI/AAAAAAAAAAo/cjHFndCfS1w/s72-c/screaming.jpg' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5406107793530126650.post-8445931401219650331</id><published>2008-03-12T12:17:00.000-07:00</published><updated>2009-09-26T09:15:53.556-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BIPublisherIDE'/><title type='text'>BI Publisher:  BIPublisherIDE</title><content type='html'>&lt;span style="color: rgb(51, 102, 102);font-size:180%;" &gt;BI Publisher Integrated Development Environment&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you ever wondered how the BI Publisher API's worked then look no further. This is the ultimate blog on how the API's and there is a free working code base you can download and use for development.&lt;br /&gt;&lt;br /&gt;There are four caveats:&lt;br /&gt;&lt;br /&gt;1. This code is free but cannot be copyrighted, unless your oracle (but you need to discuss terms first with me)&lt;br /&gt;&lt;br /&gt;2. I don't think I can distribute xdocore.jar file, you will need to download either in the latest patchset (ebs) or standalone version.&lt;br /&gt;&lt;br /&gt;For 11i environment, I would suggest downloading patch: &lt;em&gt;5472959.&lt;/em&gt; If you put the j5472959_xdo.zip file in c:\JDeveloper\jdev\mywork\BIPublisherIDE\BIPublisherIDE\lib&lt;br /&gt;the project should work.&lt;br /&gt;&lt;br /&gt;3. If you improve the project you should share the information here in this blogpost.&lt;br /&gt;&lt;br /&gt;4. If you download the project please post a "positive comment." Kidding...but it would nice!&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 102);font-size:180%;" &gt;History&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Long ago, I was doing a tremedous amount of BI Publisher development inside the EBS and Oracle Portal. One of the problems I was having is that BI Publisher development can be time consuming when you continually have to reload your format template, data template into the database and re-iteratively submit concurrent requests.&lt;br /&gt;&lt;br /&gt;I was also faced with other issues as well, what if I wanted to test eText and Bursting locally? There was no option to do this any product. The only way to test eText is &lt;em&gt;start-&gt;programs- your bip installation-&gt; run template viewer&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 102, 102);font-size:180%;" &gt;How It Works: Architecture&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The BIPublisherIDE is setup for a developer by a developer (it's just like the hair club for men, "I'm not only a member but I'm also a client.")&lt;br /&gt;&lt;br /&gt;There is a config class, api class and utility class.&lt;br /&gt;&lt;br /&gt;config-&gt;api-&gt;utility&lt;br /&gt;&lt;br /&gt;1. The config class contains methods and creates connections to databases.&lt;br /&gt;&lt;br /&gt;2. The api's class extends the config class and inherits the methods and has the ability to override the methods. This class contains all of the bi publisher core api's.&lt;br /&gt;&lt;br /&gt;3. The utility class extends the api class, put simply the utility class is a wrapper. It sets the foundation for which api's to call based on what is set in the config file (xml).&lt;br /&gt;&lt;br /&gt;The design is intentional and sets a precedence for doing report development. As developers we iteratively run unit tests till we receive the desired result. One of the most cumbersome problems we face is that there is a lot of "non-value" added steps in report development process. This is why report development to a certain degree needs to be configurable and run locally.&lt;br /&gt;&lt;br /&gt;Other benefits of the design is that fact that it's not only a development tool, it can be deployed in other environments. For instance you can deploy the BIPublisherIDE jar file in a concurrent program or other web based environment like portal, websphere, etc (this might be helpful for apex too).&lt;br /&gt;&lt;p&gt;How to run the IDE &lt;a href="http://www.mediafire.com/?jqdzxnqt2c1"&gt;(BIPublisherIDE.pdf)&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Download the IDE &lt;a href="http://www.mediafire.com/file/he2rghqjgey/BIPublisherIDE.zip"&gt;(BIPublisherIDE.zip)&lt;/a&gt; &lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;Next Article to Come: How to display a BIP Report using the OA Framework (i.e: like the PO)&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5406107793530126650-8445931401219650331?l=bipublisher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bipublisher.blogspot.com/feeds/8445931401219650331/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5406107793530126650&amp;postID=8445931401219650331' title='25 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/8445931401219650331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/8445931401219650331'/><link rel='alternate' type='text/html' href='http://bipublisher.blogspot.com/2008/03/bi-publisher-bipublisheride.html' title='BI Publisher:  BIPublisherIDE'/><author><name>Ike Wiggins</name><uri>http://www.blogger.com/profile/03629933955296401382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_tbV38YrrIv4/RxgXvw8IBwI/AAAAAAAAAAw/lgP6jbAaB2M/s320/ike.jpg'/></author><thr:total>25</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5406107793530126650.post-7671218176350279608</id><published>2008-01-22T19:42:00.000-08:00</published><updated>2009-09-26T09:18:55.718-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XDO Loader'/><title type='text'>BI Publisher:  XDO Loader</title><content type='html'>How many times has a developer approached you and said, "I made the changes to my template and put it out on the code tree, but my change isn't being recogonized in 11i."  Your response could be two things.&lt;br /&gt;&lt;br /&gt;1.  You need to upload it into the database using the XML Publisher Administrator responsiblity.&lt;br /&gt;2.  Use xdo loader, an example is on ike's blog...&lt;br /&gt;&lt;br /&gt;Number 2, is really the best option (he he )....if the template config is already done.   When you start browsing and uploading files from your PC or emailing them to your administrator, your opening the door for mistakes, mistakes suck when they happen in production.   One of the biggest advantages of using XDO loader is the fact that what's out on the code tree is what will get loaded into the database.  The only other workaround for loading templates from unix is samba...&lt;br /&gt;&lt;br /&gt;Implementing a solution using XDO Loader in your shop is really easy task.  These sample calls are designed to be called from a shell script.  They are for existing templates that have been configured in 11i.  Essentially, calling this script will automatically, convert your RTF to XSL-FO and upload it in the database.&lt;br /&gt;&lt;a name="_Toc185908867"&gt;&lt;br /&gt;Static Example:&lt;/a&gt;&lt;br /&gt;/opt/java1.5/bin/java oracle.apps.xdo.oa.util.XDOLoader \&lt;br /&gt;UPLOAD \&lt;br /&gt;-DB_USERNAME apps \&lt;br /&gt;-DB_PASSWORD apps \&lt;br /&gt;-JDBC_CONNECTION sand:1535:NADV \&lt;br /&gt;-LOB_TYPE TEMPLATE_SOURCE \&lt;br /&gt;-APPS_SHORT_NAME VCA \&lt;br /&gt;-LOB_CODE VGMDQCARD \&lt;br /&gt;-LANGUAGE en \&lt;br /&gt;-TERRITORY US \&lt;br /&gt;-XDO_FILE_TYPE RTF \&lt;br /&gt;-FILE_CONTENT_TYPE 'application/rtf' \&lt;br /&gt;-FILE_NAME $VCA_TOP/xml_pub/template/VGMDQCARD.rtf \&lt;br /&gt;-NLS_LANG $NLS_LANG \&lt;br /&gt;-CUSTOM_MODE FORCE \&lt;br /&gt;&lt;br /&gt;&lt;a name="_Toc185908868"&gt;Dynamic Example:&lt;/a&gt;&lt;br /&gt;/opt/java1.5/bin/java oracle.apps.xdo.oa.util.XDOLoader \&lt;br /&gt;UPLOAD \&lt;br /&gt;-DB_USERNAME apps \&lt;br /&gt;-DB_PASSWORD apps \&lt;br /&gt;-JDBC_CONNECTION $1 \&lt;br /&gt;-LOB_TYPE TEMPLATE_SOURCE \&lt;br /&gt;-APPS_SHORT_NAME VCA \&lt;br /&gt;-LOB_CODE $2 \    -LANGUAGE en \&lt;br /&gt;-TERRITORY US \&lt;br /&gt;-XDO_FILE_TYPE RTF \&lt;br /&gt;-FILE_CONTENT_TYPE 'application/rtf' \&lt;br /&gt;-FILE_NAME $VCA_TOP/xml_pub/template/$3 \&lt;br /&gt;-NLS_LANG $NLS_LANG \&lt;br /&gt;-CUSTOM_MODE FORCE&lt;br /&gt;&lt;br /&gt;$1 = JDBC Connection string this could be simplified by setting up an environment variable.&lt;br /&gt;$2 = this is the name of the template code   (select LOB_CODE from xdo_lobs)  &lt;br /&gt;$3 = this is the RTF flatfile&lt;br /&gt;&lt;br /&gt;-CUSTOM_MODE FORCE = FORCE the update if a lob already exists, otherwise it will error out....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5406107793530126650-7671218176350279608?l=bipublisher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bipublisher.blogspot.com/feeds/7671218176350279608/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5406107793530126650&amp;postID=7671218176350279608' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/7671218176350279608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/7671218176350279608'/><link rel='alternate' type='text/html' href='http://bipublisher.blogspot.com/2008/01/bi-publisher-xdo-loader.html' title='BI Publisher:  XDO Loader'/><author><name>Ike Wiggins</name><uri>http://www.blogger.com/profile/03629933955296401382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_tbV38YrrIv4/RxgXvw8IBwI/AAAAAAAAAAw/lgP6jbAaB2M/s320/ike.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5406107793530126650.post-828745002521844183</id><published>2008-01-08T20:36:00.000-08:00</published><updated>2008-01-26T07:41:58.468-08:00</updated><title type='text'>BI Publisher:  Blog Tag</title><content type='html'>Tim Dexter has decided to blog tag me.  Being a good sport I will accept his challenge.  Basically, I have to reveal 8 things that people wouldn’t know about me unless I told you. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1. Being 50% Irish, 25% German, 15%, Scottish, 5% English.  I have a fond love for beer, it’s genetic :-).  I have brewing beer successfully at home for over 2 years and yes it’s very drinkable I might add.  It’s because of this I would consider myself a “beer snob.”  If you know who Michael Jackson is, then you’re probably a beer snob too and I’m not talking about the singer….&lt;br /&gt;&lt;br /&gt;2. I lack any form of shame.  Two small examples:  There is a childhood picture of me in my senior yearbook riding a horse naked or the fact that in my previous driver license photo I don’t have my shirt on.&lt;br /&gt;&lt;br /&gt;3. I’m notoriously cheap.  If you ask my wife she’ll say this is a typical conversation:  Does it cost money?  Then it’s been decided were not doing it.&lt;br /&gt;&lt;br /&gt;4. I still use my college student ID to get discounts at movie theaters.  I’m 28 years old….On a side-note, I convinced my wife to do the same thing :-)&lt;br /&gt;&lt;br /&gt;5. A typical vacation for me is usually a tropical destination.  I love to dive.  Diving is one of the most relaxing sports around.  I’m jaded though because it’s quite an expensive hobby (see #3).&lt;br /&gt;&lt;br /&gt;6. I recently got into Olympic lifting, it’s awesome sport.&lt;br /&gt;&lt;br /&gt;7. PBS Junky&lt;br /&gt;&lt;br /&gt;8. I believe global warming is a real phenomenon...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5406107793530126650-828745002521844183?l=bipublisher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bipublisher.blogspot.com/feeds/828745002521844183/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5406107793530126650&amp;postID=828745002521844183' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/828745002521844183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/828745002521844183'/><link rel='alternate' type='text/html' href='http://bipublisher.blogspot.com/2008/01/bi-publisher-blog-tag.html' title='BI Publisher:  Blog Tag'/><author><name>Ike Wiggins</name><uri>http://www.blogger.com/profile/03629933955296401382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_tbV38YrrIv4/RxgXvw8IBwI/AAAAAAAAAAw/lgP6jbAaB2M/s320/ike.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5406107793530126650.post-9210529139358179703</id><published>2007-11-16T07:16:00.000-08:00</published><updated>2009-09-26T09:41:06.898-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Bursting'/><title type='text'>BI Publisher:  Common Use for Bursting API</title><content type='html'>This is an excerpt of a post requesting to do three things in one shot (grab an xml, apply a template, send it to the printer). This exactly what bursting was designed for. Because of the obscurity of how to use the java api's for BI Publisher, people overlook the fact that you can call a majority of the api's through the command line. Nearly every BI Publisher api that is documented has a main method.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Question:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;I have xml documents coming in on a linux directory. I would like to take the raw xml data and apply a template and send it to a printer.&lt;br /&gt;&lt;br /&gt;Questions are:&lt;br /&gt;&lt;br /&gt;1. Since there is no way to tell when the xml documents will appear for processing, is there any way I can make the BIP poll the linux directory to check for incoming files?&lt;br /&gt;&lt;br /&gt;2. How can I apply a template and make the raw xml data beautiful?&lt;br /&gt;&lt;br /&gt;3. Finally, after template application, I need to take the output and send it to a printer. I believe I will have to use delivery manager api's to do it.&lt;br /&gt;&lt;br /&gt;Can someone help with the three questions?&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Response:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;I don't know if the xml gateway will solve your problem as "punit" suggested. don't worry though, this problem can get solved pretty easily, Chin up cowboy.&lt;br /&gt;&lt;br /&gt;I would setup an autosys job that calls a shell script that loops through the files in a directory and executes a command line argument for the busting api's.&lt;br /&gt;&lt;br /&gt;It's going to expect the following arguments:&lt;br /&gt;&lt;br /&gt;java oracle.apps.xdo.batch.DocumentProcessor [-debug] -tempdir -datafile&lt;br /&gt;&lt;br /&gt;you may need to resolve the whole path. echo $JAVA_TOP.  That it's, there's really not much to the api.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5406107793530126650-9210529139358179703?l=bipublisher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bipublisher.blogspot.com/feeds/9210529139358179703/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5406107793530126650&amp;postID=9210529139358179703' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/9210529139358179703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/9210529139358179703'/><link rel='alternate' type='text/html' href='http://bipublisher.blogspot.com/2007/11/bi-publisher-common-use-for-bursting.html' title='BI Publisher:  Common Use for Bursting API'/><author><name>Ike Wiggins</name><uri>http://www.blogger.com/profile/03629933955296401382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_tbV38YrrIv4/RxgXvw8IBwI/AAAAAAAAAAw/lgP6jbAaB2M/s320/ike.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5406107793530126650.post-3828794932659317895</id><published>2007-11-12T16:34:00.000-08:00</published><updated>2009-09-26T09:19:33.017-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Format Templates'/><title type='text'>BI Publisher:  More for-each tags</title><content type='html'>&lt;span style="font-size:85%;"&gt;Okay, you may be wondering what is up with the iFrames. Totally, annoying I know. However, blogspot has a tendency to replace the &lt; ? ? &gt; all of the time. This site is not straight HTML it's XHTML. Which is cool but it has it's own issues. I'm only doing the iFrames so you can cut and copy and paste. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Like other disclaimers, nothing here is guaranteed to work it's an overview or tutorial. If you feel like something is wacked out, send me a shout, I will fix it and give you mad props. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Please excuse the iFrame for the tutorial. See below.&lt;/span&gt;&lt;br /&gt;&lt;iframe title="XML" style="width: 422px; height: 234px;" src="http://docs.google.com/View?docid=dfpfmwct_3fkms7z"&gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;br&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5406107793530126650-3828794932659317895?l=bipublisher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bipublisher.blogspot.com/feeds/3828794932659317895/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5406107793530126650&amp;postID=3828794932659317895' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/3828794932659317895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/3828794932659317895'/><link rel='alternate' type='text/html' href='http://bipublisher.blogspot.com/2007/11/bi-publisher-more-for-each-tags.html' title='BI Publisher:  More for-each tags'/><author><name>Ike Wiggins</name><uri>http://www.blogger.com/profile/03629933955296401382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_tbV38YrrIv4/RxgXvw8IBwI/AAAAAAAAAAw/lgP6jbAaB2M/s320/ike.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5406107793530126650.post-2966532615133600373</id><published>2007-11-06T19:47:00.000-08:00</published><updated>2009-09-26T09:19:24.811-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Format Templates'/><title type='text'>BI Publisher:  Understanding the for-each tag</title><content type='html'>&lt;span style=";font-family:arial;font-size:85%;"  &gt;This should be viewed as a supplement guide to oracle standard documentation! For-each in BI Publisher (and xml in general or basic programming) causes a lot of issues for new developers or business analysts. The key to understanding xml and bi publisher is “Context.”&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;em&gt;Vocabulary &lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;strong&gt;Context:&lt;/strong&gt; Context is used to describe where you currently at in a set of relationships. As an example: Right now your sitting down in a chair , in some room or cube, which is in building, which is in some city, some state, some country, well you get the picture.&lt;br /&gt;&lt;strong&gt;Hierarchal Relationships:&lt;/strong&gt; Things that exist between one more objects. An example would be a parent an child. Child is a product of the parent.&lt;br /&gt;&lt;strong&gt;Root:&lt;/strong&gt; is the start or the beginning of something. An example lets get to the root of the problem.&lt;br /&gt;&lt;strong&gt;Node/Element:&lt;/strong&gt; Basically an item of some sort. Your keys are elements of your key chain.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Let’s Get Started&lt;/em&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;The for-each tag is used to loop through and xml document. An xml document always has a root node or starting node (see bold green). All xml documents have heirachal relationships. In the example below we can see the following: an Employee is a child of dept and dept is a child of corporation. Every employee, dept and corporation have elements and these elements are typically unique to them (hence the coloring scheme). &lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;em&gt;Cont...Please scroll through &lt;/em&gt;&lt;br /&gt;&lt;/span&gt;&lt;iframe title="XML" style="width: 422px; height: 234px;" src="http://docs.google.com/View?docID=dfpfmwct_2dj2fpt&amp;amp;revision=_latest"&gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;br&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5406107793530126650-2966532615133600373?l=bipublisher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bipublisher.blogspot.com/feeds/2966532615133600373/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5406107793530126650&amp;postID=2966532615133600373' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/2966532615133600373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/2966532615133600373'/><link rel='alternate' type='text/html' href='http://bipublisher.blogspot.com/2007/11/bi-publisher-understanding-for-each-tag.html' title='BI Publisher:  Understanding the for-each tag'/><author><name>Ike Wiggins</name><uri>http://www.blogger.com/profile/03629933955296401382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_tbV38YrrIv4/RxgXvw8IBwI/AAAAAAAAAAw/lgP6jbAaB2M/s320/ike.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5406107793530126650.post-5490974190788355549</id><published>2007-10-22T16:13:00.000-07:00</published><updated>2009-09-26T09:39:07.867-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Bursting'/><title type='text'>BI Publisher:  Bursting - How to resolve pruning issues</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_tbV38YrrIv4/RxgCFw8IBvI/AAAAAAAAAAo/cjHFndCfS1w/s1600-h/screaming.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5122846874193626866" style="" alt="" src="http://2.bp.blogspot.com/_tbV38YrrIv4/RxgCFw8IBvI/AAAAAAAAAAo/cjHFndCfS1w/s320/screaming.jpg" border="0" /&gt;&lt;/a&gt;&lt;bursting an="" xml="" file="" is="" great="" way="" to="" generate="" documents="" ebs="" or="" opens="" ton="" avenues="" for="" creating="" multiple="" different="" types="" of="" however="" at="" some="" point="" run="" into="" pruning="" issue="" and="" will="" feel="" your="" losing="" mind="" picture="" it="" s="" a="" very="" common="" complaint="" in="" the="" bi="" publisher="" you="" may="" see="" comments="" like=""&gt;&lt;em&gt;Andrew Papastefanou for South Africa wrote:&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Hi,&lt;br /&gt;&lt;br /&gt;When bursting according to a specific location in my data, I find that I&lt;br /&gt;cannot access fields outside the scope of the 'select' in the control file.&lt;br /&gt;&lt;br /&gt;I have the following xml file:&lt;br /&gt;&lt;br /&gt;My select request in my control&lt;br /&gt;file tries to burst according to branches as follows:&lt;br /&gt;&lt;br /&gt;DATA&lt;br /&gt;_CONTROL_AREAS&lt;br /&gt;__CONTROL_AREA&lt;br /&gt;___CNAME&lt;br /&gt;___BRANCHES&lt;br /&gt;____BRANCH&lt;br /&gt;_____DIVISIONS&lt;br /&gt;______DIVISION&lt;br /&gt;_______AGENTS&lt;br /&gt;________AGENT&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;My report template however, needs to be able to display "CNAME" which is a node in the /DATA/CONTROL_AREAS/CONTROL_AREA section of data. Opening the generated report shows a blank space where the field 'CNAME' should be.&lt;br /&gt;&lt;br /&gt;Is this information available when I use a 'select'&lt;br /&gt;to somewhere inside the tree?&lt;br /&gt;Or do I need to create a new template each&lt;br /&gt;time to display the outer data?&lt;br /&gt;&lt;br /&gt;I tried many XPATH combinations but was&lt;br /&gt;unable to get that to work either.&lt;br /&gt;&lt;br /&gt;Thanks in advance!&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;The two selects Andy was doing were as follows and in this order:&lt;br /&gt;&lt;span style="color: rgb(255, 102, 102);"&gt;request select="/DATA/CONTROL_AREAS/CONTROL_AREA"&lt;/span&gt;&lt;br /&gt;request select="/DATA/CONTROL_AREAS/CONTROL_AREA/BRANCHES/BRANCH"&lt;br /&gt;&lt;br /&gt;The reason CNAME was not showing up in the xml was because it was pruned (removed) from the previous red select...There were a couple of responses on how to solve the issue. CJ (Chris Brown in the BI Publisher Forum) Suggested to add the CONTROL_AREA deeper in the xml at the same level with BRANCH. Not a bad idea, but there is a an easier way to solve this issue.&lt;br /&gt;&lt;br /&gt;This alternative solution I came up with was to just switch the order like so:&lt;br /&gt;&lt;br /&gt;request select="/DATA/CONTROL_AREAS/CONTROL_AREA/BRANCHES/BRANCH"&lt;br /&gt;request select="/DATA/CONTROL_AREAS/CONTROL_AREA"&lt;br /&gt;&lt;br /&gt;Now the only thing that will have gotten pruned will be everything from BRANCH. There is another solution for this issue as well.&lt;br /&gt;&lt;br /&gt;Create two burst files and call the DocumentProcessor API in a java concurrent program. However, this solution could be considered excessive compared to previous mentioned ones.&lt;br /&gt;&lt;strong&gt;Sample Call:&lt;/strong&gt; DocumentProcessor dp = new DocumentProcessor(getBurstDirectory() + getBurstFileName(), getOutputDirectory() + getOutputFile() + ".xml", getOutputDirectory());&lt;p&gt;&lt;/p&gt;&lt;p&gt;Now when you run into this issue, you can keep your cool and remeber that prunes are for old people. &lt;/p&gt;&lt;p&gt;Ike&lt;/p&gt;&lt;/bursting&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5406107793530126650-5490974190788355549?l=bipublisher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bipublisher.blogspot.com/feeds/5490974190788355549/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5406107793530126650&amp;postID=5490974190788355549' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/5490974190788355549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/5490974190788355549'/><link rel='alternate' type='text/html' href='http://bipublisher.blogspot.com/2007/10/bi-publisher-bursting-how-to-resolve.html' title='BI Publisher:  Bursting - How to resolve pruning issues'/><author><name>Ike Wiggins</name><uri>http://www.blogger.com/profile/03629933955296401382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_tbV38YrrIv4/RxgXvw8IBwI/AAAAAAAAAAw/lgP6jbAaB2M/s320/ike.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_tbV38YrrIv4/RxgCFw8IBvI/AAAAAAAAAAo/cjHFndCfS1w/s72-c/screaming.jpg' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5406107793530126650.post-1522543606167002606</id><published>2007-10-18T08:48:00.000-07:00</published><updated>2010-02-11T05:22:44.723-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PDFDocMerger'/><title type='text'>BI Publisher:  Merge PDF's - Why would I ever want to do that?</title><content type='html'>When you first read that BI Publisher has the ability to merge PDF documents it's neat but you think, "I’ll never use that." Well not necessarily. Remember merging files together is new functionality in the EBS suite. Nobody knows that developers have this kind of power at there finger tips now. But it still gets a back to why would you ever want to do this. There are really two main reasons to merge PDF documents:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;1. Automation&lt;br /&gt;2. Desperate Content (documents in different systems) &lt;/blockquote&gt;Let’s just say you’re dealing with PDF attachments in EBS Suite. The business has requested that when there is an attachment they want it to be apart of some other standard document. Well, you can’t do that in reports6i with PDF’s but in BI Publisher this is a no brainer. You grab the blob, write out to file and then call the PDFDocMerger Utility.&lt;br /&gt;&lt;br /&gt;Here’s a more long winded scenario. Your company works with hazardous materials. Some chemicals are so volatile that if there ever was a spill, having a MSDS (Material Safety Data Sheet) with the shipper/driver might be extremely helpful to authorities to resolve the situation quickly and safely. However you shipping personnel on the floor are just absolutely swamped and there is potential to miss that step. Well, the document merger might be nice tool solve that issue. Now the shipping personnel don’t have to worry about finding an MSDS on the system to give to the driver. This happens automatically based on some business logic coded in a concurrent program that generates a BOL and then finds a MSDS and merges the two documents before printing (Automation and Desperate Content). The shipping personal go right to the printer and pick up one document!&lt;br /&gt;&lt;br /&gt;Normally, I would paste some sort of code snippet here. But the BI Publisher documentation for the PDFDocMerger API is really good and implementing it is very simple.&lt;br /&gt;&lt;br /&gt;Good Luck!&lt;br /&gt;&lt;br /&gt;Ike&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5406107793530126650-1522543606167002606?l=bipublisher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bipublisher.blogspot.com/feeds/1522543606167002606/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5406107793530126650&amp;postID=1522543606167002606' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/1522543606167002606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/1522543606167002606'/><link rel='alternate' type='text/html' href='http://bipublisher.blogspot.com/2007/10/bi-publisher-why-would-i-ever-want-to.html' title='BI Publisher:  Merge PDF&apos;s - Why would I ever want to do that?'/><author><name>Ike Wiggins</name><uri>http://www.blogger.com/profile/03629933955296401382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_tbV38YrrIv4/RxgXvw8IBwI/AAAAAAAAAAw/lgP6jbAaB2M/s320/ike.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5406107793530126650.post-5641675787011521672</id><published>2007-10-15T20:28:00.000-07:00</published><updated>2009-09-26T09:19:46.012-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Data Templates'/><category scheme='http://www.blogger.com/atom/ns#' term='Lexicals'/><title type='text'>BI Publisher:  What the Lexical!  Understanding why, when and how to use lexicals and bind variables correctly</title><content type='html'>&lt;span style="color: rgb(102, 102, 102);font-family:arial;font-size:85%;"  &gt;Lexicals can be confusing for new developers. &lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);font-family:arial;font-size:85%;"  &gt;Lexicals &amp;amp; Bind variables are used in the following technology sets:&lt;br /&gt;&lt;br /&gt;1. BI Publisher&lt;br /&gt;2. Reports6i&lt;br /&gt;3. SQL Scripts&lt;br /&gt;4. PL/SQL&lt;br /&gt;&lt;br /&gt;A bind variable is used for the assignment of value, a lexical is the literal value. The syntax is as follows for a bind variable :P_SEGMENT and the sytax for lexical is &amp;amp;L_WHERE_CLAUSE. Here’s how you would use the two of these in a query:&lt;br /&gt;&lt;br /&gt;1. Select * from mtl_system_items where segment1 = :p_segment&lt;br /&gt;2. Select * from mtl_system_items where &amp;amp;l_where_clause&lt;br /&gt;&lt;br /&gt;Here are some neat tricks with lexicals and how they can be combined with bind variables. Below we can see that a lexical can contain a bind variable. This may seem confusing but it has major implications for the performance of your query.&lt;br /&gt;&lt;br /&gt;Good:&lt;br /&gt;l_where_clause := 'segment1 = :p_segment';&lt;br /&gt;&lt;br /&gt;Bad:&lt;br /&gt;l_where_clause := 'segment1 = '''p_segment'';&lt;br /&gt;&lt;br /&gt;Appending segment1i s a bad idea because it causes a performance issue. Every time this query is parsed it needs to generate a new explain plan. So nothing gets cached. Where as the lexical with a bind variable is much better, because the statement gets cached.&lt;br /&gt;&lt;br /&gt;The performance issue doesn’t really rear its ugly head until it gets in a production environment or this query is being executed in some sort of batch process. &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);font-family:arial;font-size:85%;"  &gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);font-family:arial;font-size:85%;"  &gt;That’s it, that’s all there is to lexical and bind variables. &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);font-family:arial;font-size:85%;"  &gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 102, 102);font-family:arial;font-size:85%;"  &gt;Good Luck! &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5406107793530126650-5641675787011521672?l=bipublisher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bipublisher.blogspot.com/feeds/5641675787011521672/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5406107793530126650&amp;postID=5641675787011521672' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/5641675787011521672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/5641675787011521672'/><link rel='alternate' type='text/html' href='http://bipublisher.blogspot.com/2007/10/bi-publisher-what-lexical-understanding.html' title='BI Publisher:  What the Lexical!  Understanding why, when and how to use lexicals and bind variables correctly'/><author><name>Ike Wiggins</name><uri>http://www.blogger.com/profile/03629933955296401382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_tbV38YrrIv4/RxgXvw8IBwI/AAAAAAAAAAw/lgP6jbAaB2M/s320/ike.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5406107793530126650.post-7695719728214610369</id><published>2007-10-10T10:00:00.000-07:00</published><updated>2009-09-26T09:53:22.688-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PL/SQL'/><title type='text'>BI Publisher:  Taking it to the next level part II (PL/SQL Tables)</title><content type='html'>You may find this useful if you read my previous article (PL/SQL Taking it to the next level). This is an excerpt of what I posted as a solution to a user in the BI Publisher forum who was going to create staging tables for a BI Publisher Report. There is no need to create staging tables anymore, your just creating more work for yourself and possible performance issues.&lt;br /&gt;&lt;br /&gt;Hi All,I am creating a report, which first calls a procedure to populate the custom table and then it uses the custom table to create the report.My Question to you all is, is there a way to call a procedure&lt;br /&gt;first and then call the table from BIP.Thanks,Madhavan G V&lt;br /&gt;&lt;br /&gt;Here's my response:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;whoa, whoa,whoa. &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;You should use a pipelined function. Then you can cast a pl/sql table as and actual table. It will save you a read and write to disk, plus the table objects, and there is no need to worry about commits, rollbacks and clean up. This is truly a godsend for reporting, however, because of the anonymity of pipelined functions nobody ever uses it, which is such a shame as it is one of the most powerful tools in pl/sql (it's not just for ETL). Below is some sample&lt;br /&gt;code. What you can see is the ability to join on the table. Basically you could do counts, max, min, etc all in one shot versus creating a function, plus, it can be reused...&lt;br /&gt;good luck,&lt;br /&gt;&lt;br /&gt;Ike&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here's an example:&lt;br /&gt;&lt;br /&gt;==================================&lt;br /&gt;==Sample Query&lt;br /&gt;==================================&lt;br /&gt;SELECT&lt;br /&gt;GMD_SPEC_TESTS.SPEC_ID&lt;br /&gt;,GMD_SPEC_TESTS.TEST_ID&lt;br /&gt;,GMD_SPEC_TESTS.TEST_METHOD_ID&lt;br /&gt;FROM&lt;br /&gt;GMD_QC_TESTS&lt;br /&gt;,GMD_SPEC_TESTS&lt;br /&gt;,table(vca_rm_spec_pkg.get_valid_tests_table(:p_report_type, GMD_QC_TESTS.TEST_CODE, GMD_QC_TESTS.TEST_DESC)) test_tab&lt;br /&gt;WHERE&lt;br /&gt;GMD_QC_TESTS.TEST_ID = GMD_SPEC_TESTS.TEST_ID&lt;br /&gt;AND NVL(GMD_QC_TESTS.DELETE_MARK, 0 ) != 1&lt;br /&gt;and GMD_SPEC_TESTS.SPEC_ID=:HEADER_SPEC_ID&lt;br /&gt;and test_tab.test_code = GMD_QC_TESTS.TEST_CODE&lt;br /&gt;and GMD_QC_TESTS.TEST_CODE &lt;&gt; 'QAPRV'&lt;br /&gt;ORDER BY TEST_CODE&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;==================================&lt;br /&gt;==package body&lt;br /&gt;==================================&lt;br /&gt;function get_valid_tests_table (p_report_type in varchar2, p_test_code in varchar2 , p_test_desc in varchar2)&lt;br /&gt;RETURN test_tbl_undef PIPELINED&lt;br /&gt;is&lt;br /&gt;l_test_rec vca_rm_spec_pkg.test_rec;&lt;br /&gt;begin&lt;br /&gt;G_PROC_NAME :='get_valid_tests_table';&lt;br /&gt;if p_report_type = 'SEARCH' then&lt;br /&gt;if g_test_tbl.count &lt;&gt; 0 then&lt;br /&gt;for i in g_test_tbl.first..g_test_tbl.last loop&lt;br /&gt;l_test_rec := g_test_tbl(i);&lt;br /&gt;pipe row(l_test_rec);&lt;br /&gt;end loop;&lt;br /&gt;end if;&lt;br /&gt;else&lt;br /&gt;--this is the summary, what comes goes out.&lt;br /&gt;l_test_rec.test_code := p_test_code;&lt;br /&gt;l_test_rec.test_desc := p_test_desc;&lt;br /&gt;pipe row(l_test_rec);&lt;br /&gt;end if;&lt;br /&gt;return;&lt;br /&gt;end get_valid_tests_table;&lt;br /&gt;&lt;br /&gt;procedure set_valid_tests_table (p_test_code in varchar2, p_test_desc in varchar2)&lt;br /&gt;is&lt;br /&gt;begin&lt;br /&gt;G_PROC_NAME :='set_valid_tests_table';&lt;br /&gt;if g_test_tbl.count is null or g_test_tbl.count = 0 then&lt;br /&gt;g_test_tbl(1).test_code := p_test_code;&lt;br /&gt;g_test_tbl(1).test_desc := p_test_desc;&lt;br /&gt;else&lt;br /&gt;g_test_tbl(g_test_tbl.count+1).test_code := p_test_code;&lt;br /&gt;g_test_tbl(g_test_tbl.count).test_desc := p_test_desc;&lt;br /&gt;end if;&lt;br /&gt;return;&lt;br /&gt;end set_valid_tests_table;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;==============================&lt;br /&gt;==package spec&lt;br /&gt;==============================&lt;br /&gt;type test_rec is record (test_code varchar2(30),&lt;br /&gt;test_desc varchar2(150)&lt;br /&gt;);&lt;br /&gt;type test_tbl_undef is table of test_rec;&lt;br /&gt;type test_tbl is table of test_rec INDEX BY BINARY_INTEGER;&lt;br /&gt;g_test_tbl test_tbl;&lt;br /&gt;&lt;br /&gt;--returns a pl/sql table pipelined, query casts as table&lt;br /&gt;function get_valid_tests_table (p_report_type in varchar2, p_test_code in varchar2, p_test_desc in varchar2)&lt;br /&gt;RETURN test_tbl_undef PIPELINED;&lt;br /&gt;&lt;br /&gt;--returns a pl/sql table pipelined, query casts as table&lt;br /&gt;procedure set_valid_tests_table (p_test_code in varchar2, p_test_desc in varchar2); --return varchar2;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5406107793530126650-7695719728214610369?l=bipublisher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bipublisher.blogspot.com/feeds/7695719728214610369/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5406107793530126650&amp;postID=7695719728214610369' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/7695719728214610369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/7695719728214610369'/><link rel='alternate' type='text/html' href='http://bipublisher.blogspot.com/2007/10/bi-publisher-taking-it-to-next-level.html' title='BI Publisher:  Taking it to the next level part II (PL/SQL Tables)'/><author><name>Ike Wiggins</name><uri>http://www.blogger.com/profile/03629933955296401382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_tbV38YrrIv4/RxgXvw8IBwI/AAAAAAAAAAw/lgP6jbAaB2M/s320/ike.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5406107793530126650.post-3996871469722859817</id><published>2007-09-27T09:24:00.000-07:00</published><updated>2009-09-26T09:19:56.947-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BIP Conversion'/><title type='text'>BI Publisher:  Converting Report6i reports - Pitfalls and Suggestions</title><content type='html'>&lt;p&gt;&lt;span style="color: rgb(102, 102, 102);font-family:arial;font-size:85%;"  &gt;Yes there are &lt;strong&gt;pitfalls&lt;/strong&gt;! I have seen some questions in the bi publisher forum about converting all of a companies "existing report6i code" to BI Publisher. Don’t get me wrong the tool is a great, but like any tool it has some issues.&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(102, 102, 102);font-family:arial;font-size:85%;"  &gt;&lt;br /&gt;Here are some common elements as far as time is concerned for report development in general. These estimates are based my experience writing reports in the 11i e-business suite.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;&lt;span style="color: rgb(153, 153, 153);"&gt;&lt;em&gt;New Reports – From dev --&gt;test --&gt;production typically development time is about 40 hours.&lt;br /&gt;Fixing an Existing report – If you’re lucky, 2 minutes but on average 5 about hours.&lt;br /&gt;Converting/Copying an existing report 10-15 hours&lt;br /&gt;Converting reports6i to BI Publisher&lt;br /&gt;Small report 10 hours&lt;br /&gt;Large report 20-40 hours, it can get ugly!&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;You may be asking yourself, what in the duce? How is that possible that converting a large report could take upto 40 hours? There are some bugs in the conversion tool. As example:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Reports6i:&lt;/strong&gt;&lt;br /&gt;Function get_item_no return char&lt;br /&gt;Is&lt;br /&gt;l_item_no varchar2(30);&lt;br /&gt;Begin&lt;br /&gt;Select item_no&lt;br /&gt;Into l_item_no&lt;br /&gt;From ic_item_mst&lt;br /&gt;Where item_id = :item_id; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(102, 102, 102);font-family:arial;font-size:85%;"  &gt;Return l_item_no;&lt;br /&gt;End;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Conversion to PL/SQL:&lt;/strong&gt;&lt;br /&gt;Function get_item_no (&lt;span style="color: rgb(255, 0, 0);"&gt;item_id&lt;/span&gt; in number) return char&lt;br /&gt;Is&lt;br /&gt;l_item_no varchar2(30);&lt;br /&gt;Begin&lt;br /&gt;Select item_no&lt;br /&gt;Into l_item_no&lt;br /&gt;From ic_item_mst&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;Where item_id = item_id; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(102, 102, 102);font-family:arial;font-size:85%;"  &gt;Return l_item_no;&lt;br /&gt;End;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Data Template Issues&lt;/strong&gt;&lt;br /&gt;In the converted PL/SQL example you can see the problem in grey. Sometimes during the conversion the parameters end up having the same name to a joining column. Ouch, get_item_no will actually compile too (note: it really shouldn’t in "theory" since item_id is “technically” ambiguous). Now were left with a situation where that function will blow up 100% no matter where it’s called from. Some reports can have over 50+ functions. When this issue occurs you have to fix each query and narrow it down in the data template.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Format Template Issues&lt;/strong&gt;&lt;br /&gt;Another kind of nasty issue is caused by sloppy development in reports6i with srw.set_field(….). This "was" a way of changing the data on a field in the report format trigger. It’s a big no, no. Well, guess what, set_field never gets converted to the format template so we have to fix the issue manually. Something like this is really easy to slip through the cracks. Also, did I mention that all the logic in your format triggers to suppress fields or groups, change colors, fonts, etc doesn’t get converted as well? Now that will take some dev time!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br /&gt;The one thing to come away from this article is this: Don’t fix things that aren’t broken (it’s easy to say, hard to practice). It’s a lot of work to convert a large report and troubleshooting the conversion issues will cost you time and money. Also, expect to feel a majority of the pain in the format template conversion. Formatting is the number one challenge for any report!&lt;br /&gt;&lt;br /&gt;When the conversion tool becomes a more mature product we can expect the conversion to be better and it “might” make sense to convert more of your organizations reports. The only justification for this would be either lower cost of support or a disappearing reports6i skill set in your organization/development community. With that in mind, if you don’t have a choice and you have to convert a report, the tool does a pretty good job and it’s better than nothing.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5406107793530126650-3996871469722859817?l=bipublisher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bipublisher.blogspot.com/feeds/3996871469722859817/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5406107793530126650&amp;postID=3996871469722859817' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/3996871469722859817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/3996871469722859817'/><link rel='alternate' type='text/html' href='http://bipublisher.blogspot.com/2007/09/bi-publisher-converting-report6i.html' title='BI Publisher:  Converting Report6i reports - Pitfalls and Suggestions'/><author><name>Ike Wiggins</name><uri>http://www.blogger.com/profile/03629933955296401382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_tbV38YrrIv4/RxgXvw8IBwI/AAAAAAAAAAw/lgP6jbAaB2M/s320/ike.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5406107793530126650.post-1948838488048387589</id><published>2007-09-25T17:42:00.000-07:00</published><updated>2009-09-26T09:49:54.215-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PL/SQL'/><title type='text'>PL/SQL:  Taking it to the next level.</title><content type='html'>&lt;strong&gt;Disclaimer: The PL/SQL Examples presented here are theory and will not compile. However there are plenty of resources from oracle on this subject. &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Ever wonder how you could query a pl/sql table? Well there is a way to do this now, since 9i. You must define a function to be “pipelined.” This is one of the PL/SQL’s more powerful abilities, ironically, it’s rarely used, it’s relatively unknown in the PL/SQL Development community. If you talked to your top PL/SQL guru and said, "Hey man these pipelined functions could be really awesome for reporting." The response from your guru would be this, "How dare you feel my head with such vile and lonesome propaganda!"&lt;br /&gt;&lt;br /&gt;Essentially, for report writers this opens up some doors that we haven’t ever thought about or wish we had when writing some really challenging reports. This really comes in handy when your working with tough data models. With pipelined functions there is no need for staging tables, long concatenated lexical’s or multiple functions. &lt;br /&gt;&lt;br /&gt;While a function will only return one value, there is an exception to this rule which is a pipelined function which can returns n-values. The pseudo syntax for defining a function of that nature is below.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;function get_valid_employee_table (p_dept in varchar2) RETURN emp_tbl_type PIPELINED&lt;br /&gt;is&lt;br /&gt;l_emp_rec emp_pkg.emp_rec;&lt;br /&gt;begin&lt;br /&gt;loop through some pl/sql table that you pre-populated in your before report trigger or the calling program&lt;br /&gt;l_emp_rec := some_pl_sql_table;&lt;br /&gt;if ..&lt;br /&gt;--do something&lt;br /&gt;pipe row(l_emp_rec);&lt;br /&gt;elsif ..&lt;br /&gt;--do something&lt;br /&gt;pipe row(l_emp_rec);&lt;br /&gt;else&lt;br /&gt;--do something&lt;br /&gt;pipe row(l_emp_rec);&lt;br /&gt;end if;&lt;br /&gt;end loop;&lt;br /&gt;return;&lt;br /&gt;end get_valid_employee_table;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sample Call:&lt;br /&gt;&lt;br /&gt;select *&lt;br /&gt;from TABLE(emp_pkg.get_valid_employee_table(‘finance’) managers&lt;br /&gt;where managers.employee_id in (select employee_id from employees)&lt;br /&gt;&lt;br /&gt;The inside skinny: When, Where and Why&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;When:&lt;/strong&gt;&lt;br /&gt;1. You want to avoid a huge concatenated lexical variable in your where clause that will cause performance issues.&lt;br /&gt;&lt;br /&gt;2. There is a need for staging table. Typically, with staging tables your already be storing the data in memory so why make the report transaction based. Note: Staging tables in reports are caused by a bad data model or unruly requirements….it can happen :-)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Where:&lt;/strong&gt;&lt;br /&gt;1. Code this in your pl/sql package.&lt;br /&gt;2. Use it either for reporting (see when) or an ETL Process.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Why:&lt;/strong&gt;&lt;br /&gt;1. There is no need to create half a dozen functions, you can create a record and call one function and cast it as a table. Boom, you saved yourself some redundancy in your query and in PL/SQL&lt;br /&gt;2. Writes to disk are eliminated, performance plus&lt;br /&gt;3. No need to manage transactions in a report (ie commit/rollbacks into staging tables). Less complex report…&lt;br /&gt;4. Complex calculations can be preformed in SQL natively&lt;br /&gt;a. ad-hoc counts&lt;br /&gt;b. group by&lt;br /&gt;c. joins/outer joins to sql tables or even other parallel enable functions.&lt;br /&gt;5. Technical this can be viewed as polymorphism. Since its code that is logical being represented as a table or view (yes can you put in a view) it can be queried n- possible ways with your limitation only being that of SQL and or PL/SQL. Think about it...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Send me a shout! Is there a mistake or would you like to comment about this article?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5406107793530126650-1948838488048387589?l=bipublisher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bipublisher.blogspot.com/feeds/1948838488048387589/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5406107793530126650&amp;postID=1948838488048387589' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/1948838488048387589'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/1948838488048387589'/><link rel='alternate' type='text/html' href='http://bipublisher.blogspot.com/2007/09/plsql-taking-it-to-next-level.html' title='PL/SQL:  Taking it to the next level.'/><author><name>Ike Wiggins</name><uri>http://www.blogger.com/profile/03629933955296401382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_tbV38YrrIv4/RxgXvw8IBwI/AAAAAAAAAAw/lgP6jbAaB2M/s320/ike.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5406107793530126650.post-8140615093860128326</id><published>2007-01-25T19:29:00.000-08:00</published><updated>2009-09-25T19:30:15.954-07:00</updated><title type='text'>About Me</title><content type='html'>This blog is a treasure trove of BI Publisher and all it's capabilities! Unique solutions and idea are presented in this blog about Format Templates, Data Templates, Bursting, BI Publisher Java API's, etc that you won't anywhere else but here.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;About Me&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="rearrange?blogID=5406107793530126650&amp;amp;action=editWidget&amp;amp;sectionId=sidebar&amp;amp;widgetType=null&amp;amp;widgetId=Text1"&gt;&lt;img style="width: 109px; height: 130px;" src="http://bp1.blogger.com/_tbV38YrrIv4/RxgXvw8IBwI/AAAAAAAAAAw/lgP6jbAaB2M/s320/ike.jpg" align="left" /&gt;&lt;/a&gt;Ike Wiggins has over 5+ years development experience with BI Publisher (since it's inception). I have developed over 40 BI Publisher reports and have extensive experience with the BI Publisher Java API's.&lt;br /&gt;&lt;br /&gt;The reports that I developed have run in an International Environment (multilingual documents), North American environment, Oracle Portal and the Oracle Applications Framework (OAF).&lt;br /&gt;&lt;br /&gt;I'm also the inventor and developer of the BIPublisherIDE, BIPublisherIDE OAF edition, and soon to come the BI Publisher ToolBox. These are integrated development tools for BI Publisher Developers. The tools and support are free and the source code is always available for custom development.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5406107793530126650-8140615093860128326?l=bipublisher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/8140615093860128326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/8140615093860128326'/><link rel='alternate' type='text/html' href='http://bipublisher.blogspot.com/2007/01/about-me.html' title='About Me'/><author><name>Ike Wiggins</name><uri>http://www.blogger.com/profile/03629933955296401382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_tbV38YrrIv4/RxgXvw8IBwI/AAAAAAAAAAw/lgP6jbAaB2M/s320/ike.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_tbV38YrrIv4/RxgXvw8IBwI/AAAAAAAAAAw/lgP6jbAaB2M/s72-c/ike.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-5406107793530126650.post-5362303751941745513</id><published>2005-06-26T10:01:00.000-07:00</published><updated>2010-04-22T20:58:11.301-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Downloads'/><title type='text'>Downloads</title><content type='html'>&lt;span&gt;&lt;span style="font-style: italic; color: rgb(0, 153, 0);"&gt;*New 04-22-2010&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;BI Publisher Toolbox 4.5&lt;/span&gt;&lt;br /&gt;&lt;a href="http://web.me.com/beth.wiggins/ike/bipublisher/BIPublisherToolBoxDist/launch.html"&gt;BI  Publisher Toolbox&lt;/a&gt; - By clicking on the download link you will be  redirected to a different site.  The standalone client is no longer  supported and the toolbox is now a java webstart application.  Webstart  applications allow for automatic updates and real-time fixes for  developers.  Don’t worry though just because it’s a webstart application  doesn’t mean the performance will be lack luster; the jar files are  automatically loaded and saved on your PC. It's recommended to bookmark  this page and the download site.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="font-style: italic; color: rgb(0, 153, 0);"&gt;*New 01-10-2010&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;*Desupported 04.22.2010 - please use the BI Publisher Toolbox.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Delivery Designer 1.1&lt;/span&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://web.me.com/beth.wiggins/ike/bipublisher/DeliveryDesignerDist/launch.html"&gt;Delivery Designer 1.1&lt;/a&gt; - By clicking on the download link you will be redirected to a different site. The Delivery Designer 1.1 is java webstart application. Java 6 is required to run this application.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Bursting Designer Links&lt;/span&gt;&lt;br /&gt;Video Tutorials - Quicktime Required&lt;br /&gt;&lt;a href="http://web.me.com/beth.wiggins/ike/bipublisher/BurstDesignerDist/BurstingDesignerFeatures.m4v"&gt;Bursting Designer Features&lt;/a&gt;&lt;br /&gt;&lt;a href="http://web.me.com/beth.wiggins/ike/bipublisher/BurstDesignerDist/BurstingDesignerLesson_1.m4v"&gt;Bursting Designer Lesson 1 - What is Bursting&lt;/a&gt;&lt;br /&gt;&lt;span&gt;&lt;a href="http://web.me.com/beth.wiggins/ike/bipublisher/BurstDesignerDist/BurstingDesignerLesson_2.m4v"&gt;Bursting Designer Lesson 2 - Creating a Burst Control File&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(0, 153, 0);"&gt;*New 01-10-2010&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;*Desupported 04.22.2010 - please  use the BI Publisher Toolbox.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Bursting Designer &lt;/span&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;Download Version 3.5 - XDO Protocol Supported&lt;/span&gt;&lt;br /&gt;&lt;a href="http://web.me.com/beth.wiggins/ike/bipublisher/BurstDesignerDist/launch.html"&gt;Bursting Designer 3.5&lt;/a&gt; - By clicking on the download link you will be redirected to a different site. The bursting designer 3.5 is java webstart application. Java 6 is required to run this application.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Bursting Designer &lt;/span&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;Download Version 1.2&lt;/span&gt;&lt;br /&gt;&lt;a href="http://web.me.com/beth.wiggins/ike/bipublisher/BurstDesignerDistv1/launch.html"&gt;Bursting Designer 1.2&lt;/a&gt; - By clicking on the download link you will be redirected to a different site.  The bursting designer 1.0 is java webstart application.  Java 6 is required to run this application.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;*Desupported 04.22.2010 - please  use the BI Publisher Toolbox.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;BIP Conversion Utilities&lt;/span&gt;&lt;br /&gt;Video &amp;amp;     Code (click on images)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://web.me.com/beth.wiggins/ike/bipublisher/ReportConversion/ReportConversion.mp4" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img id="BLOGGER_PHOTO_ID_5334706939571825922" style="cursor: pointer; width: 48px; height: 48px;" alt="" src="http://2.bp.blogspot.com/_tbV38YrrIv4/SgivsnH9bQI/AAAAAAAAAE0/MGsO7Yz8n-c/s400/quicktime-48x48.png" border="0" /&gt;&lt;/a&gt;&lt;a href="http://web.me.com/beth.wiggins/ike/bipublisher/ReportConversion/ReportConversion.zip" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img id="BLOGGER_PHOTO_ID_5334706934263315810" style="cursor: pointer; width: 48px; height: 48px;" alt="" src="http://3.bp.blogspot.com/_tbV38YrrIv4/SgivsTWT_WI/AAAAAAAAAEs/B7rD7TvFxTQ/s400/binary-48x48.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;BI Publisher Integrated Developer Environment&lt;br /&gt;&lt;/span&gt;&lt;span&gt;Downloads&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.mediafire.com/?npyrdemmbpf"&gt;BIPublisherIDE_OAF&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.mediafire.com/file/he2rghqjgey/BIPublisherIDE.zip"&gt;BIPublisherIDE &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Manuals&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.mediafire.com/?jqdzxnqt2c1"&gt;BIPublisherIDE Manual &lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.mediafire.com/file/gkyzmgnmndk/BIPublisherIDE_Troubleshooting.pdf"&gt;BIPublisherIDE Troubleshooting &lt;/a&gt;&lt;br /&gt;&lt;a href="http://bipublisher.blogspot.com/2008/03/bi-publisher-bipublisheride.html"&gt;BIPublisherIDE Blog    &lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5406107793530126650-5362303751941745513?l=bipublisher.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://bipublisher.blogspot.com/feeds/5362303751941745513/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5406107793530126650&amp;postID=5362303751941745513' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/5362303751941745513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5406107793530126650/posts/default/5362303751941745513'/><link rel='alternate' type='text/html' href='http://bipublisher.blogspot.com/2009/09/downloads.html' title='Downloads'/><author><name>Ike Wiggins</name><uri>http://www.blogger.com/profile/03629933955296401382</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp1.blogger.com/_tbV38YrrIv4/RxgXvw8IBwI/AAAAAAAAAAw/lgP6jbAaB2M/s320/ike.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_tbV38YrrIv4/SgivsnH9bQI/AAAAAAAAAE0/MGsO7Yz8n-c/s72-c/quicktime-48x48.png' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
