Case study · Security camera distribution

Three systems, one set of data.

ERP, CRM and web store integration for a security camera distributor.

ENS Security · Security camera distributor, 180 users, 11 locations

As IT director, in-house

  • Automation & Data
  • IT Systems

Free · 30 minutes · No pitch. Ask me about work like this.

  • Re-keyedto20+ flows carrying customers, quotes, orders, stock and prices
  • 3 systemsto1 record ERP, CRM and web store describe the same customer
  • Out of steptoPolled stock by warehouse, about $15M of it, on the web store
  • By handtoSynced about 3,000 products, with prices and attributes

The short version

ENS Security sells security cameras from 11 locations, on Acumatica, Salesforce and WooCommerce. Each system kept its own customers, products and prices, so I built the flows between them in Boomi. More than 20 flows now carry customers, quotes, orders, stock and product data between all three.

At a glance

What changed, line by line.

Before and after, system by system
Before After
Customers Entered separately in each system Created in Salesforce, approved by accounting in Acumatica, with fields pushing back once approved
Quotes and orders Re-entered from the CRM into the ERP Salesforce quote → Acumatica quote → sales order, tracked to charged, picked, shipped and complete
The customer portal No self-service view of orders or invoices WooCommerce accounts flagged from the ERP or CRM, with order numbers, line items and PDF invoices
Stock Each system with its own figures Polled from Acumatica by last-modified date: on hand, available and on PO, by warehouse
Pricing Tiers and per-customer overrides, needed by every system that showed a price The same tiered and per-customer price wherever a customer sees it
Product documents Firmware and manuals held by the product team Synchronized to the website and into Salesforce, so support answers from the customer’s files
Reporting Performance assembled per request Power BI dashboards for branch, sales team, individual, customer and product performance
The network A domain controller in every office pfSense at each site with site-to-site VPNs, UniFi VLANs and separate Wi-Fi SSIDs, NinjaOne on office PCs

Three systems, three versions of a customer.

ENS Security distributes security cameras from 11 locations. They run about 180 users, roughly $15M of inventory and around 3,000 products.

Three systems held the business. Acumatica was the ERP, Salesforce was the CRM and the support desk, and WooCommerce was the customer portal. Each kept its own version of customers, products, prices and stock, and none of them agreed.

Keeping them in step meant re-entering data. Pricing was the harder problem: the business sold at tiered prices with per-customer, per-product overrides, and every system that showed a price needed them.

I was the IT director, so this sat alongside running day-to-day IT for all 180 users and all 11 locations.

The flows between them, built in Boomi.

I built the flows in Boomi, with custom API queries where a system had no usable endpoint and custom SQL where data needed reshaping first. More than 20 flows went into production.

Customers start in Salesforce. A create or update pushes into Acumatica, and a new customer waits there for accounting approval. Sales reps see some fields as editable, some as read-only and some not at all. Once the customer is approved, selected fields push back from Acumatica.

Quotes follow the same path. A Salesforce quote becomes an Acumatica quote, then a sales order. The order’s progress comes back as it is charged, picked, shipped and completed.

WooCommerce is the customer portal. An account is flagged for creation in Acumatica or Salesforce, created in WooCommerce, and its reference stored. A separate table tracks order numbers and sync status, and it later carried line items and more detail. WooCommerce sends the welcome email and builds the PDF invoice in the browser, so customers read their own invoices in the portal.

Product data flows out of Acumatica. One pair of processes polls by last-modified date for inventory by warehouse: on hand, available and on purchase order. Another pair carries product information and attributes into WooCommerce and Salesforce. Tiered prices and per-customer, per-product overrides move with them, so a logged-in customer sees their own price.

The product team’s firmware, manuals and technical documents synchronize to the website and into Salesforce. Support answers from the same files a customer can download.

I oversaw the creation of their Salesforce support portal and its main objects. I assisted with customer grading and support priority for incoming and aging tickets. I also oversaw the creation of their Power BI executive dashboards, covering branch, sales team, individual, customer and product performance.

The IT work ran alongside it. Every office had a pfSense router, and I built site-to-site VPNs as we centralized away from a domain controller in each office. VLANs and separate Wi-Fi SSIDs went in on UniFi, office PCs were managed with NinjaOne RMM, and I managed a $500k IT budget covering phones, SaaS, equipment and vendors.

Diagram · One set of data

Acumatica ERP

  • Stock by warehouse: on hand, available, on PO
  • Tiered and per-customer prices
  • Product information and attributes

The source of truth for products, stock and price

Boomi Middleware

  • More than 20 flows between all three systems
  • Custom API queries where a vendor had none
  • SQL where data needed reshaping

Salesforce and WooCommerce CRM · Web store

  • Salesforce customers, quotes, support, product docs
  • WooCommerce live stock, each customer’s price, invoices

Where reps quote and where customers buy

  • Stock Acumatica to Boomi to WooCommerce

    Polled by last-modified date: on hand, available and on PO, by warehouse.

  • Prices Acumatica to Boomi to Salesforce · WooCommerce

    Tiers plus per-customer overrides, so a signed-in customer sees their own price.

  • New products Acumatica to Boomi to Salesforce · WooCommerce

    Attributes created automatically, with firmware and manuals following to both.

  • Customers Salesforce to Boomi to Acumatica

    Reps create them, accounting approves in the ERP, and approved fields push back.

  • Quotes Salesforce to Boomi to Acumatica

    A quote becomes a sales order, tracked to charged, picked, shipped and complete.

  • Orders and invoices Acumatica to Boomi to WooCommerce

    Order numbers, line items and PDF invoices, in the customer’s portal account.

In the gaps Custom API endpoints where a vendor had none, and SQL where the data needed reshaping. Power BI reads the same records.

Acumatica holds the product, stock and price data and Boomi carries it out; customers and quotes run the other way, from Salesforce in.

The result: one set of data, still running.

Acumatica, Salesforce and WooCommerce describe the same business, kept in step without re-keying.

Customers see their own price wherever they look, and their invoices in the portal. Support answers from the same firmware and manuals the website publishes. Executives read branch, team, customer and product performance from one set of dashboards.

More than two years on, ENS still runs on these flows. They recently brought me back to review them and to help plan a move from Salesforce to Odoo.

Keep reading

Next case study

All 3 case studies

Case study 03 / 03

4 sourcesto1 report monitoring, ticketing and SOC data

IT MSP · multi-customer

Senior systems administrator, on contract through an MSP

Four sources in, one report out, for every customer.

  • Custom Software
Before
On-call time tallied apart from the incidents, and customer reports assembled by hand from four sources.
After
Per-customer reports that build themselves and land in Teams and SharePoint.

Next step

Talk to the engineer who will do the work.

One call, thirty minutes, no pitch deck. I listen first, then I tell you what I would do about it.

Rather write it down? [email protected]

Mon–Fri 9am–5pm ET · Islip, NY