A Word About Upgrading to K2 SmartForms 4.7

It’s over.

The upgrade evolution across four environments and two months is finally complete. And I learned something about the process I want to share: Thanos doesn’t come to visit.

My client has a series of environments, beginning with Development (“DEV”). For this upgrade, another was created: Functional Test (“FTE”). This new environment was copied from DEV and placed just above it in the sequence of environments.

FTE was upgraded first. After the upgrade, I combed through all of the SmartForms objects and corrected issues caused by the upgrade — mostly, blown mappings. By the way, SmartForms 4.7 is WAAAAY nicer about reporting exceptions than its predecessor.

Once all the corrections were made and a round of testing and subsequent fixes was performed, the next environment was upgraded, and the code was moved up, followed by another round of testing and fixes. And so it went, all the way up to production.

The last environment to get converted was DEV.


Here’s where I started problems.

Surely the admins didn’t mean for us to stop all development work over those two months… right? My client’s got some ambitious plans, and besides, even if they really meant for me not to code or fix anything, I’m not built to just take the client’s money every week and do nothing but monitor e-mail and show “green” on IM. So I forged ahead with development stuff… in DEV.

That was a mistake. I should have done that development in FTE once it was upgraded. Nope. I didn’t get that memo. (I’m not saying that to be smart; I honestly missed that instruction.)

So here we are two months later… it’s a week before DEV gets upgraded and I’m kinda freaking out. I’ve got fixes in DEV that haven’t been published, plus I’ve got prototype code that I’ve been building and demoing for the past month. Packaging it up (in 4.6.11) and deploying it (in 4.7) was not an option — the admins were dead set against it — so my next best option was to place DEV and FTE side-by-side on my screen and re-create the fixes and test them, thinking they’d get deployed back down to DEV.

As far as the prototype stuff, well, my “Hail Mary” pass was to take tons of screenshots and notes in case I’d have to rebuild it all post-upgrade.

Here’s how things turned out:

  • With the fixes, I made a package in FTE and had it deployed to DEV after the upgrade. I tested and everything worked great. And, doing this was actually necessary because the SmartForms objects in DEV that contained fix code were overwritten by the packaged code.

  • With the prototype code in DEV, it was all upgraded just fine. I had feared the upgrade, or the combination of the upgrade and the package deployment, would give DEV the Thanos treatment before the packaged code was deployed. Not the case: The upgrade simply upgraded all the DEV goop, and the package deployment worked like any other P&D evolution, overwriting the stuff the package had updates for. Essentially, the package contained a subset of DEV — albeit a very large subset. So the prototype SmartForms stuff that was the remainder was simply left alone… or, returning to the metaphor, survived.

By the way, I’ve already written about part of those fixes in a previous post. Check out SmartForms Rule Execution in 4.7 Versus Previous Versions for details on some SmartForms changes you may need to make after upgrading to 4.7.

All in all, the upgrade was a success; my prototype stuff is still intact in DEV; I saved my fixes and got them deployed back into DEV — and now that the upgrade is complete, I can make arrangements to have those fixes tested and moved up. The biggest bonus is I can pick up right where I left off on my prototype development. Life is pretty good today!

P.S.: Like any good movie, there’s bound to be a sequel: the client intends to upgrade to K2 Five at some point down the road (we had to move to 4.7 to allow us to upgrade to Five.) #StayTuned