# Multi-CM Application Functionality

Note: For additional information, refer to Multiple CM Development (Doc Id: 1901471.1), available from My Oracle Support.
The Multi-CM Jar functionality allows multiple teams to develop features of the application separately.

Each team is identified by a CM application owner. For example, a team in one geographic location may be identified by CM application owner cm01, whereas another team will be cm02.

Teams can have independent project repositories, packaging directories, packaging app servers, releases, and patches.

The different CM application releases/patches are then installed into a target QA or production app server so that they contain all cm applications, for example, a target environment will contain cm01, cm02, cm3, and so on.

The Multi-CM application is activated by using the `–m` option when running `extractCMSource.plx`. With this option, only the source code for the given CM application owner is extracted from the project repository. It creates a file (`etc/cm_owner.txt`) in the packaging directory identifying the CM application owner.

If the `cm_owner.txt` file exists, all subsequent utilities, namely, `applyCM`, `create_CM_release`, `create_CM_patch`, and `install` operate using the designated CM application owner. The installation of the final CM package removes the previously installed CM application owner's files and modules, replaces them with the ones from the installation package, and, finally, appends the owner to the existing `cm_owner.txt` file in the target environment.

If the Multi-CM application is activated, the applyCM script applies to the packaging environment all the jar files extracted from development (excluding `<CmOwner>.jar`, which is compiled and created by `applyCM`). Such jar files are added to the Classpath for the Java compilation. The `create_CM_release`, in case the Multi-CM application is activated, copies only the `<CmOwner>.jar` to the installable package:

    perl extractCMSource.plx -s C:\SPL\CM_PROJ1 -d C:\CMExtract -v CM1.0 –m cm01

Each CM owner development requires separate CM jar structures. For example: `structures/cm01_jars_structure.xml`.

Each CM owner development can also contain customized user exits, and if there are additional templates, each must be defined in the relevant structure:

    templates/cm01_web.xml.exit_end.include
    structures/cm01_template_structure.xml

Parent topic: App Server CM Packaging Tools