Nav

NetSuite Connector Release Notes 

The Anypoint Connector for NetSuite synchronizes data and automates business processes between NetSuite and third-party applications, either on-premises or in the cloud.

Version 7.4.0 - December 22, 2016

Compatibility

Software Version

Mule Runtime

3.5

API

SuiteTalk 2016.2

Features

  • Support for SuiteTalk API version 2016.2 - No new web services. For a detailed list of changes, log into NetSuite, open Help Center and navigate to New ReleaseRelease NotesNetSuite 2016.2 Release NotesSuiteTalk (Web Services) Integration.

Fixed in this Release

  • Custom fields were not being properly mapped in search results.

  • RESTlet calls used to fail when the response was a JSON array.

Known Issues

None.

Migrating from Older Versions

  • GET, PUT and POST RESTlet calls now always return a list. If the RESTlet returned a single JSON object, it will now be wrapped inside a single element list. If the response was a JSON array, the connector will return a list containing all of its elements.

  • From 2016.2 endpoint, the value of externalId is returned as an external attribute. In 2016.1 and earlier endpoint, the value of externalId is returned as an internalId attribute. You can find more information from NetSuite 2016.2 Release Notes (NetSuite login required)

Version 7.3.0 - September 7, 2016

Version 7.3.0 - Compatibility

Software Version

Mule Runtime

3.5 and later

API

SuiteTalk 2016.1

Version 7.3.0 - Features

  • Added the ability to call RESTlets. - NetSuite RESTlets allow you to develop custom RESTful web services for your NetSuite account using JavaScript and SuiteScript. RESTlets are an alternative to the standard SuiteTalk SOAP-based APIs.

Version 7.3.0 - Fixed in this Release

None.

Version 7.3.0 - Known Issues

None.

Version 7.2.0 - August 12, 2016

Version 7.2.0 - Compatibility

Software Version

Mule Runtime

3.5 and later

API

SuiteTalk 2016.1

Version 7.2.0 - Features

  • Upgraded the connector to make use of SuiteTalk API version 2016.1.

Version 7.2.0 - Fixed in this Release

  • Error while fetching metadata on NetSuite accounts with a large number of customizations.

Version 7.2.0 - Known Issues

None.

Version 7.1.0 - March 8, 2016

Version 7.1.0 - Compatibility

Software Version

Mule Runtime

3.5 and later

API

SuiteTalk 2015.2

Version 7.1.0 - Features

  • Upgraded the connector to use SuiteTalk API version 2015.2, including the 20th January 2016 Weekly Update.

  • Support for Request Level Token Based Authentication.

Fixed in this Release

  • Custom Transaction Types no longer cause issues when retrieving metadata.

  • Error in returnSearchColumns when searching for ITEMs.

Version 7.1.0 - Known Issues

None.

Version 7.0.0 - December 11, 2015

Version 7.0.0 - Compatibility

Software Version

Mule Runtime

3.5 and later

API

SuiteTalk 2015.2

Version 7.0.0 - Features

  • Upgraded the connector to use SuiteTalk API version 2015.2.

  • Added pagination support to "Search" operation (removed other search processors, see Migration below).

Version 7.0.0 - Fixed in this Release

  • DataSense support for "Get Record" and "Get Custom Record" operations support.

  • Improved metadata for custom fields. Also, support for "Other Custom Fields" has been added. Record types with noticeable changes to custom field placement are:

    • ACCOUNT

    • BIN

    • CASH_SALE

    • CLASSIFICATION

    • CUSTOMER

    • DEPOSIT

    • ESTIMATE

    • EXPENSE_CATEGORY

    • EXPENSE_REPORT

    • INVOICE

    • ITEM_DEMAND_PLAN

    • ITEM_FULFILLMENT

    • ITEM_RECEIPT

    • ITEM_SUPPLY_PLAN

    • JOURNAL_ENTRY

    • LOCATION

    • MANUFACTURING_COST_TEMPLATE

    • MANUFACTURING_ROUTING

    • NOTE

    • PROMOTION_CODE

    • PURCHASE_REQUISITION

    • SUBSIDIARY

    • VENDOR_BILL

    • VENDOR_CREDIT

    • VENDOR_PAYMENT

    • VENDOR_RETURN_AUTHORIZATION

Version 7.0.0 - Known Issues

None.

Version 7.0.0 - Migrating from Older Versions

Changes have been made to metadata thus, when upgrading to NetSuite Connector 7.0.0, reload metadata during design time.

This release uses SuiteTalk API version 2015.2 in which NetSuite introduced a new concept called "Integration Record". This requires the use of an application Id. Hence all three connection strategy configurations now have a new parameter called applicationId. The Integration Record containing an application Id can be set up from within your NetSuite environment by navigating to Setup > Integration > Manage Integrations. The global elements will now look as follows:

  • New Global Configurations (from version 7.0.0):


          
       
1
2
3
4
5
<netsuite:config-login-authentication name="NetSuite" email="${email}" password="${password}" account="${account}" roleId="${roleId}" applicationId="${applicationId}" />

<netsuite:config-request-level-authentication name="NetSuite" email="${email}" password="${password}" account="${account}" roleId="${roleId}" applicationId="${applicationId}" />

<netsuite:config-sso-login-authentication name="NetSuite" email="${email}" password="${password}" account="${account}" roleId="${roleId}" applicationId="${applicationId}" />

Configuration for getRecord and getCustomRecord has slightly changed due to the DataSense introduction. Also, the @Default is now set on the internalId with a default value of #[payload].

Configuration prior to 7.0.0:


          
       
1
2
3
<netsuite:get-record config-ref="">
        <netsuite:record-ref internalId="" externalId="" type="" />
</netsuite:get-record>
  • New configuration (from version 7.0.0):


          
       
1
<netsuite:get-record config-ref="" internalId="" externalId="" type="" />

Due to the addition of pagination to search we have removed the now redundant processors searchNext, searchMore and searchMoreWithId.

Furthermore, we would like to unify search functionality under just one processor and we feel that with the improvements made so far and the growing use of DataWeave, search should be the go-to operation. Moreover, searchWithExpression and query operations are limited when it comes to certain complexities. Hence we have decided to remove the processors searchWithExpression, queryAsNativeResult and queryRecords.

search will now always return the whole set of results rather than just the first page. This is will be retrieved in the form of a List of Maps that represent all the records found that match your criteria. A new parameter fetchSize can be set to control the page size used by pagination support.

Here is an example of how the configuration for search will look:


          
       
1
<netsuite:search config-ref="NetSuite__Login_Authentication" searchRecord="EMPLOYEE_BASIC" criteria-ref="#[payload]" fetchSize="5" />

Here are some examples if you are switching from searchWithExpression or query. The criteria for search can easily be constructed using DataWeave, generating the script for you and requiring you only to fill in the values (you can also use a Java component or DataMapper should you prefer).

  • searchWithExpression to search:

    
                 
              
    1
    
    <netsuite:search-with-expression config-ref="NetSuite__Login_Authentication" searchRecord="EMPLOYEE_BASIC" expression="is(email, '#[map-payload:email]'), contains(address, '#[map-payload:address]')"/>
    
                 
              
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    
    <dw:transform-message doc:name="Transform Message">
            <dw:set-payload><![CDATA[%dw 1.0
    %output application/java
    ---
    {
            email: {
                    operator: "IS",
                    searchValue: payload.email
            } as :object {
                    class : "com.netsuite.webservices.platform.core.SearchStringField"
            }
            address: {
                    operator: "CONTAINS",
                    searchValue: payload.address
            } as :object {
                    class : "com.netsuite.webservices.platform.core.SearchStringField"
            }
    } as :object {
            class : "com.netsuite.webservices.platform.common.EmployeeSearchBasic"
    }]]></dw:set-payload>
    </dw:transform-message>
    <netsuite:search config-ref="NetSuite__Login_Authentication" searchRecord="EMPLOYEE_BASIC" fetchSize="50" doc:name="NetSuite"/>
  • query to search:

    
                 
              
    1
    
    <netsuite:query-records config-ref="NetSuite__Login_Authentication" query="dsql:SELECT * FROM EMPLOYEE WHERE firstName=#[message.inboundProperties.'http.query.params'.firstName]" fetchSize="50" doc:name="Query EMPLOYEE record"/>
    
                 
              
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    
    <dw:transform-message doc:name="Transform Message">
            <dw:set-payload><![CDATA[%dw 1.0
    %output application/java
    ---
    {
            firstName: {
                    operator: "IS",
                    searchValue: inboundProperties.'http.query.params'.firstName
            } as :object {
                    class : "com.netsuite.webservices.platform.core.SearchStringField"
            }
    } as :object {
            class : "com.netsuite.webservices.platform.common.EmployeeSearchBasic"
    }]]></dw:set-payload>
    </dw:transform-message>
    <netsuite:search config-ref="NetSuite__Login_Authentication" searchRecord="EMPLOYEE_BASIC" fetchSize="50" doc:name="NetSuite"/>

Finally, getDeletedRecords has also been reworked. This operation will now expect a SearchDateField on the payload as its @Default value, together with a pageIndex and type as before. The SearchDateField can also be manually defined. Here are some examples:


          
       
1
2
3
4
5
6
7
8
9
10
11
<netsuite:get-deleted-records config-ref="NetSuite__Login_Authentication" type="ACCOUNT">
    <netsuite:deleted-date ref="#[payload]"/>
</netsuite:get-deleted-records>

<netsuite:get-deleted-records config-ref="NetSuite__Login_Authentication" type="EMPLOYEE">
    <netsuite:deleted-date operator="ON" searchValue="#[java.util.Calendar calendar = new GregorianCalendar(); calendar.set(2015, 10, 01); return calendar;]"/>
</netsuite:get-deleted-records>

<netsuite:get-deleted-records config-ref="NetSuite__Login_Authentication" type="CUSTOMER" doc:name="NetSuite">
    <netsuite:deleted-date operator="BEFORE" predefinedSearchValue="THIS_MONTH"/>
</netsuite:get-deleted-records>

Version 6.0.1 - July 30, 2015

Version 6.0.1 - Compatibility

Software Version

Mule Runtime

3.5 and later

API

SuiteTalk 2015_1

Version 6.0.1 - Features

None.

Version 6.0.1 - Fixed in this Release

  • Fixed an issue where only one custom field was being passed on the webservice request.

  • Fixed an issue where the DataSense MetaData Category keys for the Search Category were duplicated.

Version 6.0.1 - Known Issues

None.

Version 6.0.1 - Migrating from Older Versions

Changes have been made to metadata thus, when upgrading to NetSuite Connector 6.0.1, reload metadata during design time.

In this release, users are now presented with multiple Global Elements, each representing a different way of authenticating to NetSuite.

  • Previous Global Configuration:


          
       
1
<netsuite:config name="NetSuite" email="${email}" password="${password}" account="${account}" roleId="${roleId}" authenticationType=${authenticationType} />
  • New Global Configurations:


          
       
1
2
3
4
5
<netsuite:config-login-authentication name="NetSuite" email="${email}" password="${password}" account="${account}" roleId="${roleId}" />

<netsuite:config-request-level-authentication name="NetSuite" email="${email}" password="${password}" account="${account}" roleId="${roleId}" />

<netsuite:config-sso-login-authentication name="NetSuite" email="${email}" password="${password}" account="${account}" roleId="${roleId}" />

Version 6.0.0 - July 10, 2015

Version 6.0.0 - Compatibility

Software Version

Mule Runtime

3.5 and later

API

SuiteTalk 2015_1

Version 6.0.0 - Features

  • Support for HTTP proxy.

  • Started using Metadata Categories, thus making the Search and Async-search operations Metadata aware.

  • Added a new authentication type that allows Single sign-on logins.

  • Migrated the connector to CXF 2.7.15.

Fixed in this Release

  • Record type attributes are handled using Calendar instead of XMLGregorianCalendar.

  • Metadata keys for customizations (except Custom Record Types) are no longer generated with the internalId as part of the key.

  • Operation "Get Saved Search" now shows the appropriate record types.

  • Metadata for the custom fields has been improved. Record types with noticeable changes to custom field placement are:

    • ASSEMBLY_BUILD

    • EXPENSE_REPORT

    • ITEM_FULFILLMENT

    • ITEM_RECEIPT

    • JOURNAL_ENTRY

    • SALES_ORDER

    • OPPORTUNITY

    • PURCHASE_ORDER

    • TRANSFER_ORDER

    • WORK_ORDER

  • Missing fields on the AssemblyItem entity, such as intercoIncomeAccount and intercoCogsAccount, have been added.

Version 6.0.0 - Known Issues

None.

Version 6.0.0 - Migrating from Older Versions

Changes have been made to metadata thus, when upgrading to NetSuite Connector 6.0.0, reload metadata during design time.

In this release, we have upgraded the connector to DevKit 3.6.1 and introduced Connection Strategies. The user is now presented with multiple Global Elements, each representing a different way of authenticating to NetSuite.

  • Previous Global Configuration:


          
       
1
<netsuite:config name="NetSuite" email="${email}" password="${password}" account="${account}" roleId="${roleId}" authenticationType=${authenticationType} />
  • New Global Configurations:


          
       
1
2
3
4
5
<netsuite:config-login-authentication name="NetSuite" email="${email}" password="${password}" account="${account}" roleId="${roleId}" />

<netsuite:config-request-level-authentication name="NetSuite" email="${email}" password="${password}" account="${account}" roleId="${roleId}" />

<netsuite:config-sso-login-authentication name="NetSuite" email="${email}" password="${password}" account="${account}" roleId="${roleId}" />

Version 5.0.0 - April 15, 2015

Version 5.0.0 - Compatibility

Software Version

Mule Runtime

3.5 and later

API

SuiteTalk 2015_1

Version 5.0.0 - Features

  • Upgraded the connector to SuiteTalk API version 2015_1. 

  • Operation "Get Deleted Records" no longer has a limit on the number of records to retrieve. This operation now makes use of a page index as per the new changes to the SuiteTalks API.

Version 5.0.0 - Fixed in this Release

  • WSDLs and XSDs have been excluded from the connector distribution.

Version 5.0.0 - Known Issues

None. 

Version 4.0.11 - November 28, 2014

Version 4.0.11 - Compatibility

Software Version

Mule Runtime

3.5.2

Anypoint Studio

October 2014

API

SuiteTalks 2014_1

Version 4.0.11 - Features 

  • Added an option to switch from login authentication to sending authentication information with every request, to achieve concurrency. Any existing apps built with older versions of this connector do not fail when updating to the new version, as a default value is configured for the login authentication of such apps. 

Version 4.0.11 - Fixed in this Release

The following issues have been fixed in this release:

Fix Description

Replaced dependencies

Replaced some unnecessary dependencies in the pom.xml file with updated dependencies from the DevKit parent.

Replaced demo

Replaced the existing sample demo with a new demo for NetSuite CRUD operations.

Fix for null point exceptions

Fix to avoid null point exceptions when retrieving metadata.

Version 4.0.11 - Known Issues

None.

Resources

  • Learn how to Install Anypoint Connectors using Anypoint Exchange.

  • Access MuleSoft’s Forum to pose questions and get help from Mule’s broad community of users.

  • To access MuleSoft’s expert support team, subscribe to Mule ESB Enterprise and log into MuleSoft’s Customer Portal.