Skip to main content

General architecture for Magento 2

[missing screenshot: confluence_logo_new.png]

Used technologies

The NetSuite connector is implemented as a Magento extension, 100% unencrypted code. It does not use any external service other than the NetSuite instance it communicates with.

The communication with NetSuite happens via SuiteTalk , which is a SOAP service. It makes use of the PHP Toolkit , a light wrapper over SOAP provided and maintained by NetSuite

Possible Flows

In all cases, NetSuite is assumed to be the "master". 

Product synchronization: Product data is imported from NetSuite, it is assumed the catalog is managed there. However, it is possible to have specific product fields unmapped, allowing you to change information directly in Magento, i.e. you may decide to do category association directly in Magento

Stock synchronization: Stocks are always pushed from NetSuite to Magento, never the other way around.

Order synchronization: A new order is pushed from Magento to NetSuite. Further changes to orders in NetSuite are synchronized back in Magento (status changes, order edits)

Invoice synchronization: Any invoice created in Magento is pushed to NetSuite as a cash sale or invoice. Any cash sale/invoice created in NetSuite is pushed back to Magento, considering that the parent order came from Magento

Fulfillment synchronization: Any fulfillment in NetSuite done on an order that came from Magento is pushed to Magento as a shipment. Magento-created shipments are never pushed to NetSuite


Disabling Flows

In case you don't need all flows above, they can be disabled in the connector's configuration screen:

fpiscreen-shot-2016-04-15-at-3-12-43-pm.png


Queueing

All NetSuite operations are queued provides 2 advantages:

  • since no NetSuite communication happens synchronously, there is no slowness or down time for the website in case the NetSuite instance is slow or down
  • in case an error occurs, the item (i.e. order, invoice) is kept in the queue. An error message is triggered and you get the chance to investigate, fix then push the item without losing it

There are 2 different queues:

  • import 
  • export

The queues can be visualized at System->NetSuite->Import Status / System->NetSuite->Export status. If you see an item in any of the queues, it means that it was not processed yet.

Approximate throughput

The connector itself has little speed bottlenecks, but it uses the standard "save" methods for products/orders other objects. So 90% of the speed and load concerns are related to your system's ability to do the save operations. On a Magento default instance, it can import approximately one product per second and send one order in 2 seconds.

Speed optimizations:

  • the connector supports running imports, exports and stock syncs in parallel considering that you have NetSuite licenses for at least 3 web users
  • Exporting can be done in parallel with a few code changes (e.g. have 2 crons, one exporting odd order numbers, the other one even numbers)

Optimized product import uses Magento Batch product import API and can handle approximately the same products per second as Magento's batch product import can, the main slowdown in this case comes from the NetSuite network communication.