I wish I could just not write this blog. The reality is that this was such a significant endeavor that virtually side railed my entire 60-day plan. Who knows, maybe it only forced me to realize just how optimistic my goal for this time was, but the fact remains; I just can't even...
Way back when...
... I first conceived of AweSam.Net, I set myself to the tricky task of selecting a CMS. It seemed simple enough, though I had some requirements. It had to:
- be open-source
- be built on/support a .NET stack (so that I could have the odd page where I could tinker with back-end code)
- support multiple sites on one instance
I had been looking for an opportunity to use Umbraco since the first time I dabbled with the Azure Umbraco install, and it seemed to fit all my requirements. The install method I chose was via NuGet using Visual Studio. Each time I had to do a little work on the site over the years, I would upgrade to the most recent version and usually dedicate a reasonable amount of time to properly (or so I thought) migrate to the new version. It's true that I found this quite tedious, but I was ok with putting in the effort.
After some years, my updates to my site stopped, and so did my updates to the Umbraco NuGet package. The final resting version was Umbraco 7.5.7, and my site was more or less stable.
Upgrade or Fresh Install?
Once I got a little free time on my hands, it was time to start my blog and make use of the Umbraco platform to find a suitable and popular blog package. The first step was to update my Umbraco version so that I could get the most current package. The goal was to upgrade from Umbraco 7.5.7 to Umbraco 8.7, which was apparently quite the leap. I was working locally, with a pretty solid fallback plan: Git was my first line of defense, while Hyper-V Checkpoints was reserved for any irreparable damage (overkill?)
The obvious question was: do I attempt an upgrade on a mostly working installation, or should I scrap it and start from scratch on the latest version. After all, my site is pretty small. I settled on an upgrade since a re-write would be what I thought was a significantly larger project... (2000 years later...)
I really shouldn't even mention the first pass at updating, which involved a cowboy-updated to my NuGet packages, hitting the build button, and bracing myself as the compiler took a deep breath before entering full-on dad-lecture mode on me. Only a couple of hours wasted, not so bad. Shortly after that, I licked my wounds and loaded up the Umbraco official upgrade notes.
I settled on a strategy that involved updating my version of Umbraco to the nearest officially documented breaking change, completing the corrections to be made, testing, and then moving on to the next breaking change. All this so that I could arrive at the coveted version 7.14. The version that introduced the data migration tool from Umbraco 7 to Umbraco 8 (as documented here). No matter what I tried though, somewhere along the line from 2017 to 2020, a change was introduced which broke a/some packages, effectively rendering my backoffice mostly useless. I kept hoping the next version of Umbraco would fix it, but I guess it just wasn't in the cards. I got close though... man, I got close.
I had planned to keep track of all the issues I ran into, the StackOverflow and our.Umbraco.com answers. All the failed solutions, and the successes, the git reverts, and the Checkpoints rollbacks. I wanted to list them all, but there were so so many. I just... I just can't even.
TL;DR: Ultimately, I rage-deleted the entire project and completely started over from scratch in Umbraco 8.x. Worked like a charm.
Lessons Learned:
- update often
- read update notes
- synchronize package updates with Umbraco updates
Silver lining
While this upgrade was a complete waste of time, one of the exceptions I ran into was with a specific package that I make heavy use of. It turns out that one of Umbraco's updates changed the expectations of how packages render content. Notably, the handling of empty content. As such, the package was not compatible with the latest version of Umbraco. That is, until this pull request. I am always happy to contribute to a project that has been so useful to so many people.
To enable comments sign up for a Disqus account and enter your Disqus shortname in the Articulate node settings.