Skip to content

Architecture and Capabilities

Matt MacDougall edited this page Sep 9, 2026 · 1 revision

Architecture and capabilities

The connector is a PHP module running inside the store application. Its NetSuite client is ryanwinchester/netsuite-php, using the SuiteTalk SOAP API. It uses the store database for its queue and monitor. There is no separate connector service to host.

Included flows

Data Direction Implementation and boundary
Products NetSuite → store Item search, attribute mapping, batch catalog import, configurable relationships, kit bundles, related and upsell links.
Product images NetSuite → store File references in configured custom item fields, downloaded through SOAP. Existing gallery content can be removed.
Customer updates Store → NetSuite Queued customer saves after the customer has placed an order. Order export also resolves or creates a NetSuite customer.
Customer import NetSuite → store Person customers with an email, optionally filtered by a configured custom checkbox. Address and password-setup behavior is included.
Customer groups Configuration and mapping Customer-group metadata and price-level mappings. There is no general customer-group import processor.
Orders Store → NetSuite New store orders become NetSuite SalesOrder records.
Order changes NetSuite → store Existing linked order state/status and billed/fulfilled quantities. Full order creation, item edits, addresses, shipping method changes, and totals updates are outside this package. See the eligibility caveat in Known limitations.
Invoices Both directions Store invoices export as NetSuite CashSale; NetSuite cash sales import as store invoices. A separate NetSuite Invoice import processor is not registered.
Refunds NetSuite → store CreditMemo and CashRefund records create store credit memos using custom order-link fields. This does not establish a payment-gateway refund workflow.
Shipments NetSuite → store Shipped ItemFulfillment records for linked orders, with tracking. Store shipments are not exported.
Stock NetSuite → store Saved item searches update stock using the selected single or multi-location strategy.
Locations NetSuite → store MSI source mapping exists for multi mode. The dedicated location command path has an unresolved source defect.
Tax and discounts During sales export Selectable mapping strategies for orders and cash sales. No tax-rate synchronization.

Processor registrations and event observers define which operations are active. Feature directories are parts of one Magento module, not separately installable packages.

Processing model

flowchart LR
    A[Store order, customer, invoice events] --> B[Export queue]
    B --> C[Export processors]
    C --> D[NetSuite SOAP]
    D --> E[Changed record search]
    E --> F[Import queue]
    F --> G[Entity and batch import processors]
    G --> H[Store records]
    D --> I[Saved stock searches]
    I --> J[Stock and source updates]
    B --> K[Monitor]
    F --> K
Loading

Checkout observers enqueue work. Scheduled export processors perform the network calls later. Import searches store record payloads, and a subsequent queue-processing pass applies them. Stock processing uses a separate saved-search path and is not represented as one monitor job per stock row.

An ordinary netsuite:cron --mode=import pass first processes the existing import queue and then fetches more records. New records normally wait for the next pass. importToQueue fetches only, and processQueue processes only. An all pass performs import, export, and the stock plugin's interval check. See Scheduling and CLI.

Queued processing reduces dependence on NetSuite availability during checkout. It does not guarantee zero store load or unlimited fault tolerance. Catalog writes, index updates, growing queues, and database storage still affect the store.

Ownership and installation-wide behavior

Configure ownership before enabling a flow. Mapped product fields can be overwritten on import. Customer export constructs a replacement address book. Image import reconciles the existing gallery against NetSuite images. Inventory integration changes MSI reservation behavior and disables Magento's shipment source-deduction observer.

These stock hooks are registered when the module is installed. The integration's enable switch is not a universal switch for every plugin and observer declaration. See Inventory and Migration.

What is not included

  • Adobe Commerce B2B company import/export, company membership, and shared catalogs.
  • The separate Rocket Web Import Orders add-on and its netsuite:utils:importorder command.
  • Magento 1 shell scripts or the old full-catalog importproducts command.
  • A REST/OAuth 2.0 NetSuite transport, webhooks, or a real-time push feed from NetSuite.
  • Store-to-NetSuite product, stock, shipment, or credit-memo export processors.
  • A return-authorization/RMA import processor, even though some inherited constants and defaults mention returns.

See Code map for every source area, data structure, and test location covered by the documentation review.

Clone this wiki locally