« Troubleshooting: How block corruption of Workflow tables can cause Self Service Login not to work | Main | Setting titles on Xterm windows »

When adcustomizer.sh may not work..

Preface

The AD product is getting smarter and so is AutoConfig.

Suppose you wanted to put customizations in your 11i Oracle Applications configuration files, but were apprehensive of using it because AutoConfig would replace the configuration file on being run: In such a scenario it is well known that # BEGIN customizations and # END Customizations block in the end of the configuration file is one solution.

This limited and inflexible method has now been superseded by a fully supported mechanism to extend your AutoConfig-maintained environment with a good deal of flexibility, preserving your extensions every time AutoConfig is run.

Adcustomizer.sh

This interesting solution entails using the adcustomizer.sh utility as outlined in  Note 270519.1 . Essentially, the adcustomizer.sh utility lets you do the following:
  1. Detects all configuration files that have "Begin/End customizations" blocks.
  2. Copies the corresponding AutoConfig template files to custom template files. e.g. $FND_TOP/admin/template/jserv.properties_ux to $FND_TOP/admin/template/custom/jserv.properties_ux
  3. Appends the contents between "Begin/End customizations" blocks at the end of the custom template files.
  4. Removes the "Begin/End customizations" blocks from the actual configuration file.
This behaviour might appear as invasive or surprising to many at first. For example, if the entire configuration file (say init<SID>.ora) had everything put within # BEGIN and # END customization block, after the adcustomizer.sh run, everything will be stripped from the init<SID>.ora file. But at the same time, when

Application   <AD_TOP>/bin/adcustomizer.sh contextfile=<CONTEXT>
Database     <RDBMS ORACLE_HOME>/appsutil/bin/adcustomizer.sh contextfile=<CONTEXT>

Some challenges with adcustomizer.sh

Some of the biggest challenges with adcustomizer.sh are that it is a relatively new AD utility and hence may be prone to bugs and poor documentation. E.g. there are only 2 published notes in Metalink which talk about it right now.

One of the challenges which we faced were arcane java errors which are received for apparently no cause. With a little trial and error though, the cause and effect was determined.

usaxs51:sandbox> ./adcustomizer.sh contextfile=/ORACLE/sandbox/9.2.0/appsutil/sandbox_usaxs51.xml
#########################################################################
          Migrating the customizations to the templates                
#########################################################################
java.lang.NullPointerException
       at java.lang.String.indexOf(String.java(Compiled Code))
       at oracle.apps.ad.tools.configuration.Customizer.logErrorMessage(Customizer.java:624)
       at oracle.apps.ad.tools.configuration.Customizer.isTargetValid(Customizer.java:918)
       at oracle.apps.ad.tools.configuration.Customizer.migrateCust2Templates(Customizer.java:698)
       at oracle.apps.ad.tools.configuration.Customizer.runAllDrivers(Customizer.java:460)
       at oracle.apps.ad.tools.configuration.Customizer.main(Customizer.java:1048)


This error was flagged when the directories mentioned in $ORACLE_HOME/appsutil/template/addbtmpl.drv do not exist. E.g. If the directory $ORACLE_HOME/appsutil/install does not exist it throws the above error.

ad <s_db_oh>/appsutil/template adcrdb.cmd  INSTE8 <s_db_oh>/appsutil/install/<s_contextname>  adcrdb.sh

ad <s_db_oh>/appsutil/template adcrdbclone.sql  INSTE8 <s_db_oh>/appsutil/install/<s_contextname>  adcrdbcl
one.sql


The workaround is to just create the directory as expected with write permissions for the oracle unix user id and try again.

Interesting Trivia:

You cannot customize all AutoConfig template files. The AutoConfig template file cannot be customized if the "LOCK" keyword appears in the template file's entry in the product driver file. AutoConfig ignores custom template files that are marked with "LOCK". For example, the following entry in <AD_TOP>/admin/driver/adtmpl.drv would prevent customization of the file adconfig.txt:

ad admin/template adconfig.txt INSTE8 <s_at>/admin adconfig.txt 600 LOCK

Adchkcfg Utility

Its a good idea to run the adchkcfg utility as described in Note 165195.1 . When this utility runs, it instantiates any custom template files in place of the corresponding AutoConfig template file.

The adchkcfg utility generates a report with information about all files and profile options that will be changed during the next normal execution of AutoConfig.  This utility can be used  to verify that your customizations would be applied as expected in your next AutoConfig run.

TrackBack

TrackBack URL for this entry:
http://blogs.oracle.com/mte1521/mt-tb.cgi/2127

Post a comment

(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)

About This Entry

This page contains a single entry from the blog posted on August 7, 2007 7:09 PM.

The previous post in this blog was Troubleshooting: How block corruption of Workflow tables can cause Self Service Login not to work.

The next post in this blog is Setting titles on Xterm windows.

Many more can be found on the main index page or by looking through the archives.

Top Tags

Creative Commons License
This weblog is licensed under a Creative Commons License.
Powered by
Movable Type and Oracle