Case study

From blocked upgrades to a self-running AI delivery practice

How a mid-market e-commerce company modernized its .NET delivery pipeline and learned to run an AI-assisted engineering practice on its own.

Advisory + enablement · Azure DevOps, Bicep IaC, Claude Code adoption · Solo principal, Arriaga Technology Consulting

The situation

A mid-market e-commerce fulfillment company ran its business on in-house web applications built on NopCommerce, spanning both .NET Framework and .NET Core. The platform worked — but shipping changes to it had become slow, manual, and risky:

  • Deployments depended on hand-run steps, with no consistent path from Dev to Test to Production.
  • Standing up a new environment was a manual, multi-step effort.
  • A critical dependency-upgrade effort on the NopCommerce codebase was stuck — the kind of legacy modernization that stalls teams for weeks because every upgrade surfaces a cascade of build and compatibility failures.
  • The internal team had no leverage from AI tooling, despite the work being exactly the kind agentic coding assistants are built for.

The IT Director needed the delivery pipeline modernized — but more importantly, needed the team to come out of the engagement more capable, not more dependent on an outside contractor.

The approach

The engagement was scoped around a principle: build the pipeline, then transfer the capability. Rather than positioning as an extra pair of hands, the work was structured so that every automated system was documented, repeatable, and owned by the internal team by the end — including the AI-assisted workflow used to build it.

What was delivered

1. An AI-assisted engineering practice the team now runs itself— the centerpiece

The engagement introduced Claude Code into the team’s workflow and — critically — taught the IT Director how to use it. The practice was made durable: custom skill files encoding the team’s specific build and deployment know-how, CLAUDE.md project context files so the assistant understood the codebase and conventions, and plan files to structure complex, multi-step work. This was aimed at the hardest problem in the engagement: the blocked NopCommerce dependency upgrade. With the AI-assisted workflow in place, the team worked through the previously stalled upgrade — and kept the method.

2. A modern, standardized CI/CD pipeline

Azure DevOps build pipelines for the .NET Framework and .NET Core NopCommerce applications, giving the team a consistent, automated path from commit to deployable artifact.

3. Infrastructure as code for every environment

Azure Bicep provisioning pipelines that stand up the full application footprint — Azure Web Apps, Azure SQL databases, Azure Front Door configuration, and supporting cloud resources — reproducibly across Dev, Test, and Production. Environment creation went from a manual effort to a pipeline run.

4. Operational automation that removed manual toil

Custom PowerShell tooling layered on top of the pipelines to apply database schema changes, seed data, and post deployment notifications to Microsoft Teams — turning error-prone manual steps into consistent, auditable automation.

Why this engagement was different

Most DevOps contractors leave behind pipelines. This engagement left behind pipelines and a team that can now use AI to solve its own hard problems. The differentiator wasn't just automating the delivery path — it was making the method of building it a permanent internal capability. That's the difference between renting hours and installing leverage.

Have a stalled modernization of your own?

A 30-minute intro call. Describe what's stuck; I'll tell you honestly whether the approach in this case study fits your situation.

Book an intro call