Announcing the Saviynt Knowledge Exchange unifying the Saviynt forums, documentation, training,
and more in a single search tool across platforms. Read the announcement here.

NetSuite Onboarding

Vidhimehta
Regular Contributor
Regular Contributor

Hello, 

We are onboarding the NetSuite application via the SOAP connector and the connection has been successful using the below connection JSON. however, while running the jobs, the jobs are getting failed and error mentioned below. Kindly guide on how to run a successful job for accounts and entitlement imports.

Connection JSON:

{

    "authentications":{

        "netsuite":{

            "properties":{

                "SOAP_ENDPOINT":" https://baseurl/services/NetSuitePort_2020_1",

                "ACCOUNT":"clientAccount",

                "CONSUMER_KEY":"clientConsumerKey",

                "CONSUMER_SECRET":"clientConsuemerSecret",

                "TOKEN_ID":"clientsTokenID",

                "TOKEN_SECRET":"clientsTokenSecret"

            }

        }

    }

}

Job error log:

Vidhimehta_0-1697528471963.png

Regards,

Vidhi 

28 REPLIES 28

SB
Saviynt Employee
Saviynt Employee

This is not an error but just an Info log. Can you check the job logs to see if you find any other information. Also consider checking job history to see if you get any details there.


Regards,
Sahil

Vidhimehta
Regular Contributor
Regular Contributor

Hello Sahil,

the below errors for 2 different instance connections, the same job running for different SS:

Vidhimehta_1-1697710583246.png

 

 

Vidhimehta_0-1697710521192.png

 

SB
Saviynt Employee
Saviynt Employee

Did you find anything in the logs.

Based on this error, we are not able to make the call to the url. Can you confirm if the auth url redirects to another one. Are you able to run this call in postman/soap ui to generate the auth token


Regards,
Sahil

Vidhimehta
Regular Contributor
Regular Contributor

Hello @SB,

no logs to indicate anything, i have shared the logs already and tht is wht im getting currently.

i have tried to generate the auth token in postman but unable to get the right output. can you share some sample? should i raise a support/fresh desk ticket? do we have an integration guide specifically for Netsuite, as im facing erros on 2 different instances?

regards,

Vidhi.

Check postman collection for Netsuite

https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_1545059880.html#Related-Topics


Regards,
Rushikesh Vartak
If you find the response useful, kindly consider selecting Accept As Solution and clicking on the kudos button.

SB
Saviynt Employee
Saviynt Employee

You can refer to SOAP documentation but there is no OOB doc for Netsuite. Also, if the token is not generating from Postman/SOAP UI it will not work from Saviynt either. You can check with Netsuite support team for the postman setup.

https://docs.saviyntcloud.com/bundle/SOAP-v23x/page/Content/Scenarios-for-Implementing-the-Connector...


Regards,
Sahil

Vidhimehta
Regular Contributor
Regular Contributor
Hello Team, 
After updating the GrantAccess JSON and AccountImport JSON, facing the below error. (JSON from the forums - https://forums.saviynt.com/t5/saviynt-knowledge-base/netsuite-integration-soap-connector-with-sample...)
Question - the connection is establishing but jobs are errored.
Vidhimehta_6-1699512640563.pngVidhimehta_7-1699512700946.png

 


Kindly let me know if any additional details are needed.

 

 
Regards,
Vidhi.

SB
Saviynt Employee
Saviynt Employee

Can you share the complete job log and the JSON (Connection and Import) you are using.

Also please confirm if the calls are working from SOAP UI. Can you also share a screenshot of the response for the same.


Regards,
Sahil

Vidhimehta
Regular Contributor
Regular Contributor

Hello @SB,

Below is the connection JSON and the Import JSON:

CONNECTIONJSON

{

    "authentications":{

        "netsuite":{

            "properties":{

                "SOAP_ENDPOINT":"https://webservices.netsuite.com/services/NetSuitePort_2017_2",

                "ACCOUNT":"***",

                "CONSUMER_KEY":"***",

                "CONSUMER_SECRET":"***",

                "TOKEN_ID":"****",

                "TOKEN_SECRET":"****"

            }

        }

    }

}

 

ACCOUNTS_IMPORT_JSON

{
"CONNECTION1":"netsuite",
"REQUESTXML1":"${String timestamp=new Date().getTime().toLong().toString().substring(0, 10); String nonce=java.util.UUID.randomUUID().toString().replace('-', '').substring(0, 20); String signature=org.apache.commons.codec.digest.HmacUtils.hmacSha256( (CONSUMER_SECRET+'&'+TOKEN_SECRET).getBytes() , (ACCOUNT+'&'+CONSUMER_KEY+'&'+TOKEN_ID+'&'+nonce+'&'+timestamp).getBytes() ).encodeAsBase64(); return '<soapenv:Envelope xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" axmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"> <soapenv:Header> <tokenPassport> <account>'+ACCOUNT+'</account> <consumerKey>'+CONSUMER_KEY+'</consumerKey> <token>'+TOKEN_ID+'</token> <nonce>'+nonce+'</nonce> <timestamp>'+timestamp+'</timestamp> <signature algorithm=\"HMAC-SHA256\">'+signature+'</signature> </tokenPassport> </soapenv:Header> <soapenv:Body>' + (nsId != null && nsId != '' ? '<ns3:searchMoreWithId xmlns=\"urn:customization_2017_2.setup.webservices.netsuite.com\" xmlns:ns2=\"urn:core_2017_2.platform.webservices.netsuite.com\" xmlns:ns3=\"urn:messages_2017_2.platform.webservices.netsuite.com\"> <ns3:searchId>'+nsId+'</ns3:searchId> <ns3:pageIndex>'+PAGE_NUMBER+'</ns3:pageIndex> </ns3:searchMoreWithId>' : '<platformMsg:search xmlns:platformMsg=\"urn:messages_2017_2.platform.webservices.netsuite.com\"> <platformMsg:searchRecord xsi:type=\"ns2:EmployeeSearchAdvanced\" savedSearchId=\"18732\" xmlns:ns2=\"urn:employees_2017_2.lists.webservices.netsuite.com\"> </platformMsg:searchRecord> </platformMsg:search>' ) + '</soapenv:Body> </soapenv:Envelope>';}",
"REQUESTPARAMS1":{
"Content-Type":"text/xml",
"SOAPAction":"${nsId != null && nsId != '' ? 'searchMoreWithId' : 'search'}"
},
"RESPONSEDATAPATH1":"${nsId != null && nsId != '' ? 'Body.searchMoreWithIdResponse.searchResult.searchRowList.searchRow' : 'Body.searchResponse.searchResult.searchRowList.searchRow'}",
"RESPONSETOTALRESULTS1":"${nsId != null && nsId != '' ? 'Body.searchMoreWithIdResponse.searchResult.totalRecords' : 'Body.searchResponse.searchResult.totalRecords'}",
"RESPONSEPAGERESULTS1":"${nsId != null && nsId != '' ? 'Body.searchMoreWithIdResponse.searchResult.pageSize' : 'Body.searchResponse.searchResult.pageSize'}",
"ACCOUNTMAPPING1":"name:basic.entityId.searchValue,customproperty1:basic.email.searchValue,accountid:basic.externalId.searchValue.@externalId,customproperty2:basic.giveAccess.searchValue",
"ENTITLEMENTMAPPING1":{
"Role":"basic.role.searchValue.@internalId"
},
"RESPONSEMAPPING1":{
"nsId":"Body.searchResponse.searchResult.searchId"
}
}

Regards,

Vidhi.

SB
Saviynt Employee
Saviynt Employee

Below is a sample of ACCOUNTS_IMPORT_JSON to be used for netsuite integration (do update the xmlns values accordingly). Can you try with this and verify. If it does not work, do confirm if its working for your from SOAP UI and the logs for the job run.

{

   "CONNECTION1":"netsuite",

   "REQUESTXML1":"${String timestamp=new Date().getTime().toLong().toString().substring(0, 10); String nonce=java.util.UUID.randomUUID().toString().replace('-', '').substring(0, 20); String signature=org.apache.commons.codec.digest.HmacUtils.hmacSha1( (CONSUMER_SECRET+'&'+TOKEN_SECRET).getBytes() , (ACCOUNT+'&'+CONSUMER_KEY+'&'+TOKEN_ID+'&'+nonce+'&'+timestamp).getBytes() ).encodeAsBase64(); return '<soapenv:Envelope xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"> <soapenv:Header> <tokenPassport> <account>'+ACCOUNT+'</account> <consumerKey>'+CONSUMER_KEY+'</consumerKey> <token>'+TOKEN_ID+'</token> <nonce>'+nonce+'</nonce> <timestamp>'+timestamp+'</timestamp> <signature algorithm=\"HMAC-SHA1\">'+signature+'</signature> </tokenPassport> </soapenv:Header> <soapenv:Body>' + (nsId != null && nsId != '' ? '<ns3:searchMoreWithId xmlns=\"urn:customization_2020_1.setup.webservices.netsuite.com\" xmlns:ns2=\"urn:core_2020_1.platform.webservices.netsuite.com\" xmlns:ns3=\"urn:messages_2020_1.platform.webservices.netsuite.com\"> <ns3:searchId>'+nsId+'</ns3:searchId> <ns3:pageIndex>'+PAGE_NUMBER+'</ns3:pageIndex> </ns3:searchMoreWithId>' : '<platformMsg:search xmlns:platformMsg=\"urn:messages_2020_1.platform.webservices.netsuite.com\"> <platformMsg:searchRecord xsi:type=\"ns2:EmployeeSearchAdvanced\" savedSearchId=\"18732\" xmlns:ns2=\"urn:employees_2020_1.lists.webservices.netsuite.com\"> </platformMsg:searchRecord> </platformMsg:search>' ) + '</soapenv:Body> </soapenv:Envelope>';}",

    "REQUESTPARAMS1":{

        "Content-Type":"text/xml",

        "SOAPAction":"${nsId != null && nsId != '' ? 'searchMoreWithId' : 'search'}"

    },

    "RESPONSEDATAPATH1":"${nsId != null && nsId != '' ? 'Body.searchMoreWithIdResponse.searchResult.searchRowList.searchRow' : 'Body.searchResponse.searchResult.searchRowList.searchRow'}",

    "RESPONSETOTALRESULTS1":"${nsId != null && nsId != '' ? 'Body.searchMoreWithIdResponse.searchResult.totalRecords' : 'Body.searchResponse.searchResult.totalRecords'}",

    "RESPONSEPAGERESULTS1":"${nsId != null && nsId != '' ? 'Body.searchMoreWithIdResponse.searchResult.pageSize' : 'Body.searchResponse.searchResult.pageSize'}",

    "ACCOUNTMAPPING1":"name:basic.entityId.searchValue,customproperty1:basic.email.searchValue,accountid:basic.externalId.searchValue.@externalId,customproperty2:basic.giveAccess.searchValue",

    "ENTITLEMENTMAPPING1":{

        "Role":"basic.role.searchValue.@internalId"

    },

    "RESPONSEMAPPING1":{

        "nsId":"Body.searchResponse.searchResult.searchId"

    }

}


Regards,
Sahil

Vidhimehta
Regular Contributor
Regular Contributor

Hello @SB,

Still facing the same error. 

Error:

Vidhimehta_0-1699901214033.png

Connection JSON:

{

  "authentications": {

    "netsuite": {

      "properties": {

        "SOAP_ENDPOINT": "https://***/services/NetSuitePort_2017_2 ",

        "ACCOUNT": "***",

        "CONSUMER_KEY": "***",

        "CONSUMER_SECRET": "***",

        "TOKEN_ID": "***"

        "TOKEN_SECRET": "***"

      }

    }

  }

}

 

Account Import JSON:

{
"CONNECTION1":"netsuite",
"REQUESTXML1":"${String timestamp=new Date().getTime().toLong().toString().substring(0, 10); String nonce=java.util.UUID.randomUUID().toString().replace('-', '').substring(0, 20); String signature=org.apache.commons.codec.digest.HmacUtils.hmacSha256( (CONSUMER_SECRET+'&'+TOKEN_SECRET).getBytes() , (ACCOUNT+'&'+CONSUMER_KEY+'&'+TOKEN_ID+'&'+nonce+'&'+timestamp).getBytes() ).encodeAsBase64(); return '<soapenv:Envelope xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"> <soapenv:Header> <tokenPassport> <account>'+ACCOUNT+'</account> <consumerKey>'+CONSUMER_KEY+'</consumerKey> <token>'+TOKEN_ID+'</token> <nonce>'+nonce+'</nonce> <timestamp>'+timestamp+'</timestamp> <signature algorithm=\"HMAC-SHA256\">'+signature+'</signature> </tokenPassport> </soapenv:Header> <soapenv:Body>' + (nsId != null && nsId != '' ? '<ns3:searchMoreWithId xmlns=\"urn:customization_2020_1.setup.webservices.netsuite.com\" xmlns:ns2=\"urn:core_2020_1.platform.webservices.netsuite.com\" xmlns:ns3=\"urn:messages_2020_1.platform.webservices.netsuite.com\"> <ns3:searchId>'+nsId+'</ns3:searchId> <ns3:pageIndex>'+PAGE_NUMBER+'</ns3:pageIndex> </ns3:searchMoreWithId>' : '<platformMsg:search xmlns:platformMsg=\"urn:messages_2020_1.platform.webservices.netsuite.com\"> <platformMsg:searchRecord xsi:type=\"ns2:EmployeeSearchAdvanced\" savedSearchId=\"18732\" xmlns:ns2=\"urn:employees_2020_1.lists.webservices.netsuite.com\"> </platformMsg:searchRecord> </platformMsg:search>' ) + '</soapenv:Body> </soapenv:Envelope>';}",
"REQUESTPARAMS1":{
"Content-Type":"text/xml",
"SOAPAction":"${nsId != null && nsId != '' ? 'searchMoreWithId' : 'search'}"
},
"RESPONSEDATAPATH1":"${nsId != null && nsId != '' ? 'Body.searchMoreWithIdResponse.searchResult.searchRowList.searchRow' : 'Body.searchResponse.searchResult.searchRowList.searchRow'}",
"RESPONSETOTALRESULTS1":"${nsId != null && nsId != '' ? 'Body.searchMoreWithIdResponse.searchResult.totalRecords' : 'Body.searchResponse.searchResult.totalRecords'}",
"RESPONSEPAGERESULTS1":"${nsId != null && nsId != '' ? 'Body.searchMoreWithIdResponse.searchResult.pageSize' : 'Body.searchResponse.searchResult.pageSize'}",
"ACCOUNTMAPPING1":"name:basic.entityId.searchValue,customproperty1:basic.email.searchValue,accountid:basic.externalId.searchValue.@externalId,customproperty2:basic.giveAccess.searchValue",
"ENTITLEMENTMAPPING1":{
"Role":"basic.role.searchValue.@internalId"
},
"RESPONSEMAPPING1":{
"nsId":"Body.searchResponse.searchResult.searchId"
}
}

Log:

2023-11-14T00:14:27+05:30-ecm-domain.JobcontrolController-http-nio-8080-exec-116-ffbnn-DEBUG-qry = SELECT il.IMPORTLOGID as IMPORTLOGID,il.logDataAsXML as logDataAsXML,ecmimp.jobid as jobID,ecmimp.jobname as JOBNAME,ecmimp.jobStartDate as JOBSTARTDATE,ecmimp.coments as COMMENTS,ecmimp.jobEndDate as JOBENDDATE,il.filename as FILENAME,ecmimp.SAVRESPONSE as SAVRESPONSE,ecmimp.systemName as SYSTEMNAME,ecmimp.externalconnection as EXTERNALCONNECTION,ecmimp.updateUser as UPDATEUSER,ecmimp.triggername as TRIGGERNAME,ecmimp.jobgroup as JOBGROUP,ecmimp.triggerType as TRIGGERTYPE FROM EcmImportJob ecmimp left join ImportLog il on(ecmimp.jobid=il.jobid) where 1=1 AND (ecmimp.jobname = 'SapImportJob' OR ecmimp.jobname ='SAPIMPORTJOB' ) AND ecmimp.triggername = 'I_NetSuite_SVC_Accounts' AND ecmimp.jobgroup = 'DATA' ORDER BY ecmimp.jobid DESC limit 0,15
 
2023-11-14T00:14:27+05:30-ecm-domain.JobcontrolController-http-nio-8080-exec-116-ffbnn-DEBUG-extraQry = AND (ecmimp.jobname = 'SapImportJob' OR ecmimp.jobname ='SAPIMPORTJOB' ) AND ecmimp.triggername = 'I_NetSuite_SVC_Accounts' AND ecmimp.jobgroup = 'DATA'
 
2023-11-14T00:14:04+05:30-ecm-worker-integration.ExternalConnectionCallService-quartzScheduler_Worker-8-w5l99-DEBUG-Key=jobtriggername Value=I_NetSuite_SVC_Accounts
 
2023-11-14T00:14:04+05:30-ecm-worker-services.JobManagementGuardRailService-quartzScheduler_Worker-8-w5l99-DEBUG-Only one instance is running.. Trigger Name : I_NetSuite_SVC_Accounts
 
2023-11-14T00:13:59+05:30-ecm-domain.FlatViewJobcontrolController-http-nio-8080-exec-113-ffbnn-DEBUG-Inside fireJobAction params = [triggername:I_NetSuite_SVC_Accounts, triggergroup:GRAILS_JOBS, jobname:SapImportJob, jobgroup:DATA, actn:6, job_name:, job_group:, controller:flatViewJobcontrol, action:fireJobAction]
 
SOAP Response:
Vidhimehta_1-1699901464958.png

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<soapenv:Fault>
<faultcode>soapenv:Server.userException</faultcode>
<faultstring>org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog.</faultstring>
<detail>
<ns1:hostname xmlns:ns1="http://xml.apache.org/axis/">partners230.prod-phx-na5.core.ns.internal</ns1:hostname>
</detail>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>

I had changed the port to 2017_2 & signature method to SHA256, but it was still throwing an error. 

Kindly let me know if any additional information is needed.

Regards,

Vidhi.

[This message has been edited by moderator to disable URL link]

SB
Saviynt Employee
Saviynt Employee

I see an exception in your SOAP screenshot as well and it appears its not working. Can you check once.


Regards,
Sahil

Vidhimehta
Regular Contributor
Regular Contributor

Hello @SB,

Let me check with the application owner and respond.

Regards,

Vidhi.

Vidhimehta
Regular Contributor
Regular Contributor

Hello @SB,

This is a SOAP Request that ran successfully on PostMan.

Query:

<soapenv:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

    <soapenv:Header>

        <platformMsg:searchPreferences soapenv:mustUnderstand="0" soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next" xmlns:platformMsg="urn:messages_2017_2.platform.webservices.netsuite.com">

            <platformMsg:bodyFieldsOnly>true</platformMsg:bodyFieldsOnly>

            <platformMsg:pageSize>200</platformMsg:pageSize>

        </platformMsg:searchPreferences>

        <ns3:tokenPassport soapenv:mustUnderstand="0" soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next" xmlns:ns3="urn:messages_2017_2.platform.webservices.netsuite.com">

            <ns1:account xmlns:ns1="urn:core_2017_2.platform.webservices.netsuite.com">{{ACCOUNT}}</ns1:account>

            <ns2:consumerKey xmlns:ns2="urn:core_2017_2.platform.webservices.netsuite.com">{{CONSUMER_KEY}}</ns2:consumerKey>

            <ns4:token xmlns:ns4="urn:core_2017_2.platform.webservices.netsuite.com">{{TOKEN_ID}}</ns4:token>

            <ns5:nonce xmlns:ns5="urn:core_2017_2.platform.webservices.netsuite.com">{{nonce}}</ns5:nonce>

            <ns6:timestamp xmlns:ns6="urn:core_2017_2.platform.webservices.netsuite.com">{{timestamp}}</ns6:timestamp>

            <ns7:signature algorithm="HMAC_SHA256" xmlns:ns7="urn:core_2017_2.platform.webservices.netsuite.com">{{signature}}</ns7:signature>

        </ns3:tokenPassport>

    </soapenv:Header>

    <soapenv:Body>

        <platformMsg:search xmlns:platformMsg="urn:messages_2017_2.platform.webservices.netsuite.com">

            <platformMsg:searchRecord xsi:type="ns2:EmployeeSearch" xmlns:ns2="urn:employees_2017_2.lists.webservices.netsuite.com" xmlns:ns3="urn:common_2017_2.platform.webservices.netsuite.com">

                <ns2:basic xsi:type="ns3:EmployeeSearchBasic">

                    <ns3:externalId operator="anyOf">

                        <platformCore:searchValue xsi:type="platformCore:RecordRef" externalId="624296" xmlns:platformCore="urn:core_2017_2.platform.webservices.netsuite.com"/>

                    </ns3:externalId>

                    <ns3:isInactive>

                        <platformCore:searchValue xmlns:platformCore="urn:core_2017_2.platform.webservices.netsuite.com">F</platformCore:searchValue>

                    </ns3:isInactive>

                </ns2:basic>

            </platformMsg:searchRecord>

        </platformMsg:search>

    </soapenv:Body>

</soapenv:Envelope>

Response:

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header>
<platformMsgs:documentInfo xmlns:platformMsgs="urn:messages_2017_2.platform.webservices.netsuite.com">
<platformMsgs:nsId>WEBSERVICES_624699_SB2_111420238569640592122516447_7636f6731</platformMsgs:nsId>
</platformMsgs:documentInfo>
</soapenv:Header>
<soapenv:Body>
<searchResponse xmlns="urn:messages_2017_2.platform.webservices.netsuite.com">
<platformCore:searchResult xmlns:platformCore="urn:core_2017_2.platform.webservices.netsuite.com">
<platformCore:status isSuccess="true"/>
<platformCore:totalRecords>1</platformCore:totalRecords>
<platformCore:pageSize>200</platformCore:pageSize>
<platformCore:totalPages>1</platformCore:totalPages>
<platformCore:pageIndex>1</platformCore:pageIndex>
<platformCore:searchId>WEBSERVICES_624699_SB2_111420238569640592122516447_7636f6731</platformCore:searchId>
<platformCore:recordList>
<platformCore:record internalId="***" externalId="***" xsi:type="listEmp:Employee" xmlns:listEmp="urn:employees_2017_2.lists.webservices.netsuite.com">
<listEmp:entityId>***</listEmp:entityId>
<listEmp:firstName>***</listEmp:firstName>
<listEmp:lastName>***</listEmp:lastName>
<listEmp:email>***</listEmp:email>
<listEmp:isInactive>false</listEmp:isInactive>
<listEmp:lastModifiedDate>2023-10-31T02:56:53.000-07:00</listEmp:lastModifiedDate>
<listEmp:dateCreated>2023-01-10T07:33:03.000-08:00</listEmp:dateCreated>
<listEmp:initials>DP</listEmp:initials>
<listEmp:subsidiary internalId="2">
<platformCore:name>ServiceChannel US</platformCore:name>
</listEmp:subsidiary>
<listEmp:globalSubscriptionStatus>_softOptOut</listEmp:globalSubscriptionStatus>
<listEmp:currency internalId="1">
<platformCore:name>USD</platformCore:name>
</listEmp:currency>
<listEmp:supervisor internalId="***">
<platformCore:name>***</platformCore:name>
</listEmp:supervisor>
<listEmp:isSalesRep>false</listEmp:isSalesRep>
<listEmp:isJobResource>false</listEmp:isJobResource>
<listEmp:hireDate>2023-01-09T21:00:00.000-08:00</listEmp:hireDate>
<listEmp:title>IT NetSuite Support</listEmp:title>
<listEmp:gender>_omitted</listEmp:gender>
<listEmp:workCalendar internalId="1">
<platformCore:name>Default Work Calendar</platformCore:name>
</listEmp:workCalendar>
<listEmp:giveAccess>true</listEmp:giveAccess>
<listEmp:commissionPaymentPreference>_systemPreference</listEmp:commissionPaymentPreference>
<listEmp:customFieldList>
<platformCore:customField internalId="1557" scriptId="custentity2" xsi:type="platformCore:BooleanCustomFieldRef">
<platformCore:value>false</platformCore:value>
</platformCore:customField>
<platformCore:customField internalId="1986" scriptId="custentity7" xsi:type="platformCore:StringCustomFieldRef">
<platformCore:value>624296</platformCore:value>
</platformCore:customField>
<platformCore:customField internalId="759" scriptId="custentity_2663_payment_method" xsi:type="platformCore:BooleanCustomFieldRef">
<platformCore:value>false</platformCore:value>
</platformCore:customField>
<platformCore:customField internalId="25" scriptId="custentity_esc_last_modified_date" xsi:type="platformCore:DateCustomFieldRef">
<platformCore:value>2023-10-30T21:00:00.000-07:00</platformCore:value>
</platformCore:customField>
<platformCore:customField internalId="5631" scriptId="custentity_flo_no_cr_adjustment" xsi:type="platformCore:BooleanCustomFieldRef">
<platformCore:value>false</platformCore:value>
</platformCore:customField>
<platformCore:customField internalId="5630" scriptId="custentity_flo_retain_emp_pending_cr" xsi:type="platformCore:BooleanCustomFieldRef">
<platformCore:value>false</platformCore:value>
</platformCore:customField>
<platformCore:customField internalId="5618" scriptId="custentity_flo_supervisor_isinactive" xsi:type="platformCore:BooleanCustomFieldRef">
<platformCore:value>false</platformCore:value>
</platformCore:customField>
<platformCore:customField internalId="5704" scriptId="custentity_sod_third_integration_user" xsi:type="platformCore:BooleanCustomFieldRef">
<platformCore:value>false</platformCore:value>
</platformCore:customField>
</listEmp:customFieldList>
</platformCore:record>
</platformCore:recordList>
</platformCore:searchResult>
</searchResponse>
</soapenv:Body>
</soapenv:Envelope>

Even after the connection establishing, Saviynt connection is not visible on NetSuite side.

Kindly guide on further steps.

Regards,

Vidhi.

SB
Saviynt Employee
Saviynt Employee

I see a difference in the JSON you ran from postman vs the one you have added in Import. The algorithm value defined in Postman above HMAC_SHA256 while in the JSON you shared prev it is HMAC-SHA256. 

Can you check other values in your JSON to ensure they are the same as the one you ran in postman and validate. If it still does not work, share the complete ACCOUNTS_IMPORT_JSON you used.


Regards,
Sahil

Vidhimehta
Regular Contributor
Regular Contributor

Hello @SB,

The signature would not affect the output, however, i have still changed the same and it is still failing.

Below Import JSON:

{
"CONNECTION1": "netsuite",
"REQUESTXML1": "${String timestamp=new Date().getTime().toLong().toString().substring(0, 10);
String nonce=java.util.UUID.randomUUID().toString().replace('-', '').substring(0, 20);
String signature=org.apache.commons.codec.digest.HmacUtils.hmacSha256( (CONSUMER_SECRET+'&'+TOKEN_SECRET).getBytes() , (ACCOUNT+'&'+CONSUMER_KEY+'&'+TOKEN_ID+'&'+nonce+'&'+timestamp).getBytes() ).encodeAsBase64();
return '<soapenv:Envelope xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"> <soapenv:Header> <tokenPassport> <account>'+ACCOUNT+'</account> <consumerKey>'+CONSUMER_KEY+'</consumerKey> <token>'+TOKEN_ID+'</token> <nonce>'+nonce+'</nonce> <timestamp>'+timestamp+'</timestamp> <signature algorithm=\"HMAC_SHA256\">'+signature+'</signature> </tokenPassport> </soapenv:Header> <soapenv:Body>' + (nsId != null && nsId != '' ? '<ns3:searchMoreWithId xmlns=\"urn:customization_2020_1.setup.webservices.netsuite.com\" xmlns:ns2=\"urn:core_2020_1.platform.webservices.netsuite.com\" xmlns:ns3=\"urn:messages_2020_1.platform.webservices.netsuite.com\"> <ns3:searchId>'+nsId+'</ns3:searchId> <ns3:pageIndex>'+PAGE_NUMBER+'</ns3:pageIndex> </ns3:searchMoreWithId>' : '<platformMsg:search xmlns:platformMsg=\"urn:messages_2020_1.platform.webservices.netsuite.com\"> <platformMsg:searchRecord xsi:type=\"ns2:EmployeeSearchAdvanced\" savedSearchId=\"18732\" xmlns:ns2=\"urn:employees_2020_1.lists.webservices.netsuite.com\"> </platformMsg:searchRecord> </platformMsg:search>' ) + '</soapenv:Body> </soapenv:Envelope>';}",
"REQUESTPARAMS1": {
"Content-Type": "text/xml",
"SOAPAction": "${nsId != null && nsId != '' ? 'searchMoreWithId' : 'search'}"
},
"RESPONSEDATAPATH1": "${nsId != null && nsId != '' ? 'Body.searchMoreWithIdResponse.searchResult.searchRowList.searchRow' : 'Body.searchResponse.searchResult.searchRowList.searchRow'}",
"RESPONSETOTALRESULTS1": "${nsId != null && nsId != '' ? 'Body.searchMoreWithIdResponse.searchResult.totalRecords' : 'Body.searchResponse.searchResult.totalRecords'}",
"RESPONSEPAGERESULTS1": "${nsId != null && nsId != '' ? 'Body.searchMoreWithIdResponse.searchResult.pageSize' : 'Body.searchResponse.searchResult.pageSize'}",
"ACCOUNTMAPPING1": "name:basic.entityId.searchValue,customproperty1:basic.email.searchValue,accountid:basic.externalId.searchValue.@externalId,customproperty2:basic.giveAccess.searchValue",
"ENTITLEMENTMAPPING1": {
"Role": "basic.role.searchValue.@internalId"
},
"RESPONSEMAPPING1": {
"nsId": "Body.searchResponse.searchResult.searchId"
}

Error:

Vidhimehta_0-1700808912346.png

Regards,

Vidhi.

 

Vidhimehta
Regular Contributor
Regular Contributor

Hello @SB,

Any update here?

Regards,

Vidhi.

Vidhimehta
Regular Contributor
Regular Contributor

Hello Team,

Any documents for the onboarding and integration along with working JSONs available?

Regards,

Vidhi.

Hello @Vidhimehta,

Please refer this article 
https://forums.saviynt.com/t5/saviynt-knowledge-base/netsuite-integration-soap-connector-with-sample... 

Thanks.

If you find the above response useful, Kindly Mark it as "Accept As Solution".

Hello @sudeshjaiswal,

The details in the link shared doesn't work. I have commented on the same but no response.

Regards,

Vidhi.

Hello @Vidhimehta,

Thanks for the confirmation, as i can see you have not shared the complete logs, would request you to share the complete logs.

Thanks.

If you find the above response useful, Kindly Mark it as "Accept As Solution".

Hello @sudeshjaiswal,

Have shared the details in the thread here - NetSuite Onboarding - Saviynt Forums - 57237.

Kindly let me know if any additional information is needed.

Regards,

Vidhi.

Vidhimehta
Regular Contributor
Regular Contributor

SB
Saviynt Employee
Saviynt Employee

This looks to be an issue. We are checking this.


Regards,
Sahil

Vidhimehta
Regular Contributor
Regular Contributor

Hello @sudeshjaiswal , @SB 

Any update here?

SB
Saviynt Employee
Saviynt Employee

This needs further troubleshooting and is being worked with Saviynt Support team.


Regards,
Sahil

Vidhimehta
Regular Contributor
Regular Contributor

Hello @SB,

Thank you.