<ROOT>
 <APPS_INITIALIZE_DATA>
  <USER_NAME>ENGINATICS</USER_NAME>
  <RESPONSIBILITY_KEY>SYSTEM_ADMINISTRATOR</RESPONSIBILITY_KEY>
  <APPLICATION_SHORT_NAME>SYSADMIN</APPLICATION_SHORT_NAME>
 </APPS_INITIALIZE_DATA>
<REPORTS>
<!-- loader xml for Enginatics Blitz Report: DIS Workbook Export Script -->
 <REPORTS_ROW>
  <GUID>E51E8E890324184CE0536AFB09059FED</GUID><ENABLED>Y</ENABLED>
  <SQL_TEXT>select
&apos;if not exist workbook_&apos;||ed.doc_id||&apos;.eex (start &apos;||:executable_path||&apos; /connect &apos;||:eul||&apos;/&apos;||:eul_password||&apos;@&apos;||:db_service_name||&apos; /export &quot;workbook_&apos;||ed.doc_id||&apos;.eex&quot; /workbook &quot;&apos;||xxen_util.dis_user_name(xxen_util.dis_user(ed.doc_eu_id,:eul),&apos;N&apos;)||&apos;.&apos;||ed.doc_name||&apos;&quot; /xmlworkbook) else (echo workbook_&apos;||ed.doc_id||&apos;.eex exists)&apos; text,
ed.doc_name workbook,
ed.doc_id workbook_id,
xxen_util.dis_user_name(ed.doc_eu_id,:eul) owner,
&apos;workbook_&apos;||ed.doc_id||&apos;.eex&apos; file_name
from
&amp;eul.eul5_documents ed
where
1=1 and
(
1=2 &amp;ignore_access_history or
(ed.doc_name, xxen_util.dis_user_name(ed.doc_eu_id,:eul,&apos;N&apos;)) in (select eqs.qs_doc_name, upper(eqs.qs_doc_owner) qs_doc_owner from &amp;eul.eul5_qpp_stats eqs where 2=2 &amp;or_owner_restriction)
)
order by
ed.doc_id</SQL_TEXT>
  <VERSION_COMMENTS>Allow export of workbooks without EUL access history: new parameters &apos;Ignore Access History&apos; and &apos;Workbook Id&apos;, parameter &apos;Workbook&apos; now filters eul5_documents instead of eul5_qpp_stats, new output column workbook_id. Removed the obsolete ping delay from the generated export command</VERSION_COMMENTS>
  <REPORT_TRANSLATIONS>
   <REPORT_TRANSLATIONS_ROW>
    <LANGUAGE>US</LANGUAGE>
    <REPORT_NAME>DIS Workbook Export Script</REPORT_NAME>
    <DESCRIPTION>https://youtu.be/17_Au_11IBE
Use this report to migrate Discoverer workbooks to Blitz Report.
The migration process is described in the following link: https://www.enginatics.com/blog/discoverer-replacement-with-blitz-report/

1. Run this report &apos;DIS Workbook Export Script&apos; to generate a list of commands to export xmls for all recently used Discoverer workbooks.
2. Create a new folder on a windows machine having the Discoverer Admin executable dis51adm.exe installed (contact Enginatics if you need help with the installation).
3. Open a Command Prompt window, cd to the new folder, and execute (copy and paste) the commands generated in step 1. This will start individual processes to export the workbooks as .eex files. Depending on your client capacity, you can run 100-200 export processes at the same time. In case of errors, delete all zero size .eex files and rerun the script.
4. Zip together all generated (non-zero size) workbook_*.eex files. Do not include the generated *.log files. Note that the .zip needs to be created with older Windows10 compression methods, as the latest Windows11 method cannot be processed by the Oracle 19c database yet.
5. If you have more than one EUL, set the profile option &apos;Blitz Report Discoverer Default EUL&apos; to the end user layer for which you run the migration
6. Navigate to Setup&gt;Tools&gt;Import&gt;XML Upload and upload the .zip file generated in step 4. You will see a message with the count of uploaded xml files.
7. Run concurrent program &apos;Blitz Report Discoverer Import&apos; from the System Administrator responsibility, and specify a report name prefix to easily distinguish the migrated reports.
8. Verify the migration result by running reports:
&apos;Blitz Report Parameter Uniqueness Validation&apos; and correct the nonunique parameter names.
&apos;Blitz Report LOV SQL Validation&apos; and correct errors plus change slow &apos;distinct&apos; style ones to fast SQLs
&apos;Blitz Report SQL Validation&apos; and correct problems
&apos;Blitz Report Parameter Bind Variable Validation&apos;
&apos;DIS Migration identify missing EulConditions&apos;
&apos;Blitz Report Parameter Table Alias Validation&apos;
&apos;Blitz Reports&apos; for Discoverer check for column &apos;required_parameters&apos;
&apos;Blitz Report Parameter Default Values&apos; for discoverer check for default value having partition
&apos;Blitz Report Templates&apos; and search for Subtotals: Y in the description and train the users to switch compact pivot to tabular format


Workbooks without EUL usage statistics are not listed by default. Set &apos;Ignore Access History&apos; to Yes to export those as well, optionally restricted by &apos;Workbook&apos; or &apos;Workbook Id&apos;.
&apos;Blitz Report Discoverer Import&apos; converts the workbooks selected in the &apos;DIS Workbook Conversion Selection&apos; upload regardless of access history.


In case you need to completely re-run the Discoverer import, for example with a different cut-off date parameter, you can use the following script to purge the previously imported data:

declare
l_eul varchar2(30):=&apos;eul_us&apos;;
begin
  --Delete staging tables
  delete xxen_discoverer_workbook_xmls xdwx where xdwx.eul=l_eul;
  delete from xxen_discoverer_fnd_user xdfu where xdfu.eul=l_eul;
  delete from xxen_discoverer_pivot_fields xdpf where xdpf.eul=l_eul;
  delete from xxen_discoverer_sheets xds where xds.eul=l_eul;
  delete from xxen_discoverer_workbooks xdw where xdw.eul=l_eul;
  --Delete all reports from category &apos;Discoverer&apos; and their related LOVs
  for c in (select xrca.report_id from xxen_report_categories_v xrcv, xxen_report_category_assigns xrca where xrcv.category=&apos;Discoverer&apos; and xrcv.category_id=xrca.category_id) loop
    xxen_api.delete_report(c.report_id,&apos;Y&apos;);
  end loop;
  for c in (select xrplv.lov_id from xxen_report_parameter_lovs_v xrplv where xrplv.description=upper(xrplv.description) and xrplv.lov_id not in (select xrp.lov_id from xxen_report_parameters xrp where xrp.parameter_type=&apos;LOV&apos; and xrp.lov_id is not null)) loop
    xxen_api.delete_lov(c.lov_id);
  end loop;
  commit;
end;</DESCRIPTION>
   </REPORT_TRANSLATIONS_ROW>
  </REPORT_TRANSLATIONS>
  <CATEGORY_ASSIGNMENTS>
   <CATEGORY_ASSIGNMENTS_ROW>
    <CATEGORY>Enginatics</CATEGORY>
   </CATEGORY_ASSIGNMENTS_ROW>
  </CATEGORY_ASSIGNMENTS>
  <ANCHORS>
   <ANCHORS_ROW>
    <ANCHOR>&amp;eul</ANCHOR>
   </ANCHORS_ROW>
   <ANCHORS_ROW>
    <ANCHOR>&amp;ignore_access_history</ANCHOR>
   </ANCHORS_ROW>
   <ANCHORS_ROW>
    <ANCHOR>&amp;or_owner_restriction</ANCHOR>
   </ANCHORS_ROW>
   <ANCHORS_ROW>
    <ANCHOR>1=1</ANCHOR>
   </ANCHORS_ROW>
   <ANCHORS_ROW>
    <ANCHOR>2=2</ANCHOR>
   </ANCHORS_ROW>
   <ANCHORS_ROW>
    <ANCHOR>:db_service_name</ANCHOR>
   </ANCHORS_ROW>
   <ANCHORS_ROW>
    <ANCHOR>:eul</ANCHOR>
   </ANCHORS_ROW>
   <ANCHORS_ROW>
    <ANCHOR>:eul_password</ANCHOR>
   </ANCHORS_ROW>
   <ANCHORS_ROW>
    <ANCHOR>:executable_path</ANCHOR>
   </ANCHORS_ROW>
  </ANCHORS>
  <PARAMETERS>
   <PARAMETERS_ROW>
    <SORT_ORDER>1</SORT_ORDER>
    <DISPLAY_SEQUENCE>10</DISPLAY_SEQUENCE>
    <ANCHOR>2=2</ANCHOR>
    <SQL_TEXT>eqs.qs_created_date&gt;=:date_from</SQL_TEXT>
    <PARAMETER_TYPE_DSP>Date</PARAMETER_TYPE_DSP>
    <DEFAULT_VALUE>sysdate-nvl(fnd_profile.value(&apos;XXEN_REPORT_DISCOVERER_IMPORT_LOV_ACCESS_HISTORY_DAYS&apos;),600)</DEFAULT_VALUE>
    <PARAMETER_TRANSLATIONS>
     <PARAMETER_TRANSLATIONS_ROW>
      <LANGUAGE>US</LANGUAGE>
      <PARAMETER_NAME>Accessed After</PARAMETER_NAME>
     </PARAMETER_TRANSLATIONS_ROW>
    </PARAMETER_TRANSLATIONS>
   </PARAMETERS_ROW>
   <PARAMETERS_ROW>
    <SORT_ORDER>2</SORT_ORDER>
    <DISPLAY_SEQUENCE>15</DISPLAY_SEQUENCE>
    <ANCHOR>&amp;ignore_access_history</ANCHOR>
    <SQL_TEXT> or 0=0</SQL_TEXT>
    <PARAMETER_TYPE_DSP>LOV</PARAMETER_TYPE_DSP>
    <LOV_NAME>Yes</LOV_NAME>
    <LOV_GUID>8E2FF36EDEA679D2E0530100007F1FF2</LOV_GUID>
    <VALIDATE_FROM_LIST_DSP>Y</VALIDATE_FROM_LIST_DSP>
    <LOV_QUERY_DSP>select &apos;Y&apos; id, xxen_util.meaning(&apos;Y&apos;,&apos;YES_NO&apos;,0) value, null description from dual</LOV_QUERY_DSP>
    <PARAMETER_TRANSLATIONS>
     <PARAMETER_TRANSLATIONS_ROW>
      <LANGUAGE>US</LANGUAGE>
      <PARAMETER_NAME>Ignore Access History</PARAMETER_NAME>
     </PARAMETER_TRANSLATIONS_ROW>
    </PARAMETER_TRANSLATIONS>
   </PARAMETERS_ROW>
   <PARAMETERS_ROW>
    <SORT_ORDER>3</SORT_ORDER>
    <DISPLAY_SEQUENCE>20</DISPLAY_SEQUENCE>
    <ANCHOR>&amp;or_owner_restriction</ANCHOR>
    <SQL_TEXT> or upper(eqs.qs_doc_owner)=:doc_owner</SQL_TEXT>
    <PARAMETER_TYPE_DSP>LOV</PARAMETER_TYPE_DSP>
    <LOV_NAME>FND User Name</LOV_NAME>
    <LOV_GUID>8E2FF36EDE8479D2E0530100007F1FF2</LOV_GUID>
    <VALIDATE_FROM_LIST_DSP>Y</VALIDATE_FROM_LIST_DSP>
    <FILTER_BEFORE_DISPLAY_DSP>Y</FILTER_BEFORE_DISPLAY_DSP>
    <LOV_QUERY_DSP>select
fu.user_name value,
trim(coalesce(
trim(papf.first_name||&apos; &apos;||papf.last_name),
fu.description,
fu.email_address,
papf.email_address
)||fu.inactive) description
from
(select case when sysdate between fu.start_date and nvl(fu.end_date,sysdate) then null else &apos; (inactive)&apos; end inactive, fu.* from fnd_user fu) fu,
(select papf.* from per_all_people_f papf where sysdate between papf.effective_start_date and papf.effective_end_date) papf,
(
select distinct
furg.user_id,
count(*) over (partition by furg.user_id) resp_count,
max(fr.responsibility_key) over (partition by furg.user_id) max_responsibility_key
from
fnd_responsibility fr,
fnd_user_resp_groups_direct furg
where
fr.responsibility_id=furg.responsibility_id and
fr.application_id=furg.responsibility_application_id
) furg
where
fu.employee_id=papf.person_id(+) and
fu.user_id=furg.user_id(+) and
not (furg.resp_count=1 and furg.max_responsibility_key=&apos;IRC_EXT_CANDIDATE&apos;)
order by
fu.inactive desc,
fu.user_name</LOV_QUERY_DSP>
    <PARAMETER_TRANSLATIONS>
     <PARAMETER_TRANSLATIONS_ROW>
      <LANGUAGE>US</LANGUAGE>
      <PARAMETER_NAME>Workbook Owner</PARAMETER_NAME>
     </PARAMETER_TRANSLATIONS_ROW>
    </PARAMETER_TRANSLATIONS>
   </PARAMETERS_ROW>
   <PARAMETERS_ROW>
    <SORT_ORDER>4</SORT_ORDER>
    <DISPLAY_SEQUENCE>30</DISPLAY_SEQUENCE>
    <ANCHOR>1=1</ANCHOR>
    <SQL_TEXT>ed.doc_name=:workbook</SQL_TEXT>
    <PARAMETER_TYPE_DSP>LOV</PARAMETER_TYPE_DSP>
    <LOV_NAME>DIS Workbook</LOV_NAME>
    <LOV_GUID>8E2FF36EDF2079D2E0530100007F1FF2</LOV_GUID>
    <VALIDATE_FROM_LIST_DSP>Y</VALIDATE_FROM_LIST_DSP>
    <LOV_QUERY_DSP>select
ed.doc_name value,
ed.doc_description||&apos; (&apos;||ed.doc_developer_key||&apos;)&apos; description
from
eul_us.eul5_documents ed
order by
ed.doc_name</LOV_QUERY_DSP>
    <PARAMETER_TRANSLATIONS>
     <PARAMETER_TRANSLATIONS_ROW>
      <LANGUAGE>US</LANGUAGE>
      <PARAMETER_NAME>Workbook</PARAMETER_NAME>
     </PARAMETER_TRANSLATIONS_ROW>
    </PARAMETER_TRANSLATIONS>
   </PARAMETERS_ROW>
   <PARAMETERS_ROW>
    <SORT_ORDER>5</SORT_ORDER>
    <DISPLAY_SEQUENCE>35</DISPLAY_SEQUENCE>
    <ANCHOR>1=1</ANCHOR>
    <SQL_TEXT>ed.doc_id=:workbook_id</SQL_TEXT>
    <PARAMETER_TYPE_DSP>Number</PARAMETER_TYPE_DSP>
    <PARAMETER_TRANSLATIONS>
     <PARAMETER_TRANSLATIONS_ROW>
      <LANGUAGE>US</LANGUAGE>
      <PARAMETER_NAME>Workbook Id</PARAMETER_NAME>
     </PARAMETER_TRANSLATIONS_ROW>
    </PARAMETER_TRANSLATIONS>
   </PARAMETERS_ROW>
   <PARAMETERS_ROW>
    <SORT_ORDER>6</SORT_ORDER>
    <DISPLAY_SEQUENCE>40</DISPLAY_SEQUENCE>
    <ANCHOR>&amp;eul</ANCHOR>
    <SQL_TEXT>&lt;parameter_value&gt;</SQL_TEXT>
    <PARAMETER_TYPE_DSP>LOV</PARAMETER_TYPE_DSP>
    <LOV_NAME>DIS End User Layer</LOV_NAME>
    <LOV_GUID>8E2FF36EDF3879D2E0530100007F1FF2</LOV_GUID>
    <VALIDATE_FROM_LIST_DSP>Y</VALIDATE_FROM_LIST_DSP>
    <LOV_QUERY_DSP>select
lower(do.owner) value,
do.created description
from
dba_objects do
where
do.object_type=&apos;TABLE&apos; and
do.object_name=&apos;EUL5_VERSIONS&apos;
order by
do.created desc</LOV_QUERY_DSP>
    <DEFAULT_VALUE>xxen_util.dis_default_eul</DEFAULT_VALUE>
    <PARAMETER_TRANSLATIONS>
     <PARAMETER_TRANSLATIONS_ROW>
      <LANGUAGE>US</LANGUAGE>
      <PARAMETER_NAME>End User Layer</PARAMETER_NAME>
     </PARAMETER_TRANSLATIONS_ROW>
    </PARAMETER_TRANSLATIONS>
   </PARAMETERS_ROW>
   <PARAMETERS_ROW>
    <SORT_ORDER>7</SORT_ORDER>
    <ANCHOR>:eul</ANCHOR>
    <PARAMETER_TRANSLATIONS>
     <PARAMETER_TRANSLATIONS_ROW>
      <LANGUAGE>US</LANGUAGE>
      <PARAMETER_NAME>End User Layer</PARAMETER_NAME>
     </PARAMETER_TRANSLATIONS_ROW>
    </PARAMETER_TRANSLATIONS>
   </PARAMETERS_ROW>
   <PARAMETERS_ROW>
    <SORT_ORDER>8</SORT_ORDER>
    <DISPLAY_SEQUENCE>50</DISPLAY_SEQUENCE>
    <ANCHOR>:eul_password</ANCHOR>
    <PARAMETER_TYPE_DSP>Char</PARAMETER_TYPE_DSP>
    <DEFAULT_VALUE>:$flex$.End_User_Layer</DEFAULT_VALUE>
    <PARAMETER_TRANSLATIONS>
     <PARAMETER_TRANSLATIONS_ROW>
      <LANGUAGE>US</LANGUAGE>
      <PARAMETER_NAME>End User Layer Password</PARAMETER_NAME>
     </PARAMETER_TRANSLATIONS_ROW>
    </PARAMETER_TRANSLATIONS>
   </PARAMETERS_ROW>
   <PARAMETERS_ROW>
    <SORT_ORDER>9</SORT_ORDER>
    <DISPLAY_SEQUENCE>60</DISPLAY_SEQUENCE>
    <ANCHOR>:executable_path</ANCHOR>
    <PARAMETER_TYPE_DSP>Char</PARAMETER_TYPE_DSP>
    <DEFAULT_VALUE>C:\Oracle\product\11.1.1\as_1\bin\dis51adm.exe</DEFAULT_VALUE>
    <PARAMETER_TRANSLATIONS>
     <PARAMETER_TRANSLATIONS_ROW>
      <LANGUAGE>US</LANGUAGE>
      <PARAMETER_NAME>Executable Path</PARAMETER_NAME>
     </PARAMETER_TRANSLATIONS_ROW>
    </PARAMETER_TRANSLATIONS>
   </PARAMETERS_ROW>
   <PARAMETERS_ROW>
    <SORT_ORDER>10</SORT_ORDER>
    <DISPLAY_SEQUENCE>70</DISPLAY_SEQUENCE>
    <ANCHOR>:db_service_name</ANCHOR>
    <PARAMETER_TYPE_DSP>Char</PARAMETER_TYPE_DSP>
    <DEFAULT_VALUE>r1213a</DEFAULT_VALUE>
    <PARAMETER_TRANSLATIONS>
     <PARAMETER_TRANSLATIONS_ROW>
      <LANGUAGE>US</LANGUAGE>
      <PARAMETER_NAME>DB Service Name</PARAMETER_NAME>
     </PARAMETER_TRANSLATIONS_ROW>
    </PARAMETER_TRANSLATIONS>
   </PARAMETERS_ROW>
   <PARAMETERS_ROW>
    <SORT_ORDER>11</SORT_ORDER>
    <DISPLAY_SEQUENCE>80</DISPLAY_SEQUENCE>
    <ANCHOR>1=1</ANCHOR>
    <SQL_TEXT>ed.doc_id not in (select xdwx.doc_id from xxen_discoverer_workbook_xmls xdwx where xdwx.eul=:eul)</SQL_TEXT>
    <PARAMETER_TYPE_DSP>LOV</PARAMETER_TYPE_DSP>
    <LOV_NAME>Yes</LOV_NAME>
    <LOV_GUID>8E2FF36EDEA679D2E0530100007F1FF2</LOV_GUID>
    <VALIDATE_FROM_LIST_DSP>Y</VALIDATE_FROM_LIST_DSP>
    <LOV_QUERY_DSP>select &apos;Y&apos; id, xxen_util.meaning(&apos;Y&apos;,&apos;YES_NO&apos;,0) value, null description from dual</LOV_QUERY_DSP>
    <DEFAULT_VALUE>Y</DEFAULT_VALUE>
    <PARAMETER_TRANSLATIONS>
     <PARAMETER_TRANSLATIONS_ROW>
      <LANGUAGE>US</LANGUAGE>
      <PARAMETER_NAME>Not yet imported only</PARAMETER_NAME>
     </PARAMETER_TRANSLATIONS_ROW>
    </PARAMETER_TRANSLATIONS>
   </PARAMETERS_ROW>
  </PARAMETERS>
  <TEMPLATES>
  </TEMPLATES>
  <DEFAULT_TEMPLATES>
  </DEFAULT_TEMPLATES>
  <UPLOAD_COLUMNS>
  </UPLOAD_COLUMNS>
  <UPLOAD_PARAMETERS>
  </UPLOAD_PARAMETERS>
  <UPLOAD_SQLS>
  </UPLOAD_SQLS>
 </REPORTS_ROW>
</REPORTS>
</ROOT>
