OBIEE navigation between different dashboards, passing multiple parameters

In this post I'll show how to navigate from the source dashboard page on the one dashboard to the target dashboard page on the second dashboard with passing multiple parameters.

I want to navigate from the Test Page 2 on Development 2 dashboard:


To the Test Page 2 on Development 3 dashboard and pass parameters to target dahboard prompts:


The source report columns and filter:

PRODUCTS.PROD_CATEGORY
CHANNELS.CHANNELS_CLASS
SALES.QUANTITY_SOLD
PRODUCTS.PROD_CATEGORY is prompted

The target report columns and filter:

CHANN.CH_CLASS
PROD.PR_NAME
SALES.Q_SOLD
PROD.PR_CAT is prompted
CHANN.CH_CLASS is prompted

Note that I'm using different subject areas with different BMM logical table and column names for the source as well as for the target report.

The one more important thing is the target dashboard prompt in which we'll pass parameters:


Let's go back to the source report.

I realy tried all options to call dashboard page on the different dashboard but with no luck, the only solution that works fine I'll explain later, but now let's see what have I try in the source report.

Solutions that don't work well

PortalPageNav javascript function to call target dashboard with target dashboard page in the column PRODUCTS.PROD_CATEGORY custom text format (data format tab on the column properties):


But with this we can use only current column value (PRODUCTS.PROD_CATEGORY, referencing it with @) and we want to pass CHANNELS.CHANNEL_CLASS, so this solution is not good.

I tried with the second filter in PortalPageNav but we can pass only static values further, only one filter is dynamic (with @):

PortalPageNav(event, '/shared/Development/_portal/Development 3', 'Test Page 2','PROD','PR_CAT',"'@'", 'CHANN','CH_CLASS','Direct')

The next thing that I tried is writing the similar code with thread text as HTML option, but still no progress, we can't put PRODUCTS.PROD_CATEGORY and CHANNELS.CHANNEL_CLASS columns in the PortalPageNav instead of static values.

I tried to write Answers column in HTML form fields and call PortalPageNav to read it with document.getElementsByName or document.myform.field.value, instead of static values, but still no luck.

And the last one attempt is using DASHBOARD URL to navigate to dashboard page on the different dashboard:


No luck again, with DASHBOARD URL we can navigate between dashboard pages that are located on the same dashboard, like in the code below:


Working solution

The only solution that works fine with passing multiple filters (dynamic) and call another dashboard page on the another dashboard is using HTML code with PortalPageNav javascript function in the narrative view of the source report.

With this we can easily reference PRODUCTS.PROD_CATEGORY and CHANNELS.CHANNEL_CLASS columns with @1 and @2 (like in my example) and passing parameters to the target dashboard prompt fields on the target dashboard page, target dashboard.

HTML code with PortalPageNav function in the source report narrative view:


<--a href class="Nav" onclick="JavaScript:PortalPageNav(event, '/shared/Development/_portal/Development 3', 'Test Page 2','PROD','PR_CAT', '@1', 'CHANN', 'CH_CLASS', '@2');">@1 and @2
<--/a>

We display all rows in the narrative.

Test

The source dashboard page on the first dashboard:


Ok, at first sight is not pretty, but the functionality is important here. We'll navigate with Electronics as category and Direct as channel class.

The result is new opened window with target dashboard page on the target dashboard. We successfully pass two filters to the target dashboard prompt and we see the target report:


NQQuery.log for the target report:


All parameters are transferred to the target.

If we want to navigate to the second dashboard and open it in the same window we use target="_self":

<--a href class="Nav" onclick="JavaScript:PortalPageNav(event, '/shared/Development/_portal/Development 3', 'Test Page 2','PROD','PR_CAT', '@1', 'CHANN', 'CH_CLASS', '@2');" target="_self">@1 and @
<--/a>