Case Study

Real-time nopCommerce and Dynamics NAV integration for a specialty produce distributor

Trade customers buy on negotiated, account-specific pricing, and every one of those prices lived inside the ERP. nopStation connected the storefront directly into Microsoft Dynamics NAV 2018 Sales and Receivables so the two never disagree.
Real-time nopCommerce and Dynamics NAV integration for a specialty produce distributor

 

300,000Live price records served
25,000Orders synced without re-entry
500Trade customer accounts
0Manual price reconciliations

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.

300,000 Negotiated price records served live from the ERP, at customer-level entitlement accuracy.

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.
nopCommerce 4.2Trade storefrontMicrosoft Dynamics NAV 2018System of recordOrder or quote placed, Sales Order created through the SOAP web service01Sales Price and Price List records applied, negotiated price returned02Availability checked against the Item Ledger before confirmation03Real-time stock position returned for short shelf-life lines04Sales Order posted on fulfilment05Posted Sales Invoice and Customer Ledger status returned to the customer06Authenticated and encrypted end to end. Cursor-based paging carries 300,000 price records and 25,000 orders through the same pipeline without timeouts or database lock contention.
Figure 1: the order-to-invoice message flow between the storefront and Dynamics NAV Sales and Receivables. Scroll the figure sideways to see it in full.
Capability map

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 functionStorefront capability delivered
Customer Card, Ship-to AddressAccount lookup and delivery address management
Item Card, Item AvailabilityProduct catalogue sync and real-time stock check
Sales Price / Price ListCustomer-specific, date-effective pricing
Sales Order / Sales QuoteOrder and quote placement and amendment
Posted Sales InvoiceInvoice retrieval and PDF download
Customer Ledger EntriesPayment and balance status, statement history
EntityRecords synced
Price records300,000
Orders25,000
Ship-to addresses1,000
Products (items)1,000
Customer accounts500
Why the volume matteredAt this scale, field-by-field syncing would time out or lock the ERP database under load. The paged, cursor-based design was built specifically to move these volumes reliably.

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.

Results

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
Where it stands now

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.

Book a Meeting