FNDLOAD is a concurrent program that can move Oracle Applications data between database and text file. FNDLOAD can download data from an application entity into an editable text file, which can be uploaded to another database. Conversion between database format and text file format is specified by a configuration file. But i could not find anything regarding upload/download of an Oracle Alert. So, my conclusion was that i must be possible to use FNDLOAD to transfer Alerts, but that there is no configuration file provided by Oracle. I had to create a configuration file myself.

We use ldt loader data files for loading.
Oracle currently supports the migration of the following types of data using FNDLOAD
Printers / Print queues / Executables Printers / Print queues / Executables. Roles / Responsibilities / Forms Roles / Responsibilities / Forms. Menus / Users / Request Sets Menus / Users / Request Sets. Request Groups / Request Queues Request Groups / Request Queues. Work shifts / Programs / Libraries Work shifts / Programs / Libraries. Attachments / Help Files Attachments / Help Files. Mime Types Mime Types. Security Information.

What is 0 & Y in FNDCPASS, FNDLOAD or WFLOAD?


0 & Y are flags for FND Executable like FNDCPASS & FNDLOAD where
   0 is request id (request ID 0 is assigned to request ID’s which are not submitted via Submit Concurrent Request Form.
   ‘Y’ indicates the method of invocation. i.e. it is directly invoked from the command-line not from the Submit Request Form.
This is our requirement.

SCHEMA NAME : XXCUST
TOP NAME : XXCUST_TOP
Application : XXCUST Custom Application
Data Group : Standard
Request Group : XXCUST Request Group
Menu : XXCUST_CUSTOM_MENU
Responsibility : XXCUST Custom

Assumptions:
APPL_TOP: /d01/oracle/VIS/apps/apps_st/appl
Instance Name: VIS
Server OS: linux

There are 14 simple steps to achieve this.
1) Make the directory structure for your custom application files.
cd $APPL_TOP
mkdir XXCUST
mkdir XXCUST/12.0.0
mkdir XXCUST/12.0.0/admin
mkdir XXCUST/12.0.0/admin/sql
mkdir XXCUST/12.0.0/admin/odf
mkdir XXCUST/12.0.0/sql
mkdir XXCUST/12.0.0/bin
mkdir XXCUST/12.0.0/reports
mkdir XXCUST/12.0.0/reports/US
mkdir XXCUST/12.0.0/forms
mkdir XXCUST/12.0.0/forms/US
mkdir XXCUST/12.0.0/lib
mkdir XXCUST/12.0.0/out
mkdir XXCUST/12.0.0/log

2) Add the custom module into the environment
cd $APPL_TOP
echo “XXCUST_TOP=/d01/oracle/VIS/apps/apps_st/appl/XXCUST/12.0.0” >customVIS_linux.env
echo “export XXCUST_TOP ” >> customVIS_linux.env
Source the environment file (/d01/oracle/VIS/apps/apps_st/appl/APPSVIS_linux.env )
Make entry to the application context file
vi $INST_TOP/appl/admin/VIS_linux.xml
/d01/oracle/VIS/apps/apps_st/appl/XXCUST/12.0.0
cd $INST_TOP/admin/install
sh adgentopfile.sh

3) create tablespace XXCUST datafile ‘/d01/oracle/VIS/db/apps_st/data/XXCUST01.dbf’
size 500M

4) create user XXCUST identified by XXCUST
default tablespace XXCUST
temporary tablespace temp
quota unlimited on XXCUST;
grant connect, resource to XXCUST;

5) Register your Oracle Schema.
Login to Applications with System Administrator responsibility
Navigate to Application–>Register
Application = XXCUST Custom Application
Short Name = XXCUST
Basepath = XXCUST_TOP
Description = XXCUST Custom Application

6) Register Oracle User
Naviate to Security–>Oracle–>Register
Database User Name = XXCUST
Password = XXCUST
Privilege = Enabled
Install Group = 0
Description = XXCUST Custom Application User

7) Add Application to a Data Group
Navigate to Security–>Oracle–>DataGroup

8) Create custom request group
This will act as a placeholder for any custom reports we wish to make available for the Custom Responsibility (which is defined at a later stage)
Navigate to Security–>responsibility–>Request
Group = XXCUST Request Group
Application = XXCUST Custom
Code = XXCUST
Description = XXCUST Custom Requests
At this statge, We are not going to define any requests, but you can add request in the later point of time if its required.

9) Create custom menu
This will act as a placeholder for any menu items we wish to make available for the Custom Responsibility (which is defined at a later stage).
Navigate to Application–>Menu
Menu = XXCUST_CUSTOM_MENU
User Menu Name = XXCUST Custom Application Menu
Menu Type =
Description = XXCUST Custom Application Menu
Seq = 100
Prompt = View Requests
Submenu =
Function = View All Concurrent Requests
Description = View Requests
Seq = 110
Prompt = Run Requests
Submenu =
Function = Requests: Submit
Description = Submit Requests
10) Create new responsibility. Navigate to Security–>Responsibility–>Define

Responsibility Name = XXCUST Custom
Application = XXCUST Custom
Responsibility Key = XXCUSTRESP
Description = XXCUST Custom Responsibility
Available From = Oracle Applications
Data Group Name = Standard
Data Group Application = XXCUST Custom Application
Menu = XXCUST Custom Application Menu
Request Group Name = XXCUST Request Group
11) Add responsibility to user
Navigate to Security–>User–>Define
Add XXCUST Custom responsibility to users as required.

12) Other considerations
You are now ready to create your database Objects, custom Reports, Forms, Packages, etc
Create the source code files in the XXCUST_TOP directory appropriate for the type of object. For example forms would be located in $XXCUST_TOP/forms/US or
package source code in $XXCUST_TOP/admin/sql for example.
Database Objects, such as tables, indexes and sequences should be created in the XXCUST schema, and then you need to
   a) Grant all privilege from each custom data object to the APPS schema.
      For example : logged in as XXCUST user
      grant all privileges on XX_TABLE to apps;
   b) Create a synonym in APPS for each custom data object
      For example : logged in as APPS user
      create synonym XX_TABLE for XXCUST.XX_TABLE;

13) Login to sysadmin, Application Developer Responsibility
In the backend compile your form
su – applmgr
cd $AU_TOP/forms/US
cp TEMPLATE.fmb XXSAMPLE.fmb
frmcmp_batch Userid=apps/apps module=XXSAMPLE.fmb output_file=/d01/oracle/VIS/apps/apps_st/appl/XXCUST/12.0.0/forms/US/XXSAMPLE.fmx compile_all=special  batch=yes
Application > Form (Register the form)
Application > Menu (Attach the function to a menu)
Open new session, source environment file, and stop middle tier services, run autoconfig
Open new session, source environment file, check for custom top in topfile.txt in $APPL_TOP/admin, start the middle tier services.
   cd $ADMIN_SCRIPTS_HOME
   sh adstpall.sh apps/apps
   sh adautocfg.sh
   sh adstrtal.sh apps/apps
   cat $APPL_TOP/admin/topfile.txt
   You can find the entry as lke this, XXCUST /d01/oracle/VIS/apps/apps_st/appl
14) Menu that is added to a particular responsibility is given to specific user
Security > User >
Attach our custom responsibility to the user.
Common Errors and Solution:
1. Function not available to this responsibility. Change responsibility or contact your system administrator.
Solution
Restart the forms server
cd $ADMIN_SCRIPTS_HOME
sh adstpall.sh apps/apps
sh adstrtal.sh apps/apps

A database link is a path through which a remote user in another database can connect to any other database. Once created the database link exists as an object in the user schema.

Type of DB Links
There are 3 types of DB links. They are as follows:

1. PRIVATE: When the DB links is created, it is created under Private mode as default. The Private DBLINK is only available to the user who has created it. It is not possible for a user to grant access on a private DBLINK to other users.

2. PUBLIC: The Public DBLINK is available to all the users and all users can have the access without any restrictions.

3. SHARED: Shared database link uses share the server connection to support database link connection. If there are multiple concurrent database link access into a remote database, shared database link can be used to reduce the number of server connections required. Without the shared clause each database link connection requires a separate connection to the remote database.

Types of Logins:
In dblink we can use 2 types of login. They are as follows:

1. DEFAULT LOGIN: The User name and Password is same in both the databases.
Syntax
======
CREATE [PUBLIC] DATABASE LINK CONNECT TO CURRENT_USER USING
Code: (Text)
Create public database link daslink connect to current_user using ‘ORCL’


2. EXPLICIT LOGIN: The User Name and Password is different in both the databases.
Syntax
======
CREATE [PUBLIC|SHARED] DATABASE LINK CONNECT TOIDENTIFIED BY USING
Code: (text)
CREATE PUBLIC DATABASE LINK DDLNK CONNECT TO SCOTT IDENTIFIED BY TIGER USING ‘ORCL’

Note: To create the public DBLINK the user must have create public database link system privileges.

Below are some of the queries that can be used to get the database and Application information.

1) Get Product Version

SELECT product
     , VERSION
     , status
FROM   product_component_version

The other way to get this information is by using following query

select * from v$version;

2) Get Applications Version and Patch Information

SELECT   SUBSTR (a.application_name, 1, 60) Application_Name
       , SUBSTR (i.product_version, 1, 4) Version
       , i.patch_level
       , i.application_id
       , i.last_update_date
FROM     apps.fnd_product_installations i
       , apps.fnd_application_all_view a
WHERE    i.application_id = a.application_id
ORDER BY a.application_name

3) Patch Information AD_APPLIED_PATCHES table stores information about all the patches installed in the system.

SELECT applied_patch_id
     , patch_name
     , patch_type
     , source_code
     , creation_date
     , last_update_date
FROM   ad_applied_patches

4) Check if the application is setup for Multi-Org

SELECT multi_org_flag
FROM   fnd_product_groups

If your program is taking time to complete, then the best way to know what is causing the problem is by creating a trace file.

Navigation:
System Administrator(R) –> Concurrent –> Program –> Define

Query for the concurrent program and check enable trace button.

Now when the concurrent program is executed the trace file is created in the udump directory. The path of udump directory can be found by executing following query.
select * from v$parameter
where name like ‘%user_dump_dest%’


The trace file can be converted to a readable format by running a tkprof command over the trace file.
Syntax:

tkprof [trace_file_name] [new_file_name]

Understanding TKPROF
The TKPROF program can be used to format the contents of the trace file and convert it into a readable output file.
TKPROF can also be used to generate Explain Plan for the queries.
I will create a seperate post to discuss various options available with TKPROF.