In order to allow upgrades of EJBCA with a minimum of fuss, EJBCA supports keeping configurations, key stores and custom modifications in an external directory which will be shared between versions. This technique can also be used easily when performing several identical installations across several instances to share settings.
The ejbca-custom Directory
The base directory is ejbca_custom, which should be place in the same directory as EJBCA, in other words in $ejbca_home/../ejbca-custom. When deploying, ant will replace existing files in the the EJBCA directory (with some exceptions, see below). If another directory is desired, it can be configured in the custom.properties file.
Configuration files can be placed under ejbca_custom/conf, from which they'll be automatically copied into $ejbca_home/conf prior to deployment. The two exceptions are:
which for security reasons need to be explicitly allowed to be copied by setting the value allow.external-dynamic.configuration=true
To reuse key stores across installations, they can be placed in ejbca_custom/p12, which will lead them to be copied into $ejbca_home/p12, from where they can be deployed to the application server.
Lastly, custom code modifications can be stored in ejbca_custom/src/java, from where they'll be copied straight into the source tree and compiled with the rest of the code.