The Highland Industries website was based on Django 1.4 which was approaching end of life. To ensure that the platform stayed up to date it needed to be updated to a more recent version.
Django 1.7 introduced native data migrations and the implementation of them was not compatible with the site's existing table structure.
We decided to target the latest long term support release of Django: 1.8 LTS.
In order to complete the migration the Django instance had to be updated, in turn, from 1.4 to 1.5, then to 1.6, then 1.7, and finally 1.8. Each version of Django represented a long list of potentially breaking changes. In addition to this, the existing Django implementation relied on mutiply-inherited data models for representing content pages in the site.
We carefully undertook a process of updating Django to the next version and then reviewing and documenting deprecations. We also carefully restructured the database schema and model definitions so that they could be properly understood by Django's migrations system. We did all of this in a safe testing environment using Vagrant. Once the migration work was complete and well-tested in a development environment we were able to perform the migration on the production server. The migration went very smoothly with minimal interruption and no visible change to end users.
The result is that the Highland Industries website continues to run on the latest LTS release of Django. Additional development projects for the site have benefitted from having native migrations and better dependency support.