Contents
- Overview: Understanding the Orderful – NetSuite integration template
- Install the Orderful – NetSuite integration template
- Configure and run flows in the Orderful – NetSuite integration template
Additional record mapping is required to integrate the template’s exports and imports with your Orderful and NetSuite apps.
Note that all of your flows are disabled when first installed. After configuring the flows, you may enable them in your Flows dashboard or in Flow Builder with the Off/On toggle button. then run or schedule each flow.
All flows in this template are configured for a few trading partners, That is, wherever you see record mapping in an import or source fields referenced in scripts, those fields are specific to a few trading partner records and you must modify them for another partner, such as Neiman Marcus, Best Buy, Belk, or Costco (CommerceHub), according to their field names as shown in the sample data exported for that trading partners. Similarly, if you add additional partners to a flow, add those fields to your scripts and mappings.
Orderful purchase orders (850) to NetSuite sales orders
On a scheduled basis, this flow retrieves new Purchase Order transactions (transaction type 850) from Orderful and creates Sales Orders in NetSuite.
Flow details
- Export source: Orderful
- Import destination: NetSuite
- Built-in export: Get Orderful transactions by polling bucket ID (850 - purchase orders) – get all transactions from Orderful by polling bucket ID.
-
Built-in lookup: Get Orderful transaction by transaction ID – get a transaction from Orderful by transaction ID.
- postResponseMap hook: Processing orderful transactions(850).js – avoid loops from the nested arrays and store required elements in a single loop.
- Built-in import: Import NetSuite sales orders – add (or ignore) sales orders into NetSuite with purchaseordernumber as the lookup identifier.
- Built-in import: Import Orderful transaction status – update transaction status into Orderful with ID as the lookup identifier.
Before you begin
- The Orderful sender ISA ID and NetSuite name should be the same.
- The Orderful productServiceID and NetSuite UPC code should be the same
Setup instructions
- Configure static mapping for Shipping Method (InternalId) for your NetSuite configuration in Import NetSuite sales orders.
- Configure hard-coded mapping for Items : Price Level (InternalId) and Items : Tax Code (InternalId) in Import NetSuite sales orders according to your business rules.
- Configure dynamic mapping for Items : Item (InternalId) and Customer (InternalId) according to your business rules in Import NetSuite sales orders.
- Configure hard-coded mapping for deliveryStatus in Import Orderful transaction status, according to your business rules.
- Add Subsidiary mapping according to your business rules in Import NetSuite sales orders.
- In the export Get Orderful transactions by polling bucket ID (850 - purchase orders), enter the ID for your Orderful poller in the Polling bucket ID setting.
A bucket is a logical collection of transactions that have been processed by the Orderful platform and are ready for integrator.io to poll. Enable polling with the following steps:
- Sign into Orderful and navigate to the Communication channels page.
- From the Create channel menu, select Poller.
- Give your new poller communication channel a name and click Create.
You can now assign the new poller to any of your inbound relationships.
Once a transaction is available in a bucket, it can be retrieved by polling the API, as follows:
- Find the communication channel in your Communication channels page and click to open it.
- The resulting details include a Retrieval URL with a unique ID in the path. Copy the ID for your export’s Polling bucket ID value.
Orderful purchase order change requests (860) to NetSuite sales orders
On a scheduled basis, this flow retrieves Purchase Order Change Request transactions (type 860) from Orderful and updates existing Sales Orders in NetSuite that are in a pending approval/fulfillment status.
Flow details
- Export source: Orderful
- Import destination: NetSuite
- Built-in export: Get Orderful transactions by polling bucket ID (860_PURCHASE_ORDER_CHANGE_REQUEST_BUYER_INITIATED) – get all transactions from Orderful by polling bucket ID.
-
Built-in lookup: Get Orderful transaction by transaction ID – get a transaction from Orderful by transaction ID.
- postResponseMap hook: Processing orderful purchase order change request (860).js – avoid loops from the nested arrays and store required elements in a single loop.
- Built-in lookup: Get NetSuite sales order by purchase order number – get a sales order from NetSuite by purchase order number.
- Built-in import: Import NetSuite sales orders – update sales orders into NetSuite with purchaseordernumber as the lookup identifier.
- Built-in import: Import Orderful transaction status – update transaction status into Orderful with id as the lookup identifier.
Before you begin
- Purchase orders in Orderful and sales orders in NetSuite should be the same, already synced by running Orderful purchase orders (850) to NetSuite sales orders first.
- Orderful purchase order numbers should be stored as a PO# in NetSuite sales orders.
- The Orderful productServiceID and NetSuite UPC code should be the same.
Setup instructions
- Configure hard-coded mapping for Items : Price Level (InternalId) and Items : Tax Code (InternalId) in Import NetSuite sales orders according to your business rules.
- Configure dynamic mapping for Items : Item (InternalId) according to your business rules in Import NetSuite sales orders.
- Configure hard-coded mapping for deliveryStatus in Import Orderful transaction status.
- In the export Get Orderful transactions by polling bucket ID (860_PURCHASE_ORDER_CHANGE_REQUEST_BUYER_INITIATED), enter the ID for your Orderful poller in the Polling bucket ID setting.
NetSuite item shipments to Orderful ship notices/manifests (856)
On a scheduled basis, this flow retrieves new item fulfillments from NetSuite and creates Ship Notice transactions (type EDI 856) in the Orderful platform.
Flow details
- Export source: NetSuite
- Import destination: Orderful
-
Built-in export: Get NetSuite item shipments – get all item shipments from NetSuite that have been created since this flow last ran.
- preSavePage hook: Processing Orderful transactions (856).js – counts the number of items to add the numeric count sequentially for hierarchicalIDNumber in the items.
- Built-in import: Import Orderful ship notices/manifests (856) – add ship notices/manifests into Orderful.
-
Built-in lookup: Get Orderful transaction errors by transaction id (856) – get a transaction error from Orderful by transaction ID.
- preSavePage hook: Processing orderful valid transactions (856).js – check whether the transaction is valid or invalid.
Before you begin
- Purchase orders in Orderful and sales orders in NetSuite should be the same, already synced by running Orderful purchase orders (850) to NetSuite sales orders first.
- Orderful purchase order numbers should be stored as a PO# in NetSuite sales orders.
Setup instructions
- Configure hard-coded mapping for each of the following fields in Import Orderful ship notices/manifests (856), according to your business requirements:
- type.name
- stream
- transactionSetHeader[*].transactionSetIdentifierCode
- transactionSetHeader[*].transactionSetControlNumber
- beginningSegmentForShipNotice[*].transactionSetPurposeCode
- beginningSegmentForShipNotice[*].transactionSetPurposeCode[*].hierarchicalStructureCode
- carrierDetailsQuantityAndWeight[*].weightQualifier
- carrierDetailsQuantityAndWeight[*].unitOrBasisForMeasurementCode
- carrierDetailsRoutingSequenceTransitTime[*].routingSequenceCode
- carrierDetailsRoutingSequenceTransitTime[*].identificationCodeQualifier
- carrierDetailsRoutingSequenceTransitTime[*].identificationCode
- carrierDetailsRoutingSequenceTransitTime[*].transportationMethodTypeCode
- carrierDetailsSpecialHandlingOrHazardousMaterialsOrBoth[*].hazardousMaterialCodeQualifier
- carrierDetailsSpecialHandlingOrHazardousMaterialsOrBoth[*].hazardousMaterialClassCode
- referenceInformation[*].referenceIdentificationQualifier
- N1_loop[*].partyIdentification[*].entityIdentifierCode
- N1_loop[*].partyIdentification[*].identificationCode
- hierarchicalLevel[*].hierarchicalParentIDNumber
- hierarchicalLevel[*].hierarchicalLevelCode
- marksAndNumbersInformation[*].marksAndNumbersQualifier
- measurements[*].measurementValue
- measurements[*].unitOrBasisForMeasurementCode
- itemDetailShipment[*].unitOrBasisForMeasurementCode
- itemPhysicalDetails[*].pack,itemPhysicalDetails[*].packagingCode
- productItemDescription[*].itemDescriptionTypeCode
- transactionTotals[*].unitOrBasisForMeasurementCode
- Configure a static mapping for each of the following fields in Import Orderful ship notices/manifests (856), according to your business requirements:
- carrierDetailsQuantityAndWeight[*].packagingCode
- N1_loop[*].partyIdentification[*].identificationCodeQualifier,referenceInformation[*].referenceIdentificationQualifier
- itemIdentification[*].productServiceIDQualifier
Customize the handlebars template
Follow the instructions below to modify the handlebars template for the Orderful HTTP request body:
- In the Edit import panel, scroll down to the section How would you like the records imported.
- Under Build HTTP request body, click Launch.
- In the resulting editor, customize according to your requirements and preview the sample records.
NetSuite invoices to Orderful invoices (810)
On a scheduled basis, this flow retrieves new invoices from NetSuite and creates Invoice transactions (type 810) in the Orderful platform.
Flow details
- Export source: NetSuite
- Import destination: Orderful
-
Built-in export: Get NetSuite invoices – get all invoices from NetSuite that have been created since this flow last ran.
- preSavePage hook: Processing Orderful transactions (810).js – To add all line item quantities.
- Built-in import: Import Orderful transactions (810) – add transactions into Orderful.
-
Built-in lookup: Get Orderful transaction errors by transaction ID (810) – get a transaction error from Orderful by transaction ID.
- preSavePage hook: Processing Orderful valid transactions (810).js – check whether the transaction is valid or invalid.
Before you begin
- Purchase orders in Orderful and sales orders in NetSuite should be the same, already synced by running Orderful purchase orders (850) to NetSuite sales orders first.
- Orderful purchase order numbers should be stored as a PO# in NetSuite sales orders.
Setup instructions
- Configure hard-coded mapping for each of the following fields in Import Orderful transactions (810), according to your business requirements:
- type.name
- stream
- transactionSetHeader[*].transactionSetIdentifierCode
- referenceInformation[*].referenceIdentificationQualifier
- N1_loop[*].partyIdentification[*].entityIdentifierCode
- N1_loop[*].partyIdentification[*].identificationCodeQualifier
- N1_loop[*].partyIdentification[*].identificationCode
- termsOfSaleDeferredTermsOfSale[*].termsTypeCode
- termsOfSaleDeferredTermsOfSale[*].termsBasisDateCode
- termsOfSaleDeferredTermsOfSale[*].percentOfInvoicePayable
- termsOfSaleDeferredTermsOfSale[*].termsNetDays
- dateTimeReference[*].dateTimeQualifier
- FOBRelatedInstructions[*].shipmentMethodOfPaymentCode
- IT1_loop[*].baselineItemDataInvoice[*].unitOrBasisForMeasurementCode
- IT1_loop[*].baselineItemDataInvoice[*].productServiceIDQualifier
- IT1_loop[*].pricingInformation[*].priceMultiplierQualifier
- IT1_loop[*].pricingInformation[*].multiplier5
- IT1_loop[*].PID_loop[*].itemDescriptionTypeCode
- IT1_loop[*].SAC_loop[*].allowanceOrChargeIndicatorCode
- carrierDetails[*].referenceIdentificationQualifier
- carrierDetails[*].referenceIdentification
- carrierDetails[*].standardCarrierAlphaCode
- Configure a static mapping for each of the following fields in Import Orderful transactions (810), according to your business requirements:
- currency[*].currencyCode, N1_loop[*].partyIdentification[*].entityIdentifierCode
- IT1_loop[*].baselineItemDataInvoice[*].basisOfUnitPriceCode
- IT1_loop[*].baselineItemDataInvoice[*].productServiceIDQualifier2
- IT1_loop[*].pricingInformation[*].priceIdentifierCode
- IT1_loop[*].SAC_loop[*].servicePromotionAllowanceOrChargeCode
- IT1_loop[*].SAC_loop[*].unitOrBasisForMeasurementCode
- carrierDetails[*].transportationMethodTypeCode
- ISS_loop[*].invoiceShipmentSummary[*].unitOrBasisForMeasurementCode
Customize the handlebars template
Follow the instructions below to modify the handlebars template for the Orderful HTTP request body:
- In Flow Builder, click to edit Import Orderful transactions (810).
- In the Edit import panel, scroll down to the section How would you like the records imported.
- Under Build HTTP request body, click Launch.
- In the resulting editor, customize according to your requirements and preview the sample records.
NetSuite items to Orderful inventory inquiry/advices (846)
On a scheduled basis, this flow retrieves new items from NetSuite and creates inventory inquiries or advices (type 846) in the Orderful platform.
Flow details
- Export source: NetSuite
- Import destination: Orderful
- Built-in export: Get NetSuite items – get all items from NetSuite that have been modified since this flow last ran.
- Built-in import: Import Orderful inventory inquiry/advices (846) – add inventory inquiry/advices into Orderful.
-
Built-in lookup: Get Orderful transaction errors by transaction ID (846) – get a transaction error from Orderful by transaction ID.
- preSavePage hook: Processing Orderful valid transactions (846).js – check whether the transaction is valid or invalid.
Setup instructions
- Configure hard-coded mapping for each of the following fields in Import Orderful inventory inquiry/advices (846), according to your business requirements:
- type.name
- stream
- transactionSetHeader[*].transactionSetIdentifierCode
- transactionSetHeader[*].transactionSetControlNumber
- dateTimeReference[*].dateTimeQualifier
- LIN_loop[*].itemIdentification[*].assignedIdentification
- LIN_loop[*].productItemDescription[*].itemDescriptionTypeCode
- LIN_loop[*].destinationQuantity[*].identificationCodeQualifier
- LIN_loop[*].destinationQuantity[*].identificationCode
- LIN_loop[*].destinationQuantity[*].locationIdentifier
- transactionTotals[*].numberOfLineItems
- transactionTotals[*].hashTotal
- Configure a static mapping for each of the following fields in Import Orderful inventory inquiry/advices (846), according to your business requirements:
- transactionSets[*].beginningSegmentForInventoryInquiryAdvice[*].reportTypeCode
- transactionSets[*].N1_loop[*].partyIdentification[*].entityIdentifierCode
- transactionSets[*].LIN_loop[*].itemIdentification[*].productServiceIDQualifier
- transactionSets[*].LIN_loop[*].itemIdentification[*].productServiceIDQualifier1
- transactionSets[*].LIN_loop[*].QTY_loop[*].quantityInformation[*].quantityQualifier
- transactionSets[*].beginningSegmentForInventoryInquiryAdvice[*].transactionSetPurposeCode
Customize the handlebars template
Follow the instructions below to modify the handlebars template for the Orderful HTTP request body:
- In Flow Builder, click to edit Import Orderful inventory inquiry/advices (846).
- In the Edit import panel, scroll down to the section How would you like the records imported.
- Under Build HTTP request body, click Launch.
- In the resulting editor, customize according to your requirements and preview the sample records.
Comments
Chris Mark, right you are, and I'm glad to hear that the template nonetheless served as a good basis for your integration.
UPDATE – 6/15/2021:
The Orderful – NetSuite template has been re-released in the integrator.io Marketplace to include support for the Orderful v3 API. This article has also been revised to reflect the new flows.
thanks for this. please note that some of this is outdated, orderful has upgraded to v3 api and i've had to make some customizations to the templates. great starting point though!
Please sign in to leave a comment.