Merging Siebel Enterprise Configuration Stores using cfgmerge

During configuration and upgrades of a Siebel application, it happens quite often that settings from one Siebel enterprise (the source) must be migrated to another Siebel enterprise (the target).

Most server administrators use a combination of spreadsheet, notes, scripts, good memory or bare luck and more or less modify the target configuration in a manual manner.

What does cfgmerge.exe do?

In a nutshell, it compares two siebns.dat files and creates a text file containing ‘change parameter’ commands for all parameters that have different values. The utility caters for parameters on enterprise, component definition, server and component level. After reviewing and (optionally) editing the file, you can use the srvrmgr.exe’s /i option to run the commands against the target enterprise. Please refer to the Siebel Bookshelf (Go Live Guide) for more information.

Let’s do a quick demo:

For the purpose of the demo, we will back up an existing siebns.dat file and then make changes to the enterprise configuration. Then we will use cfgmerge.exe to create an input file for srvrmgr.exe. Finally, we will execute the commands in the input file.

1. Backup the siebns.dat file

Of course, we use the ‘backup namesrvr’ command for srvrmgr (or the equivalent button if you are more into using the GUI) to create a valid backup copy of siebns.dat and name it old_siebns.dat.

2. Modify the configuration

Use srvrmgr commands (or the GUI) to change some server parameters.
For the sake of demo, I changed the server parameter ProposalReportTimeoutInSecond to a value of

3. Backup the siebns.dat file again

Use the backup namesrvr command again to create a second backup file. This time it goes by the name of new_siebns.dat.

At this point we have two versions of enterprise configurations. In real life this could be two releases of the same version or even different Siebel CRM versions as during an upgrade project.

4. Restore the old version

Shut down the enterprise, rename the siebns.dat file to any name you wish and copy and rename the old_siebns.dat to siebns.dat. Then startup the Gateway Name Server and Siebel Server again.

At the end of this step, you have the following:

a old_siebns.dat file
a new_siebns.dat file
an enterprise running with the old version

5. Run cfgmerge.exe

Open a command prompt, navigate to [gatewayinstalldir]/bin and launch the following command

cfgmerge -l language_code -i path_to_old_file,path_to_new_file -e oldEnterpriseName,newEnterpriseName -s oldServerName,newServerName -o path_to_output_file

Note that this is for creating the output file on the server level, if you omit the -s parameter the utility will generate a file for the enterprise level.

6. Inspect (and optionally edit) the output file

The output file contains one command line to change the parameter for each parameter that has a different value in the new siebns.dat file. If the parameter is system related, such as FileSystem, the command is commented with a semi-colon and a comment indicates that you could uncomment it if you so wish.

Other commands are not commented out. You might want to ad a semi-colon in front of them to avoid execution of the command.

7. Run srvrmgr with the cfgmerge output file as input

Backup the siebns.dat in your target system before you continue!

Issue the following command against your target system:

srvrmgr /g gatewayhost /e enterprise /u user /p password /s server /i path_to_cfgmerge_output_file

As a result, the parameters in the target system are changed to the values in the old siebns.dat version. You should of course cross-check for any error and undertake thorough testing afterwards.

8. What about new objects?

If you have created new component definitions or enterprise profiles (aka named subsystems), then the cfgmerge utility is not able to include them in the output file, because they do not exist in the target system. And here comes the trick: Use srvrmgr or the GUI to create the “header” of these objects with exactly the same name as in the source system before running cfgmerge. You do not need to edit all the parameters because they will be taken care of in the output file.