The project is designed to retrieve the Shopify orders at a specific interval and create the corresponding Standard Sales Order on NetSuite. Once the Orders/Items are fulfilled on the NetSuite, the corresponding Item Fulfillments are retrieved from the NetSuite and updated as a Shipment to the Shopify Order.
Supported integration flows
- Pre-built Integration Flows: Integration flows in CIC are provided to retrieve orders from Shopify and create the corresponding Sales Order in NetSuite. If the customer does not already exist, the customer is created in NetSuite before creating the Sales Order. Once the Order is fulfilled, the integration flow automatically retrieves the Item Fulfillment from NetSuite and updates the Order with the shipment details.
- Throttling: If the API requests are throttled on Shopify, the Accelerator handles the throttling without any manual intervention. The process execution waits as per the throttling restore rates from the Shopify API limits
- No order loss: The Accelerator is designed in such a way that there is no order that is missed while retrieving from Shopify. The Accelerator also ensures that duplicate orders are not created on the NetSuite side.
- Error Handling and Ticket Creation: Accelerator ensures all the processing failures are logged as a ticket and marked as Issues in the Cockpit
- Logical Mapping Specification (LMS) Template: The document which explains the business rules that are applied while creating the order on the NetSuite from the Shopify Order. The template helps in documenting any changes to the template as per your requirement.
- Out of the box Cockpit visibility: Accelerator is already enabled with the resources necessary to display data in several Cockpit monitoring pages.
- The Trip view provides the life cycle of an Amazon Order along with the shipment
- Accelerators are also enabled to have out-of-the-box charts to monitor the marketplace-related transactions. (view shown below)
- Dashboard > Chart transactions screenshot with details. This screen shows Marketplace Order activity (total amount, orders count)
(Order fulfillment shows total count)
- Customer Creation: If the customer does not exist in NetSuite, then the Accelerator creates the customer in real-time based on customer e-mail. Details about the Shopify customer field tags are mentioned in the Shopify_NetSuite Accelerator Logical Mapping Spec Template located in the docs folder. If the customer (email/name) is not specified in the order request, then a dummy email and name is defaulted on the sales order. Details of these dummy customer details can be configured in ShopifyNetsuiteGV.globalVar.
Prerequisites (Custom fields, SKU)
The custom fields should be created beforehand in NetSuite. The table below provides a list of custom fields used for this integration. Additional information on NetSuite Custom fields can be found in NetSuite documentation.
Note: When there are changes to custom field IDs, the translation Rulesets must be updated accordingly.
|Custom Field ID||Type||Sales Order||Item Fulfilment|
|custbody_cleo_shopify_order_id||Transaction Body Field||TRUE||TRUE|
|custcol_cleo_item_id||Transaction Column Field||TRUE||TRUE|
|custbody_cleo_shopify_order_number||Transaction Body Field||TRUE||TRUE|
|custbody_cleo_vendor_name||Transaction Body Field||TRUE||TRUE|
|custbody_cleo_source_status||Transaction Body Field||TRUE||TRUE|
|custbody_cleo_source||Transaction Body Field||TRUE||TRUE|
Store name: Shopify fulfillment record should contain the corresponding store name. The custom field value is populated automatically as part of Orders flow (field name custbody_cleo_vendor_name).
Accelerator assumes that the “SKU” on Shopify for the specific Item is the same as the “SalesOrder\SalesOrderItemList\SalesOrderItem\internalId” on the NetSuite for the specific Item. Ensure you have an SKU in Shopify that also exists in NetSuite with the same SKU name/number (item internal id).
If you don't already have one, follow these steps:
- In NetSuite, Go to Lists > Accounting > Items > New > Inventory Item and create an item record for the same item. Item internal id should be the same as Shopify item SKU id
- In your Shopify account, Go to All products> Add product and create a new product. Provide an SKU id. It should match the product internal id set in NetSuite in the previous step
- To find a SKU for a product in Shopify, open the product in section All products and update the SKU option as shown here:
- To find the internal id on NetSuite, refer to https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_N2904231.html
- Subsidiary: Customer entity should be tied to a ‘Subsidiary’. In order to create a subsidiary Netsuite account, Go to Setup > Company > Subsidiaries > New. For more details subsidiary creation please refer to https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_N272471.html.
Open the subsidiary settings: Subsidiary Settings: Customer Subsidiary name. https://1952055.app.netsuite.com/app/common/subsidiarymanagement/subsidiarysettings.nl?id=1
The Id mentioned in the url is the internal id of the subsidiary; the same value must be configured in the Ruleset mentioned below.
The specific subsidiary internal id should be hardcoded in the Ruleset: GenerateCustomerShopifyOrderRS.
What’s not supported
- Inventory and Price feeds/updates are not included.
- Product sync between Netsuite and Shopify is not supported
- Currently, the Accelerator doesn't work for Cancelled or Updated orders to be inserted into NetSuite. They are retrieved from Shopify and users can extend the logic as per their requirements.
- Tracking number updates to fulfilment record are not supported in current phase 1. If an update is required for number tracking, it should be manually updated in Netsuite in the ‘Package tracking number’ section below.
- Integration creations for Marketplaces in more than one region are not done automatically. If there are multiple Marketplaces in one region, the Accelerators are built to handle the Order and Shipments integrations automatically.
- Retrieving the order from AMP for the specific order number is not supported.
- Inventory and Price feeds/updates are not included.
- There is no validation in place to verify if the Item Price is not the same as the Base Price for the Inventory Item in the NetSuite. The Rate in NetSuite is mapped with Unit Price from the Amazon Order. Rate = Amount / QuantityOrdered
- Batching of the Feeds for the OrderFulfillment is not supported.
How to Add a New Flow
If you find any flow that is not already covered as part of the Accelerator, you can extend the project to add the specific flows as per your requirements. For example, if Inventory flow needs to be added, follow the steps mentioned below.
- Create a package in the project com.cleo._customer_.booster.netsuite. Name it: com.cleo._customer_.booster.netsuite.inventory .
- Create your BP Schedulers and Rulesets (This includes Launcher, DARS, Search Request, and Search Response).
- Create a package in the project com.cleo._customer_.booster.amp. Name it: com.cleo._customer_.booster.amp.inventory.
- Create a package in com.cleo._customer_.ampnetsuite Project. Name it: com.cleo._customer_.ampnetsuite.inventory
- Create and configure a Route Business Process.
- Create the transformation Ruleset as per your mapping requirements.
- Deploy all the Projects that have changed.
- Run and test.
Please contact Cleo Support for assistance on the project structure.
Detailed Accelerator documentation on the project structure and object-level details is available in the Project: com.cleo._customer_.ampnetsuite.docs. (Workflow and Project Details for AMP NetSuite Accelerator.pdf)
How to Configure the Cleo-Supplied Staging Database
Take these steps to configure the Cleo-provided staging database.
- Deploy the project - com.cleo.cic.util
- Create the required table by running this Business Process - com.cleo.cic.util.processes.CreateStagingDataTableBPS.
- To verify if the setup is complete, refer to the auditor logs. The auditor logs display the specific step details. If there are issues (driver or connection issues, for example), they will appear in the logs; in this case you must take corrective action and run the Business Process again.