PROPOSAL FOR NETSUITE-MAGENTO INTEGRATION

APPIN|UNICORN-AU

This proposal covers the details of  Netsuite Magento Integration for Appin|Unicorn AU. This proposal also covers the engagement scope of Jobin and Jismi It Services LLP, as official implementation partner Of Oracle NetSuite.

Proposal summary

This proposal details how the integration between NetSuite and Magento is handled and also the proposed plan of the integration.

Requirement 

The overview scope of the NetSuite-Magento integration as follows:

  • Item SYNC from NetSuite to Magento
  • Customer SYNC from Magento to NetSuite
  • Order SYNC from Magento to NetSuite
  • Item Fulfillment/Shipment SYNC
  • Invoice SYNC from Magento to NetSuite

Prerequisites

  • Field mapping between Netsuite and Magento (we will share the mapping and you can confirm the same before development)

Our Solution

We are planning to develop the NetSuite-Magento Connector using the REST APIs. So REST API is the preferred option to implement the NetSuite-Magento Connector. The Connector will send to and fro data from NetSuite and Magento. 

The first step for the integration is to complete the mappings between NetSuite and Magento. The mapping should be done for the Items, Customer and Contacts, Sales Order, Invoice, Item Fulfillment, Cash Refund/Credit Memo. The mapping should be adjusted based on the client’s needs. Custom fields can be created on NetSuite and Magento. 

Magento Authentication Setup

The next step is to do the authentication setup for the Magento which will have the authorization to use the Magento Rest API. The integration needs to be created in the Magento Admin Console. The credentials for the integration can be retrieved from the Magento Admin console. We will be using Oauth based authentication. A Script library should be created for the Oauth authentication 

We will Store the Credentials in the custom record so that suite scripts can fetch the credentials from the custom record. This setup allows us to change the credentials only in the custom record and no change is required in the suite scripts when the credentials are changed.

NetSuite Authentication Setup

Restlets scripts are also needed for the Netsuite-Magento Connector. So Integration records and access tokens need to be generated for the role on the NetSuite Side. The credentials will be used for the Magento codes and will be used for NetSuite Restlet API authentication. Token-based authentication is the preferred and easiest way for the  Restlet API authentication. Following need to be  created:

  • Integration Record
  • Custom Role
  • Access Tokens

Item SYNC from NetSuite to Magento

  • Mapping lardy existing item – MP
  • Creation of Items
    • When an item is created in the NetSuite, the same item should be automatically synced into the Magento with correct details.
    • Items are created in Netsuite, Items  considered are : Assembly Item and Service Item.
    • Before the script development field mapping should be confirmed.
    • Multiple images will be there for the items. Need to consider all the custom fields for the image sync for the items. 
    • Category sync needs to be considered when the item is created. 
      • Need to create  custom fields in the NetSuite for the Category .The field type will be a list.
      • The new category can be added from the NetSuite side.
      • Based on the category selected in the item, the script should check whether the category is present in the Magento and if yes directly add the item into the corresponding category and if not present the new category need to be created in the Magento and then add the item into the new category
      • Category API can be used for the category creation and adding of items into the category
    • Tax Setup
      • Tax considered is 10% GST
    • A new custom tab needs to be created in the item record and should be called Magento. All the custom fields related to the Magento integration need to be present under the new tab: Magento
    • Magento API can be used for product creation.
    • When an item is successfully synced, then the corresponding Magento Item Id should be stored in the item record. A custom field can be used in the item record for storing the Magento product id. 
  • Updation of Items
    • When an item is updated on the NetSuite Side, then the same changes should be effected on the Magento Side.
    • Only the changes need to be synced.
    • Category sync should also consider for the item updation sync
    • Need to compare the old record and new record object in the user event script for identifying the changes in the item record. 
  • Deletion of Items
    • When an  item is deleted in Netsuite , then the corresponding product will be deleted from Magento

Customer SYNC FROM Magento To NetSuite – MP

  • Netsuite provide two types of built-in category for Customer :
  •  Individual
  •   Company
  • Regular customers are mapped to ‘Company’ category 
  • Irregular/Once-off  customers are mapped to ‘Individual’ category

As mentioned earlier,3 stages are available for customer in Netsuite:

1)Lead :This record has all the information needed to convert a lead into a customer. Leads have no estimates, opportunities or transactions associated with them. If an estimate or opportunity is created for a lead, the lead becomes a prospect. If you create a sales transaction for a lead, the lead becomes a customer.

 2)Prospect: This record has  all the information needed to convert a prospect into a customer. Prospects have no sales orders, invoices, cash sales or other sales transactions associated with them. They can have opportunities and estimates associated with them, however. If a sales transaction is created for a prospect, the prospect becomes a customer.

 3)Customer: A qualified prospect, who has placed an order.lets you track all the information on your current customers.

  • Customer creation:
    When a customer is created in Magento, we will create a lead(in NetSuite with a category type Individual (represents ‘Once-off’ customer’ in Magento).We are treating ‘email ID’ as a unique key for magento customers.
  • Updation of Customer
    • Whenever a customer is updated in Magento, the same should be reflected in the NetSuite also.
    • A Restlet script needs to be developed for the Customer Update. 
    • Magento Team will call the restlet script when the customer is updated in the Magento and JSON object structure will be the same as used in the creation of customers.
    • A POST action should be done for the Restlet script and the action would be the customer update based on the JSON object sent by Magento. In the Object,  Netsuite Customer internal id and Magento customer id will be available.
  • Deletion of Customer
    • When a customer is deleted from Netsuite, a call will be sent to Magento for the deletion of the customer. For that need to create Use Event r script and action should be the deletion of the customer. 

Error Handling should be done throughout the development. This can be done using a custom record and should be attached to the customer. 

  • Map Reduce Script for already existing customers
    • A map-reduce script needs to be developed for the sync of already existing customers in the NetSuite. All the existing customers that are not synced to the Magento need to be synced to the Magento. Standard Magento customer Create API call can be used for the customer creation in Magento. After the successful creation of the customer in the Magento, the Magento customer Id should be stored in the customer record. This need to be used for the customer update sync from NetSuite to Magento

Quote creation -MP

  • Registered customers can submit the quote from the website using the basic details.        When a quote is created in Magento, we will check in Netsuite whether a lead/prospect/customer  is created for the Magento customer in Netsuite using the  unique ‘email ID’.The category type will be ‘Individual’(‘once-off’  magento customer).
  • If lead exists, an Estimate will be created for that lead in Netsuite.Now automatically lead will be converted to  prospect.[The category type will be ‘Individual’(‘once-off’  magento customer) ]
  • Otherwise a prospect will be created with the estimate.The category type will be ‘Individual’(‘once-off’  magento customer).
  • NBPC can review the quote  details, make contact with the Magento customer to see if they have larger business potential, what discount level to be  assigned etc.And can change the category type to ‘Company’ (Regular Magento customer) if needed. This will be a manual process and no automations added in this scope.
  • At this stage we cannot change the prospect to  a customer. A customer will be created in Netsuite only if a sales order is created in netsuite.
  • If the Estimate is approved by NBPC an email will be sent to the Magento customer.This can be triggered by placing an ‘ Approval’  button on Estimate record.On button click an email will be sent for customer. we will set up an Accept/reject button in email. So if they accept, they will be navigated to the website for placing the order. If they click reject we will close that Estimate and prospect  in the Netsuite.
  • If the Estimate is rejected by NBPC/Customer , the  prospect and Estimate will be closed on Netsuite. Updation.
  • A Map reduce script is used to fetch quotes created in every 15 minutes and will create an Estimate for that orders in netsuite.

Order creation- MP

  • Customers can place orders from the website, by converting the quote if possible. Whenever the order is placed on the website we will create a sales order in Netsuite.
  • When an order is placed in Magento, we will check if any lead/prospect/customer exists in Netsuite using a unique ’ Email ID’.
  • If any lead /prospect exists,  then the order will be created for that and the lead/prospect will be automatically changed to a stand alone customer.
  • If nothing exists,then a customer is created in Netsuite and places the order in netsuite.The customer created will be of category type ‘Individual’ (‘once-off’ Magento customer).
  • NBPC can edit this customer record,can change category type to ‘Company’(Regular Customer’) and  allocate any credit terms, discounts etc.the updated customer details can be sent back to magento.
  • Currently these processes are manually done.We can update this in future as required.
  • Once the order is placed the confirmation email will be sent to the customer. The sales order will contain all the details requested by the customer .
  • Items for sales order will be mapped into netsuite based on the following strategy:
  1. If order contain both cleaning and painting, Items will be:
  • Assembly Item with Paint as Component
  • Cleaning Item(service item for sale)
  1. If order contain only Painting Only,item will be:
  • Assembly Item with Paint as Component
  1. If order contain only Cleaning,item will be:
  • Assembly Item with Cleaning Service Item as  component
  • A map-reduce script should be developed for the order sync. If the order is created from the quote then the script should find the corresponding estimate and should transform the estimate to the Sales Order. If the order doesn’t have any quote, then directly a sales order in the NetSuite. The sync is not real-time and the map-reduce script should fetch recently created orders and based on the orders sales orders are created in  NetSuite.
  • A custom record setup should be used for backtracking the order sync. The customer, Estimate, Sales orders, sync response, the error should be stored on the custom record.
  • Scheduled sync

Item Fulfillment SYNC

FULFILLMENT is the entire process of preparing materials and applying a coating to their materials. 

Creation of Item Fulfillment record in Netsuite is needed to make the order process complete.Otherwise the order will remain open and cannot move to further processing in Netsuite(Billing,payment etc..).Also customer will not get a confirmation regarding the work completion if IF is not created.So when an sales order is created in netsuite,Work order is created and after completion of work order process IF will be generated in Netsuite.

When work order is completed in netsuite,IF will be automatically created in Netsuite.This will be synced to magento.And  A user event script can be used for the item fulfillment sync. Whenever the item fulfillment is created for the Magento orders, then the shipment will be created for the corresponding orders in the Magento. 

On the successful sync, the item fulfillment should be attached to the corresponding custom record. 

Invoice Sync & Payment Sync

  • We can  create the invoice/payment in Netsuite and Magento. And we assume that the payment gateway will be set up from the website itself to authorize the payment.
  •   Payment Methods are:    Credit Card and Bank Transfer
  •  Some of the customers pay while placing the order itself. For those orders , Cash sale will be created in  Netsuite automatically.
  •  And some of them have the terms to pay. For these orders an Invoice will be created  in Netsuite and Payment is done on Netsuite side. This will be done manually by the user. Once Payment is done  Invoice will be synced to  Magento using script.

Return/Refund SYNC

Refund(returns) process is not considered now in the scope. If ever considered , Refund will be handled in Netsuite only(Not Needed in Magento).

Assumptions

Proposal is prepared based on following assumptions:

  • Customer creation, Quote Creation, Sales Order creation,Payment Creation are initiated on Magento Side. And is synced to Netsuite.
  • Customer Deletion,Item creation,Item Updation,Item Deletion,Quote Updation,Quote Deletion,Item Fulfillment Creation,Invoice creation,Stock Update,Refund Process are initiated in Netsuite.And is synced to Magento.
  • Customer Updation is done on both sides.

Time

120 Hours (Three weeks)

Leave a comment

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