NetSuite Integration Guide

Document created by chris_stevens Employee on Mar 21, 2016Last modified by mike_aronson on Nov 21, 2016
Version 7Show Document
  • View in full screen mode

This article discusses common scenarios, errors, and FAQs for integrating with NetSuite

 

 

Overview

The NetSuite connection represents a single NetSuite account, including login credentials. If you have multiple accounts or sandbox instances, you need to use a separate connection for each and configure the URL accordingly. You can pair a single connection with different NetSuite operations to perform a unique action against a NetSuite account.

 

The connector supports the following actions (Note: Not all actions are available for every record type):

  • Search - Returns one or more records that match zero or more filters.
  • Get - Returns a single record that matches a given internal ID.
  • Create - Creates a new record.
  • Update - Modifies an existing record.
  • Delete - Removes an existing record.

 

Reference Guide Articles

Here are some links to our Reference Guide, which you may find useful when using and configuring the NetSuite Connector.

Scenarios on How to Use the NetSuite Connector

 

Scenario 1 - Query

When querying records, each record found will be returned as a separate Document and be processed independently. If Include List Fields  is turned on- sublist records are included in the results, otherwise only the base fields are returned.For example, when searching Customers, enable to return AddressList, ContactList, CustomFieldList.

Scenario 2 - Update

Updating a specific record in NetSuite requires that you include the internal or external NetSuite ID for that record in the update request.

 

Best Practices:As a best practice, if the other application has a field that can be used to capture an external ID, populate it with the NetSuite ID so you don't have to do a lookup to get the ID in your Process. Alternatively, use the user-specified external ID to maintain the "other" system's ID in NetSuite. To do this, in the Map that maps from the source Profile to the NetSuite Update Profile, use a Map Function that performs a Connector Call to NetSuite. The Connector Call's Operation should do a Search action against the particular object type. Add a Filter to the Operation that you can pass in the key value(s) from the source data as an Input Parameter to limit the results to a single record. The Map Function should return the object's internalId attribute as an Output Parameter. Map this Output Parameter to the internalId attribute in the destination Profile.If a particular object does not already exist in NetSuite, the internalId attribute in the Update Profile will be empty after the Map. If a request without an internalId is then sent to the NetSuite Connector, it will throw an error. If this is a possibility in your integration scenario, you should use a Decision Step after the Map to check that the internalId is populated in each record before sending the data to the NetSuite Connector.

Scenario 3 - Upsert

In order to do an Upsert, the externalId is a mandatory and required field, and it needs to be non-blank. To perform the upsert the use of externalId is needed in the NetSuite system to uniquely identify the records. Otherwise, do an insert and an update separately and add the logic in the process to check if the record exists in NetSuite based on your uniquely identifying field.

Scenario 4 - Custom Fields and Objects

One of the great strengths of NetSuite is the ability to easily create custom fields and objects. Because of this, the NetSuite Connector connects to your NetSuite account and browses the available interfaces in real time. Custom objects and fields are handled no differently than standard objects and fields. If you modify an object in NetSuite after importing it in Boomi, you will need to edit the Operation Component and go through the import wizard again to re-import the recent changes.

 

Remember to reimport operation to access new custom fields.

Scenario 5 - Batching Requests

To maintain satisfactory performance for all of its clients, NetSuite governs the web service traffic sent to its data center. There are limits on the number of records per request by the type of request (Add vs. Update vs. Search) as well as time of day (peak vs. off peak). For example, you cannot try to add more than 100 records at once during the middle of the day, but at night that limits grows to 200. Refer to the NetSuite Help Center, Understanding Web Services Governance, for more information.Please refer to our reference guide at below link, that mentions about the Maximum No. of documents that are allowed in a batch for a particular Operation (http://help.boomi.com/atomsphere/GUID-391FB951-69DC-484C-8B1E-4248CB9368BF.html). The NetSuite Connector automatically batches records to the proper size in accordance with NetSuite's guidelines. This means your Process can send any number of records to the NetSuite Connector and it will chunk the records automatically for you.

  • The default is 0 and will include the max number of documents per batch allowed by SuiteTalk:
  • Create — 100 ,Update — 50,Upsert — 50, Delete – 100 (cannot be changed)

 

However, the NetSuite Connector always uses peak time maximums even during during off-peak times as per the current design.

 

Other Considerations:

  • The Connector does not necessarily open and close a connection per batch. It pools up to four connections for efficiency.
  • Requests are sent synchronously.
  • Request batches are sent sequentially, not concurrently.
  • Create a dedicated integration user and role for traceability.
  • Create dedicated integration forms to insulate from end user changes, scripts, validations and ensure needed fields are available.
  • Disable client and server SuiteScript in Web Services Preferences.
  • When writing to NetSuite, cache List values either ahead of time using Document Cache or with map function (getSelectValue) Handle application responses in process workflow using Application Status document properties.
  • Use response handling and Try/Catch to handle errors and retries instead of the built-in connector retry.

Scenario 6 - To Blank out a field in NetSuite

For fields, including customFields, you cannot pass Null values or empty tags to the NetSuite API. The proper way of deleting a value from a certain field, is to add it to the nullFieldList (which is a separate element within the request profile). Note, you insert the name of the element you wish to blank out here. In the case of customFields, you should use the NetSuite internal ID, not the human readable name from the profile. Reference:https://system.na1.netsuite.com/app/help/helpcenter.nl?fid=section_N3527090https://system.na1.netsuite.com/help/helpcenter/en_US/Output/Help/section_N3438152.htmlhttps://system.na1.netsuite.com/app/help/helpcenter.nl?fid=section_N3438152

Common Errors

 

Error: NetSuite Import Error - The maximum number ( 1000 ) of records allowed for a READ operation has been exceeded

Description:Using the Boomi Import Wizard to create a NetSuite profile results in this error:"Unable to browse connector: Unable to Build NetSuite Object Definition: java.lang.Exception: Error executing Netsuite operation: The maximum number ( 1000 ) of records allowed for a READ operation has been exceeded.; Caused by: Error executing Netsuite operation: The maximum number ( 1000 ) of records allowed for a READ operation has been exceeded.; Caused by: The maximum number ( 1000 ) of records allowed for a READ operation has been exceeded."

 

Solution:The NetSuite Operation Import performs a NetSuite Read Operation to retrieve the objects/fields needed in order to create a profile.Per NetSuite, “Read operations” include Web services operations that retrieves data from a NetSuite account. These include get, getList, getAll, search, searchNext and searchMore operations. NetSuite limits the number of records for a page search to 1000. This is described in the NetSuite Web Services SuiteTalk Platform Guide version 2.5.0 in the section titled “Understanding Record Limiting”. This NetSuite guide is available here: http://www.netsuite.com/portal/partners/integration/download/SuiteTalkWebServicesPlatformGuide_2012.2.pdf. Request limiting is governed by your NetSuite account and the license agreement that you have with NetSuite. The web service request logs are captured within NetSuite and NetSuite support may be able to look into options for handling this request limit.

Error: Error executing Netsuite Command: Unable to lookup web services domain.: java.io.IOException: Unable to complete domain lookup request

Description:Error executing Netsuite Command: Unable to lookup web services domain.: java.io.IOException: Unable to complete domain lookup request: Your account is disabled for 17 more minutes due to 6 consecutive failed login attempts. [code: USER_ERROR]; Caused by: Unable to lookup web services domain.: java.io.IOException: Unable to complete domain lookup request: Your account is disabled for 17 more minutes due to 6 consecutive failed login attempts. [code: USER_ERROR]; Caused by: Unable to complete domain lookup request: Your account is disabled for 17 more minutes due to 6 consecutive failed login attempts. [code: USER_ERROR]

 

Solution:This error is returned from NetSuite when the password used contains special reserved characters or is expired or invalid. You may have to recreate a new NetSuite password. The change needs to be made in NetSuite, then the password needs to be updated in the NetSuite connection and the process(es) needs to be redeployed. For more  information see NetSuite connector and Deploy components to an Atom.

Error: When performing a NetSuite update or insert, some fields are not getting updated in NetSuite.  No error is displayed, or document does not show up in Manage -> Process Reporting.

How to Troubleshoot:

  1. In Boomi, verify that the latest profile has be imported from the NetSuite operation component.
  2. In Boomi, verify that the values appear in the XML data going into the NetSuite Connector (select the NetSuite connector and view the shape source data)
  3. When checking the data, verify you are logging into the same NetSuite account as the same NetSuite user that is specified in the NetSuite Connection component.
  4. In NetSuite, Make sure the NetSuite page layout that the user is using for the object has the fields displayed.
  5. In NetSuite, verify the fields are not read-only. If needed, use NetSuite role based permissions to manage 'edit' access, Make sure to set these fields to be "Editable" and not 'disabled' or read-only settings.
  6. When you execute the process and it makes the request to NetSuite, the request and response are captured in NetSuite under: Setup > Integration > Web Services Usage Log  (may require admin account to view this). Locate the Request and Response captured there from your execution (per the date/timestamp) and review those files to confirm the field values are showing up.
  7. If the fields are showing up in the request XML and no error appears in the response XML, and all of the above have been verified, you may need to contact NetSuite support for further analysis of why the request XML is not acting on the NetSuite object.

Error: NetSuite error Invalid subsidiary reference key XX when attempting to create a Customer record

Description:You receive the following NetSuite error when attempting to create a Customer record:Invalid subsidiary reference key XX (where XX is the subsidiary internal ID passed in the request).

 

Solution:

  • Verify there is a Subsidiary configured in NetSuite for the referenced internal ID. Within NetSuite, go to Setup > Company > Classification > Subsidiaries. To quickly see the internal id, simply hover over the Edit or View link next to each subsidiary and then look at the browser's status bar for the id value (for example, https://system.na1.netsuite.com/app/common/otherlists/subsidiarytype.nl?id=15).
  • If found, verify the Subsidiary is Active.
  • If found, verify the Subsidiary is NOT an Elimination subsidiary. Customers cannot be assigned to elimination subsidiaries.

Error: Error Executing Netsuite Operation: Only One Request May Be Made Against a Session at a Time

Possible options to address the NetSuite error:

  • Adjust your execution schedules so that you can account for longer execution times
  • Use different Netsuite credentials for processes that must run concurrently
  • Purchase concurrent connection licenses from NetSuite which will permit simultaneous requests from the same user account

Error: NetSuite Error, INVALID_SEARCH_MORE, returned for Query

Description:Pulling data from NetSuite, receive the following error: Error Received during Netsuite Query Code: INVALID_SEARCH_MORE Type: ERROR Message: Invalid searchMore operation. Please make sure that you have had a successful search operation before you can perform any searchMore operation. ((com.boomi.connector.api.ConnectorException))

 

Solution:This error is returned from NetSuite. In NetSuite, you make a query and then reference that query to return more results.  If the original query ID is lost then this message will be returned.  A given entity is allowed to have two search IDs alive at a time. The oldest ID is expunged if a third is created. For SuiteCloud Plus users, a maximum of 20 search IDs are stored for a single SuiteCloud Plus user (two IDs per session x ten current logins).  Based on this, if there are multiple queries for the same entity, one of the IDs could be replaced by a new one and the SearchMoreWithId would not be able to match to the original requesting IDVerify if there other search processes that may be running at the same time.You can also check the NetSuite UI (Web Services Usage Log) for the request. (Search for SearchMoreWithId) just prior to the error response.  Determine if the response to the to the prior request showed an error.  The previous SearchMoreWithId had to complete successfully before the next Search More will be accepted.

Error: NetSuite Error - INSUFFICIENT_PERMISSION

Description:You receive the following error when attempting to query, create, or update a NetSuite record.Code: INSUFFICIENT_PERMISSIONType: ERRORMessage: You do not have permissions to set a value for element SOME FIELD NAME due to one of the following reasons: 1) The field is read-only; 2) An associated feature is disabled; 3) The field is available either when a record is created or updated, but not in both cases.Note that SOME FIELD NAME will be replaced with a specific API field name.

 

Solution:As suggested by the error message, there can be a number of causes for this error as well as some indirect reasons and special cases.

  1. Field is not displayed on the preferred form. This is most often the cause for this error. The field (standard or custom) must be displayed to be available via the API and when importing the operation, the NetSuite connector will use the Preferred Form.
    • To identify the Preferred Form, within NetSuite go to Setup > Customization > Entry/Transaction Forms. Find the object Type and confirm the Preferred box is checked to the right. Additionally Preferred Forms can be overridden by User Role. To confirm this, edit  each form for the object type, go to the Roles tab, and confirm the Preferred box is not checked (or only checked on the desired Form) for the integration user's Role.
    • To confirm the field is displayed, within NetSuite go to Setup > Customization > Entry/Transaction Forms. Edit the Preferred Form and go to the Fields tab. Go through each subtab to find where the custom field is added and confirm the Show box is checked.
  2. Field is read-only. Confirm the given field does not have any read/write access restrictions by user role. This is most notable for custom fields. Within NetSuite, go to Setup > Customization > Entity/Item/Transaction Body/Transaction Column Fields. Edit the field, go to the Access tab and confirm there are no access restrictions for the integration user's Role.
  3. Feature is disabled. If certain account-level features are disabled or not available in your NetSuite edition, corresponding fields will be unavailable. Some common optional features include Subsidiaries, Tax Schedules, Item Matrix Pricing, and Revenue Recognition.
  4. Field not available for create and update. Some standard fields can be written to only during creation or modification. One common area for this is with respect to auto-generated numbers for entities and transactions.
  5. In NetSuite 2014.x, the setting of IgnoreReadOnlyFields needs to be turned to True. Otherwise as per NetSuite documentation:
    • Setting the ignoreReadOnlyFields Preference
    • After getting or initializing a record, it is recommended that you set the ignoreReadOnlyFields preference to true when submitting the record using write operations such as add/addList or update/updateList. Setting this preference to true reduces the possibility of receiving an INSUFFICIENT_PERMISSION error because a read-only field was mistakenly set and then submitted.
    • It is also recommended that you set this preference to true when using the initialize/initializeList operations. To submit an initialized record without having to remove read-only fields populated during the initialization, set the ignoreReadOnlyFields preference header preference to true. When this preference is set to true, read-only fields are simply ignored during the Web services request.
  6. Special cases.
    • Transaction field "taxitem" - The NetSuite setting for Per-Line Taxes on Transactions must be disabled. Within NetSuite, go to Setup > Accounting > Set Up Taxes > United States (if multiple currencies).
    • Transaction field "deferrevrec" (or other revenue recognition-related fields) - The item record referenced on the transaction line must be configured with a Deferred Revenue Account. Edit the item record and select an account on the Rev Rec/Amort tab. Remember inventory items cannot be deferred.
    • Customer (or other entity) field "autoname" - Auto-generated numbers are enabled however without override. Review and modify the NetSuite settings or your field mapping accordingly. Within NetSuite, go to go to Setup > Company > Auto-Generated Numbers.

Remember API field names can differ from the labels within the NetSuite user interface and the relationship between fields and their controlling features may not always be obvious. One of the easiest ways to troubleshoot is to simply try to perform the same action through the NetSuite user interface. If you are still unsure, consult your NetSuite administrator and review the NetSuite Help Guide and SuiteTalk Schema Browser.

Error: Java Heap Space or GC Overhead limit error when sending a large request to NetSuite

Set a smaller Batch Size in the NetSuite operation. If you still receive the error, set the batch size incrementally smaller until it alleviates the issue. Note that doing this may slow performance, but it should allow you to complete the request rather than run out of memory.

Error: Error executing Netsuite Command: Error executing Netsuite operation: (400)Bad Request (com.boomi.connector.ConnectorException) Caused by: Error executing Netsuite operation: (400)Bad Request ((java.lang.Exception)) Caused by: (400)Bad Request ((org.apache.axis.AxisFault))

This error is returned from NetSuite. Typically it occurs when your endpoint returns an HTML error page instead of a soap response.We would recommend to check the WSDL to get the correct endpoint URL, perhaps the service URL for your web service changed when you moved to a different app server. You can try out http://www.soapui.org/ to test your web service. Make sure the connection URL is configured correct similar to :

Make sure if there are process properties being passed as parameters to the connector.Check to see if values for the properties are set explicitly.Reference : http://help.boomi.com/atomsphere/GUID-26C3D8BF-66AF-4B2E-A249-979C11F9C83A.html

Error: java.lang.Exception: Unable to get Netsuite Utility. ; Caused by: Unable to get Netsuite Utility. ; Caused by: Timeout waiting for idle object Error Type: DOCUMENT

During the day there is no error, but during the night when there is less traffic, the error occurs.The error is expected behavior when there are overlapping processes, and overlapping connections to NetSuite. Check the NetSuite connectors for the Max Concurrent sessions to be higher than 1.Check for processes that executed 15 minutes to 30 minutes prior to the failing process. The previous processes connections may have not closed the connection and are still executing.

Error: Fatal error in Start Shape (com.boomi.connector.ConnectorException) Caused by: Error executing Netsuite Command: Error executing Netsuite operation: (0)null

It appears to be an Axis error resulting from unidentifiable issues in network communication between client and server.Please contact NetSuite support regarding this error.

Error: NetSuite Connection error: PKIX path building failed: unable to find valid certification path to requested target

For the NetSuite Connector, some users started receiving this error on 2/8/2015 on local atoms.The issue began when NetSuite changed some certificates on 2/8/2015.  They logged the following issue in the NetSuite system:

  • NetSuite Issue #326728:  Release Preview 2015.1 > Web Services > Connecting on any release preview version results to Test Connection Failed > Unable to find valid certification path to requested target
  • NetSuite has confirmed that they implemented a fix for this issue on 2/11 at 2:30AM EST

 

If the issue were to happen again, it is possible to install the NetSuite trusted certificate directly into the atom’s Java keystore as a work around.To get the NetSuite trusted certificate, logon to the atom machine and copy the NetSuite Connection URL from the NetSuite Connection component, for example shown below, into a browser (Chrome, IE or Firefox) and attempt to access the URL via the browser. https://webservices.netsuite.com/services/NetSuitePort_2014_2 Ignore the message that displays in the browser, but select the lock icon on the top left of the URL just before the https://....  This will display the certificate information which they can download to the atom server.  This is shown in the image below.Then follow the KB articles to Import this certificate in the the Java keystore for the atom:How to Add Certificate to Java Keystore: https://na2.salesforce.com/articles/How_To/How-to-Add-Certificate-to-Java-Keystore?popup=trueIf you follow these steps and still get the error, contact NetSuite to request a certificate and report the issue which may help with their investigation into NetSuite Issue #326728.

 

User-added image

 

Error: Error executing Netsuite operation: org.xml.sax.SAXException: Invalid type

The error is returned from the NetSuite connector indicating a mismatch with the type defined in the profile for NetSuite operation.Make sure the version in the connection component matches with that of the version used by the NetSuite application.

Error: Error executing Netsuite Command: Unable to lookup web services domain.: java.io.IOException: Unable to complete domain lookup request: You have entered an invalid email address or password. Please try again. [code: USER_ERROR]

  1. Stop the schedules for all NetSuite process
  2. Update your NetSuite account password
  3. Update the NetSuite password in all NetSuite connections
  4. Prior to re-deploying the processes, use the Compare Deployments function on the deploy tab to ensure that the only differences between the last deployment version of the process and the new version is the change made to the connection. Instead of selecting different versions, click compare and use the defaults "Latest Revision of Process".
  5. Re-deploy the new version of all NetSuite processes
  6. Start the schedules for all NetSuite processes.

 

If this does not work, it may be possible that you have been locked out of your NetSuite account. If it is an account lock out issue,you may need to wait for a few more minutes to reactivate the account or contact the application admin for more details regarding this.

Error: On the parameters tab of the NetSuite Connector, some of the parameters are displayed in Red.

It appears that the query and the query filters have been modified and deleted.Please add the previous filters back, or re-create them, or update the parameters on the connector to match the new filters.

Error: NetSuite connector UNEXPECTED_ERROR

Description:This error is typically caused by one of the following:

  • Invalid NetSuite credentials (including leading/trailing whitespace around values, such as Account ID)
  • Invalid NetSuite request
  • Temporary internal processing error within NetSuite

Solution:

  • Edit the NetSuite connection component (or connection extensions if used) and carefully re-enter your NetSuite credentials. Be sure to not copy leading or trailing whitespace if copy-and-pasting values. Try again.
  • In many cases simply retrying the sync at a later time may resolve the issue.
  • Try to obtain the failed NetSuite request and response data from within NetSuite: Setup > Integration > Web Services Usage Log > adjust time filters and look for recent FAILED actions. Download and inspect the request data for any missing required fields or values out of place. Consider submitting to the Boomi community (sanitize any sensitive data) or technical support for further investigation.
  • If the error persists, obtain the request and response data and raise to NetSuite technical support for further investigation.

Error: A NetSuite Operation Import with “Batch Results” enabled creates a profile that is missing the wrapping object List element

Problem:Performing a NetSuite Connector Operation Import with the “Batch Results” option enabled creates a profile that is missing the "ObjectList" element at the top, but the NetSuite Response that is returned when the Operation has the “Batch Results” option enabled will wrap the data in an object List element.For example, the response for the Invoice object will include the “InvoiceList” element at the top and then the “Invoice” element below it will contain all of the profile elements.This type of profile may not be generated by the NetSuite Operation Import wizard, which may only import the object element at the top (“Invoice”) and its profile elements (no ”InvoiceList” element at the top).Solution:For most cases, the NetSuite Connector Operation should be configured with the Batch Results option unchecked, and if necessary combine documents in subsequent steps in the process.  The NetSuite Connector Operation “Batch Results” option should only be used in rare cases where an extremely high volume of data is to be processed.If you are using the batch results option, different steps are required to generate the profile. There are two different ways to do this. These steps are described using the Invoice object as an example:Option 1) Import the profile using the NetSuite Operation Import wizard. Edit the profile and rename the “Invoice” element root node to “InvoiceList”. Add a new node under this root node and rename the new node to be the “Invoice” element. Drag/drop all the other nodes to the new “Invoice” element (note: any children of an element you move will move automatically). Make sure the elements nodes have the appropriate attribute values, such as datatype, namespace, etc.Option 2) If the response xml from NetSuite is available, save the representative data to file and then create/edit the Netsuite profile by import it from XML fileImportant note: Any updates to the NetSuite object schema in the future will need to be made manually. Skip the re-import of the profile, and add/modify/delete the elements in the profile manually in the future to reflect any changes in the NetSuite object schema.Make sure the element namespaces are correct and if necessary, refer to a previous List response profile for verification

FAQ

 

How do I filter the date range in NetSuite Operation?

Want to select data based on a specified date range from NetSuite.  NetSuite does not permit the same element from being used multiple times in a filter/search.  ie. you cannot specify the following in the filter:

  • DateElement after (date)
  • DateElement before (date)

You can use a comma separated value and select the Within operator.  One way to achieve this is to create a Dynamic Process Property that consists of the First Date in the Date Range, a comma, "," and then the second date in the date range, and pass it to the filter as follows:

  • DateElement Within (Dynamic Process Property)

What is the proper Date/Time format for NetSuite?

NetSuite Date/Time XML Profile elements should be configured with the following format: yyyy-MM-dd'T'HH:mm:ss.SSSZZ. For example: 2010-04-01T10:33:17.837-07:00

The Item Object and possible other objects, are abstract objects, and are not part of the basic search, so they won't be available in the drop down list, when you attempt to import the profile, to create the NetSuite Operation.Instead, for basic searches, you must search on the type of item you wish to interact with: Assembly item, etc

What are the Best Practices when working with the Invoice Initialize Object in NetSuite?

If you are trying to create an invoice initialize request(based on an existing Sales Order) then follow the required steps.Set your NS Operation Action type to EXECUTE. Here you will find a list of NS API actions that perform various things like initialize, attach, detach, etc.Select Invoice Initialize depends on your requirement.You will need to populate the following fields in the request Profile:* InitializeRecord/reference/@type (e.g. "salesOrder", "customer")* InitializeRecord/reference/internalId  (internalId of the referenced record)Sample salesOrder Invoice Initialize Request,<ns1:InitializeRecord xmlns:ns1="urn:core_2014_1.platform.webservices.netsuite.com">   <ns1:type>invoice</ns1:type>   <ns1:reference type="salesOrder" internalId="108508"></ns1:reference></ns1:InitializeRecord>Note: The connector will automatically populate InitializeRecord/type.Once you will pass the request then you will get response.

How to search by external id for customer entity in NetSuite?

The NetSuite Upsert and Update operations add or update records in NetSuite without needing to determine first whether records already exist in NetSuite. These operations identify records by external ID and record type. If a record of the specified type with a matching external ID exists in NetSuite, it is updated. If it does not exist, a new record is created.If you try to create a Customer with an externalId used by a different record, the following error appears: Record already exists, name value must be unique. In NetSuite go to Lists > Relationships > Customers > Search > choose 'External ID (Text)'.

Why doesn't a particular NetSuite field appear in the Filter tab pull down?

You've imported a new NetSuite operation and profile, and the field appears in the profile, but is not available, on the filter tab, in the pull down when selecting elements/fields to query against.Not all NetSuite fields are "searchable".For example: 'shipStatus', from 'Item Fulfillment' isn't available as a query filter. You can see the full list of searchable fields under the 'Search Columns' using their schema browserexample: https://system.netsuite.com/help/helpcenter/en_US/srbrowser/Browser2014_2/script/record/itemfulfillment.html

Two NetSuite Operations use the same Request Profile, but after adding a new customField, why does only one of them work properly?

The Netsuite Operation, is closely coupled with the specified Request and Response Profile.  In some situations, you can have multiple operations configured to use the same profiles ( perhaps they have different selection criteria ).After adding a new customField, you can re-import one of the operations, and this will update your request and response profiles.  Even though the second operation appears to use the correct new profile, you must still re-import this second profile.

How can I see the HTTP Request and Response from the NetSuite Connector?

Request and response data for NetSuite requests is captured in NetSuite under: Setup > Integration > Web Services Usage Log  (may require admin account to view this).

How to search NetSuite transactions by status?

It is a common requirement to query or extract NetSuite transactions that have one or more specific status values, such as all pending sales orders or all closed invoices. This is possible however identifying the exact status value(s) is not obvious because you must use a special API syntax and not the value you see through the NetSuite user interface.To query a NetSuite transaction by status, first create a new NetSuite Connector Operation by importing the specific transaction object and create a filter for the <object type>|status field. Choose anyOf as the Operator.IMPORTANT: Be sure to select the status field for the primary object itself and not the a status field for any of the related transactions. The fields for the primary object are listed first in the Field picklist. Then you will need to determine the values you will need to use. The status values are special API values and are NOT the same as those visible through the NetSuite user interface. It is also important to note that behind the scenes the NetSuite connector is actually performing a transactionSearch API call.The status values are documented in the NetSuite SuiteTalk Schema Browser. Within the NetSuite Help Center, search for "schema browser" or go to https://system.netsuite.com/help/helpcenter/en_US/SchemaBrowser/indexv2013_1_0.html (note the version number in the URL; modify as necessary).  From within the Schema Browser, to find the list of transactionSearch status values navigate as follows:

  • Upper left: Click transactions sales.xsd.
  • Lower left: Click TransactionSearch.
  • Center: Within TransactionSearch (joined search) table, find basic and click platformCommon:TransactionSearchBasic
  • Center: Within TransactionSearchBasic table, find status and click tranSalesTyp:TransactionStatus
  • Right: Scroll down to TransactionStatus. These are the values to use.

Example values: _invoiceOpen, _purchaseOrderClosed, _salesOrderPendingFulfillmentCopy and paste this value into the connector step parameter value for the filter.Additional notes:

  • You can specify multiple status values by including them in a comma separated list. For example: _salesOrderPendingFulfillment,_salesOrderClosed.
  • The status value returned in the response data will be the "familiar" status label value, such as "Pending Fulfillment", not the API value.

My process references the NetSuite Legacy connector, how do I convert to the new connector?

With Version 2014 Release 1, NetSuite retired SuiteTalk 2009.2 and Earlier Endpoints. With this change, Dell Boomi delivered a new NetSuite connector. If you have not done so already, you should convert your processes to use the new connector.

  • NetSuite Legacy connectors may be found in several different AtomSphere shapes including:
    • Start, Connector, Map (Connector calls and Map Functions), Decision, Process Call and Business Rules
  • NetSuite Legacy profiles may be found in several different AtomSphere shapes including:
    • Connector Operation, Map, Find Changes, Set Properties, Data Process, Add to Cache, Load From Cache, Cleanse

Friendly reminders for converting your processes

  • Configure Connection URL to match the new version of NetSuite for your upgrade. For example, https://webservices.netsuite.com/services/NetSuitePort_2013_1. The URL defaults to the latest available version of the service. The last few numbers in the URL must match the version selected in the connection. So if you use the default URL and the default version, then you are all set. However if you change the Version field to “2012.1” you would have to change the last part of the URL field to /NetSuitePort_2012_1. If you are using a sandbox, your URL might look something like this: https://webservices.sandbox.netsuite.com/services/NetSuitePort_2012_1.
  • Compare the NetSuite Legacy process to new process to be certain all selected objects, mapping and filters are identical
  • Re-import profiles
  • Test the processes with new connections against currently executing NetSuite (Legacy) process results.
  • Deploy the modified process
  • To see where a connector or profile is used, you can search the Component Explorer.
    • Click the blue arrow ( ) next to the NetSuite (legacy) Connection or NetSuite (legacy) XML Profile component.
    • Select Show Usage.

If the component is reused in folders and/or categories, you must expand the folders and categories to see it.

  • To see which Connectors are deployed, you can use the Setup Licensing tab.
    • Click the “Standard” Connector Class
    • Connectors Deployed in Class, Type “netsuite” is the NetSuite (Legacy) connector, “netsuitesdk” is the NetSuite connector

How can I import NetSuite custom fields?

When importing a NetSuite Connector operation, occasionally an expected custom field does not display in the request or response profile under the customFieldList element.Here are the Steps to resolve why a NetSuite custom field was not imported into the request or response profile during a Operation browse:Generally speaking for a custom field to be available via the API it must be accessible by the NetSuite user configured for the integration and displayed on the NetSuite Preferred Form for the given object type.To troubleshoot this issue, verify the following.

  • Ensure the AtomSphere NetSuite Connection is configured with the correct NetSuite instance (sandbox vs. production) where the custom field is defined and with the desired user.
  • Ensure that NetSuite User credentials specified in the Connection component has Web Services privileges
    • Within NetSuite, go to Setup > Users/Roles > view User > Access tab, confirm Give Access box is checked.
    • Within NetSuite, go to Setup > Integration > Web Services Preferences, confirm User is added to table of users.
  • Ensure that field is set to be displayed on the given object Type’s Preferred Form. The field must be displayed to be available via the API and when importing the operation, the NetSuite connector will use the Preferred Form.
    • To identify the Preferred Form, within NetSuite go to Setup > Customization > Entry/Transaction Forms. Find the object Type and confirm the Preferred box is checked to the right. Additionally Preferred Forms can be overridden by User Role. To confirm this, edit  each form for the object type, go to the Roles tab, and confirm the Preferred box is not checked (or only checked on the desired Form) for the integration user's Role.
    • To confirm the field is displayed, within NetSuite go to Setup > Customization > Entry/Transaction Forms. Edit the Preferred Form and go to the Fields tab. Go through each subtab to find where the custom field is added and confirm the Show box is checked.
  • Ensure the custom field definition does not have any Role-specific Access restrictions.
    • Within NetSuite, go to Setup > Customization > Entity/Item/Transaction Body/Transaction Column Fields. Edit the field, go to the Access tab and confirm there are no access restrictions for the integration user's Role.
  • Ensure the custom field definition is applied to the correct categories. Note it is possible for the field to be displayed correctly while working within NetSuite but not exposed via the API. This may require some experimentation. Applying a field to more categories than necessary is not a problem if you do not add/apply it to forms.
    • Within NetSuite, go to Setup > Customization > Entity/Item/Transaction Body/Transaction Column Fields. Edit the field, go to the Applies To tab and confirm the field is applied to the relevant categories.

 

How do I configure the connector to use Token-Based Authentication?

Please see How to configure the NetSuite Connection with Token Based Authentication.

7 people found this helpful

Attachments

    Outcomes