# Adobe CF Features

## CFPM

Adobe ColdFusion 2021 and later have a built in command in their server home called `cfpm` (ColdFusion Package Manager) used to install modules into the core of the ACF engine.

CommandBox provides a passthrough command called `cfpm` which will locate the Adobe server and invoke the correct cfpm.bat or cfpm.sh script, passing along whatever arguments you've typed.

```bash
CommandBox> cfpm install orm,debugger,pdf
```

The CommandBox `cfpm` command will use the current working directory of the shell, or intercept data, if run from inside of a package script or server script to figure out which server to apply to. It will also ensure the `JAVA_HOME` env var is set for the process.

If you need to force `cfpm` to act upon a specfific CommandBox server, set the following env var before running it:

```bash
set CFPM_SERVER=my-CommandBox-server-name
cfpm install orm
```

You can also load packages using `server.json` and calling `cfpm` as a script:

```bash
{
    "scripts":{
        "onServerInitialInstall":"cfpm install websocket"
    }
}
```

More information about scripts can be found in [Server Scripts](https://commandbox.ortusbooks.com/embedded-server/server-scripts)

## Script Alias

CommandBox adds a `/cf_scripts/scripts` alias for you any time you start an Adobe CF server. This alias points to the same folders in the root of the Adobe WAR. If you set a custom scripts src path in the CF administrator then you'll want to ensure CommandBox uses the expected alias.

There is a setting called `web.adobeScriptsAlias` which allows you to control the public, web-accessible path to the scripts folder that CommandBox creates for you.

```bash
server set web.adobeScriptAlias=/my-scripts
```

{% hint style="info" %}
For [Multi-Site](https://commandbox.ortusbooks.com/embedded-server/multi-site-support), Adobe's Script Alias settings can be configured on a per-site basis in the `sites` object of the `server.json` or in a `.site.json` file.
{% endhint %}

If you want to entirely disable the Adobe script alias, you can set that setting to an empty string.

```
server set web.adobeScriptAlias=
```

If you're using CFConfig as well to manage your Adobe CF configuration, note that CFConfig is smart enough to adjust automatically to this setting.

* If a `web.adobeScriptsAlias` is set in CommandBox and there is not a custom CFConfig setting, then the same alias will be set into ACF via CFConfig.
* If CFConfig has a custom `CFFormScriptDirectory` setting but CommandBox doesn’t have a custom `adobeScriptsAlias` setting, then default CommandBox’s alias to be the one set in CFConfig.

So basically, you can set the script directory either in CFConfig or in your `server.json` and the other will follow suite with no additional effort.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://commandbox.ortusbooks.com/embedded-server/configuring-your-server/adobe-cfpm.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
