Query in EIS Drill-Down Reports
Hi all:
We want to build Drill-down reports in EIS. I know the basic of creating a drill-down report. Created a sample using SQL server database and Essbase 9.3.1 dummy(test) cube.
Just to give you a background we have planning application and no Essbase-only applications.
I wanted to know is it possible to use an already existing cube in essbase to create drill down reports. I do not want to go through a process of creating the hierarchy in EIS as we already have DRM and a process around metadata creation, which is not likely to change.
Is there some tool that can take a outline and create a Model/Metaoutline in EIS ?
Please let me know in case you have any suggestions or wild ideas on this :)
The short answer is no, you can't do it that way.
EIS development flows from the relational side to the Essbase side.
The Metadata Outline cannot be built until the OLAP Model has been created. Drill through reports are LROs defined in the Metadata Outline and linked through the OLAP model to the source tables.
I tried to do the same thing four years ago and learned that EIS has to build the Essbase Outline in order to enable drill-through. In Version 11.1.2 that has not changed.
I am curious, though. I was told by my Oracle Planning instructors that EIS doesn't work with Planning. Is that no longer true?
Good Luck.
Tim
Similar Messages
-
How to create drill down report in sap query
how to create drill down report in sap query ,
hi,
The pdf below gives the steps to create drill down report.
http://www.sappoint.com/abap/eis.pdf
also check.
<a href="http://72.14.203.104/search?q=cache:k-SFYy_rjPIJ:www.hrexpertonline.com/archive/Volume%252003%2520(2">http://72.14.203.104/search?q=cache:k-SFYy_rjPIJ:www.hrexpertonline.com/archive/Volume%252003%2520(2</a>
regs,
jaga -
User can't open the drill down report in EIS
Hi Everybody,
Please help me from this problem.I am using EIS for DRILL DOWN Report generating.But few user can't able to do the report.
Please show the path how i can resolve the issue.
Regards,
999What kind of error message (if any) are they getting when they attempt to use the drill through?
-
Drill down reports using SVG component
I've created and dynamic report and an SVG chart following the examples of the tutorials. I was wondering if, and how, it was possible to create drill-down reports i.e report on colour, then clicking on that colour would reveal the types of car and so on. Does anyone have an example?
Thanks
DarrenDarren,
The query for an SVG chart requires 3 columns: Link, Label, and Value. You use the Link value to provide a link to another page. This link can also pass parameters to the next page.
If you set up a page for each "level" of your drill-down (e.g. color, type of car, etc), you can link from the higher-level page to the lower level page and pass the value that was clicked on in the chart.
Take a look in the HTML DB User's Guide for the section about "Using f?p Syntax to Link Pages": http://download-west.oracle.com/docs/cd/B14117_01/appdev.101/b10992/mvl_fund.htm#BEIJCIAG
You would use that syntax in the Link column of the query for your chart. Here is part of a query I used to drill down from one pie char to another (on page 3), passing the selected project to a variable called P3_PROJECT.
select 'f?p=&APP_ID.:3:&SESSION.::NO::P3_PROJECT:' || Project L,
Project, sum(Time)
from v_timesheet
where ...
Does that help? -
Drill-down reports Discoverer-style
Hi,
I'm looking for a way to implement drill-down reports in HTMLDB. All the references I found are showing details in a 2nd page for a certain row in the 1st page (e.g. ordered items for an order ID).
I'm not looking for this, but for drill-down "a la Discoverer", such as this example
http://www.oracle.com/technology/obe/obe_bi/discoverer/discoverer_1012/viewer/lesson1.htm#t7
One can select there multiple criterias for drill down.
Perhaps the solution would be a combination of tree reports with standard reports
http://www.oracle.com/technology/products/database/htmldb/howtos/howto_tree.html
but I don't see clearly how to do it, especially with a lot of drill-down options.
Do you have any suggestions?
Many thanks,
MariusI think there are two differen approaches:
- using the HTML report and doing some "dynamic" SQL at the block level
(That means you have to write the drill down - this is the logic that
is done by the tree - by yourself)
If you ever have done the work to do this in combination with a HTML DB report,
please post it here.
- using the a Tree Page with a special layout and view
Which one to use depends on how often you have to use this.
You can see an example under:
http://htmldb.oracle.com/pls/otn/f?p=41053:30
Here is a quick hack for the Tree Page variant, that may help you.
Using a Tree page uning a view and changing the tree template gives you some of
this functionality. If you have to do more of this kind use a stylesheet (.css) to
controll the layout.
1. Create a View that represents your Hierarchy (Structure)
For every level create a UNION secion.
Using UNION you can get the records from different sources also.
2. Create a Page with a Tree, SQL Query Based.
Use the View that you created before.
NAME .. are the levels of your dimensions
A1, A2 .. are your measures of your fact
ID, PID .. the hierarchy (structure) information
* Step 1 - creating a view:
create or replace view tree as
select id, pid, name, link, a1, a2
from (
-- Level 1 (Root Level)
select
to_char(ORDER_TIMESTAMP,'YYYY') id, null pid,
to_char(ORDER_TIMESTAMP,'YYYY') name, null link,
to_char(sum(ORDER_TOTAL),'999G9990D99') a1, to_char(count(*),'999G9990D99') a2
from DEMO_ORDERS
group by
to_char(ORDER_TIMESTAMP,'YYYY'),
to_char(ORDER_TIMESTAMP,'YYYY')
UNION
-- Level 2
select
to_char(ORDER_TIMESTAMP,'YYYYMM'), to_char(ORDER_TIMESTAMP,'YYYY'),
to_char(ORDER_TIMESTAMP,'Month'), null,
to_char(sum(ORDER_TOTAL),'999G9990D99'), to_char(count(*),'999G9990D99')
from DEMO_ORDERS
group by
to_char(ORDER_TIMESTAMP,'YYYYMM'), to_char(ORDER_TIMESTAMP,'YYYY'),
to_char(ORDER_TIMESTAMP,'Month')
UNION
-- Level 3 (Leaf Level)
select
to_char(ORDER_TIMESTAMP,'YYYYMMDD'), to_char(ORDER_TIMESTAMP,'YYYYMM'),
to_char(ORDER_TIMESTAMP,'DD. Day'), null,
to_char(sum(ORDER_TOTAL),'999G9990D99'), to_char(count(*),'999G9990D99')
from DEMO_ORDERS
group by
to_char(ORDER_TIMESTAMP,'YYYYMMDD'), to_char(ORDER_TIMESTAMP,'YYYYMM'),
to_char(ORDER_TIMESTAMP,'DD. Day')
)If you have a lot of this kind of reports you realy should think to
use discoverer. It does a lot of sql behind the szenes and also in the
presentation logic - this is what you have to do here by hand.
If you have more than two measures (A1,A2) you can do the
formatting in your view (realy ugly, but it is a workaround).
* Step 2: Create the tree page
Tree Query:
select
"ID" id, "PID" pid, "NAME" name,
null link, a1 a1, a2 a2
from TREEBefore Tree:
<table border="0" cellspacing="0" cellpadding="0">After Tree:
</table>Leaf Node:
<td style="background:#cece9c;
border-style:solid;
border-color:#f7f7e7 #cece9c #9c9b64 #cece9c;
border-width:1px 0px 1px 0px;" align="left">
</td>Leaf Node Last:
<td style="background:#cece9c;
border-style:solid;
border-color:#f7f7e7 #cece9c #9c9b64 #cece9c;
border-width:1px 0px 1px 0px;" align="left">
</td>Drill Up:
(up)Indent Vertical Line:
<td style="background:#cece9c;
border-style:solid;
border-color:#f7f7e7 #cece9c #9c9b64 #cece9c;
border-width:1px 0px 1px 0px;" > </td>Indent Vertical Line Last:
<td style="background:#cece9c;
border-style:solid;
border-color:#f7f7e7 #cece9c #9c9b64 #cece9c;
border-width:1px 0px 1px 0px;" > </td>Unexpanded Parent:
<td style="background:#cece9c;
border-style:solid;
border-color:#f7f7e7 #cece9c #9c9b64 #cece9c;
border-width:1px 0px 1px 0px;" >
< a href="#DRILL_DOWN#">
< img src="#IMAGE_PREFIX#rollup_plus_dgray.gif" width="16" height="22" border="0">
< /a>
</td>Unexpanded Parent Last:
<td style="background:#cece9c;
border-style:solid;
border-color:#f7f7e7 #cece9c #9c9b64 #cece9c;
border-width:1px 0px 1px 0px;" >
< a href="#DRILL_DOWN#">
< img src="#IMAGE_PREFIX#rollup_plus_dgray.gif" width="16" height="22" border="0">
< /a>
</td>Expanded Parent:
<td style="background:#cece9c;
border-style:solid;
border-color:#f7f7e7 #cece9c #9c9b64 #cece9c;
border-width:1px 0px 1px 0px;" >
< a href="#DRILL_DOWN#">
< img src="#IMAGE_PREFIX#rollup_minus_dgray.gif" width="16" height="22" border="0">
< /a>
</td>Expanded Parent Last:
<td style="background:#cece9c;
border-style:solid;
border-color:#f7f7e7 #cece9c #9c9b64 #cece9c;
border-width:1px 0px 1px 0px;" >
< a href="#DRILL_DOWN#">
< img src="#IMAGE_PREFIX#rollup_minus_dgray.gif" width="16" height="22" border="0">
< /a>
</td>Parent Node Template:
<tr>#INDENT#
<td style="color:#00319c; background:#cece9c;
border-style:solid;
border-color:#f7f7e7 #9c9b64 #9c9b64 #cece9c;
border-width:1px 1px 1px 0px;" colspan="#COLSPAN#"
valign="CENTER" class="tiny">#NAME#</td>
<td align="right" style="background:#f7f7e7;">#A1#</td>
<td align="right" style="background:#f7f7e7;">#A2#</td>
#DRILL_UP#
</tr>Node Text Template:
<tr>#INDENT#
<td style="color:#00319c; background:#cece9c;
border-style:solid;
border-color:#f7f7e7 #9c9b64 #9c9b64 #cece9c;
border-width:1px 1px 1px 0px;" colspan="#COLSPAN#"
valign="CENTER" class="tiny">#NAME#</td>
<td align="right" style="background:#f7f7e7;">#A1#</td>
<td align="right" style="background:#f7f7e7;">#A2#</td>
</tr>Name Link Anchor Tag:
< a href="#LINK#">#NAME#</a>Name Link Not Anchor Tag:
#NAME#* Extended Version of the View. Use this style of query if you have more than two measures:
create or replace view tree as
select id, pid, name, link,
'<table border="0" cellspacing="0" cellpadding="0" style="background:#f7f7e7;">'||
case when rownum = 1
then '<tr style="background:#cece9c;">'||
'<th style="border-style:solid; border-color:#cece9c #9c9b64 #9c9b64 #f7f7e7; border-width:0px 1px 1px 1px;">Amount</th>'||
'<th style="border-style:solid; border-color:#cece9c #9c9b64 #9c9b64 #f7f7e7; border-width:0px 1px 1px 1px;">Orders</th>'||
'<th style="border-style:solid; border-color:#cece9c #9c9b64 #9c9b64 #f7f7e7; border-width:0px 1px 1px 1px;">Measure</th>'||
'<th style="border-style:solid; border-color:#cece9c #9c9b64 #9c9b64 #f7f7e7; border-width:0px 1px 1px 1px;">Measure</th>'||
'</tr>'
end||
case
when lvl = 2 then '<tr style="color:#000088;">'
when lvl = 3 then '<tr style="color:#888888;">'
else '<tr>'
end ||
'<td align="right" width="80px" height="24px" style="background:#f7f7e7; border-style:solid; border-color:#9c9b64 #9c9b64 #f7f7e7 #f7f7e7; border-width:1px 1px 0px 0px;">'||
to_char(a1,'999G9990D99')||'</td>'||
'<td align="right" width="80px" height="24px" style="background:#f7f7e7; border-style:solid; border-color:#9c9b64 #9c9b64 #f7f7e7 #f7f7e7; border-width:1px 1px 0px 0px;">'||
to_char(a2,'999G9990D99')||'</td>'||
'<td align="right" width="80px" height="24px" style="background:#f7f7e7; border-style:solid; border-color:#9c9b64 #9c9b64 #f7f7e7 #f7f7e7; border-width:1px 1px 0px 0px;">'||
to_char(a3,'999G9990D99')||'</td>'||
'<td align="right" width="80px" height="24px" style="background:#f7f7e7; border-style:solid; border-color:#9c9b64 #9c9b64 #f7f7e7 #f7f7e7; border-width:1px 1px 0px 0px;">'||
to_char(a4,'999G9990D99')||'</td>'||
'</tr>'||
'</table>' a1, null a2
from (
-- Level 1 (Root Level)
select
1 lvl, to_char(ORDER_TIMESTAMP,'YYYY') id, null pid,
to_char(ORDER_TIMESTAMP,'YYYY') name, null link,
sum(ORDER_TOTAL) a1, count(*) a2,
count(*)*10 a3, count(*)*100 a4
from DEMO_ORDERS
group by
to_char(ORDER_TIMESTAMP,'YYYY'),
to_char(ORDER_TIMESTAMP,'YYYY')
UNION
-- Level 2
select
2, to_char(ORDER_TIMESTAMP,'YYYYMM'), to_char(ORDER_TIMESTAMP,'YYYY'),
to_char(ORDER_TIMESTAMP,'Month'), null,
sum(ORDER_TOTAL), count(*),
count(*)*10, count(*)*100
from DEMO_ORDERS
group by
to_char(ORDER_TIMESTAMP,'YYYYMM'), to_char(ORDER_TIMESTAMP,'YYYY'),
to_char(ORDER_TIMESTAMP,'Month')
UNION
-- Level 3 (Leaf Level)
select
3, to_char(ORDER_TIMESTAMP,'YYYYMMDD'), to_char(ORDER_TIMESTAMP,'YYYYMM'),
to_char(ORDER_TIMESTAMP,'DD. Day'), null,
sum(ORDER_TOTAL), count(*),
count(*)*10, count(*)*100
from DEMO_ORDERS
group by
to_char(ORDER_TIMESTAMP,'YYYYMMDD'), to_char(ORDER_TIMESTAMP,'YYYYMM'),
to_char(ORDER_TIMESTAMP,'DD. Day')
)If you use stylesheets the above query will be more suitable.
See also:
Expand/Collpase Lists
Hope that helps, Willi -
Hi friends,
I have built a query which is analytical, now the business wants it to be a drill down. How can i make this drill down report? Can any please help me.
Thanks in advance.
Regards
AnanthHi Ananth,
Drill down in analytical reporting means being able to see further details for a given record.
So if you want the users to be able to drill down further and see more details of whatever is being reported in the initial screen you could add the required characteristic for drill down in the "Free characteristics" section of your queries. These are not displayed in the initial format of the report but the user has the facility to add/exclude them in the report format.
Moreover if you would like them to drill down from one report to another, you could setup Report to Report interfaces (transaction RSBBS).
Hope it helps.
Regards
Anurag -
Cannot get the drill down report working. Have created 2 pages first one with master table and second page containing detail information. Further i have created an item to hold the value on page two. Now when i go to the Query definition to give a condition i cannot see any column in the Select list.
Any help would be appreciated..
ThanksCould you post the item name you are using and also include the query you are using. In the most of the cases the item name you are using in the query doesn't match with the real item name.
Denes Kubicek -
Problem in accessing the drill down report via RRI
Hi guru's,
ThanX in advance for all the stuff you are providing.
I have a problem with the drill down report.I have two reports Q1 and Q2 where Iam navigating to Q2 from Q1 via RRI.But when I try to drill down to the Report Q2 It gets into an unending state of query execution(to say shortly it gets struck).
This report was working fine earlier.But very Recently I encountered this problem.I started debugging the query at RSRT.For the report Q1 just goes fine but when I drill down to Q2 it gets struck.This is the part of code where the report end up in an unending state.Infact it gets struck exactly while calling the method...
"CALL METHOD g_sx_buffer-r_request->read_data"
Fetch the data, using the wait command only with the second parse
IF g_s_session_prptys-use_wait = rs_c_false
OR i_mode = rrx1_c_grid_get_mode-wait_fetch.
Is data available
CALL METHOD g_sx_buffer-r_request->read_data
EXCEPTIONS
x_message = 8
no_processing = 1.
CASE sy-subrc.
WHEN 1.
Necessary for drill to level
raise no_processing.
WHEN 8.
RAISE x_message.
Can Some one help me out to know what happens at this part of code that is causing the error.
ThanX A Lot,
Regards,
SukumarIts better you raise an OSS message on this problem.
-
*****EIS : Drill through Report Error while excel data retre
Dear All,
could you please help me in the below error . When i tried to get the drill through reports in excel add-in ,
i am getting the below error . When i had look into EIS log, its generating dynamic query for this drill through reports .
[NCR][ODBC Teradata][Teradata Database] Syntax error- expected something between the word '<<Databasename>>' and the word 'ai'.Unable to get catalog string.
Thanks in advance .
MYou are saying the dynamic query was generated, did you copy the query and tried to execute it in the database client. Check the SQl for any errors and also in the did you see any SQL errors?
-
Mr. Kubicek's "Report on Report" is excellent if anyone is looking for a drill down report, but if Denes or someone could help me with one last piece, I would be indebted.
I have aggregated values for the columns I wanted to total for each employee in Report 1: "Total # of Sales" and "Total $ Sales". These totals become links for the drill down in Report 2. Clicking on the aggregate total of "Total $ Sales" in Report 1 will show all related individual sales records for that employee in Report 2.
My problem is in sorting Report 1 by the aggregate columns, "Total # of Employees" and "Total $ Sales". The columns do not sort correctly from high to low etc. I have copied Denes report code exactly. What do I add or change to sort these two aggregate columns from high to low? Thank you all.
MikeThanks so much, Dimitri. I don't have the link, but here is my query (does this give you enough to diagnose?). The columns etc differ from my original post (I was trying to keep it simple in my example...).
SELECT "l_t_num","l_truck_name",
'<span style="font-weight:bold;">'
|| '<a href="f?p=&APP_ID.:113:&SESSION.::NO::'
|| 'P113_TRUCKNO,P113_TRUCKNO_COUNT,P113_TRUCKNO_PAID:'
|| l_t_num"
|| ','
|| "l_t_num"
|| ','
|| NULL
|| '">'
|| COUNT (*)
|| '</a></span>' "l_file_number",
'<span style="font-weight:bold;">'
|| '<a href="f?p=&APP_ID.:113:&SESSION.::NO::'
|| 'P113_TRUCKNO,P113_TRUCKNO_COUNT,P113_TRUCKNO_PAID:'
|| "l_t_num"
|| ','
|| NULL
|| ','
|| "l_t_num"
|| '">'
|| TO_CHAR (SUM ("l_due_to_truck"), 'FML999G999G999G999G990')
|| '</a></span>' sum_truck_cost
FROM "LOADS_HISTORY_NC"
where instr(':' || :P113_YEAR || ':',SUBSTR("l_file_number",3,2)) > 0
AND instr(':' || :P113_MONTH || ':', SUBSTR("l_file_number",5,2)) > 0
GROUP BY "l_t_num", "l_truck_name"
The two results columns are 'sum_truck_cost' and a count of "l_file_number" for each carrier ("l_truck_name"). These two columns in my report are aggregate values and are links. Clicking on either the 'sum_truck_cost' value or count value opens a second report with the individual records. I have enabled the sorting option for these columns in Report Attributes, but manually sorting the columns does not put the records in correct asc or desc order based on either total.
This is almost exactly as Denes has on his site, so he has a working example. I have only inserted my own columns into his code etc. Thank you so much Dimitri!!
Mike -
Based on How-to Document "Build drill down report" I have set two page items in a column link on page 1: P2_IDOWNER, P2_IDTABLE
On target page (page 2), I have inserted item values in the title region using syntax: &P2_IDOWNER. , &P2_IDTABLE. (no problem)
However, the SQL query in page 2 does not work (zero files returned) using syntax :P2_IDOWNER, :P2_IDTABLE
Region Source
select *
from loadtable
where idowner = :P2_IDOWNER
and idtable = :P2_IDTABLE
any help with syntax on "Region Source"?
Note: field format for both (idowner and idtable) is CHARthanks Sergio but, that's not the cause of the problem.
I also tried to execute the query writing items in quotation marks because of format fields:
select *
from loadtable
where idowner = ':P2_IDOWNER'
and idtable = ':P2_IDTABLE'
... but it didn´t work
Think I need an alternative way to write the "Region Source" (maybe PL/SQL?) -
I m using this code in repeating fame
Srw.run_report('module=JV.rep destype=Screen paramform=No
vmdate='||:vdate1 ||' vm_no='||:vno1||' vtype='||:vtype1);
EXCEPTION
when srw.run_report_failure then
srw.message(30, 'Error in reports.');
raise srw.program_abort; showing me the error
SRW.RUN_Report can not be invoked with batch=no
then I added
Srw.run_report('module=JV.rep destype=Screen paramform=No batch=yes
vmdate='||:vdate1 ||' vm_no='||:vno1||' vtype='||:vtype1);
EXCEPTION
when srw.run_report_failure then
srw.message(30, 'Error in reports.');
raise srw.program_abort; again showing user define error
30, 'Error in reports.
rep-1419 r_g_vdate1 formattriggers PL/SQL Program Aborted.
if I write this code in button it is working , but i dont want to show button on my report, because when we print this report button also print.
how can I define above code in repeating frame?if I write this code in button it is working , but i dont want to show button on my report, because when we print this report button also print.And what do you expect to happen? At what time should the drill down-reports be printed? And how should they be shown?
If you want to include the rsult in your main-report, you should create an additional query in your "main"-report. -
Delete frozen data in drill down report
hi guys,
does any one know how to delete the frozen data in a drill down report?
thanksHi HariKan,
Based on my understanding, you create a drilldown report, when you click the plus button to expand the subreport, some rows doesn’t have data. You want to only display those rows which contain data.
In your scenario, you should specify the query in where clause to eliminate blank data rows within the subreport. Then use this report as subreport on main report, then create a toggle button. Please refer to the steps:
1. Go to the subreport, specify the query like below:
2. Back to the drill down report, create a subreport control and use the changed report as subreport, then specify the Visibility option like below and preview the report.
If you have any question, please feel free to ask.
Best regards,
Qiuyun Yu
Qiuyun Yu
TechNet Community Support -
New to Application Express - Drill down report question
Good evening group. I'm new to this Application and DB but can't find quite the correct answer.
QUESTION 1 - I have found and successfully used the "Drill down report example". However, I am only able to do it from a brand new application. That doesn't seem quite right though.
QUESTION 2 - I dropped a column while cleaning/correcting my data but I can't seem to get rid of it from a couple of simple HTML reports. I can't find out how to remove the column (granted I am looking for the gui tool). I would use the "query source" under the "report attributes" tab but the lower section (I believe they are the joins) have me perplexed.
Any thoughts, help would be greatly appreciated.
-DaveHi Dave,
>> QUESTION 1 - I have found and successfully used the "Drill down report example". However, I am only able to do it from a brand new application. That doesn't seem quite right though.
I'm not being a smart alec, but I don't see the question in this.
>> QUESTION 2 - I dropped a column while cleaning/correcting my data but I can't seem to get rid of it from a couple of simple HTML reports. I can't find out how to remove the column (granted I am looking for the gui tool). I would use the "query source" under the "report attributes" tab but the lower section (I believe they are the joins) have me perplexed.
For now, don't worry about the WHERE clause of the SQL query unless the column you dropped is in the WHERE clause as well. Beginning with SELECT and up until FROM in the query statement, if you see your column, remove it from there.
If you post your query and the column to be removed, we can help further.
Joel -
Hi,
How to add several currency value (USD, LKR) in drill down report - in Due Date Analysis for open Item report (S_ALR_87012168)
Thanx.Hi,
How to add several currency value (USD, LKR) in drill down report - in Due Date Analysis for open Item report (S_ALR_87012168)
Thanx.
Maybe you are looking for
-
New Pro what to do with Powerbook
First- How do you know which version of the powerbook you have? I think mine is Ti, but not 100% sure. Second- I got a new PRO- wow it's nice- it took awhile before I could muster up giving up the powerbook. So I think i'm going to gulp sell the old
-
Hi, guys. I am a fresh learner in Flex. Now. I am trying to learn how to use chart. I found all of the legend areas are displaying to things; Color and related category. I want to know that is it possible that I also display category values in the l
-
HT1338 why I do not have Bonjour under bookmark in my safari on Macbook pro?
Hi, I am using a Macbook Pro, I wonder why I do not have Bonjour in the bookmark tab in safari? I need it to install a Pioneer wireless speaker with AirPlay.
-
my wireless is so slow i have tried everything and called apple and nothing has worked is there any reason for this or anything i can do also i use limewire do download music and it all downloads fine but when i go to listen to music it is gone help!
-
Is it possible to get statistics from WebCenter spaces ex most used group space, user tracking etc Regards Mustaque