Netsuite – Magento Integration

Integrate between NetSuite an Megento.

Proposal summary

This proposal covers the  integration between Magento and netsuite. The solution covers the integration for entities, items, order to cash transactions. It will also include the one time sync of historical transactions.

Requirement 

Objective: get all Netsuite customer, contact, order to cash history (approx 10 years) into Magento2, and then keep Netsuite & magneto in sync, to give users a complete omnichannel perspective of their relationship with us..

Deliverables: integrations

1) Order to cash transactions

sales order, item fulfilment, invoice, credits, returns etc

One time historic sync netsuite to magento

Ongoing Netsuite to/ from magento

2) Item masterfile: one time & ongoing netsuite to magento

3) Customer/ contact masterfile

One time netsuite to magento

Ongoing netsuite to/ from magento

4) Magento marketplace vendors & contacts to Netsuite to become netsuite customers & contacts

Our Solution

Prerequisites

  • Access to Netsuite account
  • Access to Magento account (SB?) And the version
  • We have to create a custom role and an employee(Or can use the existing employee with access) for the integration. So this role and employee should be active in the system always for the integration to work.

Technologies Used

  • Netsuite – SOAP request
  • Magento API

SuiteTalk – SOAP  for integration From Magento -Netsuite

In this solution it needs to develop back end scripting in PHP from the Magento framework and SOAP request will be initiated whenever customer,vendor,sub vendor,order created in Magento. So whenever the SOAP request is initiated from Magento  which supports  real time creation of the same in Netsuite .

Integration From Netsuite – Magento 

For this integration, we will be using the Magento API. So whenever the item, price level, customer, contact etc created in Netsuite, it will be reflected in the Magneto. So this will be a real time integration using the Magento API and Netsuite userevent scripts.

Actions

1) Historical data Sync (NS – Magento)

We have to sync the existing order to cash data in Netsuite to Magento, which is not already synced with Magneto. As we have analyzed we couldn’t find the import for the transactions to the Magnento.

So we have to use the scripting from Netsuite to update all these below transactions to Magento. We need to create a mapping for the fields that need to be sync.

2) Entity records Sync 

2.1) One time Sync

  • Sync the existing customers/contacts between Netsuite and Magento using import. The time and cost will vary based on the amount of data.
  • Please provide the details for the existing customer/contact in Netsuite/Magneto that we need to sync?

2.2) Netsuite – Magento ongoing sync

  • Whenever a customer (Individual/company) is created in Netsuite it will be reflected as a customer in Magento in real time. We will be considering the “Email id” of the customer as the unique key for integration. So if a customer exists in Magento for the same “Email id”, then we will consider it as a duplicate record and  thus it will not be reflected in Magento. In this case, we can inactivate this customer record in Netsuite. Please confirm.
    If a customer is successfully created in Magento then we will set the customer internal id in Netsuite to the SKU field in Magento. Also we will set back the Magento id to the Netsuite as well.
    We will create a SKU custom field if it does not already exist in magneto. We will also sync the customer addresses also. 
  • Whenever a customer (Individual/company) is updated in Netsuite it will be reflected in Magento in real time. Since the customer is already existing we will use the “Email id” / SKU in Magento to find the record.
    We will provide a field mapping for the field that is possible to update inbetween.
  • Whenever a contact is created in Netsuite: If it has a parent customer or not, it will be reflected as a Customer in Magento in real time. We will be considering the “Email id” of the contact as the unique key for integration.  So if a Customer already exists in Magento for the same “Email id”, then we will consider it as a duplicate record and  thus it will not be reflected in Magento. If a contact is successfully created in Magento then we will set the contact internal id in Netsuite to the SKU field in Magento.  Also we will set back the Magento id back to the netsuite as well.
    Note: We are not creating it as a Sub Customer, because we couldn’t identify an option in Magento for it.
  • Whenever a contact is updated in Netsuite, it will be reflected in Magento in real time. Since the contact is already existing we will use the “Email id” / SKU in Magento to find the record.
    We will provide a field mapping for the field that is possible to update inbetween.
  • Incase syncing is not successful the failure reason will be added to the custom records/custom fields for reference for customer and contact sync.
  • Do we need to update in Magento whenever the customer/contact is deleted in Netsuite? Please confirm.
  • We couldn’t identify the API/ options to set the price level directly in Magento. As per our understanding the price level is set based on the customer group. So we have to set the customer groups. Please confirm our understanding and please provide more detail on it.

2.3) Magento – Netsuite  ongoing sync

  • Whenever a customer or vendor is created in Magento, it will create a customer in Netsuite  in real time using SOAP requests from Magento . We will be considering the “Email id” of the customer as the unique key for integration. So if a customer exists in Netsuite for the same “Email id”, then we will consider it as a duplicate record and thus it will not be reflected in Netsuite. So in that case we will not merge or deactivate customers in Magento, since Magento will not allow the creation of multiple customers with the same email id.
    If a customer is successfully created in Netsuite Then we will set the Magento Id to the Netsuite we will set back the Netsuite ID to Magento.
    We will also sync the customer addresses also.
  • Whenever the customer is updated in Magento, it will be reflected in Netsuite as well in real time. For this also, we will be using the SOAP request initiation from Magento.
  • Incase syncing is not successful the failure reason will be added to the custom records/custom fields for reference.
  • We couldn’t identify the record named vendor/sub vendor in Magento. Could you please provide more details on this?

3) Item Sync 

3.1) One time Sync

  • Sync the existing items between Netsuite and Magento using import. The time and cost will vary based on the amount of data.
  • Please provide the details for the existing items in Netsuite/Magneto that we need to sync?

3.2) Netsuite to Magento ongoing sync

Item integration will always be from Netsuite to Magento. 

  • So whenever an item is created in Netsuite it will be reflected as a product in Magento. So If an item is successfully created in Magento using the scripts, then we will set the Netsuite internal id in the SKU field of Magento. And we also set back the item id in Magneto to the Netsuite as well. This will be a Unique key for integration.
  • The integration sync will vary from real time to scheduled based on the item type. If the item is inventory, kit etc it will be reflected as real time in Magento.
    But if the item type is Matrix, then it will be a scheduled sync from Netsuite to Magento.
  • At the time of item creation we can set the price level details along with the quantity.
  • The scope is considering only the sync of items in creation on Netsuite. The datas will not be updated to Magneto, whenever item details including the price are updated/deleted in Netsuite.

4) Order Sync 

Whenever an order is created in Magento, then it will create a sales order in Netsuite in real time using SOAP request from Magento. So the order integration will always be from Magento – Netsuite.

  • For the successful creation of order in Netsuite, the item and custom should exist in Netsuite. If it is successfully created we will set back the Netsuite internal id in the Magento order SKU field. The  order will be failed if there is an invalid item, customer or any other miss-data in the SOAP request.
    So in that case, we will create a custom record in Netsuite along with the order details and failure reason. Users can check the custom data and solve the problem. Eg: subsidiary or item or customer mismatch.
    For the unsynced order another scheduled script will be run at some specific intervals until it is created successfully in Netsuite. This scheduled script will also be initiated from Magento.
  • Shipping methods, Department, tax, discounts etc in Magento and NetSuite need to be synced initially for the successful creation of orders. This will be a manual – one time sync. The updates on these details will not be automatically reflected in Magento/Netsuite. So the updates need to be changed manually in  Magento/Netsuite. This will be a one time sync. So please provide the above details for the initial syncing? Or will you complete this initial sync?
  • The scope is considering only the creation of sales orders on Netsuite. The data will not be updated to Netsuite, whenever the order details are updated/deleted in Magneto.
  • Also currently we are not considering the creation of Invoice in Netsuite. If you prefer to do this, then we can automate the creation of an invoice also in Netsuite along with a sales order.

5) Fulfill Sync 

If an item fulfillment is created for the Magento order in Netsuite, we will create the shipment in Magento for its corresponding order. This will be a real time sync. We will also consider the partial fulfillment in Netsuite.

  • Incase syncing is not successful the failure reason will be added to the custom records/custom fields for reference.

Assumptions

  • We assume that you will be using the latest Magento version, which will support the scripting in the Magento framework.
  • We are not considering the automatic creation of invoice/credit memo and RMA in Netsuite, whenever it is created in Magento as per shared scope in Excel. We will implement the same if you prefer to do so.
  • Shipping methods, Department, tax, discounts etc in Magento and NetSuite need to be synced initially. The updates in these entities in the magento and Netsuite will be out of scope. 
  • Price Levels will be Manually created/ maintained in both systems. This will not be automated.
  • Sales orders will not be created real time in Netsuite if we couldn’t find a matching Customer and item in Netsuite from the SOAP request that was sent by Magneto. If the issue is solved manually, then it will sync on the next scheduled action.
  • We will use the provided Excel sheet for the field mapping.
  • At the time if customer sync do we need to maintain password sync? While moving all these customers between Netsuite-Magneto, existing customers may need to set up a  new password to log in to the website. So an email will be sent to all customers to reset their passwords. Please share your thoughts on it.
  • We will be implementing the automation script from Netsuite and Magento side.
  • Customer : The script automation scope covers the integration for the new customer created in Magento/Netsuite  which is created after the implementation of this integration.
  • Item: This script automation scope covers the integration for the new items in Netsuite, which is created after the implementation of this integration. The updation/deletion/creation done for the items in Magento will not be reflected in the Netsuite.

Risks 

  • As per the account service tier and licenses, there is a limit for the maximum SOAP requests can be initiated on the same instant. For the standard tier, the maximum SOAP requests that can be initiated at the same moment is limited to 5. If more than 5 requests are received at the same time from Magento, it will fail the requests from 6th.
    Concurrency limit can be increased by adding extra suitecloud license to the account. For more details we need to check the Netsuite.
  • The sales order creation will fail if the Netsuite is on down time. The information about these sales orders will not be available in Netsuite custom records as well. But this will sync again on the scheduled action.
  • If the item/customer creation fails due to any reason, it will be updated in Netsuite using a custom field/custom record. This will not be resynced again after creation once it fails upon creation.

Additional Recommendations

  1. Once an order detail is received from Magento to Netsuite, and it’s found that the item or customer is not existing in Netsuite. In such a scenario, do we need to directly create the item or customer in Netsuite, so that the sales order can also be generated? If yes, we can check the possibility of the same.
  2. Also currently we are not considering the creation of Invoice in Netsuite. If you prefer to do this, then we can automate the creation of an invoice also in Netsuite along with a sales order.
  3. As we understand, we are managing the item inventory from Netsuite. So we can update the inventory using real time(some limitations) or scheduled to Magento. Please let us know whether we need to consider the same?

Leave a comment

Your email address will not be published. Required fields are marked *