Real-time nopCommerce and Dynamics NAV integration for a specialty produce distributor
The client
The client is a vertically integrated specialty produce grower and distributor, running its own farming operations alongside sourcing partnerships that widen the range. The business moves perishable goods on short lead times from harvest to shipment, and sells to trade customers on negotiated, account-specific pricing.
That operating model makes pricing integrity and order accuracy commercial requirements rather than conveniences. Customer master data, item master data and every contracted price list sat inside Microsoft Dynamics NAV 2018 with no live path to the storefront, so orders arriving through other channels were re-keyed into the ERP by hand and customers had no way to see their own account position.
nopStation was engaged to let trade customers self-serve online, browsing at their own negotiated prices, placing orders and quotes, and retrieving invoices, without staff transcribing anything into the ERP.
The challenge
The difficulty was not connecting two systems. It was serving contracted pricing at volume without leaking one customer’s rates to another, while the same pipeline carried live orders.
01Pricing at a scale that rules out lookups
Dynamics NAV Sales Price and Price List records carry per-customer, per-item rates with valid-from and valid-to dates. Roughly 300,000 active price records had to be exposed accurately and safely on the storefront, which is a data-mapping problem, not a small reference table.
02Entitlement boundaries with no room for error
Every price shown had to belong to the signed-in account. A single cross-customer exposure in a negotiated pricing model is a commercial incident, not a display bug.
03Manual sales order creation
Orders from other channels were entered into Dynamics NAV as Sales Orders by hand, adding delay and transcription risk on product lines with a short shelf life.
04No customer visibility of their own ledger
Posted Sales Invoices, statements and transaction history all live natively in Dynamics NAV Customer Ledger Entries, and customers could not reach any of it.
05Authenticated, auditable access
The Dynamics NAV web services layer needed encrypted, authenticated access with every transaction traceable back to source for audit.
What we did
nopStation built a configuration-driven ERP interface over native Dynamics NAV SOAP web services. The storefront holds no pricing logic of its own. It asks the ERP on every request.
01Order placed on the storefront
A trade customer places an order or a quote in nopCommerce against their own signed-in account.
02Sales Order created in Dynamics NAV
The integration layer authenticates and calls the Sales Order web service, creating a Sales Order or Sales Quote with the correct Sell-to Customer No., ship-to address and item lines.
03Native pricing engine applied
Dynamics NAV applies its own Sales Price and Price List records, so the order carries exactly the price the customer would receive had a sales agent keyed it in directly.
04Availability checked against the Item Ledger
Stock is verified in real time against the Dynamics NAV Item Ledger before the order is confirmed, which matters on short shelf-life inventory.
05Invoice posted and returned
On fulfilment the Sales Order is posted in Dynamics NAV, generating a Posted Sales Invoice that syncs back as a downloadable document for the customer.
06Payment status reflected back
Open and settled status flows to the storefront through Customer Ledger Entry lookups, so account standing is self-service.
Architecture notes
- Built for the pricing model, not around it. Standard Dynamics NAV 2018 web services expose base tables directly, which does not support filtered, customer-scoped, date-effective pricing lookups at 300,000-record scale. The interface packages and serves that data per customer instead.
- Cursor-based paging. High-volume datasets move through paged, cursor-driven sync so neither timeouts nor database lock contention appear under load.
- Configuration-driven target. The ERP endpoint is selected through a single configuration key, so the same architecture is reusable across other Dynamics NAV deployments without redevelopment.
- Structured logging on every transaction. Full traceability from storefront action to ERP document, which is a requirement rather than a nicety in a finance-adjacent integration.
Each ERP function mapped to a storefront capability
Every function was implemented as an independent, toggleable contract, so scope could be delivered and tested in increments rather than as one release.
| Dynamics NAV object or function | Storefront capability delivered |
|---|---|
| Customer Card, Ship-to Address | Account lookup and delivery address management |
| Item Card, Item Availability | Product catalogue sync and real-time stock check |
| Sales Price / Price List | Customer-specific, date-effective pricing |
| Sales Order / Sales Quote | Order and quote placement and amendment |
| Posted Sales Invoice | Invoice retrieval and PDF download |
| Customer Ledger Entries | Payment and balance status, statement history |
| Entity | Records synced |
|---|---|
| Price records | 300,000 |
| Orders | 25,000 |
| Ship-to addresses | 1,000 |
| Products (items) | 1,000 |
| Customer accounts | 500 |
Business impact
Manual Sales Order re-entry eliminated. Across 25,000 synced orders, transcription risk and the staff time behind it were removed from the process entirely.
Pricing parity with no reconciliation step. What the storefront displays is what the Dynamics NAV Sales Price engine returns, so there is nothing to reconcile after the fact.
Self-service on account data. Invoices, balances and statement history became customer-accessible, reducing the support load these queries used to generate.
Delivered on a reusable framework. Building on an existing integration framework shortened the timeline against a ground-up build.
25,000Orders placed through the storefront and created in the ERP with no manual re-entry.
Delivered against the engagement
- 300,000 live price records served with full customer-level entitlement accuracy
- 25,000 orders synced with no manual Sales Order re-entry
- 500 customer accounts, 1,000 items and 1,000 ship-to addresses kept in sync
- Pricing shown on the storefront matched the Dynamics NAV Sales Price engine with zero manual reconciliation
- Posted Sales Invoices, balances and statement history made self-service for trade customers
- Delivered on a reusable, configuration-driven integration framework rather than a ground-up build
A storefront that reads from the ERP, not alongside it
The storefront runs as a front end to the ERP rather than a parallel system. Pricing, stock and account status come from Dynamics NAV on every request, so there is no second data set to maintain and no reconciliation step at period end. The same configuration-driven framework is available for other Dynamics NAV and Business Central deployments without redevelopment.
Talk to our team about connecting your ERP to a B2B storefront