The blog of Richard Fennell

This is the blog of Richard Fennell, I am a Microsoft MVP for Developer Technologies and the CTO of Black Marble Ltd a Microsoft Gold Partner based in the North of England. Black Marble specialises in Integration projects using the Azure/Microsoft stack. I blog mostly on the subject of DevOps using Azure DevOps and GitHub.
Richard Fennell (headshot)

Slides from DDD South West 2026

Thanks to everyone who came to my session ‘Why don’t people seem to be able to diagnose problems these days?` at yesterday’s DDD South West. I don’t believe there is a recording of this session from any event where I have delivered it, but you can find a copy of my slides, with all my other presentations, in the repo rfennell/Presentations Thanks again to the DDD South West organisers for putting on another great event. ...

May 17, 2026 · 1 min · Richard Fennell

Duplicated IP addresses give strange error when deploying Hyper-V environments

Background I have posted in the past on how we manage Azure DevOps Pipeline Agents with Packer and Lability. Whilst deploying a new agent I hit a interesting problem, the issue was completely a ‘UTS’ (user too stupid) error, but the way it was surfaced was I think interesting. The Problem My script built and deployed a new Hyper-V VM, setting up the OS, adding disks and installing the Azure DevOps Pipeline agent. However, the agent did not get registered with Azure DevOps. On checking, I could see that the new VM had a configured network adaptor, but no network connection ...

April 23, 2026 · 2 min · Richard Fennell

Fixing Ribble CGR-Ale (Mahle X35 based) ebike with intermittent power

Background My post-op chemotherapy treatment for my adrenal cancer meant I was struggling to get any fitness, so in 2019 I bought a Ribble CGR-ALe ebike based around the Mahle X35 system. It was in fact pre-ordered prior to the bike’s initial release by Ribble. This bike served me well, getting me out and about before any fitness returned. Since getting fit again, it has also proved useful for my 20KM each-way commute. Allowing me to avoid the traffic jams but still get to work without getting too hot and sweaty. ...

April 20, 2026 · 5 min · Richard Fennell

Migrating Azure WebApps from Docker Compose to Sidecar

Background We have a few non-critical systems running as single instance Docker containers hosted on Azure WebApps. On these systems we have started to see the warning Your app is configured with Docker Compose, which is set to retire on March 31, 2027. For multi-container support, please update your app to support sidecar containers. So, best to get ahead of the game I looked into how to update them, factoring in that ours are all BICEP defined and deployed with Azure DevOps Pipelines ...

April 16, 2026 · 2 min · Richard Fennell

Why has my BizTalk CI/CD build just stopped working?

The Problem I recently had a customer who’s Azure DevOps Pipelines BizTalk 2020 build had suddenly started to fail. They said they had not altered their BizTalk solution, or their build process. The Analysis Turns out the issue was that the operating system on the VM that hosts their self-hosted Azure DevOps agent had had a update. This update it seems had updated the version of MSBUILD shipped with Windows. Making it the newest version, newer than the one shipped with Visual Studio 2019. ...

March 16, 2026 · 1 min · Richard Fennell

PostSharp assembly error upgrading Delinea Secret Server

The Problem Today I was upgrading our self hosted Delinea Secret Server from 11.9.x to 12.0.x. These upgrades are usually an easy process, all achieved within the Secret Server web UI, but not today. The upgrade proceeded as normal, downloading the new package, updating the DB schema and updating the binaries, but then it stopped. It did not move onto the next step. The Analysis I remoted onto our Windows server hosting our Secret Server instance and via Internet Information Service Manager launched the Secret Server instance via the URL http://localhost. This showed the error ...

March 13, 2026 · 2 min · Richard Fennell

Another new problem when generating build agents using Packer

The Problem I have been using Packer to generate our Azure DevOps Build agent disk images for a while now. The advantage of this process is that our Azure DevOps self-hosted agents have the same installed software, and hence capabilities, as the Microsoft hosted ones. So it is trival to move a build pipeline from self-host agents to either Microsoft hosted agents or Managed DevOps Pools. However, the generation process for these agent VM images has been the gift that keeps giving and has generated a few blog posts … ...

March 13, 2026 · 5 min · Richard Fennell

Options for Migrating DevOps Toolsets

Whilst presenting on ‘Migrating DevOps Toolsets’ at DDDNorth 2026 last weekend, I mentioned a blog post & flowchart I had created a few years ago to guide people through their options when migrating from what was then called TFS (Azure DevOps Server) to what was then called VSTS (Azure DevOps Services) When I got home, I thought that this old post & flowchart were worth bringing up to date. So, I also took the chance to make them a little more generic, making them more useful as a guide for a wider range of DevOps toolset migrations, not just Azure DevOps. ...

March 3, 2026 · 2 min · Richard Fennell

Unexpected 'task is dependent on a Node version that is end-of-life' warning with Azure DevOps Pipelines

Background I have been doing the regular maintenance in our Azure DevOps Pipelines of updating the versions of tasks. This usually means you perform one of the following actions Just increment the major version number in the YAML e.g task: MyTask@1 to task: MyTask@2 when there is a newer version of a task available. If the task is out of support and abandoned, swap to a different task, one that is still being supported, that does the same action. Fork the out of date task, and perform the updates to bring it back into support. Swap to a PowerShell/Bash script that wrappers a CLI tool to do the same action - increasingly my go to solution. It is a shame the first option is often not possible, but don’t get me, or other MVPs on the long running subject of abandoned insecure Azure DevOps extensions ...

February 18, 2026 · 3 min · Richard Fennell

Caught out again by the cache in a build pipeline

I have posted in the past about the issues a misconfigured cache can have in Azure DevOps Pipelines, or GitHub Actions. Well it caught me out again today, wasting a few hours of my time. Today, I had a failing integration test in a CI/CD pipeline, but all the tests passed locally. The failing test was looking for a certain number of rows returned from a API with known seed test data. I had revised the seed data and my test, but in my CI/CD pipeline my test was failing as it was still looking for the old number of rows. ...

February 16, 2026 · 2 min · Richard Fennell