Examining the ongoing challenges of delivering high-quality, value-added ERP services in Higher Education.

Saturday, February 9, 2013

Prepping for HEUG Alliance13: Part 1

Only six weeks to go until the latest gathering of Oracle’s higher education customers at the Higher Education User Group (HEUG) Alliance13 Conference in Indianapolis. This is my sixth trip to the event and I decided to go heavy on presenting, submitting three proposals; I was simultaneously excited and disappointed that all three were accepted...

Monday, March 18, 12:45-1:15pm: Enhanced E-Business Suite Operational Reporting with OBIEE

Tuesday, March 19, 4:15-5:15pm: Fostering a Culture of Agility and Collaboration

Wednesday, March 20, 9:15-10:15am: Creating a Roadmap for Business Intelligence Transformation

That means I’ve got three decks to build between now and March 4th (the due date according to an email I received earlier this week). As if that weren’t bad enough, these three areas remain in flux (“dynamic” sounds better, though) for my organization -- I expect big developments in our BI program between now and my flight to Indianapolis, so the question is how long should I procrastinate? Or should I tempt fate and make pronouncements in my decks that I hope will be true by the time I present them? I have a feeling I’ll be pushing up against that due date!

Friday, February 8, 2013

Action Framework and GO URL in OBIEE

Let's talk about an unsung hero in Oracle BI (OBIEE) -- the "Go URL." It is hard to find good documentation on this feature, but let me give credit to a few sites that helped me out: Gerard Nico, iWareLogic.

First off, what is "Go URL"? In a nutshell, it is a direct URL to execute an OBIEE object (Analysis, Dashboard, BI Publisher Report), but its true power comes when paired up with the Action Framework in OBIEE. Through this technique, the developer has a very powerful method for creating virtual "drill paths."

Stepping back a bit, the OBIEE Action Framework enables the report developer to allow the user to invoke actions from within query results. These actions include navigation to other OBIEE content, websites, web services, E-Business Suite, Siebel, or Oracle EPM. A common use case is to enable navigation to other BI content. The great thing about this is that the context of the entire row is passed implicitly to the receiving Analysis, allowing an effective "drill-down" outside of standard hierarchy-style automatic drill-down. But there is a catch -- the fully-qualified name of the column must exactly match for the prompt to be accepted. In other words, if the master query is in Subject Area A, Folder X and the receiving query has the same column in Subject Area A, Folder Y then it is NOT THE SAME COLUMN.

This may seem obvious to many OBIEE experts working within ideal subject areas containing one fact table but I have been working with a (purchased) model that defies some OBIEE best practices. But this solution also addresses potentially more common cross subject-area use cases. Fundamentally, what the GO URL "hack" allows the developer to do is pass any column values from the master table into the "WHERE" clause of the receiving query as values rather than column/value combinations.

Let me give you an example. I am using the Noetix Generator for Oracle BI to create subject areas for Oracle E-Business Suite. My use case is that I have one report created against the GLG0_Balances "Folder". Below is a screenshot of my query, which is a basic Trial Balance report.

Now I also know that I would love to be able to drill down on the "Period Net" to see the detailed journal entries. That ultimate query is shown below -- note that although it is the same Subject Area, the entire query comes from a different "Folder" in the presentation layer. [For the semantic layer purists in the room who balk at this, please imagine for now that it was a different subject area...]

 The next step is to capture the URL for the target Answers query; run the analysis from the catalog and snag it from your browser. It will look something like this:


Copy this off to Notepad or something. Change "PortalGo" to just "Go" and delete "Action=prompt" from the URL. At the end add this syntax "&Action=Navigate&P0=1" Now your base URL looks like this:


Now on to passing parameters/prompts. The first rule is that every column you want to prompt must be configured in the "Filters" section of the target, but it -- and this is important -- need not be defined "is prompted" as is the case with Dashboard Prompts. Decide which filters you want to set and find the extended name of the columns, for example: "- Nx_GLG0_Journal_Entry_Lines (General Ledger Views)"."Period Name" This is a little tricky because the "table name" portion is not exactly the same as what shows in the Analysis GUI.

You will now create matched pairs of "col" and "val" entries in the URL. Don't worry about the val so much except to test. In my example, I am hoping to pass four prompts into my target: GL Period and 3 segments of our chart of accounts. So my modified URL now looks like this:

https://yourservername.com/analytics/saw.dll?Go&path=%2Fshared%2FGeneral%20Ledger%2FJournal%20Entries%20Report&Action=Navigate&P0=1&col1="- Nx_GLG0_Journal_Entry_Lines (General Ledger Views)"."Period Name"&val1=NOV-12&col2="- Nx_GLG0_Journal_Entry_Lines (General Ledger Views)"."Acct$SV$Harvard Tub"&val2=610&col3="- Nx_GLG0_Journal_Entry_Lines (General Ledger Views)"."Acct$SV$Harvard Org"&val3=56256&col4="- Nx_GLG0_Journal_Entry_Lines (General Ledger Views)"."Acct$SV$Harvard Object"&val4=6640

Test the URL by pasting it directly into your brower before proceeding to the next step...
Okay, so now it is time to integrate. Edit the "master" query and visit the Column Properties / Interaction tab on whichever column you want to add the action to. In this case, the Net Period column is the winner. Change the Primary Interaction to "Action Links" and then add a new action of type "Navigate to a Web Page" (counter-intuitive when "Navigate to BI Content" is right there...) Insert your big URL and go ahead to define parameters.

OBIEE does something annoying here, assuming that "Go" should take an argument. You need to edit the URL to remove the =@{1} which will result in an error later that you can ignore.

Next, scroll down and map the "val" placeholders to columns in the master view. TIP: you may need to include additional columns in your Answers query and make them hidden if you use them in your Filters but do not intend to display them. Only columns that are part of the query are available to the URL prompts.

When you're done, you'll get an message (above) because you deleted that false prompt for the "Go" itself. Ignore the error and move on. Proceed with options such as "Do not display in a popup if only one action is available at runtime" or any other options on the interaction.

Below is how this looks in action... First, the "master" query has a blue link wherever the action has been enabled.

Click a link to see the details... Like magic.

So there you go... A piece of cake, right?