Thursday, December 18, 2008

Email Address validation by Forms Personalization, Profile Options and Regular Expressions (regex) in the Oracle eBusiness Suite

In prior posts I've dealt with Forms Personalizations, and played with email e.g. via BI (XML) Publisher Bursting. In this post we'll come up with a simple Forms Personalization to ensure that data entry of email addresses results in well-formed email addresses. We'll use regular expressions: an underutilized feature in Oracle since 10g. Initially we'll look at the Remittance Email address on Supplier Sites. But the implementation will allow easy re-use for other email address fields in the EBS by storing the regular expression in a Profile Option.

The Regular Expression

Lets take a look at the regular expression I'll use for email address validation. This regular expression is a consolidation from a variety of sources, considers IPv4 and IPv6 addressing, and includes specific formatting to get around an Oracle Regex bug. Note it isn't the "full official" regex for email address validation - I wanted a one-liner! What does the regular expression below mean? Basically allow a bunch of characters before the @ and a bunch of characters after the @ considering IPv4 or IPv6 addressing. If anyone has any suggestions/issues/changes, please feel free to comment!

Update 27-JUL-2010: Changed regex to allow multiple hypens as it was only accepting one hyphen in hostname.

Update 09-MAY-2012: Changed regex to disallow leading/trailing periods in username and disallow leading periods in server/domain.

^[-a-zA-Z0-9_\+\^!#\$%&*+\/\=\?\`\|\{\}~\']+(\.([-a-zA-Z0-9_\+\^!#\$%&*+\/\=\?\`\|\{\}~\'])+)*@((([0-9a-zA-Z]*[-\w]*[0-9a-zA-Z])+\.)+[a-zA-Z]{2,9})|(\[([0-9]{1,3}(\.[0-9]{1,3}){3})|([0-9a-fA-F]{1,4}(\:[0-9a-fA-F]{1,4}){7})\])$

Profile Option

We'll store the regular express as a profile option. This allows a single source of truth for our email address validation logic. We could equally put it in a PL/SQL package, but then updates would require coding ... and no-one wants to code these days ;-)

Navigate to Application Developer, Profile
    Name: XXV8_REGEX_EMAIL
    Application: Virtuate (or your chosen modifications application)
    User Profile Option Name: Virtuate Regular Expression: Email Address
    Set to Site level visible/updatable only
    Save
Navigate to System Administrator, Profile, System
    Query "Virtuate Regular Expression: Email Address"
    Set site level value to the regular expression above
    Save

Forms Personalization

Okay, moving onto the good stuff. Now we'll setup the Forms Personalization to validate the Remittance Email address on the Supplier Sites, Payment tab.

Navigate to Payables Manager, Suppliers, Entry
    Query up an existing supplier and navigate to Sites
    Click Help, Diagnostics, Custom Code, Personalization from the menu.
    Enter the APPS password
Enter the Forms Personalization Header and Condition
    Seq: 10
    Description: Remittance Email Validation
    Trigger Event: WHEN-VALIDATE-RECORD
    Trigger Object: SITE
    Condition: nvl(:SITE.REMITTANCE_EMAIL,'X') != nvl(regexp_substr(:SITE.REMITTANCE_EMAIL,fnd_profile.value('XXV8_REGEX_EMAIL')),'X')
    Save
Enter the Forms Personalization Action
    Seq: 10
    Type: Message
    Description: Remittance Email Invalid
    Message Type: Error
    Message Text: Remittance Email is invalid. Please enter a well-formed email address. Ensure there are no spaces and check that periods are in the correct position. For example: firstname.lastname@gmail.com

Test it out!

Enter junk in the Remittance Email address on the Payment tab and save.

Code Reuse

To implement the same email address validation on other forms, run through the Forms Personalization steps above, identifying the new block and field, replacing SITE.REMITTANCE_EMAIL as required, and update the Error Message action message description / text with the field name.

If you identify a problem with the regular expression, you have one place to change it and it flows through to all the places you implemented the forms personalization the next time your Users log in!

Requirements/Restrictions

  • Regular Expression functionality (regexp_substr) requires that you are on Oracle Database 10g or higher.
  • The solution presented doesn't test email account validity via SMTP query for address verification.

References

Related Posts

 

Thursday, November 20, 2008

R12 Patch 5612820 Available: Changing the default layout format between RTF/PDF/Excel when submitting XML / BI Publisher Concurrent Request

In a previous post I provided a temporary solution for the issue where the default value for the Output Format of a BI Publisher based concurrent request was hardcoded to PDF.

For those those customers lucky enough to be on Release 12 I'm glad to say Oracle has provided a patch for this enhancement, the base issue documented in Metalink Note 401328.1 or Bug 5612820 or Bug 5036916:

  • R12 Patch 5612820 DEFAULT OUTPUT FORMAT ATTRIBUTE AT TEMPLATE LEVEL IS REQUIRED

This patch is included in R12 Release Update Pack 12.0.6, but as a note at the time of writing 5612820 is available on controlled release ... not sure of the reason since its in 12.0.6. The code base required for applying 5612820 is:

  • R12.AD.A.delta.4
  • R12.ATG_PF.A.delta.4

For those people on Release 11i, unfortunately you'll have to wait a little longer ... still awaiting the 11i version of the patch.

Here's a screenshot of the new Default Output Format field on the Templates page.

And verification that the default output format is indeed working...

Nice!

Monday, November 17, 2008

Discoverer Plus 10g: contact with Server lost: DiscoApplet Error DiscoNetworkException CORBA.COMM_FAILURE. ICX Territory!

An interesting one today; a Discoverer Plus Workbook called via an eBusiness Suite Menu errored out with:

OracleBI Discoverer: "Contact with the Discoverer Server has been lost. To continue your work, please restart Discoverer Plus. If this problem persists, please contact your Oracle Application Server administrator."

Doh! Who's that Application Server administrator ... oh! me :-(

Attempting to expand the workbook, after going directly into Discoverer Plus errors with:

"This workbook cannot be expanded".

 

Hmm, okay, let's look at the Java Console:

Reading bytes from input stream
   Unmarshalling response
   Session ID:2008111408252618857
   BI Beans Graph version [3.2.3.0.37]
   DiscoApplet[0]: Error received by GlobalStatusListener.workerFailed() in SessionUI.java
   DiscoNetworkException  - Nested exception: org.omg.CORBA.COMM_FAILURE:   vmcid: SUN  minor code: 208 completed: Maybe
   DiscoNetworkException  - Nested exception: org.omg.CORBA.COMM_FAILURE:   vmcid: SUN  minor code: 208 completed: Maybe
   org.omg.CORBA.COMM_FAILURE:   vmcid: SUN  minor code: 208 completed: Maybe
 at com.sun.corba.se.internal.iiop.IIOPConnection.purge_calls(IIOPConnection.java:438)
 at com.sun.corba.se.internal.iiop.ReaderThread.run(ReaderThread.java:70)
 at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(Unknown Source)
 at sun.rmi.transport.StreamRemoteCall.executeCall(Unknown Source)
 at sun.rmi.server.UnicastRef.invoke(Unknown Source)
 at oracle.disco.remote.rmi.serverbase.RMISessionBase_Stub.sendRecieveData(Unknown Source)
 at oracle.disco.model.corbaserver.ModelInterface.sendRecieveData(Unknown Source)
 at oracle.disco.model.corbaserver.ModelInterface.SendReceiveData(Unknown Source)
 at oracle.disco.model.corbaserver.serverrequest.DsrOpenWorkbook.xmlUpdateServer(Unknown Source)
 at oracle.disco.model.corbaserver.serverrequest.DsrCorbaXML.corbaUpdateServer(Unknown Source)
 at oracle.disco.model.corbaserver.serverrequest.DsrGeneralCorbaXML.updateServer(Unknown Source)
 

Ouch! Sounds like it hurts!

A quick blast through Metalink (oops MOS - My Oracle Support) and a bunch of old bugs later, not looking promising, however there's one major clue - the problem is only occurring for some Users. Okay, lets do a side by side comparison of Profile Options as a first guess:

User Level Profile Option Value Comparison Side by Side

select *
   from (
 with
 prof_di as
 ( select 'USER' level_name, 
 fu.user_name level_value, 
 fpo.profile_option_id,
 fpot.user_profile_option_name,
 fpo.profile_option_name,
 fpov.profile_option_value
 from   fnd_user fu, 
 fnd_profile_options fpo,
 fnd_profile_option_values fpov,
 fnd_profile_options_tl fpot
 where  fu.user_id = fpov.level_value
 and    fpo.profile_option_id = fpov.profile_option_id
 and    fpo.profile_option_name = fpot.profile_option_name
 and    fpot.language = 'US'
 and    fpov.level_id = 10004
 and    fu.user_name = 'SYSADMIN'
 ),
 prof_gr as
 (
 select 'USER' level_name, 
 fu.user_name level_value, 
 fpo.profile_option_id,
 fpot.user_profile_option_name,
 fpo.profile_option_name,
 fpov.profile_option_value
 from   fnd_user fu, 
 fnd_profile_options fpo,
 fnd_profile_option_values fpov,
 fnd_profile_options_tl fpot
 where  fu.user_id = fpov.level_value
 and    fpo.profile_option_id = fpov.profile_option_id
 and    fpo.profile_option_name = fpot.profile_option_name
 and    fpot.language = 'US'
 and    fpov.level_id = 10004
 and    fu.user_name = 'ROBERTSG'
 )
 select pd.profile_option_id
 ,      pd.user_profile_option_name
 ,      pd.profile_option_name
 ,      pd.profile_option_value d_value
 ,      pg.profile_option_value g_value
 ,      decode(pd.profile_option_value,pg.profile_option_value,'EQUAL','DIFF') status
 from   prof_di pd
 ,      prof_gr pg
 where  pd.profile_option_name = pg.profile_option_name (+)
 union
 select pg.profile_option_id
 ,      pg.user_profile_option_name
 ,      pg.profile_option_name
 ,      pd.profile_option_value d_value
 ,      pg.profile_option_value g_value
 ,      decode(pg.profile_option_value,pd.profile_option_value,'EQUAL','DIFF') status
 from   prof_di pd
 ,      prof_gr pg
 where  pg.profile_option_name = pd.profile_option_name (+)
 )
 where status != 'EQUAL';  

The query gets output that includes the following:

USER_PROFILE_OPTION_NAME PROFILE_OPTION_NAME D_VALUE     G_VALUE STATUS
------------------------ ------------------- ----------- ------- ------
ICX: Territory ICX_TERRITORY NEW ZEALAND AMERICA DIFF

Whenever I see anything related to "NLS_LANG" or "Territory" the alarm bells start ringing, and sure enough - for the problem User, just a quick navigate to the "Preferences" responsibility, General Preferences and change the Territory from New Zealand to United States and we're off and laughing again! Alternatively could have looked at the ICX: Territory profile option.

 

What was the real underlying problem? My guess is a clash on date formats for default parameter values ... but that's left for another day.

 

Tuesday, November 11, 2008

Enhancing the Oracle eBusiness Suite 11i/12 Homepage Menu via Firefox, Greasemonkey, XPath, Javascript & DOM: aka Foxiness Menus

Update: 12-Nov-08 Extended script for Release 12

The Background

One of the most user-unfriendly and neglected aspects of the eBusiness Suite in my opinion is the homepage. No sooner than you arrive there you really just wanna get out, and get out fast! The majority of people I know, including myself, do one of the following:

  • Save one function from each of your primary responsibilities as a "Favorite" and thereafter only use the "Favorites" area of the homepage
  • After choosing the responsibility just blinding pick the first "Forms" based menu entry so that you get into the forms navigator menu. At least for any responsibility that still has a majority of forms.

One of the aspects that I've desired for a while is a tree based Responsibility menu structure. Now Oracle does provide this, but when I last checked, admitedly a few years ago, it required Oracle Portal integration. As a bit of a refresher, there is a profile option called "Self Service Personal Home Page mode" which used to be able to be set to "Personal Home Page" and then clicking on the responsibility went straight into forms for a Forms based application.

But from 11.5.10, "Self Service Personal Home Page mode" must be set to "Framework Only" and hence you now have an extra couple of mouse clicks to get to where you want to go. At least EBS Release 11i/12 has show/hide responsibilities.

Where is all this going you ask? Well, for a bit of late night entertainment ... sad I know ;-) plus a bit of experimentation, considering Firefox's 4th Birthday was just a couple of days ago, and since I'm now comfortable using Firefox with EBS, I've created a Greasemonkey script to give a smidgen of intelligence to the Framework homepage Responsibility menu.

Introducing the Virtuate Oracle EBS Homepage Menu enhancement Greasemonkey Script!

So, what does this do? Well it turns this:

Into this:

With a quick video here ... apologies if its a bit big:

How do I install it?

Assuming you have Firefox and Greasemonkey, just click on this UserScripts.org link and then click the install button! If you have any hassles, you're more than welcome to fix the code on UserScripts.org (or let me know)! Open Source rocks!

Requirements

References

Related Posts

 

Monday, November 03, 2008

Firefox with eBusiness Suite: Oracle JInitiator Plugin does not start - always get "must install plugin", Vista, Patch 5397653

This problem has bothered me for a while in a couple of scenarios, so time for another post ... after quite an absence I must admit. I'm well over my post Conference 1 & 2 catchup now. On with the enthusiasm!

Update: Firefox 3.x is now certified with EBS. See Steven's post for details.

So you're working with your favourite Firefox 2.x, because Firefox 3 hasn't quite been certified yet. You try to fire up Oracle Applications Forms via JInitiator 1.3.x (or even 1.1.8.x) and get the dreaded "you must install the Oracle JInitiator Plugin" box.

Well, chances are one of the following quick fixes will solve your problem:

1. If you have multiple JVM's installed or multiple versions of JInitiator

In this case you'll need to apply Patch 5397653: Firefox does not work with multiple java plugin versions. Its just a quick patch, no prereqs, go for it!

2. If you are using Microsoft Windows Vista

In this case I'll feel very sorry for as well as suggesting you copy jvm.dll from a Sun JRE 6.0 Update 1 (or higher) installation. This is as per Bug 6074498.

3. If you still have problems after the above.

Make sure you have switched off the Enable Java option in Firefox, per Note 285218.1.

  • Tools -> Options -> Content
  • Uncheck the 'Enable Java' option so that the Sun JRE plug-in is not enabled (this ensures that the Jinitiator plug-in is used instead).

If you have any other scenarios or issues with Firefox and JInitiator / Sun JRE Plugin, please post a comment here!

Reference

  • Patch 5397653: Firefox does not work with multiple java plugin versions
  • Note 285218.1: Recommended Browsers for Oracle E-Business Suite 11i
  • Bug 6074498: Unable To Connect To E-Business Suite On Vista

Related Posts

 

 

Tuesday, September 30, 2008

OpenWorld 2008 Final Post: Fusion Applications, X, R12 - Change Pack & Payment Manager plus SES

A bit of a delay on my final post on OpenWorld - Wednesday, the Appreciation Event and Thursday went past in a blur, then on to enjoying the final moments in the Valley, lastly the long haul home & back to reality.

Fusion Applications came to the fore at Steve Miranda's presentation on Wednesday the highlights for me were as follows - let me know if my scrawls have been translated to something incorrect!

  • Built on ADF stack - I went to a few hands on sessions prior so familiar with the look n feel. Nice.
  • WebCenter Integration
  • Document Management (Stellant?) Integration
  • Secure Enterprise Search (SES) standard (top and center in the UI)
  • BI Publisher in the technology stack
  • Prebuilt Dashboards and Embedded BI
  • Tagging / Categories
  • RSS
  • Instant Collaboration built in - Chat / IM / Voice / Email
  • Help includes User Ratings, Audio/Video
  • Configuration comparison and loading tools across instances
  • Upgrades as per provided today - ie. If you can upgrade your eBusiness Suite, then the same will apply to upgrade to Fusion. Note upgrade paths do not including merging instances, splitting instances. Supports Pillars.

But when are Fusion Applications going to be available? Let me know! Although given the fullness of the demo screens and a couple of mumbles I'd bet there are business trialling it now.

Following on from that the next interesting item was Larry's speech from the blogger's area and that box with the X and Oracle/HP badges; the HP Oracle Database Machine. Unfortunately my sentiment on this is similar to Tim Hall's - in New Zealand there might be 2 perhaps 3 companies with the kind of dosh needed to shell out and buy one... sigh ... but hey, prove me wrong someone in NZ and get me in to have a little play ;-)

After a highly enjoyable and entertaining night at the Appreciation Event, amusements, Seal and UB40 (thanks Greg, Michael & co) Thursday came around all to quick for me and my new Unicorn friend ;-) so skipped a few sessions, and headed to the demo grounds, notes follow.

Oracle Enterprise Manager Change Pack for Release 12.x

The "Change Pack" was very briefly mentioned during the R12 and 12.1 update without details. So I got down to the demo pod to check it out. Had a succinct demo from one of the On Demand team who are currently using it. With my Apps DBA hat on the the Change Pack looks really, really good and here's a rundown of the features:

  • Automation of Patch Application, including automatic downloads, unzip and merge of designated patches. Basically you specify the patches you want applied and it comes up with a task list based on the patches where you can add/reorder etc. the steps.
  • Creation of custom steps to integrate into a given patch run
  • Patch run scheduling, including viewing status of other patch runs
  • Automated notification of patch failures
  • Post install tasks like Generate Messages, Compile etc just a checkbox
  • Creation of Custom Patches that can be applied by adpatch

Note that unfortunately the features don't include patch analysis or automated dependency checking based on the underlying patch Metalink Notes... or should I call them Knowledge Base Notes now? It would be great if the Metalink Notes for Patches were in a strict format so the Change Pack could datamine them and work out patch dependencies etc. Hoping for too much ;-) Of course all features mentioned here are not official yet as Change Pack is due for release sometime in 2009 I think. Bring it on!

Release 12 Payment Manager was the next demo pod, the updates to Payment Batch process from Release 11i and earlier is something I've been looking forward to for a loooong time ... even though parts of it such as easy payment document changes via BI Publisher Templates and built in FTP/SFTP etc delivery are going to negate the need for some of my development time! Good stuff.

The Secure Enterprise Search (SES) for Release 12 demo pod also caught my attention, so took a brief flight through that - seems like it would take quite a bit of configuration to get it working, and more than a few $$ as well, with the need of the SES server and the eBusiness Suite "adaptors". But worth a look all the same ... now where did I put that Google Desktop Search for eBusiness Suite functionality ;-)

Eye Scanning: One of the more fun pods was focussed on UI design by tracking and recording eye movements - so I sat down and after a quick callibration exercise and intro, I went through an eye tracking session. Very very interesting to see where I looked when reading and searching for something on screen. Worth the time - glad the 50K price of the hardware isn't coming out of my budget though!

Well, that wraps up my first OpenWorld. The highlight for me was meeting all the people face to face that I've interacted with or heard about online - the stars from Oracle Forums, Bloggers, Oracle Staff (especially those Product Managers ;-), various NZers/Australians and a bunch of other great people. Good to hang out and catch up at the OTN Lounge, and events like the Bloggers Meetup, OTN Night and APEX Meetup. Hope to hear from you all soon!

Wednesday, September 24, 2008

Openworld Update: XML/BI Publisher & R12, 11g PL/SQL, ADFdi and more

A few updates on BI Publisher and a couple of interesting notes through the OpenWorld sessions that I attended over the last day or so.

BI Publisher:

  • eBusiness Suite Release 12.1 - All standard reports to have Templates (Data still generated in Reports)
  • Excel Templates for FSGs from EBS Release 12.0 (currently controlled release)
  • DataTemplate Builder coming... still.
  • ... did I miss anything? I was hoping for a little more, but beggars can't be choosers, even in San Francisco ;-)

Other Interesting Stuff:

Attended a couple of top sessions today, first was Steven Feuerstein's 11g PL/SQL session on making the most of the Function Result Cache - an important feature in my mind similar in nature to prior PL/SQL performance enhancing features like bulk binding that developers neglect somewhat. Although with its conflict with authid current_user and my focus on the EBS I'm going to have to do some digging to see if its usable with the EBS (apparently not at first glance).

Second was Juan Ruiz's MS Office Front Ends for ADF, where he demo'd upcoming (Q1 2009?) Desktop Integration components for ADF - very sexy stuff, ADF components built into Microsoft Excel 2007 with http/https communication through to backend ADF based model. In the world I live in the solution will definitely gain some traction. A bit of a shame its not here today although there are people/products achieving the same via varying means - a few of them in the audience including a couple of Kiwis (a.k.a. New Zealanders) - nice to see.

The Fusion Applications scene is very hush hush, some rumours around but unfortunately nothing of public attention - Oracle people keeping everything under wraps.

PS. Trying to keep these posts short and to the point given the heap of posts on OpenWorld around.

Tuesday, September 23, 2008

OpenWorld Keynote Announcements: R12.1, Beehive, DB 11.1.0.7, Jdeveloper 11g, My Oracle Support

Update: Removed GA of 12.1, due later!

A quick wrapup of the announcements of interest to me from the OpenWorld keynotes this morning:

From OpenWorld Keynote: Charles Phillips and Chuck Rozwat

  • Oracle eBusiness Suite Release 12.1 General Availability (GA) available soon (perhaps the new year)
  • Oracle Beehive: a suite of collaboration tools including MS Outlook integration
  • Oracle JDeveloper Release 11g GA
  • Oracle Database Release 11.1.0.7
  • My Oracle Support: replacement for Oracle Metalink

From Oracle Develop: Ted Farrell

  • Oracle JDeveloper Release 11g GA
  • Oracle ADF 11g GA including 130+ JSF components (next week)
  • Oracle Toplink 11g GA
  • Oracle Enterprise Eclipse Pack focus

So that wraps up the biggest announcments so far. I was expecting R12.1 and JDev 11g, will be very interesting to follow the progress of Beehive and whether it can gain a footing against other specialist collaboration tools.

Update: Still awaiting details of the major database announcement later in the week... rumours are Database Accelerator... still guessing!

Friday, September 19, 2008

Oracle OpenWorld 2008: From Silicon Welly to Silicon Valley

Shortly off to OpenWorld. Sooo much to do, so little time.

Below are the sessions I'm lining up - also planning to head to the Blogger's Meetup on Sunday night (my apologies for the Australia/New Zealand dinner) and the OTN night Monday night amongst other things - so hope to see some of you there. Drop me a line if you want to catch up.

ID DATE TIME TITLE
S299504 21-Sep-08 11:45 Build the Next Generation of Composite Applications with Oracle WebCenter, SOA, and Enterprise 2.0
S299048 21-Sep-08 13:15 Hands-on Lab: Adapters for Service-Oriented Architectures
S300199 21-Sep-08 14:30 Oracle JDeveloper with Oracle Application Development Framework and Oracle Fusion Stack: Is It Oracle Forms Developer Yet
S298690 21-Sep-08 15:45 Oracle ADF Faces Rich Client Components: Ajax and Web 2.0 with JavaServer Faces
S299488 22-Sep-08 11:30 Road Map for Oracle Fusion Middleware Application Server Infrastructure
S300603 22-Sep-08 13:00 Oracle Business Intelligence Publisher Automation: Bursting and Document Delivery in Oracle E-Business Suite
S300595 22-Sep-08 14:30 Oracle PartnerNetwork: Taking Advantage of Oracle's Acquisition Strategy to Grow Your Business
S298724 22-Sep-08 16:00 Redeveloping an Oracle Forms Application with Oracle Application Development Framework: A Case Study
S298463 22-Sep-08 17:30 What's New with Oracle Business Intelligence Publisher: The Standard Reporting Platform for All Applications
S299928 23-Sep-08 9:00 Best Practices for Deploying Oracle Software and Linux: Oracle Validated Configurations and Preconfigured Templates
S298688 23-Sep-08 13:00 Oracle Application Development Framework 11g: New Declarative Validation, List of Values, Search, and Services Features
S298715 23-Sep-08 16:00 MS Office Front Ends for Oracle Application Development Framework Applications: Intro to Oracle ADF Desktop Integration
S299306 23-Sep-08 17:30 Zero-Cost Business Intelligence Using Oracle Database 11g and Oracle Application Express 3.1 
S301712 24-Sep-08 9:00 Successfully Developing and Integrating Applications in Oracle Application Express in Oracle E-Business Suite
S298467 24-Sep-08 11:30 Oracle Fusion Applications: Applications for the Next-Generation Organization, Part 1
S299588 24-Sep-08 13:00 Oracle Business Intelligence Publisher Road Map and Planned Features
S300478 25-Sep-08 9:00 Choose Your Weapon: An Overview of Oracle Development Tools
S299685 25-Sep-08 10:30 Bridging the Oracle Applications Unlimited/Oracle Fusion Applications Gap with Oracle Application Integration Architecture
S299692 25-Sep-08 15:00 Oracle Application Integration Architecture for Oracle E-Business Suite 

And in the Demo Grounds:

Application UI Research and Innovation (Pod I11)
SOA Enablement of E-Business Suite (Pod K24)
Oracle Secure Enterprise Search (Pod K26)
Oracle Business Intelligence Publisher for Oracle
Applications (Pod I01)

Don't forget the Lounges:

Applications Lounge
Moscone West, Lobby Level 2 
Monday, September 22 - Wednesday, September 24: 9:00 a.m. - 5:00 p.m.
Thursday, September 25: 9:00 a.m. - 4:00 p.m. 
Database Lounge
Moscone South Esplanade 
Monday, September 22 - Wednesday, September 24: 9:00 a.m. - 5:00 p.m.
Thursday, September 25: 9:00 a.m. - 4:00 p.m.
Middleware Lounge
San Francisco Marriott, Yerba Buena Ballroom Foyer 
Sunday, September 21: 12:00 p.m. - 4:00 p.m.
Monday, September 22 - Wednesday, September 24: 9:00 a.m. - 5:00 p.m.
Thursday, September 25: 9:00 a.m. - 4:00 p.m. 

Would have been nice to maket these as well, but hey - don't know of anyone with clones yet ;-)

S299504 21-Sep-08 11:45 Build the Next Generation of Composite Applications with Oracle WebCenter, SOA, and Enterprise 2.0
S299048 21-Sep-08 13:15 Hands-on Lab: Adapters for Service-Oriented Architectures
S300199 21-Sep-08 14:30 Oracle JDeveloper with Oracle Application Development Framework and Oracle Fusion Stack: Is It Oracle Forms Developer Yet?
S298690 21-Sep-08 15:45 Oracle ADF Faces Rich Client Components: Ajax and Web 2.0 with JavaServer Faces
S299488 22-Sep-08 11:30 Road Map for Oracle Fusion Middleware Application Server Infrastructure
S300603 22-Sep-08 13:00 Oracle Business Intelligence Publisher Automation: Bursting and Document Delivery in Oracle E-Business Suite
S300595 22-Sep-08 14:30 Oracle PartnerNetwork: Taking Advantage of Oracle’s Acquisition Strategy to Grow Your Business
S298724 22-Sep-08 16:00 Redeveloping an Oracle Forms Application with Oracle Application Development Framework: A Case Study
S298463 22-Sep-08 17:30 Whats New with Oracle Business Intelligence Publisher: The Standard Reporting Platform for All Applications
S299928 23-Sep-08 9:00 Best Practices for Deploying Oracle Software and Linux: Oracle Validated Configurations and Preconfigured Templates
S298688 23-Sep-08 13:00 Oracle Application Development Framework 11g: New Declarative Validation, List of Values, Search, and Services Features
S298715 23-Sep-08 16:00 MS Office Front Ends for Oracle Application Development Framework Applications: Intro to Oracle ADF Desktop Integration
S299306 23-Sep-08 17:30 Zero-Cost Business Intelligence Using Oracle Database 11g and Oracle Application Express 3.1 
S301712 24-Sep-08 9:00 Successfully Developing and Integrating Applications in Oracle Application Express in Oracle E-Business Suite
S298467 24-Sep-08 11:30 Oracle Fusion Applications: Applications for the Next-Generation Organization, Part 1
S299588 24-Sep-08 13:00 Oracle Business Intelligence Publisher Road Map and Planned Features
S300478 25-Sep-08 9:00 Choose Your Weapon: An Overview of Oracle Development Tools
S299685 25-Sep-08 10:30 Oracle Application Integration Architecture: Bridging The Gap To Next Generation Applications
S298403 25-Sep-08 13:30 Opening Up Oracle Application Framework Applications Through Web Services and Portlets
S299692 25-Sep-08 15:00 Oracle Application Integration Architecture for Oracle E-Business Suite 

All systems go!

Wednesday, September 03, 2008

Oracle APEX, SEO and Google

One of my major gripes with Oracle APEX is / was its lack of Search Engine Optimization (SEO) friendliness. At least of couple of us down under have almost pulled out our hair trying to get APEX to play nicely with Google, lynx, Apache rewrite etc. without much success. A couple of references here and here (thanks Steve).

Well, the good news is that a "session 0" fix and the related URL redirect issue look to be resolved in APEX 3.1.2 (patch 7313609) recently released, expertly covered by John Scott here , glad that it got your attention John! So that should really help with Google's crawlers and raise the profile of APEX sites using session 0.

Top 7 Reasons for a FREE version of BI Publisher a.k.a Uncage Oracle XML Publisher

I'd like to see a "free" (as in beer) version of BI Publisher (XML Publisher) added to the list of "free" Oracle products. Here are my reasons:

1. BI Publisher for everyone.

BI Publisher is fundamentally such a fantastic product that every organization and developer should benefit from it.

2. Remove the quirks.

The accelerated uptake from the "free" version would (hopefully) translate to the quirks of the product being identified and fixed in fraction of the time it would take for a paid expensive product.

3. Ease the expense.

BI Publisher bundled up in a package costing large $$$? I have trouble driving Oracle's online store at the best of times, and I can't find "BI Publisher Standalone" on its own - only bundled with other stuff I don't need or want, yet ;-) Try searching on "Publisher". Now making a free version would solve this problem - no license to find and buy!

4. It needs other technology to lean on.

In a similar nature to a plugin, BI Publisher doesn't stand on its own feet. Like APEX (needing the Oracle RDBMS) and JDeveloper (an IDE) it needs either someone to feed it or something else to connect to. If there is a free version its more likely that the other thing will be Oracle. Update: This point has been updated from the original post to clarify my use of "plugin".

5. It's a killer combo with APEX and XE.

The other "free" products - APEX and XE are natural integration partners with BI Publisher and the resulting combination is a awesome one. I see a number of people wanting this integration - but without the cost.

6. Raise visibility.

Although its been around for a number of years in various forms, the product on its own doesn't seem to be highly visible. Or is that just because of the quirks?! Making it free would bring visibility to new levels.

7. Beat the competition

Various other competitors exist, both in free and paid form. Making at least an entry level version of BI Publisher free would make it a viable competitor, and ensure Oracle customers lock into Oracle products taking out the chance of a competitors plugin being used.

8. Create Leads for Oracle

Oracle would benefit by having a greater stream of leads and support revenue.

Oops, that's 8, oh well, luckier than 7 for some ;-)

Post your support here!

NZOUG Conference 2008: Early Bird Closing extended! Win an iPod Touch

An announcement for those readers on the conference trail to New Zealand in October:

Join me at the NZOUG Conference 2008 October 20/21 in Rotorua and go in the draw for an iPod Touch! Early Bird registrations have been extended and will close on Monday 8 September, so register now and be in the draw to win!

Details at: http://nzoug.org/ipod08

PS. I'm on the NZOUG Committee and will be at the conference hence the shameless plug for this event ;-)

PPS. If you have any sessions/questions/design issues or ideas bring them along or let me know and I can tee up a special slot for you!

Tuesday, September 02, 2008

XML / BI Publisher concurrent request fails with no error message? Check Output Post Processor (OPP) logfile for errors like: invalid char in text

So your Oracle Reports based concurrent request completed with warning and your concurrent request log file looks like this:

+------------- 1) PUBLISH -------------+
Beginning post-processing of request 1294502 on node XXXX01 at 02-SEP-2008 12:53:28.
Post-processing of request 1294502 failed at 02-SEP-2008 12:53:33 with the error message:
One or more post-processing actions failed. Consult the OPP service log for details.
+--------------------------------------+

And if you go to System Administrator, Concurrent > Manager > Administer, Query up "Output Post Processor", click on Processes, View Manager Log, you see something like:

[9/2/08 10:44:34 AM] [198325:RT1294354]
Template code: XXGLXXXX
Template app:  XXV8
Language:      en
Territory:     US
Output type:   EXCEL
[9/2/08 10:44:49 AM] [UNEXPECTED] [198325:RT1294354] java.lang.reflect.InvocationTargetException
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:585)
 at oracle.apps.xdo.common.xml.XSLT10gR1.invokeParse(XSLT10gR1.java:517)
 at oracle.apps.xdo.common.xml.XSLT10gR1.transform(XSLT10gR1.java:224)
 at oracle.apps.xdo.common.xml.XSLTWrapper.transform(XSLTWrapper.java:177)
 at oracle.apps.xdo.template.fo.util.FOUtility.generateFO(FOUtility.java:1044)
 at oracle.apps.xdo.template.fo.util.FOUtility.generateFO(FOUtility.java:997)
 at oracle.apps.xdo.template.fo.util.FOUtility.generateFO(FOUtility.java:212)
 at oracle.apps.xdo.template.FOProcessor.createFO(FOProcessor.java:1657)
 at oracle.apps.xdo.template.FOProcessor.generate(FOProcessor.java:967)
 at oracle.apps.xdo.oa.schema.server.TemplateHelper.runProcessTemplate(TemplateHelper.java:5888)
 at oracle.apps.xdo.oa.schema.server.TemplateHelper.processTemplate(TemplateHelper.java:3438)
 at oracle.apps.xdo.oa.schema.server.TemplateHelper.processTemplate(TemplateHelper.java:3527)
 at oracle.apps.fnd.cp.opp.XMLPublisherProcessor.process(XMLPublisherProcessor.java:247)
 at oracle.apps.fnd.cp.opp.OPPRequestThread.run(OPPRequestThread.java:157)
Caused by: oracle.xdo.parser.v2.XMLParseException: Invalid char in text.
 at oracle.xdo.parser.v2.XMLError.flushErrors1(XMLError.java:324)
 at oracle.xdo.parser.v2.NonValidatingParser.parseDocument(NonValidatingParser.java:290)
 at oracle.xdo.parser.v2.XMLParser.parse(XMLParser.java:266)
 ... 17 more
[9/2/08 10:44:49 AM] [198325:RT1294354] Completed post-processing actions for request 1294354.

You look at your XML file via View Concurrent Requests, Diagnostics, View XML. Then how do you find the invalid character?

Try loading the XML Data in BI Publisher Desktop Word Plugin (Data > Load XML Data), and hopefully you'll see something like the following that gives the details of where the error is occurring (of course without the smudges ;-):

In this case the "invalid char" is indicated by the square box.

Throwing that into a hex editor (part of the highly recommended PSPad) we see character hex 05 followed by the two periods (hex 2E):

Looking at our ASCII table we see 05 is Enquiry - but this isn't a printing character and so will be causing the problem.

Okay, so now we know what's causing it, we can just update the data to remove the special character, and run the report again without hassles!

Or we could write a wrapper PL/SQL procedure to remove the control characters from the affected fields and add to the Report definition SQL.

Or those of you with more problems that just one occurrence of the control character could log an SR and see if something can be done other than that referred to in Note:155078.1!

Wednesday, August 27, 2008

BI / XML Publisher Bursting fails with InvalidPropertyValueException for IPP_HTTP_RESPONSE_CHECK_INTERVAL

If you are attempting bursting and hit an error that looks something like the following:

[082608_022234429][oracle.apps.xdo.batch.DeliveryHelper][EXCEPTION]
oracle.apps.xdo.delivery.InvalidPropertyValueException: Invalid String property  value for Integer. 
Property name :[IPP_HTTP_RESPONSE_CHECK_INTERVAL], 
Property  value :[O]

Check out Metalink Note 603424.1!

Solution:

A patch containing a later version of the DeliveryHelper.java must be installed in order to resolve the issue:

  • Oracle E-Business Suite 11i The issue is encountered only when Patch 6470598 has been installed. This one-off patch has already been superseded by a new patch which included the fixed version of the DeliveryHelper.java. Patch 6470598 XML Bursting Reply-To Using From Instead resolves the issue.
  • Oracle E-Business Suite Release 12 A one-off patch on top of the 12.0.4 code level is required to resolve the issue: Patch 6482024 Bursting Engine Does Not Resolve OA_MEDIA. This patch is released under the terms of 'By Support' which implies that the patch is queryable on Metalink, but downloads of this patch requires a password. Please contact Global Customer Support to receive a password to download the patch.

Thursday, August 14, 2008

Discoverer Plus window not appearing or Jinitiator JVM conflicts on the Oracle eBusiness Suite: Java JRE EnableSecureStaticVersioning

If you find that Discoverer Plus won't start (or the Discoverer Plus windows doesn't appear) after downloading the Java Applet, or if you're having issues with JInitiator with Oracle Applications, then it could be that you have multiple versions of Java required. For your Oracle Discoverer Plus, Oracle JInitiator Java Plugin (JVM), or other Java based software multiple versions of Java can cause conflicts, so try the following steps. Actually I'd recommend any rollout of the Disco Plus or EBS client include the below steps!

1. Allow multiple concurrent versions of Java to run by enabling Secure Static Versioning.

Update or Create the following Windows registry entry on your desktop client as follows;

1.1 If the 'Java Deployment' and 'Policy' folders do not exist under your HKEY LOCAL MACHINE -> SOFTWARE -> JavaSoft entry in your registry you will first need to create these folders as follows;
1.2 Right mouse click on the JavaSoft folder in your registry and from the menu select 'New -> Key'. Name the new folder 'Java Deployment'. Open this folder and create another folder named 'Policy' underneath it, then follow the rest of the steps below.
1.3 Go to 'HKEY LOCAL MACHINE -> SOFTWARE -> JavaSoft -> Java Deployment -> Policy' in your Windows registry
1.4 Right mouse click on the Policy folder and from the menu select 'New -> DWORD Value'
1.5 Right click on the newly created value and rename it to - 'EnableSecureStaticVersioning'
1.6 The Data value should remain at the default of '0x00000000 (0)'

2. Switch off automatic updates of Java.

It is advisable to turn off the automatic upgrade facility for the desktop client JRE. This will ensure that newer versions of the JRE plug-in are not installed, and used with Oracle E-Business Suite / Oracle Discoverer unknowingly. This feature can be turned off as follows;

2.1 From the 'Start Menu', select 'ControlPanel'
2.2 Double click the 'Java' icon
2.3 Select the 'Update' tab
2.4 Uncheck the 'Check for Updates Automatically' box
2.5 Click the 'Never Check' button on the 'Java Update -Warning' pop up window
2.6 Click 'OK' to close the 'Java Control Panel'

If you are getting crashes that refer to jvm.dll see my other popular post on JVM crashes.

References:

Friday, July 25, 2008

NZOUG Conference 20-21 Oct 2008: Registration Open and Call for Papers Closing

The NZOUG Conference 2008 is open for registrations. The event is shaping up well, with some excellent sponsors, high profile speakers, and interesting papers. As well as that the entertainment in Rotorua is not to be missed!

The Call for Papers is closing 25 July, so if you are a potential speaker make the most of the last minute and get those abstracts in!

Watch the NZOUG website for updates on the conference.

PS. If you're sending a group, watch out for the buy 3 get 1 free offer.

Saturday, July 12, 2008

Revisited: Why is mod_plsql not supported with the Oracle eBusiness Suite Release 12? Fusion Crossroads #1

In a prior post I raised the question of why mod_plsql was not supported with the eBusiness Suite R12. Excellent to see that Oracle was listening to the community and as Steven Chan's post highlights, Metalink Note:726711.1 has been created to address this question.

In summary you can still run mod_plsql connecting to the eBusiness Suite as long as the Apache/mod_plsql are in an isolated install and you address security and associated considerations. And of course as a customization it is not supported under the guise of the eBusiness Suite ... but hey your customizations never are!

Guess that means the same for the other sweet tools you'd connect/integrate to your eBusiness Suite ... like Application Express (APEX), PHP/Zend, Ruby on Rails, etc.

Wednesday, July 09, 2008

Where do I get the XML file or request output file for my BI Publisher Report / Concurrent Request?

A quick post ... it's been a frenetic few months, so blog posts a bit thin lately but plenty of good stuff in the pipeline!

Generally when I'm designing a BI Publisher/XML Publisher report I'll create a concurrent program that generates XML, I'll follow the usual steps:

  1. Setup the concurrent program to output Text
  2. Run it to ensure its working
  3. Switch the concurrent program to output XML
  4. Run the concurrent program to output XML
  5. SFTP/copy the o*.out XML file from $APPLCSF/$APPLOUT
  6. Load it into Word via the BI Publisher Desktop plugin and design the layout "on the run".
  7. Setup the BI Publisher Data Definition/Template
  8. Perform system/unit tests

Is there an easier way to get the XML file from a concurrent request? Sure is - nice and easy through the front end.

Get the XML File from a BI Publisher based concurrent request/report:

  1. View->Requests
  2. Find the request you're interested in
  3. Click on Diagnostics button
  4. Click the View XML
  5. Save the file to your PC by doing File->Save As, *.xml

But where does the XML file live?

Well, by default it is $APPLCSF/$APPLOUT/o{REQUEST_ID}.out.

But if that's the XML file, then where does the actual output file reside as the location of the XML file is where normal request output resides?

Get the Request Output File for a BI Publisher based concurrent request/report:

The output is $APPLCSF/$APPLOUT/{REPORTNAME}_{REQUEST_ID}_{COUNT}.PDF|RTF|EXCEL|HTML

Where

  • REPORTNAME is the concurrent program short name,
  • REQUEST_ID is the concurrent request ID
  • COUNT is a counter based on the number of times a request has been re-published.
  • One of PDF, RTF, EXCEL, HTML is the file extension/type dependent on the output formats chosen.

An example is: XXXX_FNDSCURS_2803880_1.EXCEL

Output file location courtesy of Tim's post here.

Cool, file locations identified!

 

Friday, June 06, 2008

Find JDeveloper with OAF / OA Extension patch for Oracle eBusiness Suite Release 11i / Release 12

I've been working with Java more recently, and thought this might be a handy reference.

In order to find the right JDeveloper match up for extending the Oracle eBusiness Suite / Applications, point your web browser to http://host:port/OA_HTML/OAInfo.jsp, then choose the matched JDeveloper patch.

Release 11i

OA Framework 5.10 patch JDeveloper 9i Patch

ATG.PF.H (patch 3438354 or Oracle Applications 11.5.10) or 11.5.10K

Patch 4045639 9IJDEVELOPER WITH OA EXTENSION ARU FOR FWK.H
ATG PF CU1 (patch 4017300) or 11.5.101CU Patch 4141787 9IJDEVELOPER WITH OA EXTENSION ARU FOR CU1
ATG PF CU2 (patch 4125550) or 11.5.102CU Patch 4573517 Oracle9i JDeveloper with OA Extension for 11.5.10 CU2
11i.ATG_PF.H RUP3 (patch 4334965) or 11.5.103CU Patch 4725670 9IJDEVELOPER WITH OA EXTENSION ARU FOR 11i10 RUP3
11i.ATG_PF.H RUP4 (patch 4676589) Patch 5455514 9IJDEVELOPER WITH OA EXTENSION ARU FOR 11i10 RUP4
11i.ATG_PF.H RUP5 (patch 5473858) Patch 6012619 9IJDeveloper With OA Extension ARU FOR 11i10 RUP5

11i.ATG_PF.H.RUP6 (patch 5903765)

Patch 6739235 9IJDeveloper With OA Extension ARU FOR 11i10 RUP6

Release 12

ATG Release 12 Version

JDeveloper 10g Patch
12.0.0 Patch 5856648 10g Jdev with OA Extension
12.0.1 (patch 5907545) Patch 5856648 10g Jdev with OA Extension
12.0.2 (patch 5484000 or 5917344) Patch 6491398 10g Jdev with OA Extension ARU for R12 RUP2 (replaces 6197418)
12.0.3 (patch 6141000 or 6077669) Patch 6509325 10g Jdev with OA Extension ARU for R12 RUP3
12.0.4 (patch 6435000 or 6272680) Patch 6908968 10G JDEVELOPER WITH OA EXTENSION ARU FOR R12 RUP4
12.0.5 - no full 12.0.5 release planned only individual
product suites like HRMS and Financials 12.0.5
n/a
12.0.6 (patch 6728000 or patch 7237006) Patch 7523554 10G Jdeveloper With OA Extension ARU for R12 RUP6
12.1 (Controlled Release - only included for completeness) Patch 7315332 10G Jdev with OA Extension ARU for R12.1 (Controlled Release)
12.1.1 (rapidInstall or patch 7303030) Patch 8431482 10G Jdeveloper with OA Extension ARU for R12.1.1
12.1.2 (patch 7303033 or patch 7651091) Patch 9172975 10G Jdeveloper with OA Extension ARU for R12.1.2
12.1.3 (patch 9239090 or patch 8919491) Patch 9879989 10G Jdeveloper with OA Extension ARU for R12.1.3

For details latest details see Metalink Note:416708.1 or Note:330236.1

Wednesday, May 28, 2008

NZOUG Call for Papers - Conference 20-21 October 2008

Keen to head down-under? Check out this message from the New Zealand Oracle Users Group.

The New Zealand Oracle Users Group is pleased to announce…

Call for Papers and Training for the 2008 Conference

We only require your ABSTRACT of not more than 150 words at this stage.

We invite all users and suppliers of Oracle technology and applications and related products to submit presentations, including

  • Oracle Users with an interesting story, case study or any useful tips
  • Oracle Partners playing a key role in the Oracle world
  • Third party suppliers of products and services that will assist Oracle technology and application users

Presentation topics may include but are not limited to Oracle Aplications such as eBS, JDE, Peoplesoft and Hyperion, and Oracle Development, Middleware and Database technologies. Everything is welcome for submission but delegates are especially interested in hearing case studies of real life scenarios and situations, lessons learnt and best practices.

Both Technical and Business streams will run throughout the conference programme with presentations covering the implementation, use and support of the whole range of Oracle and associated third party products and services.

If your paper is selected for presentation:

  • You’ll be admitted to the conference free of charge upon submission of your full written paper, and
  • Your paper will be published in the conference proceedings.

SUBMITTING AN ABSTRACT

How do I submit an abstract? Visit our submission website and complete the Call for Papers submission, by 20 June 2008

Also anyone can submit topics you are interested in, and we’ll try to source a presenter for the topic. We’ll post further information about this and for presenters on our website in due course.

Remember to visit our website for all up to date information on regional events, the conference, and other news.

We look forward to receiving your completed submissions by 20 June 2008

HOW DO I REGISTER FOR THE CONFERENCE?

We are not quite ready to open registration but watch this space (or keep an eye on our website) in the next few weeks for an announcement.

WHAT DISCOUNTS CAN WE GET?

There will be an early bird discount for all registrations before the 1st September 2008.

Watch this space for these great rates.

VENUE AND DATES

Rotorua

20th and 21st October 2008 Novotel Rotorua Lakeside – Rotorua

NEED MORE INFORMATION?

Any questions please contact our conference management company, The Conference Company.

By phone on +64 9 360 1240 or by email at nzoug@tcc.co.nz

Clearing Email Notifications and manually setting the Workflow/Java Notification Mailer Override/Test Address via SQL for the Oracle eBusiness Suite

Update: 14-Mar-2012 Added supported back-end method to update Workflow Notification Mailer attributes. Warning: This post also contains unsupported SQL updates, use at your own risk!

I think the Workflow Notification Mailer is excellent, but one of my pet hates is the setup process for a mailer. I never seem to be able to get it setup cleanly. One thing that really bugs me is that the Service Component Manager (Workflow Mailer Service) needs to be running before you can set the "Override Address". So when setting up a mailer you have to be very careful that the "Manual" startup option is set or your Mailer will start after configuration or when you startup the Workflow Mailer Service. Similarly caution is needed when cloning non-Prod environments from Prod when the Prod Override Address is not set, but Test/Dev etc need to be set.

Additionally, there's no button anywhere with a label like "Click me to update all Mail_Status pending Notifications as Sent" which is what the following accomplishes:

update WF_NOTIFICATIONS
set mail_status = 'SENT'
where mail_status = 'MAIL';

# Note: Change the apps_password in the following command
sqlplus apps @$FND_TOP/patch/115/sql/wfntfqup.sql APPS apps_password APPLSYS

Okay, so here's how you get the current Override Address via SQL on the backend:

select fscpv.parameter_value
from   fnd_svc_comp_params_tl fscpt
,      fnd_svc_comp_param_vals fscpv
where  fscpt.display_name = 'Test Address'
and    fscpt.parameter_id = fscpv.parameter_id; 

And now here's a very unsupported way to update the Override Address - please try this on a Test environment first to make sure it works for you! Note this will update all Mailers you have setup. Recommended to stop and start the mailers after making this change. Also make sure you change the email address to your Test Address and change the NONE to your current value (from previous SQL) if necessary:

update fnd_svc_comp_param_vals
set    parameter_value = 'MyTestAddress@MyCompany.com'
where  parameter_value = 'NONE'
and    parameter_id =
( select parameter_id
 from   fnd_svc_comp_params_tl
 where  display_name = 'Test Address'
);

commit;

Update: 14-Mar-2012 - There is a supported way to make back-end updates to Workflow Notification Mailer (and other service components). This is documented in Support Note 1399464.1. In short run the following and follow the prompts:

sqlplus apps @$FND_TOP/sql/afsvcpup.sql

PS. See Metalink Note 467229.1 if you get the dreaded "ORA-20000: Oracle Error = -20000 - ORA-20000: 330 Alert messages exist in WF_NOTIFICATION_OUT. Ensure these messages are processed before running wfntfqup.sql"

PPS. Anil has a nice post clear post where the Override Address (Test Address) lives these days here.

Tuesday, April 15, 2008

Session timeouts, profile options and adconfig for the Oracle eBusiness Suite

Tired of your Oracle eBusiness Sessions timing out?

Symptoms:

Your log on session is no longer valid. Would you like to log back in so you can continue working? If you do not log in, any outstanding data changes in your forms will not be saved.
Your Session has expired, please login again

Solution:

Set the values of the following profile options appropriately. See Note:171261.1 for details:

ICX:Session Timeout
E.g. From 30 to null (minutes)

ICX: Limit time
E.g. From 10 to 24 (hours)

But when you refresh or clone Test / Development environments the setting for ICX:Session Timeout gets reset!

No problem just need to find the appropriate variable in the adconfig context file e.g. $APPL_TOP/admin/$CONTEXT_NAME.xml.

<session_timeout oa_var="s_sesstimeout">1800000</session_timeout>

And set to the appropriate value. Note that s_sesstimeout is in milliseconds so multiple by (1000*60) to get the time in minutes that is represented in the profile option.

E.g. if you want to set it to 60 minutes then in the context file put value 60 * 1000 * 60 = 3600000. Either that or just set to null:

<session_timeout oa_var="s_sesstimeout">1800000</session_timeout>

Then next time you run adconfig.sh (or a patch/clone does) then you won't have to reset profile options.

BI Publisher + Release 12 Known Issues on Metalink

Quick pointer to a handy note on Metalink. I think it's excellent for Oracle to keep known issue lists and troubleshooting guides up to date.

Oracle XML Publisher Release 12 Known Issues

Some of the key issues that I think deserve reference as I've seen posts on the Oracle forums / public blogs about them:

12.1. Decimal Numbers and Rounding with BI Publisher syntax

Rounding Issue When Adding Decimal Numbers

As Oracle XDK conforms to XSL standards for IEEE 754, you might encounter rounding issues when adding numbers that are decimals. For example, suppose you add 13683.80 and 516.39, using this syntax in Oracle BI Publisher:
<?13683.80 + 516.39?>
The value returned is 14200.189999999999 which is caused by a limitation based on the IEEE 754 Binary Floating-Point-Arithmetic.

To work around this issue, use the format-number function or the round syntax as shown here to obtain a return value of 14200.19:
<?format-number:(13683.80 + 516.39);'D99'?>
or
<?(round((13683.80 + 516.39)*100) div 100)?>

12.2. XML Publisher Bursting "Request ID" parameter LOV values

Request ID Parameter LOV Not Populated for XML Publisher Bursting Report Program and XML Report Publisher Program

When you submit the XML Publisher Bursting Report Program (XDOBURSTREP) or the XML Report Publisher Program (XDOREPPB) you are prompted to select the Request ID for the data generation program. The LOV for this parameter is not being populated due to an incorrect profile option reference. You therefore cannot select the appropriate data file to complete the request.

See Note:404928.1 for details of workaround.

If anyone hits any other known issues not documented in the above note whether Release 11i or 12 related, please comment on this post, or ask Support to add it to Note:404928.1!

Monday, April 07, 2008

Oracle Discoverer Statement of Direction March 2008

Quite a bit of noise and even FUD surrounding the position of Oracle Discoverer and its fit (or lack of fit) within the Fusion roadmap. Good to see Oracle come out with a statement of direction on this last month firmly cementing its place in the BI toolset and hence Fusion Middleware stack.

For details see: Statement of Direction Oracle Business Intelligence Discoverer March 2008

Great to keep that Disco happenin!

Wednesday, April 02, 2008

BI Publisher: How do I replace linefeeds, newline or carriage return whitespace / special characters

Over on the forums, one post came up that is usually a quick answer.

How do I replace newlines (carriage returns or linefeeds) with a space? Well, with BI Publisher Template Builder things weren't exactly going to plan.

Basically you've got an XML element like this:

<sort_field1_inv>110
000
000
110000
0000
0000</sort_field1_inv>

And you want the output to be this: 110 000 000 110000 0000 0000

Should be easy. The 10.1.3.2.0 documentation for xdofx has replace function for replacing strings. Only problem is no mention of special characters. Doh! Okay, just throw in the chr(10) function and should be fine.

So let's try it out:

<?xdofx:replace(SORT_FIELD1_INV,chr(10),' ')?>  

Uh-oh: lovely error message on preview including:

oracle.xdo.parser.v2.XPathException: Extension function error: Method not found 'chr' 

Oh well, lets try some xsl magic similar to the following, including a bunch of variations not presented here!:

<xsl:value-of select='translate(/SORT_FIELD1_INV,"&#x20;&#x9;&#x10;&#x13;&#xD;&#xA;"," ")'/>

Nope, that didn't change anything, still newlines coming through.

Hmm, now what version of the BI Publisher Desktop Word Addin are on? In my case, a tad behind the times, but still matching the documentation that says chr should be available - 10.1.3.2.0 Build 87.

Luckily with Google, a ounce of Japanese reading ability, and of course Babelfish - found that 10.1.3.3.1 or higher would fix this.

So downloaded BI Publisher Desktop 10.1.3.3.2 from this page, uninstalled 10.1.3.2.0, installed 10.1.3.3.2 and now its all go, solution is as previously:

<?xdofx:replace(SORT_FIELD1_INV,chr(10),' ')?>  

Sorted!

UPDATE: Since the eBusiness Suite is still on 5.6.3, the above solution does not work. Here is an alternative solution:

<fo:inline linefeed-treatment="treat-as-space"><?SORT_FIELD1_INV?></fo>

On with it!

Wednesday, March 26, 2008

BI Publisher EBS Bursting 101: A tutorial/case study including Bursting Control File to email Suppliers Remittance Advice in 1 easy step

Here's a brisk case study into the power of core BI Publisher functionality in combination with the Oracle eBusiness Suite with a focus on Bursting.

The requirement here is to send Suppliers their Remittance Advice via email with a pixel perfect PDF attachment, of course with minimal coding. I'm limiting the functionality to email remittance advice for EFT payments in order to simplify this tutorial. Plus there are some coding shortcuts - your're more than welcome to provide free code fixes if you can spot them ;-)

Test Data

Firstly, lets look at the test data ingredients used:

  • 1 Supplier: say "Virtuate"
  • 1 Supplier Site: say "WELLINGTON" with Remittance Email address entered, Payment Method = EFT, Bank Account assigned
  • 2 Invoices for the Supplier say INV0001, INV0002
  • 1 Payment Batch say BURST_01 where payments have been made and payment batch confirmed

XML Data Source

Now, we need to create the Separate Remittance XML file somehow. Rather than reinvent the wheel, I started with a stock standard Payables Separate Remittance Advice report (APXPBSRA.rdf), and did the following:

  1. Setup a new concurrent program definition by copying the existing one, renaming, changing the executable, changing output to XML
  2. Added the new concurrent program to Payables "All Reports" request group
  3. Copied the report definition $AP_TOP/reports/US/APXPBSRA.rdf to a new report XXV8_APXPBSRA.rdf under modifications top directory
  4. Spiced up the new report with a couple of extra fields (Remittance Email, Fax number, etc)
  5. Restricted the data returned to only Suppliers Sites with a Remittance Email address (take this out later for fax/print etc).
  6. Restricted the data returned to only payments with payment method of EFT (checks have their on remittance advice).
  7. Ran to get the XML output. Note the <APXPBSRA><LIST_G_SEL_CHECKS><G_SEL_CHECKS> structure, we will use this later in the Bursting Control File
  8. And of course hacked the XML output - cut'n'paste style to add more data rather than having to key it (an additional supplier and invoices). Note this technique includes overwriting the output file $APPLCSF/$APPLOUT/o{REQUEST_ID}.req and follows the principles in my post on masquerading one request as another.

Layout

Okay, that sorts out the base report and data, now onto the fun stuff with a few screenshots:

  1. Create a new pretty RTF layout template
  2. Register the Data Definition
  3. Register the Template
  4. Run XML Report Publisher on the request that produced the prior XML data, and all lovely!

Bursting

Righto, now onto the Bursting part. We're going to:

  1. Create a Bursting Control File to email Suppliers
  2. Upload the control file to the Data Definition
  3. Test it out by calling the XML Publisher Report Bursting Program
  4. (Optional) Extend the Report to automatically submit the Bursting program

At this point please make sure you have done the following EBS bursting prerequisite steps:

  • (Optional, but highly recommended) Upgrade to 11.5.10.2 / XMLP 5.6.3 or higher (ATG RUP5 or higher is nice)
  • Apply 5968876 XDO:EBS-BURSTING INTEGRATION PATCH
  • Restarted your applications processes - or the button to upload your bursting control file won't appear!
  • Set the Temporary Directory under XML Publisher Administrator, Administration, General - to e.g. /tmp, or you'll get error message:
    java.lang.NullPointerException at oracle.apps.xdo.oa.cp.JCP4XDOBurstingEngine.getSystemTempDirectory(JCP4XDOBurstingEngine.java:413)
  • Assign Concurrent Program "XML Publisher Report Bursting Program" to the appropriate Request Group, e.g. "All Reports" / Payables
  • Make sure you have an SMTP server that you can send your email through!

Bursting Control File

Next, lets get into the Bursting control file and look at it a bit closer:

1. Create Bursting Control File to email Suppliers custom Separate Remittance Advice

<?xml version="1.0" encoding="UTF-8"?>
<xapi:requestset xmlns:xapi="http://xmlns.oracle.com/oxp/xapi">
<xapi:request select="/APXPBSRA/LIST_G_SEL_CHECKS/G_SEL_CHECKS">
<xapi:delivery>
<xapi:email server="smtp.yourdomain.com" port="25" from="youremail@yourdomain.com" reply-to ="">
<xapi:message id="${C_CHECK_ID}" to="${C_REMITTANCE_EMAIL}" cc="yourcc@yourdomain.com" attachment="true"
subject="Virtuate - Remittance Advice for Payment ${C_CHECK_NUMBER}"> Please find attached Remittance Advice for payment ${C_CHECK_NUMBER}. Regards, The Payables Team Virtuate Limited
</xapi:message>
</xapi:email>
</xapi:delivery>
<xapi:document output="Remit_Advice_${C_CHECK_NUMBER}" output-type="pdf" delivery="${C_CHECK_ID}">
<xapi:template type="rtf" location="xdo://SQLAP.XXV8_APXPBSRA.en.US/?getSource=true" filter=""></xapi:template>
</xapi:document>
</xapi:request>
</xapi:requestset>

Hmm, what does all this jargon in the control file do? Well, here's a pretty picture that explains a lot of it:

2. Make sure it all works ... gotta make sure its the right flavor!

Navigate into Payables, Submit Request, XML Publisher Report Bursting Program, and specify the request from your last custom Separate Remittance Advice request.

Hey presto, take a look at your email:

Check the output:

3. (Optional) Extend the Report to automatically submit the Bursting program

Automatic Burst

Now, we don't want to have to manually (or via request set) submit the Bursting program every time we run the report, so let's automate that. By putting a parameter on the new Separate Remittance Advice report to control whether we Burst, and submitting a new request in the after report trigger, we can achieve this. We'll implement this is a similar fashion to my post on Beautiful Statements in 1 Easy Step.

So lets do this:

  • Add parameter P_BURST to report and concurrent program definition (Yes/No).
  • Add code to after report trigger.
      declare
        v_req_id number := 0;
      begin
        if nvl(:p_burst,'N') = 'Y' then
          v_req_id := xxv8_xmlp_burst_pkg.submit_request_burst('XXV8_APXPBSRA',:p_conc_request_id);
          if v_req_id > 0 then
            srw.message(20002, 'Submitted request_id ' || v_req_id);
            commit;
          else
            srw.message(20002, 'Failed to submit request');
          end if;
        end if;
      end;
    
  • Create PL/SQL package to do the submit of Bursting Program.
    create or replace package XXV8_XMLP_BURST_PKG AUTHID CURRENT_USER AS
      function submit_request_burst
      ( p_code in varchar2
      , p_request_id in number
      ) return number;
    end XXV8_XMLP_BURST_PKG;
    /
    
    create or replace package body XXV8_XMLP_BURST_PKG AS
    function submit_request_burst
    ( p_code in varchar2
    , p_request_id in number
    ) return number
    is
      l_req_id number := 0;
    begin
      if p_code = 'XXV8_APXPBSRA' then
        l_req_id := fnd_request.submit_request('XDO','XDOBURSTREP',NULL,NULL,FALSE,
                                               p_request_id);
      end if;
      return l_req_id;
    end submit_request_burst;
    
    end XXV8_XMLP_BURST_PKG;
    /
    
  • Test it all out!

Sweet, all automatic, working and ready for the primetime!

Issues

But let's note a few issues to look out for.

  1. I'm not very happy about "hardcoding" the SMTP server details in the control file. Would be great if BIP honoured either the Workflow SMTP setup or database smtp_server parameter. However, since the control file is in a structured data field in the database shouldn't be hard to write a script to update them all. Left to a future exercise though!
  2. I'm not very happy about "real" emails being delivered from Test/Development etc. environments. Would be great if BIP honoured the "Test Address" workflow parameter. Left to a future exercise, also related to issue Issue 1.
  3. Resolving items higher up the XML tree seems to be an issue with bursting in that they drop out and the solution as in my post on disappearing parameters doesn't work. Update: This functionality seems to be a known issue. Enhancement Request 6969869 has been logged for this issue. Thanks Lavina! In the meantime looks like XSLT transformation would come in handy, but that's a separate post!
  4. Minor issue that layout is not applied to the Bursting Request so no output, but can just run XML Report Publisher over it.

References:

Thanks to Dilip for the suggestions and request to put this together.

NB: In this tutorial I used Payables (SQLAP) as the application under which I register the new concurrent program and subsequently BIP Template and Data Definition, but custom Virtuate application for concurrent executable. This is to make the tutorial a working example without additional setup. You may want to use your modifications or similar custom application for all new entities.

PS. This Remittance Advice email bursting solution is an alternative to the standard Workflow Remittance Email solution.

PPS. If this all seems to hard and you are interested in BIP or Workflow Supplier Remittance Advice Email/Fax solution as a Consulting solution, contact me - see my Profile for email address.