If you've ever upgraded an Umbraco Engage site across a few versions, you might know the moment. The site boots, but something feels off: a report stays empty, or the logs mention a migration you don't recognise. And the first question is always the same. What state is this database actually in?
That question is harder to answer than it sounds. Engage has had 50 releases between 13.0.0 and 18.2.0, and Engage Forms and Engage Commerce come on top of that. Since 13.8, 16.3 and 17.2 there's also the schema alignment, where part of the work happens automatically during the upgrade and the last step is a script you run yourself. So two sites on the same version can have quite different databases, depending on how they got there.
So I built a small tool for exactly that question. I'm calling it Engage Healthcheck, and today I'm sharing it as an open source project on GitHub 🎉
What it does
You point it at an Engage database and it tells you which version of Engage that database belongs to. It tells you whether the schema alignment has been completed, it recognises Engage Forms and Engage Commerce, and it lists everything that doesn't look the way that version expects, like a missing column or a table that's still on an older shape. When it can't be sure, it says so. Some releases leave exactly the same database behind, so sometimes the honest answer is "between 17.0.0 and 17.0.3".
It only reads. It never changes anything in your database, so you can run it against a copy of a production database without worrying about it.
Who it's for
Mostly developers, I think. If you're the one doing the upgrade, it gives you a quick check before and after. If you're helping someone with a site that misbehaves after an upgrade, it gives you a starting point that isn't guesswork. It also writes a small report that holds none of your data and no server or database names, so you can share it when you ask for help on the forum, in an issue, or with Umbraco Support.
A personal project
I want to be clear about one thing: this is a personal project. It's not an Umbraco product and Umbraco doesn't support it, which is also why it carries the Umbraco.Community name. It's experimental and this is the very first version (0.1.0), so it can be wrong. Treat it as a second opinion, take a backup, and check things yourself before you act on what it tells you.
Try it
Everything is on GitHub: Umbraco.Community.Engage.Healthcheck
Download the latest release, unpack it and run it with .NET. The README walks you through the rest.
If you give it a try, I'd love to hear how it went. Found something odd, or a database it doesn't recognise? Open an issue on GitHub. Every odd database someone reports is a case I can teach the tool to recognise 🙂