How to define upload directory for ACC enterprise deployment?





We built the Adobe campaign classic on our local server and selected the enterprise deployment, so we have 2 web servers and 2 app servers. Now, we want to upload files to AC server then call these files in workflow. But the workflow always shows that the file cannot be found. In my research, the files were uploaded to one of web servers randomly instead of the app server. So workflow cannot found files in app server. I don't know how to define the upload directory, the default setting is


Can someone give me some advice, please?

Thank you in advance.

Accepted Solutions (1)

Accepted Solutions (1)




Hi @alanl62013822, default location is /usr/local/neolane/nl6/var/res. You can

mount a shared partition to both app servers and set this path like: uploadDirectory="/your_mounted_shared_partition/instance_name/res/" and set this path to this variable as well extraSandboxedDirectories. There is automated process for copying files between app and web servers.

Regards, MIlan

Hi Milan,


Thanks for your response.

As you mentioned, default location is /usr/local/neolane/nl6/var/res. But when I upload file to AC, the file will be stored in /usr/local/neolane/nl6/var/dev/upload, dev” is my instance name.

On the other hand, “mount a shared partition to both app servers”, do you mean I need to mount a SMB folder to both app server and mount as /usr/local/neolane/nl6/var/?

I also find the default value of extraSandboxedDirectories  is "/home/customers/,/sftp/", so I should change this value to "/usr/local/neolane/nl6/var/", right?

Here's the default settings in serverConf.xml, can you teach me how to change it?  Realy appreciated.

<dataStore exportDirectory="$(XTK_INSTALL_DIR)/var/$(INSTANCE_NAME)/export/"
extraSandboxedDirectories="/home/customers/,/sftp/" formCacheTimeToLive="600"
hosts="*" interactionCacheTimeToLive="300" lang="" uploadDirectory="$(XTK_INSTALL_DIR)/var/$(INSTANCE_NAME)/upload/"
uploadWhitelist=".+" useVault="false" vaultSecretPath="/v1/secret/campaign/"
vaultTokenPath="$(HOME)/.vaulttoken" vaultUrl="" viewCacheTimeToLive="600"


Hi @alanl62013822, assume that you have a load balancer in front of app servers. My suggestion is to have one common shared folder or partition which is always accessible by both app server no matter where load balancer switching you. Therefore, mount that folder and put real location path of that folder to upload variable instead of /usr/local/neolane/nl6/var/dev/upload. Regarding extraSandboxedDirectories do not delete anything, just add a comma (",") and add folder path at the end. You may use this folder for app servers to write logs in one file instead of (asuming) separate logs per server now (for example now you have web.log on both app server instead of one web.log in shared folder written by both app servers). Regards, Milan

Hi Milan,


yes, I have a load balancer in front of the two Web servers. Here is our infrastructure. If users upload files and images through AC client, these files will be stored in Frontal Server 1 or Frontal Server 2.

Regarding your suggestions, should I create a NFS share folder with '/usr/local/neolane/nl6/var/dev/' on APP server 01 then mount this NFS folder to all frontal servers and app servers?


Hi @alanl62013822, When you do AC console login you should be connected to one of two app servers not web servers. Any upload will be stored to app server (there is an internal process of copying resources from app servers to web servers so you mean that you do upload directly to web servers) so please check where files are stored in app servers. Once again, if you going with this approach, please forget this path: '/usr/local/neolane/nl6/var/dev/'. Mount a new NFS share which will have own (new) path like /mounted_nfs_folder. When you do that and mount folder to both app servers only then change existing path in serverConf.xml and change upload path to /mounted_nfs_folder. In case does not work for you, just return old path in serverConf.xml as was before. Regards,Milan

Answers (1)

Answers (1)






Users should be accessing app servers using an active/passive load balancer, or just connect directly to the primary.

In active/active, users won't be able to reliably unconditionally stop workflows.

You should still mount the app servers to a common share for failover.