Thursday 30 May 2013

HCM Domain Topology View

In order to have the idea of HCM Domain and it's different components you can log on to to HCM Domain. To do that you need to have the role Administrators assigned to your user id. I have explained it @Fusion Apps Role to access Weblogic Admin Console

After getting the role assigned you access the HCM domain. You can find the details @ How to get server and port details for OnPremise installation.

You get the server host name, admin server port number, e.g. http://yourdomain.com:9401/em. If you log in you will see the Enterprise Manager 11g Fusion Applications Control as shown below
As can be seen on the left hand side you will have Farm Components, in the middle you have Fusion Applications and Fusion Middleware component status and on the right you have Topology view.







Farm Components and Weblogic Domains. As you can see there is one Admin Server and Multiple Clusters. Each Cluster is having Managed Servers. And one or many applications are deployed on these managed servers.









Fusion Applications and Fusion Middleware Status












HCM Domain Topology View












This shows the list of ear files present under HCM Product Family. For example HcmBenifitsApp, 
HcmPayrollApp, HcmCoreExternalApp etc are nothing but .ear files. Each of these .ear files will have multiple .war files and they are listed as web modules. Now if you click on any ear file , e.g HcmPayrollApp then it will highlight the products(Web Modules) associated with it.



As I clicked on HcmPayrollApp it highlighted as shown. You can see

  • Fast Formula
  • Global Payroll
  • HCM Country and Vertical Extensions
are part of it. It also specifies which managed server this application has been deployed on.

This is the list of products under all HCM Applications (.ear file).










In the next post will show how to see the different HCM Composite services and how to test them...

Cheers.......................







Wednesday 29 May 2013

Fusion On Premise - How to know what are the domains that have been created during installation?

According to Fusion Apps Pillar concept every product family is installed on a separate domain. This does not mean that it will not deploy other domains. As different product families use common functionality there will always be a common domain deployed with every product family. Also the products are interlinked so one product family may be using some functionality of others.

Now the question is 'How to know what are all the domains that have been created during installation?'
You can get the domain names and their admin server details from unix.
There is a file called domain-registry.xml under $APPL_TOP. Here is the link how to set all tops Fusion Apps Environment File Location

For example you have provisioned only Fusion HCM then your domain-registry.xml file will have the following entries
<?xml version="1.0" encoding="UTF-8"?>
<domain-registry xmlns="http://xmlns.oracle.com/weblogic/domain-registry">
  <domain location="/u01/app/oracle/fusion/instance/domains/<your domain>/FinancialDomain"/>
  <domain location="/u01/app/oracle/fusion/instance/domains/<your domain>/BIDomain"/>
  <domain location="/u01/app/oracle/fusion/instance/domains/<your domain>/CommonDomain"/>
  <domain location="/u01/app/oracle/fusion/instance/domains/<your domain>/HCMDomain"/>
  <domain location="/u01/app/oracle/fusion/instance/domains/<your domain>/CRMDomain"/>
</domain-registry>

Where <your domain> is actual domain which you created.
As you can see that apart from HCMDomain you have 

  • FinancialDomain
  • BIDomain
  • CommonDomain
  • CRMDomain
Now the next question will be how to know on which server and port these domains have been registered. 
You get that also from the unix
in Unix you do 
cd $APPL_TOP
cd ..
and then do ls -ltr. You will see a file called deployment_info.xml. It will have all the domains and their admin server and server port details. You can use them and directly log on to those to see what are all the applications that have been deployed.

Here is the sample content of that file


<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<deployed-environment contact="" created="4/6/12" id="oracle" mod-id="" modified="4/6/12" name="oracle" type="Production">
<offering description="Financials" group="" id="XLE_FINANCIALS_JUR" mastered="FSCM" name="Financials" provisioned="false"/>
<offering description="Financial Control and Reporting" group="" id="XLE_FIN_CONTROL_JUR" mastered="FSCM" name="Financial Control and Reporting" provisioned="false"/>
<offering description="Enterprise Contracts" group="" id="OKC_CONTRACTS" mastered="CRM" name="Enterprise Contracts" provisioned="false"/>
<offering description="Customer Data Management" group="" id="ZCH_CDM" mastered="CRM" name="Customer Data Management" provisioned="false"/>
<offering description="Marketing" group="" id="MKT_MARKETING" mastered="CRM" name="Marketing" provisioned="false"/>
<offering description="Sales" group="" id="ZBS_SALES" mastered="CRM" name="Sales" provisioned="false"/>
<offering description="Procurement" group="" id="PO_PROCUREMENT" mastered="FSCM" name="Procurement" provisioned="false"/>
<offering description="Projects" group="" id="PJF_PROJ_MNG" mastered="FSCM" name="Projects" provisioned="false"/>
<offering description="Workforce Development" group="" id="PER_WKF_DEV" mastered="HCM" name="Workforce Development" provisioned="true"/>
<offering description="WorkForce Deployment" group="" id="PER_WKF_DEPL" mastered="HCM" name="WorkForce Deployment" provisioned="true"/>
<offering description="Compensation Management" group="" id="PER_CORE" mastered="HCM" name="Compensation Management" provisioned="true"/>
<offering description="Materials Management and Logistics" group="" id="INV_LOGISTICS" mastered="FSCM" name="Materials Management and Logistics" provisioned="false"/>
<offering description="Order Orchestration" group="" id="DOO_ORCHESTRATION" mastered="FSCM" name="Order Orchestration" provisioned="false"/>
<offering description="Product Management" group="" id="PIM_PROD_MNG" mastered="FSCM" name="Product Management" provisioned="false"/>
<offering description="Incentive Compensation" group="" id="CMP_OIC_BU" mastered="FSCM" name="Incentive Compensation" provisioned="false"/>
<deployed-database connection="" defaultPassword="" defaultUser="fusion_runtime" driver="oracle.jdbc.OracleDriver" host="yourdomain.com" id="fusion" multiDataSource="false" name="fusion" port="1521" rac="false" sid="FUSION" timeout=""/>
<deployed-domain admin-host="yourdomain.com" admin-port="10201" admin-server-name="" admin-server-protocol="t3" emHomeURL="" external-endpoint-host="yourdomain.com" external-endpoint-port="10622" external-server-protocol="https" id="BIDomain" installed="4/6/12" internal-endpoint-host="yourdomain.com" internal-endpoint-port="10621" internal-server-protocol="http" jmx-port="10201" name="BIDomain" node-manager-port="" node-manager-protocol="plain">
<deployed-application deployed="false" id="BiAcmApp" name="BiAcmApp" status="STOP"/>
<deployed-application deployed="true" id="bipApp" name="bipApp" status="START"/>
<deployed-application deployed="false" id="calc-managerApp" name="calc-managerApp" status="STOP"/>
<deployed-application deployed="false" id="essbaseApp" name="essbaseApp" status="STOP"/>
<deployed-application deployed="false" id="frApp" name="frApp" status="STOP"/>
<deployed-application deployed="true" id="obieeApp" name="obieeApp" status="START"/>
<deployed-application deployed="false" id="rtdApp" name="rtdApp" status="STOP"/>
</deployed-domain>
<deployed-domain admin-host="yourdomain.com" admin-port="7001" admin-server-name="" admin-server-protocol="t3" emHomeURL="" external-endpoint-host="yourdomain.com" external-endpoint-port="14000" external-server-protocol="http" id="IDMDomain" installed="4/6/12" internal-endpoint-host="yourdomain.com" internal-endpoint-port="14000" internal-server-protocol="http" jmx-port="7001" name="IDMDomain" node-manager-port="" node-manager-protocol="plain">
<deployed-application deployed="true" id="OracleIdentityManagementApp" name="OracleIdentityManagementApp" status="START"/>
</deployed-domain>
<deployed-domain admin-host="yourdomain.com" admin-port="9001" admin-server-name="AdminServer" admin-server-protocol="t3" emHomeURL="" external-endpoint-host="yourdomain.com" external-endpoint-port="10616" external-server-protocol="https" id="CRMDomain" installed="4/6/12" internal-endpoint-host="yourdomain.com" internal-endpoint-port="10615" internal-server-protocol="http" jmx-port="9001" name="CRMDomain" node-manager-port="5556" node-manager-protocol="ssl">
<deployed-application deployed="false" id="CRMEssDiagnosticDashboard" name="CRMEssDiagnosticDashboard" status="STOP"/>
<deployed-application deployed="false" id="ContractManagementApp" name="ContractManagementApp" status="STOP"/>
<deployed-application deployed="false" id="ContractManagementEssApp" name="ContractManagementEssApp" status="STOP"/>
<deployed-application deployed="true" id="CrmAnalyticsApp" name="CrmAnalyticsApp" status="START"/>
<deployed-application deployed="true" id="CrmCommonApp" name="CrmCommonApp" status="START"/>
<deployed-application deployed="false" id="CrmDataQualityApp" name="CrmDataQualityApp" status="STOP"/>
<deployed-application deployed="true" id="CrmDiagnosticDashboardApp" name="DiagnosticsUI-Assembly" status="START"/>
<deployed-application deployed="false" id="CrmEssApp" name="CrmEssApp" status="STOP"/>
<deployed-application deployed="false" id="CrmPerformanceApp" name="CrmPerformanceApp" status="STOP"/>
<deployed-application deployed="false" id="CrmSearchApp" name="CrmSearchApp" status="STOP"/>
<deployed-application deployed="false" id="CrmSetTransformServiceApp" name="CrmSetTransformServiceApp" status="STOP"/>
<deployed-application deployed="true" id="CrmSoaApp" name="soa-infra" status="START"/>
<deployed-application deployed="true" id="CrmWsmpmApp" name="CrmWsmpmApp" status="START"/>
<deployed-application deployed="false" id="CustomerApp" name="CustomerApp" status="STOP"/>
<deployed-application deployed="false" id="FusionBhdApp" name="FusionBhdApp" status="STOP"/>
<deployed-application deployed="false" id="FusionCtdApp" name="FusionCtdApp" status="STOP"/>
<deployed-application deployed="false" id="FusionEsdApp" name="FusionEsdApp" status="STOP"/>
<deployed-application deployed="false" id="MarketingApp" name="MarketingApp" status="STOP"/>
<deployed-application deployed="false" id="OrderCaptureApp" name="OrderCaptureApp" status="STOP"/>
<deployed-application deployed="false" id="OutlookEditionApp" name="OutlookEditionApp" status="STOP"/>
<deployed-application deployed="false" id="SalesApp" name="SalesApp" status="STOP"/>
<deployed-application deployed="false" id="odi-crm" name="odi-crm" status="STOP"/>
</deployed-domain>
<deployed-domain admin-host="yourdomain.com" admin-port="7401" admin-server-name="AdminServer" admin-server-protocol="t3" emHomeURL="" external-endpoint-host="yourdomain.com" external-endpoint-port="10604" external-server-protocol="https" id="FinancialDomain" installed="4/6/12" internal-endpoint-host="yourdomain.com" internal-endpoint-port="10603" internal-server-protocol="http" jmx-port="7401" name="FinancialDomain" node-manager-port="5556" node-manager-protocol="ssl">
<deployed-application deployed="true" id="FinancialCommonApp" name="FinancialCommonApp" status="START"/>
<deployed-application deployed="true" id="FinancialsDiagnosticDashboardApp" name="DiagnosticsUI-Assembly" status="START"/>
<deployed-application deployed="true" id="FinancialsEssApp" name="FinancialsEssApp" status="START"/>
<deployed-application deployed="true" id="FinancialsEssDiagnosticDashboard" name="DiagnosticsUI-Ess" status="START"/>
<deployed-application deployed="true" id="FinancialsSoaApp" name="soa-infra" status="START"/>
<deployed-application deployed="true" id="FinancialsWsmpmApp" name="FinancialsWsmpmApp" status="START"/>
<deployed-application deployed="true" id="FscmAnalyticsApp" name="FscmAnalyticsApp" status="START"/>
<deployed-application deployed="false" id="FscmSearchApp" name="FscmSearchApp" status="STOP"/>
<deployed-application deployed="true" id="LedgerApp" name="LedgerApp" status="START"/>
<deployed-application deployed="true" id="PayablesApp" name="PayablesApp" status="START"/>
<deployed-application deployed="false" id="ReceivablesApp" name="ReceivablesApp" status="STOP"/>
</deployed-domain>
<deployed-domain admin-host="yourdomain.com" admin-port="7001" admin-server-name="AdminServer" admin-server-protocol="t3" emHomeURL="" external-endpoint-host="yourdomain.com" external-endpoint-port="10614" external-server-protocol="https" id="CommonDomain" installed="4/6/12" internal-endpoint-host="yourdomain.com" internal-endpoint-port="10613" internal-server-protocol="http" jmx-port="7001" name="CommonDomain" node-manager-port="5556" node-manager-protocol="ssl">
<deployed-application deployed="true" id="ApplicationsCoreSetupApp" name="ApplicationsCoreSetupApp" status="START"/>
<deployed-application deployed="true" id="AuthorizationPolicyManagerApp" name="AuthorizationPolicyManager" status="START"/>
<deployed-application deployed="false" id="B2BApp" name="B2BApp" status="STOP"/>
<deployed-application deployed="true" id="CommonEssDiagnosticDashboard" name="DiagnosticsUI-Ess" status="START"/>
<deployed-application deployed="true" id="EssUiApp" name="EssUiApp" status="START"/>
<deployed-application deployed="true" id="GrcSetupApp" name="GrcSetupApp" status="START"/>
<deployed-application deployed="true" id="HelpPortalApp" name="HelpPortalApp" status="STOP"/>
<deployed-application deployed="true" id="HomePageApp" name="HomePageApp" status="START"/>
<deployed-application deployed="true" id="SearchEssApp" name="SearchEssApp" status="START"/>
<deployed-application deployed="true" id="SetupApp" name="SetupApp" status="START"/>
<deployed-application deployed="true" id="SetupDiagnosticDashboardApp" name="DiagnosticsUI-Assembly" status="START"/>
<deployed-application deployed="true" id="SetupEssApp" name="SetupEssApp" status="START"/>
<deployed-application deployed="true" id="SetupSoaApp" name="soa-infra" status="START"/>
<deployed-application deployed="true" id="SetupWsmpmApp" name="SetupWsmpmApp" status="START"/>
<deployed-application deployed="true" id="TopologyManagerServiceApp" name="TopologyManagerServices" status="START"/>
<deployed-application deployed="false" id="ibrApp" name="ibrApp" status="STOP"/>
<deployed-application deployed="false" id="imaging" name="imaging" status="STOP"/>
<deployed-application deployed="true" id="owlcs-dbApp" name="owlcs-dbApp" status="START"/>
<deployed-application deployed="true" id="owlcsApp" name="owlcsApp" status="START"/>
<deployed-application deployed="true" id="roleTemplateApp" name="roleTemplateApp" status="START"/>
<deployed-application deployed="true" id="sesApp" name="sesApp" status="START"/>
<deployed-application deployed="true" id="ucmApp" name="ucmApp" status="START"/>
<deployed-application deployed="true" id="wc-servicesApp" name="wc-services" status="STOP"/>
<deployed-application deployed="true" id="wc-spacesApp" name="webcenter" status="START"/>
</deployed-domain>
<deployed-domain admin-host="yourdomain.com" admin-port="9401" admin-server-name="AdminServer" admin-server-protocol="t3" emHomeURL="" external-endpoint-host="yourdomain.com" external-endpoint-port="10620" external-server-protocol="https" id="HCMDomain" installed="4/6/12" internal-endpoint-host="yourdomain.com" internal-endpoint-port="10619" internal-server-protocol="http" jmx-port="9401" name="HCMDomain" node-manager-port="5556" node-manager-protocol="ssl">
<deployed-application deployed="true" id="HCMEssDiagnosticDashboard" name="DiagnosticsUI-Ess" status="START"/>
<deployed-application deployed="true" id="HcmAnalyticsApp" name="HcmAnalyticsApp" status="START"/>
<deployed-application deployed="true" id="HcmBenefitsApp" name="HcmBenefitsApp" status="START"/>
<deployed-application deployed="true" id="HcmCompensationApp" name="HcmCompensationApp" status="START"/>
<deployed-application deployed="true" id="HcmCoreApp" name="HcmCoreApp" status="START"/>
<deployed-application deployed="true" id="HcmCoreExternalApp" name="HcmCoreExternalApp" status="START"/>
<deployed-application deployed="true" id="HcmCoreSetupApp" name="HcmCoreSetupApp" status="START"/>
<deployed-application deployed="true" id="HcmDiagnosticDashboardApp" name="DiagnosticsUI-Assembly" status="START"/>
<deployed-application deployed="true" id="HcmEssApp" name="HcmEssApp" status="START"/>
<deployed-application deployed="true" id="HcmPayrollApp" name="HcmPayrollApp" status="START"/>
<deployed-application deployed="true" id="HcmSearchApp" name="HcmSearchApp" status="START"/>
<deployed-application deployed="true" id="HcmSoaApp" name="soa-infra" status="START"/>
<deployed-application deployed="true" id="HcmTalentApp" name="HcmTalentApp" status="START"/>
<deployed-application deployed="true" id="HcmWsmpmApp" name="HcmWsmpmApp" status="START"/>
<deployed-application deployed="true" id="odi-hcm" name="odi-hcm" status="START"/>
</deployed-domain>
</deployed-environment>

You can also see that apart from the listed domains you also an IDM domain for Identity Management.

Whatever you see with deployed applications the same can be seen from Fusion Middleware Control of the respective domains under Topology Manager.

Too much technical???? This what Fusion is....

Cheers

Fusion Apps Custom BI Report Creation Part II

Let me recall what I did in Part I. I gave details about how to create


  • Data Model Data Sets
  • Links between Data Models
  • Aggregate Functions
  • Parameters 
Here is the link which has the details Fusion Apps Custom BI Report Creation Part I

So let's start the report template generation using  XML data file.
To do that follow the steps mentioned below
Generate XML










Specify the Parameter and number of rows of data you want in your XML. To make generated XML light you specify the number of rows.







Now after that save the XML to your local machine. 

Now before going to next step, let's make the parameters dependent with the previous one. Those who are from EBS background make recall that this is done in concurrent program parameters by prefixing $FLEX$.




The same can be done here. Let's say we want to Create Employee First Name parameter such that, once Department is selected then only employees belong to that department will be listed. We will define LOVs as 
After creating the Dept LOV create a second Employee First Name LOV which refers the Dept LOV as shown. This binds the second LOV with the first one. Now we need to tell system that whenever user will select Dept, refresh the Employee LOV. This is done by PPR(Partial Page Rendering) in ADF. 


Here it is specified as shown in the picture. After doing this if you go to Get XML then it will like like 









Change the Dept and you will see the employee list is changing.










Now that we have developed the basic skeleton, let's make it little bit more user input data sensitive. E.g if you want your query WHERE clause to change based on input parameters then you can do it by creating report triggers. Those who are familiar with Reports6i they know that same can be done using report triggers

  • Before Parameter Form
  • After Parameter Form
  • Before Report
  • Between Pages
  • After Report
Here in BIP, first we will create a parameter p_where_clause to append condition dynamically 

You can call it as Lexical Parameter. Now we will create a before_data Trigger. For that we need to create a DB Package first. All the parameters defined in the report must be defined In the package specification as global variable.




The logic we are going to implement is that
If Department ID is passed then All the Employees of the Department will be listed
Otherwise if any part of employee name is passed in the parameter First Name then those employees will be listed
If Department ID and First Name both are NULL then no Condition will be applied.

We build this logic inside function before_data of xx_demo_report_pkg package.

Any function used in Data trigger must have return type as BOOLEAN. 

Below is the sample package code you will create in FUSION schema.

CREATE OR REPLACE PACKAGE xx_demo_report_pkg

IS

   p_dept_id        NUMBER;
   p_first_name     VARCHAR2 (100);
   p_where_clause   VARCHAR2 (1000);

   FUNCTION before_data
      RETURN BOOLEAN;
END xx_demo_report_pkg;



CREATE OR REPLACE PACKAGE BODY xx_demo_report_pkg
IS
   FUNCTION before_data
      RETURN BOOLEAN
   AS
   BEGIN
      IF (p_dept_id IS NOT NULL)
      THEN
         p_where_clause   := ' AND emp.department_id = :p_dept_id ';
      ELSIF p_first_name IS NOT NULL
      THEN
         p_where_clause   := ' AND upper(emp.first_name) like ''%'||UPPER(p_first_name)||'%'' ';
      ELSE
    p_where_clause := NULL;
 END IF;
      RETURN TRUE;
   EXCEPTION
      WHEN OTHERS
      THEN
         RETURN FALSE;
   END;
END xx_demo_report_pkg;

After creating the package do the following




Choose the function and click the shuttle arrow. Now go ahead and change the WHERE clause





















Specify a space and click Ok.









This completes the Data Model part. In the next post will cover Report Creation..It's 12'O Clock in the night....Time to sleep....


Tuesday 28 May 2013

Fusion Apps Custom BI Report Creation Part I


Introduction Custom Report Creation
§Roles Required
§Report Components i.e. Data Model and Report
§Components of Data Model
§Data Sets
§Parameters
§List of Values
§Report Triggers
§Layout Creation
§Bursting
§Creating ESS Job


At the end of this blog you will know.....
§How to Create a Custom Report?
§How to submit a Custom Report?
§How to use Bursting?

Roles Required to Create Custom Report

§BI Author
§BI Developer
§BI Consumer
§BI Administrator (If any setup need to be done)
Please go through this How to assign BIAdministrator Role to assign the roles.

Report Components

There are two main components of Report:
§Data Model – Where you create your query,  List of Values, Parameters, Event Triggers, Bursting Definition
§Report – A Data Model is attached with the Report. One or more Report Layout (RTF,PDF etc.) can be attached with a report. 

Data Model

Different Components of Data Model are:
§Data Sets – Where you create your query
§Event Triggers –You create your After Report / Before Report triggers here
§Flexfields –If any KFF is used in the report then here you can define
§List of Values –Create LOVs here
§Parameters – Define your parameters here
§Bursting – Define your Busting definition here


Logging in to BI Publisher


Navigation : Login >> Click on Navigator >> Reports and Analytics (Under Tool)
Alternatively : Open Direct Link http://<BIserver address>:<port>/analytics/saw.dll?bieehome




 Navigate to the Folder where you want to create your custom Report



Click on the New Option and Choose “Data Model”




Data Model Properties


Creating Data Sets


Creating Data Sets with SQL Query

Defining Group By

Creating Aggregate Function

Creating Aggregate Function

Creating Link Between Data Models

Creating Link Between Data Models










Creating LOV










Creating Parameters
Creating Parameters










Change Query to use Parameter Value












Will publish the remaining parts in the following posts......
Cheers..............................