CMS maintenance and support
Maintenance, CMS upgrade
Before you make a final decision to purchase a specific CMS, check if minor or major version upgrades are covered by the maintenance agreement. CMS major version upgrades can form relatively large projects, especially if you have a large custom layer on top of the standard CMS layer. If you have more custom code, then it’ll also cost you more not just make that code once but bugfix and maintain it in the long run.
Upgrading a CMS with large custom layer can be challenging, because you’ll have to retest all your custom code. It’s a great advantages if:
- The custom code uses the CMS’ standard APIs in a proper way, no nasty hacks like direct database access or hardcoded version specific configuration in the customization code.
- You have good code test coverage via automated testing.
If your code uses the CMS API correctly and it did not get deprecated, then usually you don’t face many surprises, the custom code will just work fine with the new version also.
Since you have to retest everything, version upgrades are the best timing to do custom code refactoring.
Beyond testing the custom code layer, you also need to migrate the data between the two versions. It’s either done by a tool provided by the CMS vendor, which converts the data to the new database schema, or if you have to do it the custom way, that’s a complete migration. You can reuse the code what you wrote for the data migration when the CMS was introduced.
If the CMS does not provide such functionality, during major version upgrades you can also clean / restructure your data by:
- Full export from old CMS version
- Full import into new CMS version
Using the CMS full export / publish feature for data regression test is a powerful test. After the data migration from the old to the new CMS version, run full export from both CMS versions and compare the content/data. Maybe you need to normalize the export dump to make it comparable (use XML canonization or a simple conversion), but then the two output set must be identical, likely bit by bit.
Before you make a decision to go for a CMS, make sure you’ll get responsive, professional support on the long run. It’s extremely important, otherwise your daily production can be at risk. Sign a contract with the vendor which specifies:
- Response time
- Communication (phone, email, issue tracker) … etc
If you build a complex custom layer on top of the CMS, then it’s extremely important to maintain knowledge on this custom code. Don’t be dependent on one or two key persons. Employees come and go and important skills can disappear overnight when they leave. Detailed documentation is important but it does not substitute active knowledge.