Transfer of configurations during upgrade
When you upgrade your Sitefinity CMS project on your local development machine, you can easily transfer the upgraded .config
files to the next environments from the continuous delivery process. You do not need to upgrade or merge the .config
files manually. This is possible, because the versions of Sitefinity CMS and all application modules are no longer stored in the SystemConfig.config
on the file system, but in the database.
The SystemConfig.config
file stores the information about the modules state, but does not store their version or the error message data. These are stored in the database in a dedicated table – sfmodulevrsn
.
Database table sfmodulevrsn
transfers and stores the following:
- The global Sitefinity CMS version
Sitefinity CMS versions 8.2 and below keep this information in SystemConfig.Build
and SystemConfig.PreviousBuild
.
- The static modules’s version and error message
Sitefinity CMS versions 8.2 and below keep this information in SystemConfig.ApplicationModules
for each static module.
Table sfmodulevrsn
stores modulename
, version
, previousversion
, and err_msg
.
Sitefinity CMS also uses a new UpgradeConfig.config
file that keeps any data, which is deleted from other existing configurations, but is needed for the upgrade of the next environment in the continuous delivery process.
Process
The following happens when you upgrade your project on your local development machine:
- On Sitefinity CMS initialization (
SystemManager.Initialize()
), additional logic checks whether sfmodulevrsn
table is empty.
If the folder is empty:
SystemConfig.ApplicationModules
are saved in UpgradeConfig.ApplicationModules
.
- Version and error message for each module in
SystemConfig.ApplicationModules
are removed.
- Table
sfmodulevrsn
is initialized with the current modules state.
NOTE: Modules which are uninstalled on the initial (development) continuous delivery environment are deactivated on the next environments. No uninstall logic is executed. Because the error message for each module is stored in the database, if there is an error for a given module on one of the NLB nodes, the module is deactivated on all other nodes.