CB
Chris Bullard Head of Product · Portfolio 2026
Open to Opportunities Get in Touch
Mobile, Alabama — US Central Time — Director of Product Management

Product systems that hold under load.

HEAD OF PRODUCT — NEXT LEVEL STUDIO — TARGETING DIRECTOR OF PRODUCT MGMT

Thirteen years running Agile product organizations across healthcare payer, financial services, ERP, and enterprise SaaS — building the roadmap, the governance, and the AWS infrastructure underneath it. This is where that record stands today.

Career Snapshot2026
13+
Years — Agile product ownership
$5M
Annual savings — clinical systems redesign
80%
R&D expense reduction — product pipeline
150+
Items shipped — trailing 12 months
STATUS: OPEN TO NEW ROLES
DIRECTOR OF PRODUCT MANAGEMENT
•
HEAD OF PRODUCT
•
VP PRODUCT
•
ENTERPRISE SAAS · FINTECH · HEALTHCARE PAYER · AI-AUGMENTED WORKFLOW
Professional Background

Career timeline.

2015 SemiTorr Group — $3.5M free cashflow gain
2016 Kaufman Hall Associates — healthcare EPM, 60% fewer rejected features
2017 NowCFO — 4 ERP implementations, on time and on budget
2019 Fresenius Medical Care — $5M annual savings, 3,000+ clinics
2021 DISH Network — 30% build lead-time reduction
2023 Weifield / Nutrien / Delta Dental — UX, BI, claims operations
2025 Next Level Studio — Head of Product, current role
Now Open to Director of Product Management opportunities

I work at the seam between operations, engineering, and stakeholders — enterprise systems where product decisions carry real financial and regulatory weight, and "cheap and shippable" has to coexist with "mission-critical."

As Head of Product at Next Level Studio, I run strategy, design, and development across SaaS products and managed services, including hands-on ownership of AWS architecture. I built the consulting-to-product pipeline that cut R&D expense 80%, an AI-prototyping approach that fast-tracks go-to-market inside three months, and the affiliate-integration strategy behind our recurring-revenue growth.

Before that: clinical systems at Fresenius, claims and clinical operations at Delta Dental of Colorado, healthcare EPM at Kaufman Hall, ERP delivery at NowCFO. MBA in Accounting & MIS, BS in Accounting & Mathematics, CSPO + CSM certified.

Installed Modules

Nine competencies, always running.

Each module recurs across the casework below.

MOD-01active

Product Strategy & Roadmap

Multi-year roadmaps decomposed into sprint-ready increments; wave sequencing that de-risks the hard work.

MOD-02active

Agentic AI Product Design

Confidence-tiered auto-actions, learning loops, human-in-the-loop review, full auditability.

MOD-03active

Technical Product Ownership

Data models, API contracts, IAM policy, infrastructure — specified directly with engineering.

MOD-04active

Stakeholder Management

CFO briefings, SME workshops, architecture reviews, offshore teams — one source of truth.

MOD-05active

Discovery & UAT Leadership

Current-state mapping, unit-test-level acceptance criteria — 60% fewer rejected features.

MOD-06active

Financial & Cost Modelling

Options-considered analysis with benchmarked cost estimates on every proposal.

MOD-07active

Enterprise Integration Strategy

Bank-grade formats, ERP-to-ERP sync, credit/risk services — audit and reconciliation built in.

White paper: bank API integration →
MOD-08active

Cloud & DR Architecture

Hands-on AWS — EBS+S3, Object Lock, cross-region replication, live fire-drill validation.

White paper: AWS resilience →
MOD-09active

Scrum Framework & Backlog Discipline

CSPO+CSM. Whole dev team on Scrum within 3 months; refinement patterns behind a 73% code-churn reduction.

Casework

Nine engagements, deployed.

Anonymized for NDA and security. Panels are original reconstructions — not client screen captures. Featured work leads; filter by theme, and open any white paper from its case.

CASE-01Flagship ERP — Product Ownership & Scrum Transformation
73% less code churn

Fortune-500 maritime services group

Since May 2025 · six-module operational finance ERP
Principal product owner for a 150+ screen platform — accounts payable, disbursement accounting, revenue processing, port-call management, vendor operations — and the lead who moved the entire development team onto Scrum.
Director-level proof point — changed how the team works, not just what it ships: the entire development team adopted Scrum and held to it consistently within three months, and code churn fell 73%. The operating model — standardized story format, weekly refinement, monthly governance — was the deliverable.
73%
code churn reduction
3 mo
to team-wide Scrum
154
items / 12mo
Disbursement · AP #4471synced
Code churn · trailing−73%
Revenue proc · sprint 41154 shipped
Scrum adoption · dev teamfull team · 3 mo
Vendor ops · refinementweekly
Backlog governancemonthly
CASE-03Agentic AI Product Suite — Operational Queue
3–4× throughput target

Enterprise operations queue overhaul

7-feature suite · 2,000+ row queue
Multimodal document scanning, confidence-tiered auto-action, one-click bulk execution, human-in-the-loop review, learning loop back into the confidence model.
Director-level proof point — sequenced Wave 1 as pure UI wins before AI touched production. AI depth arrived Waves 3–4, once audit trails existed — risk-managed adoption.
7
features specced
3–4×
throughput target
14
sprint sequencing
Invoice #8834
auto
Invoice #8835
auto
Invoice #8836
expert review
Invoice #8837
expert review
CASE-04Global Bank Payment Integration
ISO 20022 XML v3

Top-tier global bank — LATAM subsidiary

20-month engagement · 3 payment routes
Product ownership pushing vendor payment files from the client ERP via SFTP — three payment routes, three distinct XML formats.
Director-level proof point — negotiated the XML template with the bank directly, built a validation gate that confirms every required banking field before a file is generated — errors surface immediately, never silently — and aligned a parallel effort early to keep approvals consistent.
3
payment types
ISO 20022
XML v3
20mo
engagement
Book-to-book transferpass
Domestic same-currencypass
Cross-border cross-currencyfield-gated
Pre-flight: SWIFT/BIC · ISO country · cityenforced
CASE-05Four-Portal Multi-Stakeholder SaaS
12-section roadmap

Port-agency SaaS · 4 distinct audiences

Discovery to productization roadmap
~40 screens and ~120 sub-flows prototyped to click-through fidelity for vendor billing, principal A/P, ship captains, and internal ops.
Director-level proof point — the 12-section productization roadmap — auth, tenancy, RBAC, required integrations, SOC 2 readiness, three costed staffing scenarios. The artifact a board funds a bet with.
4
audiences
~40
screens
~120
sub-flows
VENDOR BILLING
PRINCIPAL A/P
CAPTAIN PORTAL
INTERNAL OPS
Roadmap coverage12 sect.
CASE-06Legacy AS/400 Replacement
discovery + prototype

Trans-Pacific liner-shipping principal

Vessel & voyage · AMS/CBP filing · ERP integration
Full-scope discovery to replace a green-screen AS/400 platform across nine modules — sailing schedule, Bill of Lading, vessel close, equipment & detention.
Director-level proof point — modeled three staffing scenarios with delivery ranges and cost bands, and mapped the CBP AMS certification window (8–14 weeks external) up front — the planning input a modernization bet depends on.
60+
features scoped
9
modules mapped
~760
story pts est.
> VSL/VOY MENU
> SEL OPTN: _
> F3=EXIT F12=BACK
→
Vessel & Voyagemodernized
AMS/CBP filing8–14wk window
CASE-07Multi-Currency Fuel Cost Accounting
~70% faster invoicing

Downstream Jet-A fuel supplier

Legacy ERP bridge · daily FOREX · SAE-to-metric conversion
Designed a secured reconciliation tool, connected read-only over ODBC to an end-of-life fuel ERP and Dynamics GP 2013, that ingests daily FOREX rates and produces AR-ready invoice worksheets in any currency and unit of measure.
Director-level proof point — delivered enterprise-grade multi-currency capability without touching end-of-life systems — read-only integration, a dated and sourced rate for every invoice, and ERP modernization deferred rather than forced.
~70%
invoice prep time (est.)
2
legacy ERPs bridged
0
unsupported ERP customizations
Jet-A delivery · USD / US galsynced
EOD FOREX rate · EURlogged
Unit conversion · gal → Lapplied
AR reconciliation worksheetExcel export
CASE-08Inventory Rationalization (EOQ)
$3.5M+ excess identified

Industrial piping distributor

Pareto classification · SKU-level EOQ · GMROI and CCC constraints
Classified the full SKU catalog with ABC/Pareto analysis, then built an interactive EOQ workbook for A and B-tier SKUs, anchored to minimum GMROI thresholds and Cash Conversion Cycle targets.
Director-level proof point — turned inventory into a financial decision — Pareto tiering showed 78% of excess sat in C-tier SKUs, and GMROI and cash-conversion floors gave buyers a rule leadership could act on.
$3.5M+
excess identified
78%
of excess in C-tier
A-tier
reorder params set
A-tier · ~80% of margin
EOQ set
C-tier · <5% of margin
liquidation list
GMROI floorenforced
Excess inventory at cost$3.5M+
CASE-09Agricultural ERP Infrastructure
$7K · lender-financed

Family farm in crop transition

ECC memory · RAID-1 · tested off-site backup · future ERP pathway
Replaced a failing consumer desktop hosting the farm's ERP with a commercial-grade, ECC and RAID-1 server, migrated with integrity verification, and documented for a non-technical audience.
Director-level proof point — scoped the work to the real failure modes inside a $7,000 ceiling, financed it to match harvest cash flow, and sized the platform so the next ERP migration needs no new hardware.
$7,000
total budget
ECC + RAID-1
server platform
0
repeat hardware spend
ECC memoryinstalled
RAID-1 mirrorhealthy
Off-site backuprestore tested
Future ERP migrationpath ready
Additional engagements

Vendor Invoice Three-Way Match Automation

Enterprise A/P transformation — confidence-tiered auto-accept, 7-feature package.

Payment Systems Modernization

ERP ↔ accounting sync — ~70% touch-time reduction for a marine-services accounting platform.

Credit Bureau API Integration

Vendor risk scoring — consent capture built to survive regulatory audit.

Published Thinking

White papers.

Six architecture, integration, and analytics case studies behind the work above — decisions, trade-offs, numbers, and what was learned. Details are generalized to protect client confidentiality.

PAPER-01 · CASE-02 · FEATUREDAWS resilience

Resilience on AWS: DR, Immutable Backup & Portable Recovery

Fire-drilled runbooks, a ransomware-resistant hybrid design, a 24-hour deadline build, and Disk2vhd bootable images synced to a NAS — one program, one decision trail.

Read paper →
PAPER-02 · CASE-04bank integration

Virtual Card Payments API Integration — Case Study

A product-led, API-native integration with a top-5 US bank: OAuth 2.0, mutual TLS, and live issuance in roughly one-third of the alternative runway.

Read paper →
PAPER-03 · CASE-05embedded accounting

Disbursement & Principal Accounting via QuickBooks API

An auditable accounting backend inside a port agency platform — role-based controls, dimension mapping, and bidirectional sync, with no custom ledger built.

Read paper →
PAPER-04 · CASE-07multi-currency

Multi-Currency Fuel Cost Accounting for Jet-A Operations

A read-only ODBC reconciliation layer that added daily FOREX rates and unit conversion to end-of-life ERPs — an estimated 70% faster invoicing.

Read paper →
PAPER-05 · CASE-08inventory analytics

Inventory Rationalization in Industrial Distribution

Pareto classification plus a SKU-level EOQ model anchored to GMROI and cash-conversion targets — $3.5M+ of excess stock identified.

Read paper →
PAPER-06 · CASE-09infrastructure

Agricultural ERP Infrastructure Modernization

A $7,000, lender-financed server upgrade that protected a family farm's records and left room for a future ERP migration.

Read paper →
Prior Enterprise Impact

Historical readouts.

Selected results from the decade prior. Full detail on request.

Fresenius Medical Care
$5M annual savings — clinical systems redesign, 3,000+ clinics
2019–2021
Delta Dental of Colorado
90% reduction in claims reporting time
2023–2025
Kaufman Hall Associates
60% fewer rejected healthcare EPM features
2016–2017
DISH Network
30% cellular-network build lead-time reduction
2021–2022
NowCFO
4 ERP implementations on time and on budget
2017–2020
Weifield Group
40% UX satisfaction lift + 60% ops cost reduction
2023
Nutrien
108 sales dashboards streamlined to 19
2022
SemiTorr Group
$3.5M free cashflow gain — inventory system
2015–2016
Operating Protocol

Four stages, every engagement.

STAGE 01

Discovery

Ground truth beats assumption — SME workshops, current-state mapping, ticket data, prototype-driven feedback loops.

STAGE 02

Write it Down

The user story is the contract — stakeholder story, technical requirements, test criteria, same standard every time.

STAGE 03

Sequence for Risk

Ship the pure-win UI first; layer AI where it earns its cost, with confidence caps and reversal paths.

STAGE 04

Measure & Correct

Success metrics set before build, decisions requested explicitly, post-launch review scheduled.

Open a Channel

Let's talk about the fit.

Open to Director of Product Management, Head of Product, and VP Product roles in enterprise SaaS, financial services, healthcare payer, and AI-augmented workflow. Also open to business-systems product leadership in light or heavy industrial manufacturing, oil & gas, and aviation — industries where the specific vertical matters less than the mandate: owning the ERP, finance, or operations platform the business runs on.

Currently Exploring
  • Director of Product Managemententerprise SaaS
  • Head of ProductSaaS · fintech · payer
  • VP Productearly-growth / scale-up
  • Fractional leadership2–3 day/week
MBA · Accounting & MIS · Keller Graduate School
BS · Accounting & Mathematics · Western Oregon University
CSPO · CSM — Scrum Alliance
Architecture Case Study · Disaster Recovery · Backup · AWS

Resilience on AWS: From Fire-Drilled Runbooks to Immutable, Portable Recovery

How three overlapping efforts — live disaster-recovery drills, a ransomware-resistant backup design, and a deadline-driven AWS-native build — became one program, and ended with bootable images that can restore anywhere.

By Chris Bullard~11 min readAWS · DR · Immutability · VHDX
≤15 min
RPO via the object-storage path (≤4 hrs via snapshots)
≤30 min
RTO target, verified by drill
−$60 to −$260
estimated monthly net change versus the legacy backup servers

Executive summary

Most disaster-recovery plans are written once, reviewed occasionally, and never exercised end to end until they are needed for real. This paper follows one AWS-hosted enterprise application through the full arc of making recovery real: a three-scenario runbook hardened by live fire drills; a drill-exposed dependency on unmanaged legacy backup servers; a four-option architecture decision that produced a ransomware-resistant hybrid design; a deadline-driven, AWS-native build that proved the first backup inside 24 hours; and a final layer — bootable VHDX images created with Disk2vhd (installed on the Application, EDI, and SQL servers so it rides along in every snapshot), hosted in S3 and synced to a Synology NAS — so recovery does not depend on AWS being reachable at all.

The throughline: the architecturally right answer is not always the immediately shippable one. The skill is knowing which a given moment calls for, documenting the gap honestly, and building the bridge back to the better answer.

1. Three scenarios, one runbook

Recovery planning was organized around three distinct failures, each with its own procedure and owner.

ScenarioWhat has happenedRecovery approach
A — Data corruptionServers are healthy, but a database is corrupted or overwritten.Restore from the latest full backup plus transaction logs, to a point in time.
B — Total server lossAn application, database, or integration server is unrecoverable.Convert the latest snapshot to a bootable image, launch a replacement, reattach storage, cut traffic over.
C — Regional outageThe entire primary region is unavailable.Same as B, from the cross-region snapshot copy.

For a multi-tier application the pattern repeats in sequence — database first, then application tier, then integration components — with each tier's connection strings updated before traffic is cut over.

2. What the fire drills caught that design review missed

The runbook went through five documented revisions. Each substantive addition came from something a live drill exposed:

  • An undocumented backup dependency. Snapshots protected every boot volume, but the SQL backup files lived on legacy file servers outside that policy. The database server restored cleanly; the transaction-log chain did not, because the backup servers were unavailable in the recovered network context. This finding drove everything that follows.
  • Configuration baked into images. Legacy mapped drives from a pre-cloud architecture appeared as broken mounts in the recovered environment. The runbook now documents how to tell a stale mapping from a genuinely failed storage mount, so no recovery time is lost chasing the wrong one.
  • Storage policy defaults. Freshly attached recovery volumes came back "offline" under a default OS policy — a one-click fix once known, a hard stop mid-incident if not.
  • Startup-order dependencies. The application threw a misleading file-path error if started before its volumes were mounted; the runbook now carries an explicit order-of-operations callout.
  • Drill-only network edge cases. A missing HTTPS binding on the temporary hostname and default-closed diagnostic-ping rules appear in every drill but not in a real cutover, so they earned their own checklist.

Every finding was captured as a dated, versioned runbook addition tied to the test that surfaced it — turning the document into something that gets more trustworthy each time it is exercised.

3. Closing the backup gap: the architecture decision

The existing design had nightly full SQL backups and 30-minute log backups on legacy file servers reached by mapped drives, with snapshot coverage everywhere else. The exposures were concrete: no verified coverage of the backup servers, no air-gap or immutability (ransomware or a compromised credential could delete the database and both backup copies in one blast radius), and an unbounded worst-case RPO. A separate, earlier DR document also stated in writing that full AWS-account compromise was out of scope. Four options were weighed:

OptionStrengthTrade-off
A — Block-storage snapshots onlyFastest recovery; no new tooling.Same account/region blast radius — no true air-gap.
B — Object storage onlyHigh durability, object-lock immutability, cheap cross-region copies.Slower restore (download first); new IAM/CLI tooling.
C — Managed file servicePreserves drive-letter conventions.Meaningfully higher cost; a new service to learn.
D — Managed backup servicePolicy-driven; native cross-account support.New to the team; cost similar to C; added IAM complexity.

The recommendation: a hybrid

No single option covered the risk surface at reasonable cost, so the design combined A and B:

  • Primary path — fast recovery. A dedicated backup volume on the database server, added to the snapshot policy on a four-hour cadence with cross-region copies, restored with the same documented workflow as every other volume. Target: minutes, not hours.
  • Secondary path — ransomware-resistant object storage. A bucket with versioning and compliance-mode object lock, populated by a sync job every fifteen minutes. Even an attacker with full account credentials cannot destroy the copy within the lock period.
  • Least privilege and monitoring. The sync identity can write and list on one bucket — no delete, no ability to shorten the lock — and an alarm fires if no new file arrives within 24 hours, catching silent failures.
Why hybrid

The block-storage path handles the common failures in minutes. The object-storage path exists for the ones it cannot — account compromise, ransomware, a deleted snapshot policy. Together they cost less than either managed alternative and use only services the team already ran daily.

4. Shipping under deadline: three paths, one decision trail

A hard deadline arrived mid-engagement: one manual backup proven within 24 hours and every target covered by the next business day, plus a plain-S3 copy that could be mounted as a drive letter elsewhere. The requirements also called for GUI-taught backup and restore any team member could run, automation that could grow from the manual process, and a capacity alert. Three paths were documented in sequence:

PathWhat it isOutcome
A — Cross-account vault lockA second AWS account holding a compliance-mode WORM vault, fed by a copy action.The textbook answer, but a half-day to full day of one-time account, KMS, and trust setup — setup time, not the concept, was the blocker.
B — Third-party vendorSeven vendors scored on the same requirements; a free-tier pilot of one.Set aside after two findings: the free tier lacked granular point-in-time SQL restore, and the backup server itself was a new machine to patch and secure.
C — AWS-nativeAWS Backup recovery points plus a plain S3 copy synced from each live server.Shipped using only existing infrastructure and permissions.

The original ask for backups "air-gapped… outside of AWS" was genuinely ambiguous — logically separated from an account compromise, or literally non-AWS. Rather than guess, the proposal recorded the ambiguity, recommended the first reading with reasoning, and scoped the second as a full fallback.

Vault type: ship the pragmatic choice, document the better one

DimensionStandard vaultLogically air-gapped vault
Survives account compromise?No.Yes — compliance-mode lock, recovery via a separate account.
Test points deletable?Yes.No — locked for the full retention period.
CostBaseline (~$0.05/GB-month).~15% premium; EBS free tier does not apply.
Same-account restore claritySimple and well documented.Documentation centers on the cross-account flow — a risk on deadline day.

The standard vault shipped for the deadline — full freedom to delete and retry while proving the mechanism — and the air-gapped vault was flagged as the leading candidate for the automation phase.

The pivot: browser upload to direct CLI

The first plain-S3 design restored a snapshot to a temporary instance and uploaded through the S3 console. It was rebuilt mid-engagement when its limit surfaced: the browser uploader tops out near 160 GB per session, and every real target was larger. The AWS CLI's aws s3 sync uses multipart upload with no such ceiling, runs directly on each live server (preferably under an instance IAM role so no key sits on disk), and is idempotent — the commands that proved the concept are the seed of the automation.

aws s3 ls s3://<company>-backups-<account-id>-<region>/

aws s3 sync "C:\" s3://<company>-backups-<account-id>-<region>/<Server>/OS-C-Drive/ `
  --exclude "pagefile.sys" --exclude "hiberfil.sys" --exclude "swapfile.sys" `
  --exclude "System Volume Information\*" --storage-class STANDARD
{ "Version": "2012-10-17",
  "Statement": [
    { "Effect": "Allow", "Action": ["s3:ListBucket"], "Resource": "arn:aws:s3:::<bucket>" },
    { "Effect": "Allow", "Action": ["s3:PutObject", "s3:GetObject"], "Resource": "arn:aws:s3:::<bucket>/*" } ] }

Rollout was checklist-driven across six targets, starting with the one that had zero existing coverage. Two volumes already snapshotted were deliberately copied to S3 as well — protection against AWS itself being unreachable, not redundant effort. Nested mount points were synced as explicit jobs with matching excludes so nothing uploaded twice.

5. Portable, bootable recovery: Disk2vhd images on S3, synced to a NAS

File-level copies and AWS-resident recovery points protect against most failures, but a file-level sync is not a bootable system, and every AWS-hosted copy still assumes AWS is reachable. The final layer closes that: bootable VHDX images of the server backups, created with Sysinternals Disk2vhd, hosted in a dedicated S3 bucket and pulled down to a Synology NAS, so a server can be brought up on ordinary Hyper-V hardware without AWS.

  1. Install Disk2vhd on the three servers — Application, EDI, and SQL. Extract the tool to the same fixed folder on each server's OS volume (for example C:\Tools\Disk2vhd), at the same version everywhere, and record the version in the runbook. Because every server's boot volume is already covered by the daily snapshot policy with cross-region copies, the tool travels inside every snapshot: any instance recovered from a snapshot already has it, with no download or internet access needed mid-incident. A tool installed in advance, in the same place on every server, is one fewer thing to find during a recovery.
  2. Pick the capture source. Either capture live on the server — Disk2vhd works from a Volume Shadow Copy, so the server stays online — or launch an instance from the air-gapped recovery point and capture there, where the tool is already present. In both cases production volumes are never modified and the locked original stays intact.
  3. Prepare a local landing volume. Write the image to a separate volume with enough free space for the output — never to a volume being captured. Keep that landing volume out of the daily snapshot policy, or clear it after upload, so multi-gigabyte images don't inflate every snapshot.
  4. Capture with Disk2vhd. Select every volume needed to boot — the system, boot, and recovery or EFI partitions that Disk2vhd lists, plus the data volumes the server needs — choose the VHDX format, and leave Volume Shadow Copy enabled. Run it off-hours; capture adds read load. Be deliberate on the SQL server about which volumes belong in the image and which are already covered by the log-backup and sync jobs. The command-line form is equivalent to the GUI (check the options for the installed version):
    C:\Tools\Disk2vhd\disk2vhd.exe C: D: F:\VHDX\<Server>-<yyyymmdd>.vhdx
  5. Boot-test the image in Hyper-V. Match the VM generation to the source firmware (BIOS → Generation 1, UEFI → Generation 2), boot with networking disconnected, and confirm services start. Record any first-boot adjustments — for instance, reconfiguring the network adapter or ignoring stale drive mappings (see the fire-drill findings above) — in the runbook.
  6. Upload to a dedicated S3 bucket with multipart upload, one prefix per server and date, with versioning and encryption on and a lifecycle rule keeping only the most recent images. Then clear the local copy from the landing volume:
    aws s3 cp F:\VHDX\<Server>-<yyyymmdd>.vhdx `
      s3://<company>-vhdx-<account-id>-<region>/<Server>/ --storage-class STANDARD
  7. Sync the bucket to the Synology NAS. Configure a Cloud Sync task for the bucket and prefix, set to download remote changes only, on a schedule. Give the NAS its own read-only identity — list and get, nothing else:
    { "Version": "2012-10-17",
      "Statement": [
        { "Effect": "Allow", "Action": ["s3:ListBucket"], "Resource": "arn:aws:s3:::<vhdx-bucket>" },
        { "Effect": "Allow", "Action": ["s3:GetObject"],  "Resource": "arn:aws:s3:::<vhdx-bucket>/*" } ] }
  8. Verify on the NAS side. Compare file sizes and checksums against the S3 object, and periodically boot-test the NAS copy itself, not just the original capture.
  9. Tear down. If a recovered instance was used for capture, delete it and its volumes, and deactivate any one-time access keys — enumerated as a numbered step so nothing quietly accrues cost.
Trade-offs, stated plainly

A VHDX is a point-in-time image, so it complements — not replaces — the 15-minute object-storage path and the transaction-log chain for point-in-time database recovery. Pulling images to a NAS incurs S3 data-transfer-out charges, and large images take time to sync, so cadence should follow how much change the business can tolerate in a bare-metal recovery. Drivers and first-boot behavior differ on non-AWS hardware, which is exactly why the boot test and the periodic NAS boot test are part of the procedure.

6. Cost model

For a 50 GiB daily delta and 500 GiB steady-state footprint, the hybrid design's incremental cost was estimated at $60–$80 per month, more than offset by retiring two legacy backup servers.

ComponentEstimated monthly cost
Block-storage backup volume + snapshots$45–$50
Object storage (active + lifecycle tiers)$5–$12
Cross-region replication$10–$15
Monitoring & alerting< $1
Total new spend$60–$80
Offset — retire legacy backup servers−$120 to −$320
Net monthly change−$60 to −$260 (savings)

The deadline-phase AWS-native build used no new subscription: AWS Backup storage (~$0.05/GB-month) plus plain S3 (~$0.023/GB-month) came to roughly $22–$58 per month across all six targets. VHDX images add S3 storage for the retained images and data-transfer-out for NAS syncs; both scale with image size and sync cadence.

7. Risk management

RiskMitigation
Silent sync failures24-hour stale-backup alarm.
Partial uploads on large filesResumable, idempotent sync with retry logic.
Wrong immutability periodConfirm with the compliance owner first — it can be extended, never shortened.
Cost growthBilling alarm at 150% of estimate; lifecycle rules on images.
Over-broad permissionsPer-credential scoping — single bucket, minimal actions, peer-reviewed.
Image that will not boot off-AWSBoot-test at conversion and periodically from the NAS copy.

8. Outcomes

  • RPO improved from undefined to ≤15 minutes (object storage) and ≤4 hours (snapshots); RTO target ≤30 minutes, verified by drill.
  • Deadline met: first backup proven in 24 hours, all six targets by day two, zero new subscriptions or vendors.
  • Zero remaining dependency on unmonitored legacy backup infrastructure; every backup file protected by tested immutability.
  • A recovery path that no longer requires AWS to be reachable.
  • A handed-off roadmap rather than a closed ticket: automate the backup schedule, automate the S3 copy, evaluate the air-gapped vault properly, and set the VHDX cadence.
  • Two audiences, two documents: the full runbook for decision-makers, and a one-page-per-server cheat sheet of pure commands for whoever executes at 6 a.m.

9. Lessons learned

  • "We have snapshots" and "we have tested recovery" are different claims. Only a live drill proves the second.
  • Map every dependency recovery assumes, especially infrastructure that predates the current architecture.
  • State ambiguity instead of guessing, and version every runbook change against the test that prompted it.
  • Interactive CLI tools and PowerShell ISE don't mix. ISE's pseudo-console is unreliable for interactive native executables; use plain PowerShell or Windows Terminal.
  • An "access denied" can be a wrong-principal problem. The inline policy had been attached to the operator's console user rather than the service account the servers actually used.
  • Separate scenarios explicitly — data-level, single-server, regional, and AWS-unreachable need different responses and different owners.

Chris Bullard is a Product Owner and technologist with 13+ years of experience spanning Agile product management, business systems analysis, and hands-on cloud infrastructure design. Client, account, and resource identifiers have been removed or replaced with placeholders; details have been generalized to protect confidential information.

← All white papersPAPER-02 · Supports CASE-04
Case Study · Product-Led API Integration

Wells Fargo Virtual Card Payments API Integration

Replacing an intermediate SFTP path with a direct, API-native integration — from the kickoff go/no-go decision through live production card issuance.

By Chris Bullard · Product Manager~6 min readOAuth 2.0 · mTLS · REST
~1/3
of the Phase I runway to reach the target architecture
Apr 8, 2026
first live virtual cards issued and settling
~20
fields mapped to the bank's upload template

Executive summary

Between November 2025 and April 2026, I led the product-management effort on an enterprise-scale integration of a client's proprietary ERP platform with the Wells Fargo Virtual Card Payments (WVCP) API. The engagement replaced an intermediate SFTP path with a direct API-native solution, delivered live production virtual-card issuance on Wells Fargo's rails, and produced a repeatable integration pattern the client can extend to additional payment workflows.

1. Project snapshot

ProductWells Fargo Virtual Card Payments (WVCP) via the Wells Fargo API Gateway
Client industryEnterprise services — vendor-payment-heavy operational workflows
Engagement typeProduct-management-led API integration into a proprietary ERP platform
My roleProduct Manager — owned scope, timeline, cross-team coordination, and stakeholder alignment
TimelineKickoff Nov 2025 → DEV gateway integration Jan 2026 → production cutover Mar 2026 → first live cards Apr 8, 2026 → enhancement cycle through Jul 2026
OutcomeLive virtual-card production issuance settling successfully; end users adopted the instant-issuance workflow immediately

2. My role and contributions

  • Owned the go / no-go decision between two integration paths — a Phase I SFTP path via the bank's payment-manager service (approximately 16 weeks) versus a Phase II direct API Gateway integration. Working with the bank's treasury-management lead, I recommended and drove the decision to skip Phase I and proceed directly to Phase II, delivering the target end-state architecture in roughly one-third of the runway.
  • Scheduled and coordinated both cutovers — the January 2026 first release against the developer gateway, and the March 2026 production cutover once the bank confirmed Production API Gateway readiness.
  • Led cross-team resolution of the April 7 mutual-TLS certificate validation on the first production test. The client certificate was correctly installed on the IIS layer, but the endpoint's client-certificate validation called for a joint working session; I coordinated confirmation on both sides of the certificate chain, which enabled the April 8 live-card go-live.
  • Owned the post-launch enhancement queue: OAuth 2.0 token refresh cadence tuned to a 30-day effective end date (less refresh chatter); field-mapping refinements (PO number routed into the invoice-number field, vendor name auto-truncated to the bank's 40-character limit, corrected ZIP-code column mapping); and removal of a manual A/P approval gate no longer needed for the virtual-card path.
  • Extended the payment export to support both CSV and XML over the June–July 2026 cycle, meeting the operations team's downstream automation requirements.
  • Maintained the product-board cadence so defect fixes and enhancement requests ship on a predictable release cycle.

3. Project timeline

DateMilestoneNotes
Nov 2025Kickoff with the bankWalked through Phase I vs. Phase II; decision to proceed directly with the API Gateway.
Dec 2025 – Jan 2026Development on the developer gatewayPostman collection built for the WVCP endpoints; sandbox testing against all published test scenarios.
Jan 20, 2026First release cutover — DEV gatewayIntegration live on the developer gateway pending production credentials; configuration externalized from source control for secure rotation.
Feb 24, 2026Production readiness confirmedBank confirmed Production API Gateway readiness for early March; cutover planned accordingly.
Mar 2026Production cutoverProduction credentials received; application moved from sandbox to production; originating-account alias updated.
Apr 7, 2026Production mTLS working sessionJoint session with the bank's team on client-certificate validation.
Apr 8, 2026First live cards issuedCertificate chain confirmed; live virtual cards issued and settling.
Apr 8–10, 2026OAuth + business-rule refinementsToken cadence extended; PO routed to invoice field; vendor-name truncation; approval gate removed.
Jun 24 – Jul 10, 2026Export-path enhancementsCSV and XML support; ZIP-code mapping corrected; batch-generation UI refined; email routing verified.
OngoingEnhancement and support cadenceTriaged on a predictable product-board cycle.

4. Technical approach (architecture at a high level)

Described at an architectural level without client-specific code, configuration paths, or internal identifiers.

  • OAuth 2.0 client-credentials flow for access-token retrieval, with token caching tuned to a 30-day effective end date to minimize refresh chatter under production load.
  • Mutual TLS with a client-side certificate provisioned via CSR, keyed by the bank, and installed on the client's IIS-based application server; the endpoint enforces both server and client certificate validation.
  • REST integration against the Virtual Card Payments API (v1): create-virtual-card as the primary operation, with supporting endpoints for status checks and cancellation.
  • Externalized configuration kept out of source control, so credentials rotate independently of application deployments.
  • Full test-scenario coverage across the bank's published scenarios: duplicate payment issued, unable to cancel a virtual card payment, virtual card in "Authorized" status, and virtual card in "Declined" status.
  • Field mapping to the bank's upload template — about 20 fields including originating-account alias, amount, currency, payment date, recipient details, invoice ID, PO number, and discount fields — structured so no downstream manipulation is needed by operations.

5. Outcomes

  • Live virtual-card issuance since April 8, 2026; end users adopted the instant-issuance workflow immediately.
  • Target end-state architecture delivered in approximately one-third of the estimated Phase I timeline.
  • OAuth 2.0 token caching and mTLS configuration hardened for production load, with proven performance under sustained payment-batch generation.
  • A repeatable pattern the client can extend to additional payment products (for example, local CCD payments) using the same authentication and configuration framework.
  • Post-launch queue running on a predictable cadence, shipping fixes and enhancements without disrupting the production issuance flow.

6. Skills demonstrated

  • Product management of a multi-quarter enterprise integration with a top-5 US bank as the counterparty.
  • Executive-level coordination with the bank's payables-consulting and account-management team, from kickoff decision framing through go-live and post-launch cadence.
  • API integration architecture — OAuth 2.0, mutual TLS, REST endpoints, and secure credential management.
  • Cross-organizational problem-solving, coordinating engineering teams on both sides of a certificate-chain working session.
  • Field-mapping design and stakeholder alignment — translating operations' business rules into the bank's template requirements.
  • Ongoing enhancement-queue management, keeping the integration current with evolving business requirements and the bank's API guidance.

Bank counterpart references are available on request. Client-specific details, proprietary code, internal identifiers, and confidential business information have been redacted. Descriptions reflect the state of the integration at the time of the project and are provided for professional reference; consult the bank's current API documentation for authoritative implementation guidance.

← All white papersPAPER-03 · Supports CASE-05
White Paper · Maritime / Port Agency Software

Disbursement and Principal Accounting via QuickBooks API Integration

Building auditable financial infrastructure into a port agency software platform — without building an accounting engine from scratch.

By Chris Bullard5 min readQuickBooks API · RBAC · Sync
3
role tiers gating every posted transaction
4
key sync events automated end to end
2-way
automatic synchronization with error alerting

Executive summary

A software startup developing a streamlined port agency management platform needed to incorporate Disbursement Account (DA) and Principal Accounting functions — the financial core of port agency operations — directly into their product without building a full accounting engine from scratch. I designed and implemented a bidirectional integration with Intuit QuickBooks via API, combined with a role-based security model, a financial dimension mapping layer, and an automatic synchronization architecture that kept transactional data current across both systems without manual intervention. The result was a fully functional, auditable accounting backend embedded within the startup's product at a fraction of the cost and timeline of a custom-built ledger.

The problem

Port agency financial operations

Port agency operations are financially complex in ways generic business accounting software does not anticipate. A port agent acts simultaneously as a principal's financial representative — collecting and disbursing funds on behalf of a vessel owner or charterer — and as a service provider billing for its own agency fees. The Disbursement Account is the central instrument: the agent receives a cash advance from the principal, pays all port costs on the vessel's behalf (port dues, pilotage, towage, stevedoring, fresh water, provisions), and renders a detailed Final Disbursement Account (FDA) reconciling every disbursement against the advance.

Principal Accounting is the parallel obligation to account for all funds received and disbursed on behalf of each principal as a separate fiduciary ledger, distinct from the agency's own revenue and expense accounts. Many jurisdictions and principal relationships require these funds to be held in segregated accounts and reported in formats prescribed by industry standards (for example, BIMCO DA-Desk format or principal-specific requirements).

The startup's gap

The platform handled port call scheduling, service ordering, document management, and vendor communication effectively, but had no accounting module. DA preparation was done manually in spreadsheets outside the platform, breaking the workflow and creating reconciliation overhead. Investors and early customers required a credible accounting solution before the product could be considered enterprise-ready, and building a full double-entry engine was outside the startup's timeline and budget.

The solution

QuickBooks as the accounting engine

I recommended Intuit QuickBooks Online as the embedded accounting backend, accessed via the QuickBooks Accounting API (OAuth 2.0 authenticated). That gave the startup an auditable, GAAP-compliant double-entry ledger, a mature vendor payment and receivables engine, bank reconciliation, and multi-currency support — without the multi-year investment of building equivalent functionality natively. The integration was invisible to end users: all accounting transactions were initiated, posted, and synchronized automatically as workflow events occurred within the product.

Role-based security model

A role-based access control layer governed who could initiate, approve, and post accounting transactions:

  • Operational roles — port call coordinators who enter disbursement line items.
  • Supervisory roles — agency managers who approve and release DAs for posting.
  • Financial roles — principals and their auditors with read-only ledger reports.

No transaction was posted to QuickBooks without passing through the appropriate approval tier, satisfying the internal-control expectations of both the agency operator and its principals.

Financial dimension mapping

Every transaction had to be attributable to a specific vessel, port call, principal, and cost category. A mapping layer translated the platform's native data model (port call ID, vessel IMO number, principal code, service category) into QuickBooks' class and customer/job hierarchy. Every posted transaction therefore carried the metadata needed for per-vessel DAs, per-principal ledger summaries, and cross-call cost analytics — without configuring QuickBooks with any port-agency-specific knowledge.

Bidirectional automatic synchronization

The synchronization architecture handled outbound posting (platform events triggering QuickBooks journal entries, invoices, and payments) and inbound reconciliation (bank-feed matches and payment confirmations updating port call records). Events were processed asynchronously via a queue, with retry logic and error alerting to prevent silent sync failures, and the sync log was surfaced in the platform's admin interface so managers could monitor status without opening QuickBooks.

Platform eventQuickBooks result
DA advance receiptPrincipal sends funds → customer payment plus liability entry.
Disbursement postingVendor invoice approved → bill created and coded to vessel and principal.
FDA finalizationDA closed → invoice to principal for the balance, or credit memo for overpayment.
Agency fee billingPort call completed → sales invoice generated for agency fees.

Treasury functions

The integration also covered treasury-adjacent needs: tracking advance balances per principal in real time, flagging port calls where disbursements approached or exceeded the advance received, and generating proforma DA estimates before vessel arrival. These were driven by QuickBooks balance queries via API and surfaced on the platform dashboard, with no manual reconciliation between systems.

Key outcomes

  • Delivered a fully functional DA and Principal Accounting backend embedded within the platform, without building a custom accounting engine.
  • Automated all transaction posting — advance receipts, disbursement bills, FDA invoices, and agency fee billings — eliminating manual QuickBooks entry for agency operators.
  • Implemented role-based controls satisfying the internal-control requirements of enterprise principals and their auditors.
  • Financial dimension mapping made every transaction attributable to a vessel, port call, and principal — enabling per-call profitability reporting from day one.
  • Bidirectional sync with error logging and alerting eliminated the silent reconciliation failures that had undermined trust in prior manual processes.

Conclusion

Integrating with an established accounting platform rather than building natively was the right architectural choice for this startup: it shipped a credible, auditable financial module within a realistic timeline and budget, while preserving the flexibility to move to a more purpose-built backend as the product matures. Designing the role security, dimension mapping, and sync architecture to be robust enough for enterprise principals yet transparent enough for small independent agencies gave the product financial infrastructure that can scale with its customer base without a rebuild.

Client identities are withheld to protect confidentiality.

← All white papersPAPER-02 · Supports CASE-07
White Paper · Oil & Gas / Aviation Fuel Supply

Multi-Currency Fuel Cost Accounting for Downstream Jet-A Operations

Bridging legacy ERP with real-time FOREX reconciliation.

By Chris Bullard5 min readFOREX · ODBC · Audit trail
~70%
estimated reduction in invoice prep time for international transactions
2–3 days
of manual month-end reconciliation addressed
2
legacy ERP systems bridged through read-only ODBC

Executive summary

A downstream supplier of Jet-A aviation fuel to commercial airline customers operated across international markets but lacked any systematic method for multi-currency cost accounting and sales invoicing. Their environment combined an end-of-life Pinnacle Fuelsmart ERP system with Microsoft Dynamics GP 2013, neither of which provided native support for daily foreign exchange (FOREX) rate retrieval or SAE-to-metric unit conversion at the transaction level. I designed and delivered a secured, ODBC-connected reconciliation tool that automated FOREX rate ingestion from a commercial financial data portal and produced AR-ready cost and invoice worksheets in any required currency and unit of measure.

The problem

Operational context

The client's business model required invoicing airline customers in multiple currencies — including USD, EUR, GBP, and various regional currencies — while internally tracking fuel procurement costs in USD. Jet-A is priced and traded in both SAE imperial units (U.S. gallons, cents-per-gallon) and metric equivalents (liters, metric tons), and airline contracts frequently specified one unit of measure while procurement was settled in another.

Pinnacle Fuelsmart, while purpose-built for fuel distribution, had reached end-of-life and no longer received vendor updates or currency-table maintenance. Dynamics GP 2013 served as the general ledger of record but was not configured for multi-currency sub-ledger transactions at the fuel-delivery level. The result was a manual, spreadsheet-driven process that was time-consuming, error-prone, and unauditable.

Specific gaps identified

  • No automated retrieval of daily FOREX rates into either ERP system.
  • No conversion layer between SAE (gallons, pounds) and metric (liters, kilograms, metric tons) at the invoice-line level.
  • Accounts Receivable staff manually sourced exchange rates from public web pages and applied them inconsistently across invoices.
  • No audit trail linking the exchange rate applied to an invoice to the rate in effect on the delivery date.
  • Month-end reconciliation between Fuelsmart delivery records and GP sub-ledger entries required 2–3 days of manual effort.

The solution

Architecture overview

I designed a secured, standalone reconciliation tool that connected to both ERP systems via ODBC and served as the authoritative conversion and rate-application layer for all international transactions. It was intentionally decoupled from both platforms to preserve system stability and avoid unsupported customizations to end-of-life software.

FOREX rate ingestion

The tool integrated with a commercial financial data portal through a secured API connection to retrieve end-of-day FOREX rates for all active billing currencies each business day. Rates were stored in a local audit table keyed to transaction date, giving a tamper-evident record for invoice disputes or regulatory review. The rate source, retrieval timestamp, and rate values were logged with each reconciliation run.

Unit conversion engine

A configurable conversion matrix handled all required SAE-to-metric translations — U.S. gallons to liters, pounds to kilograms, short tons to metric tons. Density and temperature correction factors from Jet-A measurement standards (ASTM D1655) were embedded as configurable parameters, so the AR team could apply gravity corrections where contract terms required them. Conversion factors were version-controlled, so historical invoices could be re-examined using the parameters in effect at delivery.

ODBC integration layer

Read-only ODBC connections to both Pinnacle Fuelsmart and Dynamics GP supplied delivery records, customer master data, contract currency designations, and GL coding strings. No write-back to either ERP occurred without explicit user confirmation, protecting both systems and satisfying the client's internal-controls requirements. All connections were authenticated and logged.

AR reconciliation worksheet

The tool produced a structured, date-range reconciliation worksheet for AR staff to review before approving invoices for posting. Each line showed the original transaction in USD and SAE units, the applied FOREX rate and its audit reference, the converted invoice amount in the billing currency, and the metric equivalent for contract-compliance documentation. The worksheet exported to Excel for the client's AR team and external auditors.

Key outcomes

  • Eliminated manual FOREX rate lookups, reducing invoice preparation time by an estimated 70% for international transactions.
  • Established a full audit trail linking each invoice to a dated, sourced exchange rate — satisfying internal controls and external audit requirements.
  • Removed SAE/metric conversion errors as a source of invoice disputes with airline customers.
  • Provided a documented, repeatable reconciliation process any trained AR staff member could execute without specialized ERP knowledge.
  • Enabled the client to defer costly ERP modernization while operating compliantly in international markets.

Conclusion

Legacy ERP environments are a permanent fixture in many capital-intensive industries. Rather than requiring an immediate and disruptive platform migration, a targeted integration approach delivered enterprise-grade multi-currency capability within the constraints of the existing technology stack. The reconciliation tool remained in production while the client evaluated long-term ERP replacement options, providing measurable operational value at a fraction of the cost of a full system upgrade.

Client identities are withheld to protect confidentiality.

← All white papersPAPER-05 · Supports CASE-08
White Paper · Industrial Distribution / Inventory Management

Inventory Rationalization in Industrial Distribution

An EOQ-based approach to eliminating excess stock in specialty piping supply.

By Chris Bullard5 min readEOQ · GMROI · Pareto
$3.5M+
excess inventory identified at cost
78%
of excess dollar value concentrated in C-tier SKUs
$875K–$980K
annual carrying-cost drag at an estimated 25–28%

Executive summary

A wholesale distributor of stainless steel industrial piping serving semiconductor fabrication plants and hospitals had accumulated over $3.5 million in excess inventory without a systematic method to identify, prioritize, or liquidate it. Operating on Epicor Prophet21, the distributor lacked an inventory optimization framework aligned to the financial realities of the business. I applied the Pareto Principle to classify the entire SKU population, then built an interactive Economic Order Quantity (EOQ) model at the SKU level, anchored to minimum Gross Margin Return on Inventory Investment (GMROI) thresholds and Cash Conversion Cycle (CCC) targets. The result was a data-driven rationalization roadmap that identified immediate liquidation candidates and established reorder parameters to prevent recurrence.

The problem

Industry and operational context

Stainless steel industrial piping for semiconductor fabrication and healthcare is a high-specification, relatively low-velocity category. Fabs require ultra-high-purity (UHP) tubing with strict surface-finish and material-traceability requirements; hospitals require sanitary-grade fittings compliant with ASME BPE standards. Both segments buy infrequently, in project quantities, with long lead times — characteristics that make standard replenishment models unreliable unless properly tuned.

The distributor had grown its SKU catalog organically, adding items for individual project bids without a matching discipline to remove slow-moving stock after the project ended. Prophet21 held no configured reorder points, min/max parameters, or GMROI-based purchasing constraints at the SKU level, so buyers replenished on experience and vendor minimums rather than demand data.

The scale of the opportunity

  • Total excess and obsolete inventory identified at cost: over $3.5 million.
  • Inventory carrying cost, estimated at 25–28% annually, represented a drag of $875,000–$980,000 per year on operating cash flow.
  • No SKU-level velocity or GMROI data was available in Prophet21 in a format accessible to purchasing staff.
  • The Cash Conversion Cycle had lengthened as slow-moving inventory consumed working capital that should have been cycling through higher-velocity items.

The solution

Phase 1 — Pareto classification of the SKU population

I extracted the full SKU-level transaction history from Prophet21 and applied an ABC/Pareto classification, ranking SKUs by trailing-twelve-month revenue contribution, gross margin dollars, and inventory turns.

TierShare of SKUsContribution
A-itemsTop 20%~80% of gross margin dollars
B-itemsNext 30%Mid-range contribution
C-itemsRemaining 50%< 5% of margin dollars

The analysis immediately showed where the problem lived: over 78% of the dollar value of excess stock sat in C-tier SKUs with minimal or zero revenue in the prior 24 months. That gave purchasing and management a clear, defensible prioritization framework for liquidation and write-down decisions.

Phase 2 — EOQ model at the SKU level

For active A and B-tier SKUs, I built an interactive EOQ model integrated with Prophet21 data exports. It calculated the optimal order quantity per SKU using the classical EOQ formula, adjusted for the distributor's actual holding-cost rate, average order-processing cost, and SKU-specific demand variability. Delivered as an interactive workbook, it let buyers run "what-if" scenarios — adjusting lead time, demand forecast, or vendor minimums — and see the effect on carrying cost and stockout risk immediately.

GMROI constraint

Each SKU's EOQ output was evaluated against a minimum GMROI threshold set collaboratively with management. SKUs whose EOQ produced a GMROI below the floor — meaning the inventory investment could not be justified by the margin the item generated — were flagged for renegotiated vendor terms, a price adjustment, or removal from the active catalog. The constraint stopped the model from recommending reorders on marginal items simply because demand existed.

Cash Conversion Cycle alignment

Reorder points and safety stock were also tested against the target Cash Conversion Cycle. Where supplier lead time plus recommended safety stock would push the CCC past target, the model recommended reducing safety stock (accepting higher stockout risk) or renegotiating supplier payment terms to align cash outflows with expected customer receipts — framing inventory decisions in terms the CFO and ownership could act on directly.

Deliverables

  • A complete ABC/Pareto classification of the full SKU catalog, integrated with Prophet21 item master data.
  • An interactive EOQ workbook covering all active A and B-tier SKUs, with GMROI and CCC outputs.
  • A prioritized liquidation list for C-tier and zero-velocity items, with recommended disposition (return-to-vendor, spot sale, write-down).
  • Reorder point and min/max parameters ready for entry into Prophet21 for all A-tier SKUs.

Key outcomes

  • Identified over $3.5 million in excess inventory with a clear, prioritized liquidation roadmap.
  • Established SKU-level reorder parameters in Prophet21 for all A-tier items, removing buyer discretion as the primary replenishment trigger.
  • Reduced projected annual carrying-cost drag by taking the lowest-performing tier out of active replenishment cycles.
  • Gave management a repeatable GMROI- and CCC-based framework for future purchasing decisions, preventing recurrence.

Conclusion

Excess inventory in specialty distribution is rarely the result of poor intentions — it comes from purchasing decisions made without adequate financial context at the SKU level. Combining the clarity of a Pareto classification with the rigor of an EOQ model anchored to GMROI and CCC constraints gave this distributor both an immediate path to reclaiming working capital and the analytical infrastructure to manage inventory as a financial asset rather than an operational afterthought.

Client identities are withheld to protect confidentiality.

← All white papersPAPER-06 · Supports CASE-09
White Paper · Agriculture / SMB Infrastructure

Agricultural ERP Infrastructure Modernization for a Transitioning Family Farm

From failing hardware to a future-ready foundation.

By Chris Bullard5 min readInfrastructure · Financing · Continuity
$7,000
total budget ceiling — hardware, licensing, configuration, migration
ECC + RAID-1
commercial-grade server replacing a consumer desktop
0
repeat hardware investments needed for a future ERP migration

Executive summary

A third-generation family farm in transition from row crop production to wine grape and hazelnut cultivation was running its business accounting and farm management on RedWing Software's Accounting for Agriculture ERP platform — hosted on an aging desktop PC with failing RAM and insufficient storage to support the application reliably. The hardware risk threatened the farm's financial records and operational continuity during a period of significant investment in new crop infrastructure. I assessed the environment, structured a financing-friendly server upgrade within a $7,000 budget, and designed the infrastructure to accommodate a future ERP platform migration without another hardware investment cycle.

The problem

A farm in transition

Multi-generational family farms face a distinctive set of technology challenges. Accounting and ERP systems are adopted during a specific era, grow alongside the operation, and are rarely replaced until a crisis forces the issue. This farm had run RedWing's Accounting for Agriculture — a purpose-built platform with strong row crop and livestock accounting — for many years, managing the general ledger, accounts payable, accounts receivable, payroll, crop cost tracking, and equipment depreciation.

The shift from commodity row crops to wine grapes and hazelnuts changed the farm's capital structure and financial complexity. These crops involve multi-year establishment costs that must be capitalized correctly, harvest revenue recognized on a different cycle than grain, and post-harvest processing relationships that introduce new AP and cost-of-goods dynamics. The ERP environment needed to be stable precisely as the accounting demands on it were increasing.

Hardware failure risk

  • The host PC's RAM had experienced multiple failure events, causing application crashes and, on at least one occasion, a database integrity event that required restoration from backup.
  • Local storage could hold only a few weeks of database backups, exposing the farm to serious data loss if a primary drive failure coincided with a gap in off-site backup.
  • The PC was a consumer-grade desktop not designed for continuous operation as a server, with no RAID protection, no ECC memory, and no UPS-backed power.
  • Vendor support for the installed version had been discontinued, so no patches or compatibility updates were available for the aging OS and hardware combination.

The solution

Constraint-driven planning

Family farming operations have real budget constraints. A $7,000 ceiling covering hardware, operating system licensing, configuration, and migration meant prioritizing ruthlessly and designing for maximum useful life rather than maximum specification. The goal was not a data center — it was a reliable, serviceable, appropriately sized platform a farm family could operate without dedicated IT staff.

Server platform selection

I specified a rack-mount server (1U/2U) with ECC (Error-Correcting Code) RAM — addressing the primary failure mode of the existing hardware — and mirrored RAID-1 storage on enterprise-grade drives. ECC memory eliminates the class of silent data corruption that had caused the earlier database integrity issues; RAID-1 provides drive-failure tolerance without requiring a backup restoration event. The chosen platform was a refurbished commercial-grade server within the budget, with a documented parts-availability window covering the farm's planning horizon.

Financing structure

The $7,000 investment was structured as a short-term equipment note with a regional agricultural lender the farm already worked with, avoiding a new lending relationship. Monthly payments were sized to the farm's cash-flow seasonality — lower during establishment months, higher during harvest revenue periods — so the upgrade did not draw on operating lines needed for crop inputs and labor.

Migration and data integrity

The existing RedWing database was migrated to the new server with a full integrity verification pass before the old system was decommissioned. Off-site backup was configured through an encrypted cloud backup agent on a subscription that fit the operating budget, and restoration was tested and documented before the old hardware was retired.

Future ERP migration pathway

The server was sized and configured to support a later move to a more capable agricultural ERP — whether an updated RedWing release, Granular, Trimble Ag, or a general-purpose SMB accounting platform — without another hardware purchase. Server specifications, network configuration, and backup procedures were documented in a simple operations guide written for a non-technical audience, so the farm family could communicate effectively with any future IT provider or ERP vendor.

Key outcomes

  • Eliminated the immediate hardware failure risk to the farm's financial records and ERP continuity during a critical transition.
  • Delivered the upgrade within the $7,000 budget, financed on terms aligned to the farm's cash-flow seasonality.
  • Replaced consumer-grade hardware with an ECC-memory, RAID-protected commercial server rated for continuous operation.
  • Established off-site backup with tested restoration procedures, removing the farm's prior data-loss exposure.
  • Designed the platform to accommodate a future ERP migration without a repeat hardware investment.

Conclusion

Not every technology problem requires an enterprise-scale solution, and not every budget constraint reflects a lack of seriousness about the underlying need. The right answer here was a well-chosen, correctly financed hardware platform that addressed the real failure modes in the existing environment and gave the operation a stable foundation for the decade ahead. Working within realistic financial constraints while delivering infrastructure a non-technical farm family can operate and build on is exactly where practical consulting judgment creates durable value.

Client identities are withheld to protect confidentiality.