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:- Detects all configuration files that have "Begin/End customizations" blocks.
- 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
- Appends the contents between "Begin/End customizations" blocks at the end of the custom template files.
- Removes the "Begin/End customizations" blocks from the actual configuration file.
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.
