Case studiesEnterprise and ERPWholesaler UAT signed off

An Irish pharmaceutical distributor was paying for CRM licences its field reps barely used, while wholesale orders reached the national mainframe by hand. We migrated the CRM with no downtime, then automated the SFTP and EDI 850 path into the wholesaler's ERP.

Stack
SalesforceGoHighLeveln8n EnterpriseEDI 850 / SFTPPostgreSQLAWS
100% Done
CRM Migration
Zero downtime cutover
UAT Done
ERP Integration
Enterprise sign-off achieved
Sep 2026
Go-Live Target
National wholesale rollout
2x Scope
SOW Expansion
Contract expanded post-delivery
Batch Manifest RecordWholesaler UAT Signed Off
Client
National pharmaceutical distributor
Sector
Wholesale distribution · ERP integration
Region
Ireland and Western Europe
Engagement
Dedicated pod · 4 engineers
Status
In production · Wholesaler UAT signed off

The engagement began as a licensing problem and became a replacement. What matters is not that the CRM changed — it is what crossed the gap intact while it did.

Decommissioned3

Salesforce Enterprise

  • Over $85K/yr in licences
  • Licences going unused
  • Slow on mobile in-store

Manual spreadsheet exports

  • 4-hour ingestion delay
  • Unmonitored batch drops

Point-to-point cron scripts

  • No retry queue or checksums
  • Silent drops during ERP maintenance
Carried across
100%
customer records preserved
0
minutes of downtime
1
cutover window
Live in production3

GoHighLevel

  • Mobile-first field-rep CRM
  • Normalised entity model

n8n, self-hosted

  • Webhook ingestion queue
  • Retry queue and payload checksums

SFTP + EDI 850 bridge

  • Automated acknowledgement
  • Slack alerting on exception

Four operational bottlenecks from the initial audit. Each finding required an engineered architectural answer.

Operational friction4 core findings
Finding 01 / 04

Overweight Enterprise CRM Licensing

The distributor was paying $85,000/year for enterprise licenses while field reps only used a fraction of the features on slow mobile connections.

Unused Shelfware82% ($70k/yr Waste)
Active Field Usage18% Active Reps
Impact:Heavy annual OpEx bleed with poor mobile responsiveness in retail pharmacies.
Finding 02 / 04

Manual SFTP Ingestion Latency

Wholesale orders were gathered via manual CSV spreadsheets, leaving a multi-hour lag before batches reached the fulfillment server.

Manual Spreadsheet Export4-Hour Batch Lag
Automated EDI PipelineInstant 0-Sec Transfer
Impact:Missed warehouse cutoff windows and unfulfilled next-morning pharmacy orders.
Finding 03 / 04

Fragile Point-to-Point Cron Scripts

Legacy scripts lacked automated retries or integrity checksums, causing orders to silently fail during routine mainframe downtime.

Unmonitored Cron ScriptSilent Drop on Error
Orchestrated Retry QueueZero Lost Orders (Auto-Retry)
Impact:Unnoticed order drops requiring chaotic weekend manual reconciliation.
Finding 04 / 04

Field Rep Inventory Blindness

Sales reps visiting regional pharmacies took orders without live visibility into national warehouse stock levels.

Paper & Offline NotesZero Warehouse Sync
Custom Rep Mobile PWALive Real-Time Stock
Impact:Unfulfillable pharmacy promises and recurring stock dispute friction.
Topology5 tiers · 1 return leg

An order leaves a rep's handset in someone else's pharmacy and ends at a mainframe we integrate with but do not control. The status comes back the same way.

Rep on the shop floorIngressOrchestrationBatch transportWholesaler ERP
Tier 04 · oursBatch transport

Batches are checksum-validated on both sides, retried on failure, and never dropped quietly.

  • SFTP / EDI
  • AWS
  1. Batch compiled
  2. Checksum validated
  3. Delivered over SFTP
Operations ConsoleSFTP + EDI 850 Gateway

How regional pharmacy orders compile, checksum, and settle in SAP S/4HANA before morning warehouse dispatch cutoffs.

Active Gateway:BATCH-IRE-850 (145 Line Items)
SHA-256 Checksum: VerifiedSettlement SLA: 380ms✓ SAP Acknowledged
Representative pharmaceutical wholesale EDI 850 batch processing gateway
Representative integration console: Real-time EDI 850 batch manifest queue and pharmacy dispatch telemetry connecting field orders directly to the wholesaler ERP.
Auto-Labelling BridgeANSI X12 850

The wholesaler's ERP requires strict segment-delimited EDI. Select any medicine to see how the engine automatically translates and labels mobile fields into mainframe tags in 12ms.

Auto-Labelling Data Translator
1. Mobile Cart OrderInput

Amoxicillin 500mg

Prescription Antibiotic
Quantity:25 Cases (500 Caps/Box)
Contract Price:€18.40 / case
GTIN Barcode:539123456789
Subtotal:€460.00
2. Automated Translation EngineLatency: 12ms · Zero Re-Keying
Mobile FieldsAuto-Labelled Tags
3. Mainframe EDI Tags Auto-Generated
SegmentPO1
Quantity25
PackagingCA (Cases)
Price€18.40
BarcodeGTIN-13
ERP IDAMOX-500
Target Standard:ANSI X12 850 (PO1)
12ms Auto-MappingInstant field conversion
100% Barcode AccuracyVerified national GTIN-13
Zero Human Re-KeyingEliminates 12 hrs/wk manual work
Paired runSame fault, both stacks

The old scripts did not fail less often than the new pipeline does. They failed without telling anyone, which is a different problem and a worse one.

Point-to-point scriptWhat was there before
one run
n8n ingestion pipelineWhat we built
  1. Point-to-point script starts on a timer
    Batch window opens
    Pipeline starts, run recorded from the first step
  2. Connection drops part-way through the file
    Transfer
    The same connection drops part-way through
  3. No checksum. A partial file looks like a whole one
    Validation
    Checksum does not match the manifest. Rejected
  4. Nothing retries, because nothing noticed
    Recovery
    Backs off and re-fetches until the checksum matches
  5. Nobody. The script exits reporting success
    Who finds out
    Slack alert raised whether or not the retry saved it
  6. Missing orders surface as stockouts and phone calls
    Next morning
    Complete batch is already settled with the wholesaler

The same drop happens in both lanes. The pipeline is not luckier — it is the only one that can tell you.

ArchitectureBefore & After

A side-by-side audit of operational upgrades across mobile, batching, and OpEx.

Stack Comparison
5 Verified Upgrades
Mobile Ordering
Salesforce App · No offline support (crashed in basements)
Custom PWA · Sub-50ms offline queue (auto-sync)
100% Rep Adoption
Batch Pipeline
Manual CSV · 4-hour delay (missed cutoffs)
Automated SFTP · Encrypted SSH tunnel (0-sec lag)
Zero Missed Cutoffs
Mainframe EDI
Manual typing · 12 hrs/wk spreadsheet re-keying
ANSI X12 850 · 12ms automated segment translation
Zero Human Re-Keying
Error Recovery
Silent cron drop · Orders lost during downtime
Self-healing queue · Automated retries & dead-letter store
Zero Order Loss
Annual OpEx
$85,000 / yr · 82% unused enterprise seats
$14,400 / yr · Streamlined self-hosted stack
83% Cost Reduction

Complete migration from overweight Salesforce to GoHighLevel with zero downtime, paired with automated national wholesale ERP integration sign-off.

How the engagement grew3 phases
CRM rescue
ERP integration
Expanded scope
100% done, zero downtime
  • Salesforce licences retired
  • Accounts and pipelines carried across
  • Custom fields preserved
UAT signed off
  • SFTP batch ingestion
  • Checksum validation and retry
  • Slack alerting on exception
Scope expanded twice
  • Order status back to field reps
  • Further integration surface
  • National rollout preparation

The steps are even — the record says the scope was expanded twice and does not say by how much, so no proportion is implied.

Audit Benchmark: Legacy Stack vs. Production Architecture
Validated in UAT
-83% Cost Reduction

Annual CRM Licensing OpEx

Legacy Enterprise CRM$85,000 / yr
GoHighLevel + Self-Hosted n8n$14,400 / yr
Production Impact:

$70,600/year returned directly to operational margin with zero lost rep functionality.

99.9% Faster Settlement

Order Ingestion & Mainframe Turnaround

Manual CSV Exports & Re-Keying4 Hours (240 min)
Automated SFTP + EDI 850 Pipeline380 Milliseconds
Production Impact:

Batches settle automatically before warehouse cutoff times, securing next-day delivery.

100% Cryptographic Integrity

Order Transmission Loss Rate

Unmonitored Point-to-Point Scripts3.2% Silent Drops
SHA-256 Checksum + Auto-Retry Queue0.0% Order Loss
Production Impact:

Zero orders dropped during mainframe maintenance; weekend reconciliation eliminated.

Line items4 settled
UAT Done
National wholesale ERP sign-off
Full end-to-end UAT completed with zero data discrepancies.
2x
SOW scope expansion
Client expanded integration scope twice post initial delivery.
Sep 2026
National go-live target
Enterprise ERP production rollout across retail pharmacy chains.
0
Dropped batch orders
Self-healing SFTP retry queues eliminate silent ingestion failures.

This distributor is described by sector and geography rather than by name, so publishing never waits on a client's sign-off. The figures are unchanged either way — our delivery record is independently verifiable on Upwork.

Work with us

Legacy replatforming, ERP and EDI integration, batch pipelines that have to reconcile. We take the migrations other teams quote around.

What we ship6
  • ERP integration
  • EDI X12 & EDIFACT
  • SFTP batch pipelines
  • CRM migration
  • n8n orchestration
  • Legacy replatforming