There’s a detail that makes this project a little unusual: I had deployed Charlie’s Produce’s SCCM environment years earlier as a consultant at Affirma. Ozzy, who would eventually hire me full-time, was the person I had originally built it for. Two years after that engagement ended, he called and offered me the job.

So when I showed up and found the SCCM environment largely unchanged from when I’d left it, I wasn’t surprised. I knew exactly what I was working with. And I knew what it would take to push a Windows 10 migration through it for about 3,000 people across multiple sites.


What we were actually doing

The short version is that we did in-place upgrades. The more accurate version is that we did something that looked like an in-place upgrade to the user but was closer to a full wipe-and-reload behind the scenes.

The task sequence I built worked like this: a technician would kick it off at the end of the day. The machine would archive all user data to a local file share at the site, reimage to Windows 10 using USMT to preserve profile structure, then pull all that data back down before the user arrived in the morning. The user left for the night with Windows 7 and came back to Windows 10 with everything where they expected it. Same files, same profile, same desktop layout.

I’d call it 99% reliable. The machines that caused problems were mostly exceptions — unusual local configurations, applications that had been installed in unexpected places, that kind of thing. The sequence itself held up.


What broke during testing

The first rounds of testing happened in the IT workbench area before any real user was involved. Then we moved to groups of five to ten people at each site, watching carefully before we opened it up.

The thing that kept breaking during that phase was bookmarks. Browsers store them in different places depending on the browser, and users had browser habits that didn’t match what I’d assumed. I ended up writing a dedicated step into the task sequence specifically to locate and archive bookmarks from every default browser location before the reimage. It wasn’t glamorous work, but it was the difference between users who came in the next morning and immediately had a problem and users who didn’t notice anything had changed.

That’s the kind of thing you only find in a pilot. You can anticipate a lot, but you can’t anticipate everything until real users are involved.


The six months

The actual technical work wasn’t what took six months. The task sequence was in good shape within the first couple of months. What took the rest of the time was scheduling.

Any change that touches production environments has site leaders on edge. Every site had concerns, peak periods where nothing could be touched, reasons why next month was always better than this month. Getting aligned across multiple locations took real coordination, and most of that work wasn’t mine to do.

Clayton, the project manager, handled the user side of this and did it well. He put together documentation on what to expect from the Windows 7 to Windows 10 shift, ran presentations and working sessions at each site, and gave people a place to ask questions before anything changed. People vocally groaned, as they do. But the Help Desk didn’t see a ticket spike after any site went through. That’s not an accident — it’s what good change communication looks like.

My job during the site rollouts was to travel there and be present. Partly to catch anything the task sequence didn’t handle. Mostly to be a visible person people could walk up to if something felt wrong.


What I took from it

There weren’t any dramatic judgment calls in this project. No close calls, no pivots. It was a project that had to get done, had to get done right, and couldn’t afford to interrupt production more than necessary. That meant thorough testing before each phase, a reliable sequence that minimized what could go wrong overnight, and showing up in person when it mattered.

The migration was complete before Windows 7 hit end-of-support. Every site went through clean. No production interruptions, no ticket spikes, nothing that had to be walked back. That was the goal from day one.