الثلاثاء، 7 أبريل 2020

Migration of OAF Development and Customizations

Targeted Audience 🙂 If you have completed doing all the development or changes in the Oracle Application and you are responsible for java objects, this document should help you to understand the process of migration to another instance(TEST or Production environment) from DEV.
I am assuming here that you have done most of the custom development using OAF JDeveloper.
We generally do the following things as part of our custom activities.
1. Development
2. Customization of standard application
3. Personalization of standard UI
Development: Using JDeveloper(OAF Oracle Apps compatible) We have the following objects/files which are created as part of development.
* Page, Region XMLs. These XMLs reside in the data base. So, we need to import them and thats how their meta data hit the database.
* Controller, BC4J(EO, VO, AM, AO, VL,etc..) which are XMLs and Class files. These Class files reside in the application server. So, we need to copy the relevant class and XML files to $JAVA_TOP in the application server
As an example, I would like to explain things I have done in the Quoting module in the recent past.
As shown, the custom directory(/cl/oracle/apps/qot/quote/header) has folders webui, server, schema.server, etc having different xml and class files.
mig1
Here are the things we need to do:
  1. We need to copy all of them to $JAVA_TOP/cl/oracle/apps/qot/quote/header in the application server using some file transfer tool.
  2. Need to import the UI XMLs by java import command. Below is a sample for /cl/oracle/apps/qot/quote/header/webui/CLQuoteSummaryRN.xml.
UI XMLs Import:
adjava oracle.jrad.tools.xml.importer.XMLImporter $JAVA_TOP/cl/oracle/apps/qot/quote/header/webui/CLQuoteSummaryRN.xml -rootdir $JAVA_TOP -username $APPS_USER -password $APPS_PASSWD -dbconnection “(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=$DBHOST)(PORT=$DBPORT)))(CONNECT_DATA = (SERVICE_NAME=$DBSID) ) )”
Customizations/Personalizations: Customizations are done on top of standard objects.
These are the things we usually do..Controller extension, VO/AM substitution, etc
Here again, we deal with XMLs and class files.
  1. Lets copy all the files to the application server and import the XMLs.
  2. In addition to the above, we need to import the personalization and customization.
Finding out Customizations and Personalizations:
We find out the personalizations done in a directory strucure:
declare
begin
jdr_utils.listdocuments(‘/oracle/apps/qot/quote’, TRUE);
commit;
end;
The output is a number of lines like: /oracle/apps/qot/quote/header/webui/customizations/site/0/QotQuoteDetailsPG
If you are trying to understand the output, It says, there is a customization at site level on /oracle/apps/qot/quote/header/webui/QotQuoteDetailsPG
Similarly, /oracle/apps/qot/quote/header/webui/customizations/responsibility/23410/QotQuoteDetailsPG means the customization is at responsibility level for resp with resp id 23410
Based on the above output, we can generate the personalization document using the API below.
begin
jdr_utils.printdocument (p_document => ‘/oracle/apps/qot/quote/header/webui/customizations/site/0/QotQuoteDetailsPG’);
end;
Copy the output and save it as an XML(QotQuoteDetailsPG.xml).
We need to generate documents for all the persoalizations in our module.
In the application server copy this xml to $JAVA_TOP/xx/oracle/apps/qot/quote/header/webui/customizations/site/0
Here, xx is a custom folder meant to have all custom files of the application.
Importing Personalizations:
Now, execute the following XML Importer which will hit the required database tables for updating the MDS of the XML file.
adjava oracle.jrad.tools.xml.importer.XMLImporter $JAVA_TOP/xx/oracle/apps/qot/quote/header/webui/customizations/site/0/QotQuoteDetailsPG.xml -rootdir $JAVA_TOP/cl -username $APPS_USER -password $APPS_PASSWD -dbconnection “(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=$DBHOST)(PORT=$DBPORT)))(CONNECT_DATA = (SERVICE_NAME=$DBSID) ) )”
Similarly, we need to import all the available custom UI XMLs available.
During VO/AM substitution, we must have generated the project substitution document, lets say OAProject.jpx. Lets copy the jpx file to $JAVA_TOP/cl
JPX Import:
Now, execute the JPX Importer.
adjava oracle.jrad.tools.xml.importer.JPXImporter $JAVA_TOP/cl/OAProject.jpx -username $APPS_USER -password $APPS_PASSWD -dbconnection “(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=$DBHOST)(PORT=$DBPORT)))(CONNECT_DATA = (SERVICE_NAME=$DBSID) ) )”
We need to import all the JPX files if more then one exist.
Verification:
Again, we can verify the personalizations and substitutions by jdr_utils.listdocuments API.
declare
begin
jdr_utils.listdocuments(‘/oracle/apps/qot/quote’, TRUE);
commit;
end;
After having the custom files in the new instance and executing the required imports, we are ready to bounce the apache and have the changes verified.

ليست هناك تعليقات:

إرسال تعليق

ADF: Programmatic View Object Using Ref Cursor.

ADF: Programmatic View Object Using Ref Cursor. Posted by:  Manish Pandey   April 25, 2013   in  ADF   Leave a comment   3758 Views Sometime...