During a migration from D2-Config 3.0 to D2-Config 4.1, we have encountered 2 issues. In order to have a clean installation and the insurance of being able to backup the configuration, we have decided to perform a full config export on D2-Config 3.0 and a full import with a configuration reset to D2-Config 4.1.

1. Configuration export

The first issue we experienced was regarding docapps existing in the repository. As you can see in following screenshot, D2-Config crashes very quickly.


But we were quickly able to find a solution. We just had to unselect the docapps check boxes and wait a little bit.


2. Configuration update

After the first import we discovered that some conditions in the menu management were not manageable anymore. But they still applied to D2-Client.

Actually, a class name is seen – i. e. “eu.c6.web.conditions.permits.HasPermit” – instead of the real condition: “User has minimum “write” permit on the selection”.


We have this result because no migration path was anticipated between the 2 releases of D2-Config and some configuration items kept its old class names…

Class names now have to start with “com.emc” instead of “eu.c6”

In fact (and this was confirmed by C), we need to change the menu, toolbar, and tree configuration items manually.

Manually here mean to export the full configuration and perform the changes directly inside the zip-archived XML files of the related configuration items. After a quick assessment, we counted around 100 occurrences to be changed in our case. That was too much to be done during an upgrade. So we decided to automatize the process.

We used a tailor-made Linux script to do that:

$> ./updateConfig.sh <config archive name>

After execution, the result was a new D2-Config archive, ready to be deployed, with “Update_” as a prefix for the archive name given in parameter.

You can see the content of the script, executed and tested under RHEL 5.10:



 # Script to update D2-config from 3.0 objects level to 3.1/4.1

 if [[ $# -ne 1 ]] ; then

 echo “ERROR usage : “$0 “”

 exit 1



 mkdir -p ${root_dir}

 unzip -d ${root_dir} “$1”

 for file in `grep -RH -i eu.c6 ${root_dir}/* | cut -d “:” -f 1`


 echo $file

 mv $file ${file}_old

 sed -e s/eu.c6/com.emc/g ${file}_old > $file

 rm ${file}_old


 cd $root_dir

 zip -r “../UPDATED_$1” *

 cd ..

 chmod 777 “UPDATED_$1”

 rm -rf $root_dir

You can now try to import the updated configuration archive and see the difference.

Be careful, a full config import with configuration reset implies the deletion and recreation of some objects like plublic searches (d2c_query with new r_object_id).

Thanks for reading!