Kill Bill configuration is done principally via Java system properties.

These can be set on the command line (e.g. java -Dkey1=value1 -Dkey2=value2 -jar killbill-server-jetty-console.war) or in special killbill.properties file (via -Dorg.killbill.server.properties=file:///path/to/killbill.properties). If you are using a custom kpm.yml configuration file, you can also set them under the properties sub-entry like here.

Some properties are global to the system, and therefore will apply to all tenants. Others (such as Catalog and Overdue configuration, as well as Invoice templates and language translation resources) can also be configured on a per tenant basis.

Most properties are accessible to the plugins through OSGIConfigPropertiesService.

Some parts of the system also rely on additional configuration files. The caching layer for instance, which is based on EhCache, requires a specific xml configuration. The location of the xml itself is specified via a system property though (org.killbill.cache.config.location in this case).

System Properties

Kill Bill core services can be configured through system properties defined in the following files:

The properties to configure the database are split between the core Kill Bill services and the plugins, to allow plugins to use a different database or configuration:

The properties to configure the persistent buses and notification queue are shown below. Those properties are built to be used across multiple instances (we have two persistent buses) which explains the substitution parameter instanceName. For more details on the configuration of the bus and notification queue, check here.