ksKieran Schoaf.Résumé ↗
← All selected work

PROJECT 01 / PRODUCTION / HEALTHCARE NETWORKING

Better tools.
Better cutovers.

Four workflows. One application. A Python toolkit built for the realities of overnight hospital network refreshes.

PythonNetmikoopenpyxlCisco IOS-XECatalyst 9300
3+ hrsSaved per cutover
75+Switch migrations
10+Hospital locations
04Core workflows
THE CUTOVER WORKFLOW
01Capture

Configs & port maps

02Prepare

Baseline configuration

03Compare

MAC & CDP snapshots

04Monitor

Live port status

Four workflows accessed through one Python GUI. The diagram describes the toolkit’s process.

01 / THE PROBLEM

A change window has a deadline.

Hospital network lifecycle refreshes happen under time pressure, often overnight and with a hard rollback deadline. Before this toolkit, validation meant connecting to switches individually, running show commands, and comparing the results against a pre-cutover snapshot.

Across a stack of switches, that is a lot of manual cross-referencing during the part of the job that needs the most attention. I built the toolkit to turn recurring migration tasks into consistent, repeatable workflows.

The refresh work behind the toolkit

As a Senior Associate Technical Consultant at AHEAD, I lead cutovers and troubleshoot healthcare network lifecycle refreshes. The broader engagement covers core, out-of-band (OOB), top-of-rack (ToR), and IDF switches across multiple hospitals.

I also serve as a Tier 2/3 escalation point for IDF teams, helping multiple teams troubleshoot issues and follow the engineering standards established for the engagement. The toolkit supports the Catalyst 9300 migration workflows within that broader work.

02 / WHAT I BUILT

Four modules. One entry point.

Config capture & port mapping

Netmiko connects to Catalyst 9300 switches over SSH to retrieve live configurations, with the option to load saved configurations from disk. The toolkit generates an Excel port map and a stack summary covering hostnames, serial numbers, switch and software versions, and member MAC addresses.

Baseline configuration generation

Captured configurations become inputs for site-standard staging output: domain names, NTP servers, syslog destinations, management IP addresses, and other parameters that need to match the existing environment.

MAC & CDP comparison

Before a cutover, I capture MAC address tables and CDP neighbor relationships. After the new switches are online, the toolkit compares fresh captures against that baseline and flags MACs or neighbors that have not returned. That gives engineers a focused list to investigate.

Live port monitoring

During the change window, the monitor brings port status, VLAN assignments, and the return of previously active MAC addresses into one view. It replaces repeated checks across individual switch CLIs.

03 / ENGINEERING DECISIONS

Built for the engineer on site.

A single Python GUI exposes all four modules. The engineer running a hospital cutover should be able to reach the right workflow without remembering script names or command-line arguments.

Netmiko handles the SSH and device interaction layer for Cisco IOS-XE. Parsing accounts for differences in whitespace and field alignment across command output, while openpyxl produces port maps and summaries that other engineers can use directly.

Device credentials are provided at runtime through the GUI rather than hard-coded into scripts or stored in flat files. The source repository is private, and the toolkit is maintained as the engagement continues.

04 / THE OUTCOME

More time for the cutover itself.

The toolkit supports an ongoing healthcare engagement spanning 10+ hospital locations and 75+ switch migrations. It saves more than three hours per cutover, and its generated port maps and stack summaries feed the engagement’s documentation workflow.

THE PRACTICAL WIN

Fewer manual checks during the change window, with a structured record of the site before and after the refresh.

05 / WHAT STAYED WITH ME

Usability is part of reliability.

Building something other engineers depend on changed how I think about error handling, usability, and completeness. A tool used during a production change window needs to work for the whole team, not just its author.

KEEP EXPLORING

More connections.
More possibilities.

Have a question about the project?

Let’s talk ↗