Honestly, in reporting the need to upgrade from CI2 to CI3 to my supervisor, I focused on the end-of-life and lack of continued security updates as the primary reason for the upgrade. In most environments, security is enough of a priority to break through some of the mess of scheduling issues, but not usually all of them.
When presenting a plan for the upgrade, my first step was actually to add a "compatibility layer" to Bonfire to:
- make it easier to switch between CI2 and CI3 on the same site
- backport some CI3 functionality to CI2
- allow files to use either version's naming conventions (so I had time to change the names of all of the required files)
If there was anything else, I've forgotten at this point, as it has been several months.
Once I had completed that compatibility layer and started testing everything in CI3, I ended up having to add some compatibility functions to port CI2 functionality to CI3 for a couple of things I just wouldn't be able to update in a timely manner.
After that, I basically had a CI3-ready site which was running on CI2, waiting for management approval to switch. I had to do a little pushing (and there was one of those last-minute "Why are we doing this upgrade?" moments), but by putting a system in place which allowed us to implement most of the necessary changes without switching the CI version, and making the switch itself relatively simple, I eliminated most of the resistance in the process. Removal of the CI2 compatibility layer is actually a longer project which is still in-process, though after a couple of months I've managed to remove the biggest, highest-impact pieces.
Of course, it wasn't all smooth sailing, as a couple of things slipped past the tests (big surprise with the size of the site), but, so far, it seems to have worked out.