{"id":4755,"date":"2018-09-06T15:59:12","date_gmt":"2018-09-06T15:59:12","guid":{"rendered":"https:\/\/zappysys.com\/blog\/?p=4755"},"modified":"2020-05-29T21:48:49","modified_gmt":"2020-05-29T21:48:49","slug":"read-data-netsuite-ssis-simpletalk-soap-api","status":"publish","type":"post","link":"https:\/\/zappysys.com\/blog\/read-data-netsuite-ssis-simpletalk-soap-api\/","title":{"rendered":"How to read data from NetSuite in SSIS (SimpleTalk SOAP API)"},"content":{"rendered":"<h2>Introduction<\/h2>\n<p><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/netsuite-logo.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-5110 alignleft\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/netsuite-logo.png\" alt=\"\" width=\"136\" height=\"96\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/netsuite-logo.png 665w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/netsuite-logo-300x212.png 300w\" sizes=\"(max-width: 136px) 100vw, 136px\" \/><\/a>In this post we will learn how to read data from NetSuite in SSIS. We will use <a href=\"https:\/\/zappysys.com\/products\/ssis-powerpack\/ssis-xml-source\/\" target=\"_blank\" rel=\"noopener\">ZappySys XML Source<\/a> for SOAP API access.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<div class=\"content_block\" id=\"custom_post_widget-2523\"><h2><span id=\"Prerequisites\">Prerequisites<\/span><\/h2>\r\nBefore we perform the steps listed in this article, you will need to make sure the following prerequisites are met:\r\n<ol style=\"margin-left: 1.5em;\">\r\n \t<li><abbr title=\"SQL Server Integration Services\">SSIS<\/abbr> designer installed.\u00a0Sometimes it is referred to as <abbr title=\"Business Intelligence Development Studio\">BIDS<\/abbr> or <abbr title=\"SQL Server Data Tools\">SSDT<\/abbr> (<a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/ssdt\/download-sql-server-data-tools-ssdt\" target=\"_blank\" rel=\"noopener\">download it from the Microsoft site<\/a>).<\/li>\r\n \t<li>Basic knowledge of SSIS package\u00a0development using\u00a0<em>Microsoft SQL Server Integration Services<\/em>.<\/li>\r\n \t<li>Make sure\u00a0<span style=\"text-decoration: underline;\"><a href=\"https:\/\/zappysys.com\/products\/ssis-powerpack\/\" target=\"_blank\" rel=\"noopener\">ZappySys SSIS PowerPack<\/a><\/span>\u00a0is installed (<a href=\"https:\/\/zappysys.com\/products\/ssis-powerpack\/download\/\" target=\"_blank\" rel=\"noopener\">download it<\/a>, if you haven't already).<\/li>\r\n \t<li>(<em>Optional step<\/em>)<em>.<\/em>\u00a0<a href=\"https:\/\/zappysys.zendesk.com\/hc\/en-us\/articles\/360035974593\" target=\"_blank\" rel=\"noopener\">Read this article<\/a>, if you are planning to deploy packages to a server and schedule their execution later.<\/li>\r\n<\/ol><\/div>\n<h2><span id=\"What_is_NetSuite_CRM\">What is NetSuite CRM?<\/span><\/h2>\n<p>NetSuite is a CRM \/ ERP product. It gives you scalable cloud CRM \/ ERP solution targeted at high-growing, mid-sized businesses and large enterprises. It automates front- and back-office processes including: financial management, revenue management, fixed assets, order management, billing, and inventory management.<\/p>\n<h2><span id=\"Getting_Started\">Preparing for NetSuite WebService Call in SSIS<\/span><\/h2>\n<p>For NetSuite API call we have to make sure certain settings and obtain Application ID and AccountID. So let&#8217;s get started.<\/p>\n<div class=\"content_block\" id=\"custom_post_widget-5058\"><h3>How to enable NetSuite Web Service Feature<\/h3>\r\nBefore you call any NetSuite SOAP API (i.e.\u00a0<strong>SuiteTask Web Service<\/strong>), First thing to get started with NetSuite SOAP API (i.e. ) is to enable Web Service Feature. Once you enable Web Service, you can programmatically access NetSuite data in your App (e.g. Power BI, Tableau, Informatica).\r\n\r\n<a href=\"https:\/\/system.netsuite.com\/app\/help\/helpcenter.nl?fid=section_N3419926.html\" target=\"_blank\" rel=\"noopener\">Click this link<\/a>\u00a0to see steps to enable Web Service Feature\r\n<div id=\"attachment_4616\" class=\"wp-caption alignnone\">\r\n\r\n<a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/08\/netsuite-enable-web-service-features-setup-option.png?ssl=1\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-4616 size-full\" style=\"border: 0px; max-width: 100%; height: auto; box-shadow: rgba(0, 0, 0, 0.176) 0px 1px 2px;\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/08\/netsuite-enable-web-service-features-setup-option.png?resize=479%2C568&amp;ssl=1\" sizes=\"(max-width: 479px) 100vw, 479px\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/08\/netsuite-enable-web-service-features-setup-option.png?w=479&amp;ssl=1 479w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/08\/netsuite-enable-web-service-features-setup-option.png?resize=253%2C300&amp;ssl=1 253w\" alt=\"Enable NetSuite Web Service Feature (SuiteTalk API)\" width=\"471\" height=\"559\" data-attachment-id=\"4616\" data-permalink=\"https:\/\/zappysys.com\/blog\/read-netsuite-data-power-bi\/netsuite-enable-web-service-features-setup-option\/#main\" data-orig-file=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/08\/netsuite-enable-web-service-features-setup-option.png?fit=479%2C568&amp;ssl=1\" data-orig-size=\"479,568\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"netsuite-enable-web-service-features-setup-option\" data-image-description=\"&lt;p&gt;Enable NetSuite Web Service Feature&lt;\/p&gt; \" data-medium-file=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/08\/netsuite-enable-web-service-features-setup-option.png?fit=253%2C300&amp;ssl=1\" data-large-file=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/08\/netsuite-enable-web-service-features-setup-option.png?fit=479%2C568&amp;ssl=1\" \/><\/a>\r\n<p class=\"wp-caption-text\">Enable NetSuite Web Service Feature (SuiteTalk API)<\/p>\r\n\r\n<\/div>\r\n<h3><span id=\"Obtain_NetSuite_Account_ID\">Obtain NetSuite Account ID<\/span><\/h3>\r\nNetSuite Account ID is needed by Login API call. So perform following steps if you dont know account id.\r\n<ol>\r\n \t<li>Login to your NetSuite Portal<\/li>\r\n \t<li>Click the\u00a0<strong>Setup Tab<\/strong><\/li>\r\n \t<li>In the drop-down click\u00a0<strong>Integration<\/strong>\u00a0&gt;\u00a0\u00a0<strong>Web services preferences<\/strong><\/li>\r\n \t<li>On that page you will find your Account ID (<strong>example account ID = TSTDRV1234567<\/strong>\u00a0)<\/li>\r\n<\/ol>\r\n<div id=\"attachment_4620\" class=\"wp-caption alignnone\">\r\n\r\n<a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/08\/obtain-netsuite-accountid.png?ssl=1\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-4620\" style=\"border: 0px; max-width: 100%; height: auto; box-shadow: rgba(0, 0, 0, 0.176) 0px 1px 2px;\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/08\/obtain-netsuite-accountid.png?resize=262%2C360&amp;ssl=1\" sizes=\"(max-width: 262px) 100vw, 262px\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/08\/obtain-netsuite-accountid.png?w=262&amp;ssl=1 262w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/08\/obtain-netsuite-accountid.png?resize=218%2C300&amp;ssl=1 218w\" alt=\"Obtain NetSuite Account ID (Needed for Web Service Login)\" width=\"254\" height=\"349\" data-attachment-id=\"4620\" data-permalink=\"https:\/\/zappysys.com\/blog\/read-netsuite-data-power-bi\/obtain-netsuite-accountid\/#main\" data-orig-file=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/08\/obtain-netsuite-accountid.png?fit=262%2C360&amp;ssl=1\" data-orig-size=\"262,360\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"obtain-netsuite-accountid\" data-image-description=\"&lt;p&gt;Obtain NetSuite Account ID (Needed for Web Service Login)&lt;\/p&gt; \" data-medium-file=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/08\/obtain-netsuite-accountid.png?fit=218%2C300&amp;ssl=1\" data-large-file=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/08\/obtain-netsuite-accountid.png?fit=262%2C360&amp;ssl=1\" \/><\/a>\r\n<p class=\"wp-caption-text\">Obtain NetSuite Account ID (Needed for Web Service Login)<\/p>\r\n\r\n<\/div>\r\n<h3><span id=\"Obtain_NetSuite_Application_ID\">Obtain NetSuite Application ID<\/span><\/h3>\r\nOnce you have account ID now we need to get Application ID. For that follow these steps.\r\n<ol>\r\n \t<li>Login to your NetSuite Portal<\/li>\r\n \t<li>Click the\u00a0<strong>Setup Tab<\/strong><\/li>\r\n \t<li>In the drop-down click\u00a0<strong>Integration<\/strong>\u00a0&gt;\u00a0\u00a0<strong>Manage Integrations<\/strong><\/li>\r\n \t<li>On that page you will find your existing Applications along with Account ID \/ Status (<strong>example Application ID = AE2EACFD-1234-1222-1111-12345544555<\/strong>\u00a0)<\/li>\r\n \t<li>If you don\u2019t have any application created yet then just click on New.<\/li>\r\n<\/ol>\r\n<div id=\"attachment_4619\" class=\"wp-caption alignnone\">\r\n\r\n<a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/08\/netsuite-obtain-application-for-soap-api-call.png?ssl=1\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-4619\" style=\"border: 0px; max-width: 100%; height: auto; box-shadow: rgba(0, 0, 0, 0.176) 0px 1px 2px;\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/08\/netsuite-obtain-application-for-soap-api-call.png?resize=660%2C293&amp;ssl=1\" sizes=\"(max-width: 660px) 100vw, 660px\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/08\/netsuite-obtain-application-for-soap-api-call.png?w=660&amp;ssl=1 660w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/08\/netsuite-obtain-application-for-soap-api-call.png?resize=300%2C133&amp;ssl=1 300w\" alt=\"Create new App \/ Get NetSuite Application ID\" width=\"652\" height=\"289\" data-attachment-id=\"4619\" data-permalink=\"https:\/\/zappysys.com\/blog\/read-netsuite-data-power-bi\/netsuite-obtain-application-for-soap-api-call\/#main\" data-orig-file=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/08\/netsuite-obtain-application-for-soap-api-call.png?fit=660%2C293&amp;ssl=1\" data-orig-size=\"660,293\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"netsuite-obtain-application-for-soap-api-call\" data-image-description=\"&lt;p&gt;Create new App \/ Get NetSuite Application ID&lt;\/p&gt; \" data-medium-file=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/08\/netsuite-obtain-application-for-soap-api-call.png?fit=300%2C133&amp;ssl=1\" data-large-file=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/08\/netsuite-obtain-application-for-soap-api-call.png?fit=660%2C293&amp;ssl=1\" \/><\/a>\r\n<p class=\"wp-caption-text\">Create new App \/ Get NetSuite Application ID<\/p>\r\n\r\n<\/div>\r\n<h3><\/h3><\/div>\n<div class=\"content_block\" id=\"custom_post_widget-5098\"><h2>Understanding how NetSuite SOAP API Call works<\/h2>\r\nIn this section we will briefly understand how NetSuite SOAP API call works. When you use ZappySys Driver \/ Component it will take care many details for you but still you have to configure correct XML Body.\r\n\r\nThere are two steps involved before you can call any SOAP API in NetSuite.\r\n<ol>\r\n \t<li>Call <a href=\"https:\/\/system.netsuite.com\/app\/help\/helpcenter.nl?fid=section_N3512617.html\" target=\"_blank\" rel=\"noopener\">Login method<\/a> and extract\u00a0JSESSIONID from response Cookie (This token expires after some time)<\/li>\r\n \t<li>Call any other API (Pass obtained JSESSIONID token in Cookie header)<\/li>\r\n<\/ol>\r\n<h3>NetSuite Login Call<\/h3>\r\n<strong>Request<\/strong>\r\n<pre class=\"lang:default highlight:0 decode:true\">POST https:\/\/webservices.netsuite.com\/services\/NetSuitePort_2017_1\r\nContent-Type: text\/xml;charset=UTF-8\r\nSOAPAction: \"login\"\r\nAccept-Encoding: gzip, deflate\r\n\r\n&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\r\n&lt;soap:Envelope xmlns:soap=\"http:\/\/schemas.xmlsoap.org\/soap\/envelope\/\" xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\" xmlns:xsd=\"http:\/\/www.w3.org\/2001\/XMLSchema\"&gt;\r\n  &lt;soap:Header&gt;\r\n    &lt;applicationInfo xmlns=\"urn:messages_2017_1.platform.webservices.netsuite.com\"&gt;\r\n      &lt;applicationId&gt;xxxxxxxxxxxxxx&lt;\/applicationId&gt;\r\n    &lt;\/applicationInfo&gt;\r\n  &lt;\/soap:Header&gt;\r\n  &lt;soap:Body&gt;\r\n    &lt;login xmlns=\"urn:messages_2017_1.platform.webservices.netsuite.com\"&gt;\r\n      &lt;passport&gt;\r\n        &lt;email xmlns=\"urn:core_2017_1.platform.webservices.netsuite.com\"&gt;xxxxxxxxxxxxx&lt;\/email&gt;\r\n        &lt;password xmlns=\"urn:core_2017_1.platform.webservices.netsuite.com\"&gt;xxxxxxxxxxxx&lt;\/password&gt;\r\n        &lt;account xmlns=\"urn:core_2017_1.platform.webservices.netsuite.com\"&gt;TSTxxxxxxxxxxxxxxx&lt;\/account&gt;\r\n        &lt;role internalId=\"3\" xmlns=\"urn:core_2017_1.platform.webservices.netsuite.com\" \/&gt;\r\n      &lt;\/passport&gt;\r\n    &lt;\/login&gt;\r\n  &lt;\/soap:Body&gt;\r\n&lt;\/soap:Envelope&gt;<\/pre>\r\n<strong>Response<\/strong>\r\n\r\nNotice\u00a0JSESSIONID=6xI6xxxxxxxxx in the login call response below. This Session ID can be used to call next call. ZappySys HTTP Connection Manager configured with <a href=\"https:\/\/zappysys.com\/blog\/call-soap-rest-api-using-dynamic-token-ssis\/\" target=\"_blank\" rel=\"noopener\">Dynamic Token<\/a> option can extract Cookie and reuse it until its expired (1 hour by default).\r\n<pre class=\"lang:default highlight:0 decode:true\">HTTP\/1.1 200 OK\r\nDate: Wed, 03 Oct 2018 16:50:41 GMT\r\nContent-Length: 1676\r\nContent-Type: text\/xml; charset=utf-8\r\nX-N-OperationId: 777274f6-49c6-4883-bcd1-1d70df90d78e\r\nStrict-Transport-Security: max-age=31536000\r\nNS_RTIMER_COMPOSITE: 13633xxxxxxxxx:70617xxxxxxxxxxxxx36F6D:80\r\nSet-Cookie: JSESSIONID=6xI61rdFt26pxxxxxxxxxxxxxxxqvJIMlu!-17981123445; path=\/; secure; HttpOnly\r\nSet-Cookie: NS_VER=2018.1.0; domain=webservices.netsuite.com; path=\/\r\nSet-Cookie: NS_ROUTING_VERSION=LAGGING; path=\/\r\nP3P: CP=\"CAO PSAa OUR BUS PUR\"\r\nVary: User-Agent\r\nKeep-Alive: timeout=10, max=990\r\nConnection: Keep-Alive\r\n\r\n&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\r\n&lt;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\"&gt;\r\n  &lt;soapenv:Header&gt;\r\n    &lt;platformMsgs:documentInfo xmlns:platformMsgs=\"urn:messages_2017_1.platform.webservices.netsuite.com\"&gt;\r\n      &lt;platformMsgs:nsId&gt;WEBSERVICES_xxxxxxxxxxxxxxxxx_9fc719&lt;\/platformMsgs:nsId&gt;\r\n    &lt;\/platformMsgs:documentInfo&gt;\r\n  &lt;\/soapenv:Header&gt;\r\n  &lt;soapenv:Body&gt;\r\n    &lt;loginResponse xmlns=\"urn:messages_2017_1.platform.webservices.netsuite.com\"&gt;\r\n      &lt;sessionResponse xmlns=\"urn:messages_2017_1.platform.webservices.netsuite.com\"&gt;\r\n        &lt;ns1:status isSuccess=\"true\" xmlns:ns1=\"urn:core_2017_1.platform.webservices.netsuite.com\"\/&gt;\r\n        &lt;ns2:wsRoleList xmlns:ns2=\"urn:core_2017_1.platform.webservices.netsuite.com\"&gt;\r\n          &lt;ns2:wsRole&gt;\r\n            &lt;ns2:role internalId=\"3\"&gt;\r\n              &lt;ns2:name&gt;Administrator&lt;\/ns2:name&gt;\r\n            &lt;\/ns2:role&gt;\r\n            &lt;ns2:isDefault&gt;false&lt;\/ns2:isDefault&gt;\r\n            &lt;ns2:isInactive&gt;false&lt;\/ns2:isInactive&gt;\r\n          &lt;\/ns2:wsRole&gt;\r\n          &lt;ns2:wsRole&gt;\r\n            &lt;ns2:role internalId=\"15\"&gt;\r\n              &lt;ns2:name&gt;Employee Center&lt;\/ns2:name&gt;\r\n            &lt;\/ns2:role&gt;\r\n            &lt;ns2:isDefault&gt;false&lt;\/ns2:isDefault&gt;\r\n            &lt;ns2:isInactive&gt;false&lt;\/ns2:isInactive&gt;\r\n          &lt;\/ns2:wsRole&gt;\r\n      &lt;\/sessionResponse&gt;\r\n    &lt;\/loginResponse&gt;\r\n  &lt;\/soapenv:Body&gt;\r\n&lt;\/soapenv:Envelope&gt;<\/pre>\r\n&nbsp;\r\n<h3>NetSuite API Call ( getAll method )<\/h3>\r\nNow once you have JSESSIONID extracted you can pass it to call next API call as below. For example here is how to call <a href=\"https:\/\/system.netsuite.com\/app\/help\/helpcenter.nl?fid=section_N3489077.html\" target=\"_blank\" rel=\"noopener\"><strong>getAll<\/strong><\/a> method to obtain currency list and exchange rates. If you are not sure how to craft correct Request XML then use tool like <a href=\"https:\/\/zappysys.com\/blog\/calling-soap-web-service-in-ssis-xml-source\/\" target=\"_blank\" rel=\"noopener\">SoapUI<\/a>.\r\n\r\nYou can use NetSuite WSDL file\u00a0<a href=\"http:\/\/www.netsuite.com\/portal\/developers\/resources\/suitetalk-documentation.shtml\" target=\"_blank\" rel=\"noopener\">from here<\/a>\u00a0and import it in\u00a0<a href=\"https:\/\/zappysys.com\/blog\/calling-soap-web-service-in-ssis-xml-source\/\" target=\"_blank\" rel=\"noopener\">SoapUI<\/a>.\r\n\r\n<a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/10\/soapui-create-netsuite-soap-api-request-xml.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-5103\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/10\/soapui-create-netsuite-soap-api-request-xml.png\" alt=\"\" width=\"523\" height=\"386\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/10\/soapui-create-netsuite-soap-api-request-xml.png 523w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/10\/soapui-create-netsuite-soap-api-request-xml-300x221.png 300w\" sizes=\"(max-width: 523px) 100vw, 523px\" \/><\/a>\r\n\r\n&nbsp;\r\n\r\n<strong>Request<\/strong>\r\n\r\nSee how Cookie is passed for authentication purpose. Again you can pass this manually or use HTTP connection with <a href=\"https:\/\/zappysys.com\/blog\/call-soap-rest-api-using-dynamic-token-ssis\/\" target=\"_blank\" rel=\"noopener\">Dynamic Token<\/a> to pass it automatically along with each API call.\r\n<pre class=\"lang:default highlight:0 decode:true\">POST https:\/\/webservices.netsuite.com\/services\/NetSuitePort_2017_1\r\nContent-Type: text\/xml;charset=UTF-8\r\nSOAPAction: \"getAll\"\r\nCookie: JSESSIONID=6xI61rxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxMlu!-1798141234\r\nAccept-Encoding: gzip, deflate\r\n\r\n&lt;soapenv:Envelope \r\n   xmlns:soapenv=\"http:\/\/schemas.xmlsoap.org\/soap\/envelope\/\" \r\n   xmlns:urn=\"urn:messages_2018_1.platform.webservices.netsuite.com\" \r\n   xmlns:urn1=\"urn:core_2018_1.platform.webservices.netsuite.com\"&gt;\r\n   &lt;soapenv:Body&gt;\r\n      &lt;urn:getAll&gt;\r\n         &lt;record recordType=\"currency\"\/&gt; \r\n      &lt;\/urn:getAll&gt;\r\n   &lt;\/soapenv:Body&gt;\r\n&lt;\/soapenv:Envelope&gt;<\/pre>\r\n<strong>Response<\/strong>\r\n<pre class=\"lang:default highlight:0 decode:true\">HTTP\/1.1 200 OK\r\nDate: Wed, 03 Oct 2018 16:50:42 GMT\r\nContent-Length: 9648\r\nContent-Type: text\/xml; charset=utf-8\r\nX-N-OperationId: 1b2989e4-b930-4a72-b471-00a8e131dfd4\r\nNS_RTIMER_COMPOSITE: 21403xxxxxx:706172746E65xxxxxxxxxxxx6F6D:80\r\nStrict-Transport-Security: max-age=31536000\r\nP3P: CP=\"CAO PSAa OUR BUS PUR\"\r\nVary: User-Agent\r\n\r\n&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\r\n&lt;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\"&gt;\r\n  &lt;soapenv:Header&gt;\r\n    &lt;platformMsgs:documentInfo xmlns:platformMsgs=\"urn:messages_2017_1.platform.webservices.netsuite.com\"&gt;\r\n      &lt;platformMsgs:nsId&gt;WEBSERVICES_TSTDRV1439151_100320189871507121000128715_6ae8e8&lt;\/platformMsgs:nsId&gt;\r\n    &lt;\/platformMsgs:documentInfo&gt;\r\n  &lt;\/soapenv:Header&gt;\r\n  &lt;soapenv:Body&gt;\r\n    &lt;getAllResponse xmlns=\"urn:messages_2018_1.platform.webservices.netsuite.com\"&gt;\r\n      &lt;platformCore:getAllResult xmlns:platformCore=\"urn:core_2017_1.platform.webservices.netsuite.com\"&gt;\r\n        &lt;platformCore:status isSuccess=\"true\" \/&gt;\r\n        &lt;platformCore:totalRecords&gt;11&lt;\/platformCore:totalRecords&gt;\r\n        &lt;platformCore:recordList&gt;\r\n          &lt;platformCore:record internalId=\"1\" xsi:type=\"listAcct:Currency\" xmlns:listAcct=\"urn:accounting_2017_1.lists.webservices.netsuite.com\"&gt;\r\n            &lt;listAcct:name&gt;USD&lt;\/listAcct:name&gt;\r\n            &lt;listAcct:symbol&gt;USD&lt;\/listAcct:symbol&gt;\r\n            &lt;listAcct:isBaseCurrency&gt;true&lt;\/listAcct:isBaseCurrency&gt;\r\n            &lt;listAcct:isInactive&gt;false&lt;\/listAcct:isInactive&gt;\r\n            &lt;listAcct:overrideCurrencyFormat&gt;false&lt;\/listAcct:overrideCurrencyFormat&gt;\r\n            &lt;listAcct:displaySymbol&gt;$&lt;\/listAcct:displaySymbol&gt;\r\n            &lt;listAcct:symbolPlacement&gt;_beforeNumber&lt;\/listAcct:symbolPlacement&gt;\r\n            &lt;listAcct:locale&gt;_unitedStatesEnglish&lt;\/listAcct:locale&gt;\r\n            &lt;listAcct:formatSample&gt;$1,234.56&lt;\/listAcct:formatSample&gt;\r\n            &lt;listAcct:exchangeRate&gt;1.0&lt;\/listAcct:exchangeRate&gt;\r\n            &lt;listAcct:fxRateUpdateTimezone&gt;_americaNewYork&lt;\/listAcct:fxRateUpdateTimezone&gt;\r\n            &lt;listAcct:currencyPrecision&gt;_two&lt;\/listAcct:currencyPrecision&gt;\r\n          &lt;\/platformCore:record&gt;\r\n          &lt;platformCore:record internalId=\"2\" xsi:type=\"listAcct:Currency\" xmlns:listAcct=\"urn:accounting_2017_1.lists.webservices.netsuite.com\"&gt;\r\n            &lt;listAcct:name&gt;GBP&lt;\/listAcct:name&gt;\r\n            &lt;listAcct:symbol&gt;GBP&lt;\/listAcct:symbol&gt;\r\n            &lt;listAcct:isBaseCurrency&gt;true&lt;\/listAcct:isBaseCurrency&gt;\r\n            &lt;listAcct:isInactive&gt;false&lt;\/listAcct:isInactive&gt;\r\n            &lt;listAcct:overrideCurrencyFormat&gt;false&lt;\/listAcct:overrideCurrencyFormat&gt;\r\n            &lt;listAcct:displaySymbol&gt;\u00a3&lt;\/listAcct:displaySymbol&gt;\r\n            &lt;listAcct:symbolPlacement&gt;_beforeNumber&lt;\/listAcct:symbolPlacement&gt;\r\n            &lt;listAcct:locale&gt;_unitedKingdomEnglish&lt;\/listAcct:locale&gt;\r\n            &lt;listAcct:formatSample&gt;\u00a31,234.56&lt;\/listAcct:formatSample&gt;\r\n            &lt;listAcct:exchangeRate&gt;1.33165497&lt;\/listAcct:exchangeRate&gt;\r\n            &lt;listAcct:fxRateUpdateTimezone&gt;_americaNewYork&lt;\/listAcct:fxRateUpdateTimezone&gt;\r\n            &lt;listAcct:currencyPrecision&gt;_two&lt;\/listAcct:currencyPrecision&gt;\r\n          &lt;\/platformCore:record&gt;\r\n          &lt;platformCore:record internalId=\"3\" xsi:type=\"listAcct:Currency\" xmlns:listAcct=\"urn:accounting_2017_1.lists.webservices.netsuite.com\"&gt;\r\n            &lt;listAcct:name&gt;CAD&lt;\/listAcct:name&gt;\r\n            &lt;listAcct:symbol&gt;CAD&lt;\/listAcct:symbol&gt;\r\n            &lt;listAcct:isBaseCurrency&gt;true&lt;\/listAcct:isBaseCurrency&gt;\r\n            &lt;listAcct:isInactive&gt;false&lt;\/listAcct:isInactive&gt;\r\n            &lt;listAcct:overrideCurrencyFormat&gt;false&lt;\/listAcct:overrideCurrencyFormat&gt;\r\n            &lt;listAcct:displaySymbol&gt;$&lt;\/listAcct:displaySymbol&gt;\r\n            &lt;listAcct:symbolPlacement&gt;_beforeNumber&lt;\/listAcct:symbolPlacement&gt;\r\n            &lt;listAcct:locale&gt;_canadaEnglish&lt;\/listAcct:locale&gt;\r\n            &lt;listAcct:formatSample&gt;$1,234.56&lt;\/listAcct:formatSample&gt;\r\n            &lt;listAcct:exchangeRate&gt;0.76457273&lt;\/listAcct:exchangeRate&gt;\r\n            &lt;listAcct:fxRateUpdateTimezone&gt;_americaNewYork&lt;\/listAcct:fxRateUpdateTimezone&gt;\r\n            &lt;listAcct:currencyPrecision&gt;_two&lt;\/listAcct:currencyPrecision&gt;\r\n          &lt;\/platformCore:record&gt;\r\n        &lt;\/platformCore:recordList&gt;\r\n      &lt;\/platformCore:getAllResult&gt;\r\n    &lt;\/getAllResponse&gt;\r\n  &lt;\/soapenv:Body&gt;\r\n&lt;\/soapenv:Envelope&gt;<\/pre>\r\n<h3>NetSuite Search API (Pagination Example)<\/h3>\r\nNow let's look at more complex API calls where Pagination is needed. For example when you call search API to pull data from specific table (e.g. Account) you need to loop through multiple responses until all records are consumed.\r\n\r\n<strong>Request (Page-1)<\/strong>\r\n<pre class=\"lang:default highlight:0 decode:true\">POST https:\/\/webservices.netsuite.com\/services\/NetSuitePort_2017_1\r\nContent-Type: text\/xml; charset=utf-8\r\nSOAPAction: \"search\"\r\nCookie: JSESSIONID=BKQ7xxxxxxxxxxxx4Ug!-995xxxxxx\r\nAccept-Encoding: gzip, deflate\r\n\r\n&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\r\n&lt;soap:Envelope xmlns:soap=\"http:\/\/schemas.xmlsoap.org\/soap\/envelope\/\" xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\" xmlns:xsd=\"http:\/\/www.w3.org\/2001\/XMLSchema\"&gt;\r\n  &lt;soap:Header&gt;\r\n    &lt;applicationInfo xmlns=\"urn:messages_2017_1.platform.webservices.netsuite.com\"&gt;\r\n      &lt;applicationId&gt;xxxxxxxxxxxxxxx&lt;\/applicationId&gt;\r\n    &lt;\/applicationInfo&gt;\r\n    &lt;searchPreferences xmlns=\"urn:messages_2017_1.platform.webservices.netsuite.com\"&gt;\r\n      &lt;pageSize&gt;50&lt;\/pageSize&gt;\r\n    &lt;\/searchPreferences&gt;\r\n  &lt;\/soap:Header&gt;\r\n  &lt;soap:Body&gt;\r\n    &lt;search xmlns=\"urn:messages_2017_1.platform.webservices.netsuite.com\"&gt;\r\n      &lt;searchRecord xmlns:q1=\"urn:accounting_2017_1.lists.webservices.netsuite.com\" xsi:type=\"q1:AccountSearch\"&gt;\r\n        &lt;q1:basic&gt;\r\n          &lt;description operator=\"doesNotContain\" xmlns=\"urn:common_2017_1.platform.webservices.netsuite.com\"&gt;\r\n            &lt;searchValue xmlns=\"urn:core_2017_1.platform.webservices.netsuite.com\"&gt;x&lt;\/searchValue&gt;\r\n          &lt;\/description&gt;\r\n          &lt;name operator=\"contains\" xmlns=\"urn:common_2017_1.platform.webservices.netsuite.com\"&gt;\r\n            &lt;searchValue xmlns=\"urn:core_2017_1.platform.webservices.netsuite.com\"&gt;a&lt;\/searchValue&gt;\r\n          &lt;\/name&gt;\r\n        &lt;\/q1:basic&gt;\r\n      &lt;\/searchRecord&gt;\r\n    &lt;\/search&gt;\r\n  &lt;\/soap:Body&gt;\r\n&lt;\/soap:Envelope&gt;<\/pre>\r\n&nbsp;\r\n\r\n<strong>Response (Page-1)<\/strong>\r\n\r\nIn below response notice 2 things. SearchId is like a cursor id which you have to pass for each page you request after first page. And you can stop looping after 4th page based on totalPages count.\r\n\r\n<strong>platformCore:searchId<\/strong> = WEBSERVICES_ABCD_12345-xxxxxxxxx\r\n<strong>platformCore:totalPages<\/strong> = 4\r\n<pre class=\"lang:default highlight:0 decode:true\">HTTP\/1.1 200 OK\r\nDate: Wed, 03 Oct 2018 18:40:33 GMT\r\nContent-Length: 49266\r\nContent-Type: text\/xml; charset=utf-8\r\nX-N-OperationId: c1e79336-63b7-4eb7-989e-5c3d24c56891\r\nNS_RTIMER_COMPOSITE: 118xxxxxxxx:70617xxxxxxxxxxxxxxxxxxxxxD:80\r\nStrict-Transport-Security: max-age=31536000\r\nP3P: CP=\"CAO PSAa OUR BUS PUR\"\r\nVary: User-Agent\r\n\r\n&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\r\n&lt;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\"&gt;\r\n  &lt;soapenv:Header&gt;\r\n    &lt;platformMsgs:documentInfo xmlns:platformMsgs=\"urn:messages_2017_1.platform.webservices.netsuite.com\"&gt;\r\n      &lt;platformMsgs:nsId&gt;WEBSERVICES_ABCD_12345-xxxxxxxxx&lt;\/platformMsgs:nsId&gt;\r\n    &lt;\/platformMsgs:documentInfo&gt;\r\n  &lt;\/soapenv:Header&gt;\r\n  &lt;soapenv:Body&gt;\r\n    &lt;searchResponse xmlns=\"urn:messages_2017_1.platform.webservices.netsuite.com\"&gt;\r\n      &lt;platformCore:searchResult xmlns:platformCore=\"urn:core_2017_1.platform.webservices.netsuite.com\"&gt;\r\n        &lt;platformCore:status isSuccess=\"true\" \/&gt;\r\n        &lt;platformCore:totalRecords&gt;193&lt;\/platformCore:totalRecords&gt;\r\n        &lt;platformCore:pageSize&gt;50&lt;\/platformCore:pageSize&gt;\r\n        &lt;platformCore:totalPages&gt;4&lt;\/platformCore:totalPages&gt;\r\n        &lt;platformCore:pageIndex&gt;1&lt;\/platformCore:pageIndex&gt;\r\n        &lt;platformCore:searchId&gt;WEBSERVICES_ABCD_12345-xxxxxxxxx&lt;\/platformCore:searchId&gt;\r\n        &lt;platformCore:recordList&gt;\r\n          &lt;platformCore:record internalId=\"1\" xsi:type=\"listAcct:Account\" xmlns:listAcct=\"urn:accounting_2017_1.lists.webservices.netsuite.com\"&gt;\r\n            &lt;listAcct:acctType&gt;_bank&lt;\/listAcct:acctType&gt;\r\n            &lt;listAcct:acctNumber&gt;1111&lt;\/listAcct:acctNumber&gt;\r\n            &lt;listAcct:acctName&gt;Checking&lt;\/listAcct:acctName&gt;\r\n            &lt;listAcct:includeChildren&gt;false&lt;\/listAcct:includeChildren&gt;\r\n            &lt;listAcct:currency internalId=\"1\"&gt;\r\n              &lt;platformCore:name&gt;USD&lt;\/platformCore:name&gt;\r\n            &lt;\/listAcct:currency&gt;\r\n            &lt;listAcct:generalRate&gt;_current&lt;\/listAcct:generalRate&gt;\r\n            &lt;listAcct:parent internalId=\"246\"&gt;\r\n              &lt;platformCore:name&gt;xxxxxxxxxxxxxxxxxxx&lt;\/platformCore:name&gt;\r\n            &lt;\/listAcct:parent&gt;\r\n            &lt;listAcct:cashFlowRate&gt;_average&lt;\/listAcct:cashFlowRate&gt;\r\n            &lt;listAcct:description&gt;Checking&lt;\/listAcct:description&gt;\r\n            &lt;listAcct:isInactive&gt;false&lt;\/listAcct:isInactive&gt;\r\n            &lt;listAcct:inventory&gt;false&lt;\/listAcct:inventory&gt;\r\n            &lt;listAcct:eliminate&gt;false&lt;\/listAcct:eliminate&gt;\r\n            &lt;listAcct:revalue&gt;true&lt;\/listAcct:revalue&gt;\r\n          &lt;\/platformCore:record&gt;\r\n          &lt;platformCore:record internalId=\"2\" xsi:type=\"listAcct:Account\" xmlns:listAcct=\"urn:accounting_2017_1.lists.webservices.netsuite.com\"&gt;\r\n            &lt;listAcct:acctType&gt;_bank&lt;\/listAcct:acctType&gt;\r\n            &lt;listAcct:acctNumber&gt;22222&lt;\/listAcct:acctNumber&gt;\r\n            &lt;listAcct:acctName&gt;Savings&lt;\/listAcct:acctName&gt;\r\n            &lt;listAcct:includeChildren&gt;false&lt;\/listAcct:includeChildren&gt;\r\n            &lt;listAcct:currency internalId=\"1\"&gt;\r\n              &lt;platformCore:name&gt;USD&lt;\/platformCore:name&gt;\r\n            &lt;\/listAcct:currency&gt;\r\n            &lt;listAcct:generalRate&gt;_current&lt;\/listAcct:generalRate&gt;\r\n            &lt;listAcct:parent internalId=\"246\"&gt;\r\n              &lt;platformCore:name&gt;yyyyyyyyy&lt;\/platformCore:name&gt;\r\n            &lt;\/listAcct:parent&gt;\r\n            &lt;listAcct:cashFlowRate&gt;_average&lt;\/listAcct:cashFlowRate&gt;\r\n            &lt;listAcct:description&gt;Savings&lt;\/listAcct:description&gt;\r\n            &lt;listAcct:isInactive&gt;false&lt;\/listAcct:isInactive&gt;\r\n            &lt;listAcct:inventory&gt;false&lt;\/listAcct:inventory&gt;\r\n            &lt;listAcct:eliminate&gt;false&lt;\/listAcct:eliminate&gt;\r\n            &lt;listAcct:revalue&gt;true&lt;\/listAcct:revalue&gt;\r\n          &lt;\/platformCore:record&gt;\r\n          .........\r\n          .........\r\n          .........\r\n          .........\t\t  \r\n        &lt;\/platformCore:recordList&gt;\r\n      &lt;\/platformCore:searchResult&gt;\r\n    &lt;\/searchResponse&gt;\r\n  &lt;\/soapenv:Body&gt;\r\n&lt;\/soapenv:Envelope&gt;<\/pre>\r\n&nbsp;\r\n\r\n<strong>Request (Page-2 and onwards)<\/strong>\r\n\r\nHere is the second page request. Notice few things here. In heraders we are now sending <strong>SOAPAction: \"searchMoreWithId\"<\/strong> rather than <strong>\"search\"<\/strong>.\u00a0 Also our SOAP Body is also different compared to first page request. Now we only sending <strong>pageIndex<\/strong> we want to fetch and <strong>searchId<\/strong>. We have also change <strong>&lt;search&gt;<\/strong> tag with <strong>&lt;searchMoreWithId&gt;<\/strong> under Body.\r\n<pre class=\"lang:default decode:true\">POST https:\/\/webservices.netsuite.com\/services\/NetSuitePort_2017_1\r\nContent-Type: text\/xml; charset=utf-8\r\nSOAPAction: \"searchMoreWithId\"\r\nCookie: JSESSIONID=BKQ7xxxxxxxxxxxx4Ug!-995xxxxxx\r\nAccept-Encoding: gzip, deflate\r\n\r\n&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\r\n&lt;soap:Envelope xmlns:soap=\"http:\/\/schemas.xmlsoap.org\/soap\/envelope\/\" xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\" xmlns:xsd=\"http:\/\/www.w3.org\/2001\/XMLSchema\"&gt;\r\n  &lt;soap:Header&gt;\r\n    &lt;applicationInfo xmlns=\"urn:messages_2017_1.platform.webservices.netsuite.com\"&gt;\r\n      &lt;applicationId&gt;xxxxxxxxxxxxxxxxxx&lt;\/applicationId&gt;\r\n    &lt;\/applicationInfo&gt;\r\n    &lt;searchPreferences xmlns=\"urn:messages_2017_1.platform.webservices.netsuite.com\"&gt;\r\n      &lt;pageSize&gt;50&lt;\/pageSize&gt;\r\n    &lt;\/searchPreferences&gt;\r\n  &lt;\/soap:Header&gt;\r\n  &lt;soap:Body&gt;\r\n    &lt;searchMoreWithId xmlns=\"urn:messages_2017_1.platform.webservices.netsuite.com\"&gt;\r\n      &lt;searchId&gt;WEBSERVICES_ABCD_12345-xxxxxxxxx&lt;\/searchId&gt;\r\n      &lt;pageIndex&gt;2&lt;\/pageIndex&gt;\r\n    &lt;\/searchMoreWithId&gt;\r\n  &lt;\/soap:Body&gt;\r\n&lt;\/soap:Envelope&gt;<\/pre>\r\n<strong>Response (Page-2 and onwards)<\/strong>\r\n<pre class=\"lang:default decode:true  \">HTTP\/1.1 200 OK\r\nDate: Wed, 03 Oct 2018 18:40:33 GMT\r\nContent-Length: 49266\r\nContent-Type: text\/xml; charset=utf-8\r\nX-N-OperationId: c1e79336-63b7-4eb7-989e-5c3d24c56891\r\nNS_RTIMER_COMPOSITE: 118xxxxxxxx:70617xxxxxxxxxxxxxxxxxxxxxD:80\r\nStrict-Transport-Security: max-age=31536000\r\nP3P: CP=\"CAO PSAa OUR BUS PUR\"\r\nVary: User-Agent\r\n\r\n&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\r\n&lt;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\"&gt;\r\n  &lt;soapenv:Header&gt;\r\n    &lt;platformMsgs:documentInfo xmlns:platformMsgs=\"urn:messages_2017_1.platform.webservices.netsuite.com\"&gt;\r\n      &lt;platformMsgs:nsId&gt;WEBSERVICES_ABCD_12345-xxxxxxxxx&lt;\/platformMsgs:nsId&gt;\r\n    &lt;\/platformMsgs:documentInfo&gt;\r\n  &lt;\/soapenv:Header&gt;\r\n  &lt;soapenv:Body&gt;\r\n    &lt;searchMoreWithIdResponse xmlns=\"urn:messages_2017_1.platform.webservices.netsuite.com\"&gt;\r\n      &lt;platformCore:searchResult xmlns:platformCore=\"urn:core_2017_1.platform.webservices.netsuite.com\"&gt;\r\n        &lt;platformCore:status isSuccess=\"true\" \/&gt;\r\n        &lt;platformCore:totalRecords&gt;193&lt;\/platformCore:totalRecords&gt;\r\n        &lt;platformCore:pageSize&gt;50&lt;\/platformCore:pageSize&gt;\r\n        &lt;platformCore:totalPages&gt;4&lt;\/platformCore:totalPages&gt;\r\n        &lt;platformCore:pageIndex&gt;2&lt;\/platformCore:pageIndex&gt;\r\n        &lt;platformCore:searchId&gt;WEBSERVICES_ABCD_12345-xxxxxxxxx&lt;\/platformCore:searchId&gt;\r\n        &lt;platformCore:recordList&gt;\r\n          &lt;platformCore:record internalId=\"1\" xsi:type=\"listAcct:Account\" xmlns:listAcct=\"urn:accounting_2017_1.lists.webservices.netsuite.com\"&gt;\r\n            &lt;listAcct:acctType&gt;_bank&lt;\/listAcct:acctType&gt;\r\n            &lt;listAcct:acctNumber&gt;8000&lt;\/listAcct:acctNumber&gt;\r\n            &lt;listAcct:acctName&gt;Checking&lt;\/listAcct:acctName&gt;\r\n            &lt;listAcct:includeChildren&gt;false&lt;\/listAcct:includeChildren&gt;\r\n            &lt;listAcct:currency internalId=\"1\"&gt;\r\n              &lt;platformCore:name&gt;USD&lt;\/platformCore:name&gt;\r\n            &lt;\/listAcct:currency&gt;\r\n            &lt;listAcct:generalRate&gt;_current&lt;\/listAcct:generalRate&gt;\r\n            &lt;listAcct:parent internalId=\"246\"&gt;\r\n              &lt;platformCore:name&gt;xxxxxxxxxxxxxxxxxxx&lt;\/platformCore:name&gt;\r\n            &lt;\/listAcct:parent&gt;\r\n            &lt;listAcct:cashFlowRate&gt;_average&lt;\/listAcct:cashFlowRate&gt;\r\n            &lt;listAcct:description&gt;Checking&lt;\/listAcct:description&gt;\r\n            &lt;listAcct:isInactive&gt;false&lt;\/listAcct:isInactive&gt;\r\n            &lt;listAcct:inventory&gt;false&lt;\/listAcct:inventory&gt;\r\n            &lt;listAcct:eliminate&gt;false&lt;\/listAcct:eliminate&gt;\r\n            &lt;listAcct:revalue&gt;true&lt;\/listAcct:revalue&gt;\r\n          &lt;\/platformCore:record&gt;\r\n          &lt;platformCore:record internalId=\"2\" xsi:type=\"listAcct:Account\" xmlns:listAcct=\"urn:accounting_2017_1.lists.webservices.netsuite.com\"&gt;\r\n            &lt;listAcct:acctType&gt;_bank&lt;\/listAcct:acctType&gt;\r\n            &lt;listAcct:acctNumber&gt;8001&lt;\/listAcct:acctNumber&gt;\r\n            &lt;listAcct:acctName&gt;Savings&lt;\/listAcct:acctName&gt;\r\n            &lt;listAcct:includeChildren&gt;false&lt;\/listAcct:includeChildren&gt;\r\n            &lt;listAcct:currency internalId=\"1\"&gt;\r\n              &lt;platformCore:name&gt;USD&lt;\/platformCore:name&gt;\r\n            &lt;\/listAcct:currency&gt;\r\n            &lt;listAcct:generalRate&gt;_current&lt;\/listAcct:generalRate&gt;\r\n            &lt;listAcct:parent internalId=\"246\"&gt;\r\n              &lt;platformCore:name&gt;yyyyyyyyy&lt;\/platformCore:name&gt;\r\n            &lt;\/listAcct:parent&gt;\r\n            &lt;listAcct:cashFlowRate&gt;_average&lt;\/listAcct:cashFlowRate&gt;\r\n            &lt;listAcct:description&gt;Savings&lt;\/listAcct:description&gt;\r\n            &lt;listAcct:isInactive&gt;false&lt;\/listAcct:isInactive&gt;\r\n            &lt;listAcct:inventory&gt;false&lt;\/listAcct:inventory&gt;\r\n            &lt;listAcct:eliminate&gt;false&lt;\/listAcct:eliminate&gt;\r\n            &lt;listAcct:revalue&gt;true&lt;\/listAcct:revalue&gt;\r\n          &lt;\/platformCore:record&gt;\r\n          .........\r\n          .........\r\n          .........\r\n          .........\t\t  \r\n        &lt;\/platformCore:recordList&gt;\r\n      &lt;\/platformCore:searchResult&gt;\r\n    &lt;\/searchMoreWithIdResponse&gt;\r\n  &lt;\/soapenv:Body&gt;\r\n&lt;\/soapenv:Envelope&gt;<\/pre>\r\n&nbsp;\r\n\r\n&nbsp;<\/div>\n<p>&nbsp;<\/p>\n<h2><span id=\"Getting_Started\">Getting Started<\/span><\/h2>\n<p>Now let\u2019s check step by step instructions on\u00a0<strong>how to load NetSuite data in SSIS<\/strong>. In this exercise we will focus on\u00a0<a href=\"https:\/\/system.netsuite.com\/app\/help\/helpcenter.nl?fid=section_N3519853.html\" target=\"_blank\" rel=\"noopener\">calling search API<\/a>\u00a0but you can call virtually any API using the same technique.<\/p>\n<p>For detailed help on NetSuite SOAP API and other useful information check\u00a0<a href=\"https:\/\/system.netsuite.com\/app\/help\/helpcenter.nl?fid=book_N3412393.html\" target=\"_blank\" rel=\"noopener\">this documentation<\/a>. To browse schema you can use\u00a0<a href=\"http:\/\/www.netsuite.com\/help\/helpcenter\/en_US\/srbrowser\/Browser2017_2\/schema\/record\/account.html?mode=package\" target=\"_blank\" rel=\"noopener\">this link<\/a>. From schema browser we will use Search Type name later on in this article. For example later on in this article to search accounts we will use\u00a0<strong>AccountSearch<\/strong>\u00a0as below example. This name can be found\u00a0<a href=\"http:\/\/www.netsuite.com\/help\/helpcenter\/en_US\/srbrowser\/Browser2017_2\/schema\/search\/accountsearch.html?mode=package\" target=\"_blank\" rel=\"noopener\">from here(click search tab)<\/a>\u00a0You can change it to something else. For now dont worry too much until we get to that point.<\/p>\n<div id=\"crayon-5bb3ef8dce2fc034493941\" class=\"crayon-syntax crayon-theme-vs2012 crayon-font-courier-new crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-main\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-5bb3ef8dce2fc034493941-1\"><\/div>\n<\/div>\n<div class=\"crayon-pre\">\n<div id=\"crayon-5bb3ef8dce2fc034493941-1\" class=\"crayon-line\"><code><span class=\"crayon-o\">&lt;<\/span><span class=\"crayon-e\">searchRecord <\/span><span class=\"crayon-v\">xmlns<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-v\">q1<\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-s\">\"urn:accounting_2017_1.lists.webservices.netsuite.com\"<\/span> <span class=\"crayon-v\">xsi<\/span><span class=\"crayon-o\">:<\/span><span class=\"crayon-v\">type<\/span><span class=\"crayon-o\">=<\/span><span class=\"crayon-s\">\"q1:AccountSearch\"<\/span><span class=\"crayon-o\">&gt;<\/span><\/code><\/div>\n<\/div>\n<\/div>\n<div><\/div>\n<\/div>\n<h3>Configure SSIS HTTP Connection for NetSuite<\/h3>\n<p>Now let&#8217;s look at how to configure SSIS HTTP Connection for NetSuite API login. We will use <a href=\"https:\/\/zappysys.com\/blog\/call-soap-rest-api-using-dynamic-token-ssis\/\" target=\"_blank\" rel=\"noopener\">Dynamic Token Approach<\/a>.<\/p>\n<ol>\n<li style=\"list-style-type: none;\">\n<ol>\n<li>Open SSIS Package<\/li>\n<li>Drag Data flow from SSIS Toolbox and double click it<\/li>\n<li>Inside data flow SSIS toolbox, find <a href=\"https:\/\/zappysys.com\/products\/ssis-powerpack\/ssis-xml-source\/\" target=\"_blank\" rel=\"noopener\">ZS XML Source<\/a>\u00a0and drag it on the surface.<\/li>\n<li>Double click it to configure. First enter NetSuite API URL. If you need to use latest WebService version e.g. NetSuitePort_2019_1 then you must use company specific endpoint.\n<pre class=\"lang:default highlight:0 decode:true\">https:\/\/webservices.netsuite.com\/services\/NetSuitePort_2017_1<\/pre>\n<p>&#8211;OR&#8211;<\/p>\n<p>To use <span class=\"lang:default decode:true crayon-inline \">NetSuitePort_2019_1<\/span>\u00a0\u00a0or higher use company specific endpoint like below otherwise <a href=\"https:\/\/stackoverflow.com\/questions\/57429656\/netsuite-error-you-must-use-account-specific-domains-with-the-2019-1-soap-web-s\" target=\"_blank\" rel=\"noopener\">you will get error<\/a>. <strong>NOTE:<\/strong> You must change Body in coming section to match Version if you use below way.<\/p>\n<pre class=\"lang:default decode:true\">https:\/\/111222333444.suitetalk.api.netsuite.com\/services\/NetSuitePort_2019_1<\/pre>\n<\/li>\n<li>Check Use Credentials option and Click New HTTP connection.<\/li>\n<li>Configure general properties of connections as below.\n<ol>\n<li>Select Credentials Type as <strong>Dynamic Token<\/strong><\/li>\n<li>Use any <strong>URL<\/strong> (It will be ignored)<\/li>\n<li>Enter your NetSuite UserID, Password<\/li>\n<li>Enter Header as <strong>Cookie<\/strong><\/li>\n<li>Enter AUth Scheme as <strong>JSESSIONID=<\/strong><\/li>\n<\/ol>\n<\/li>\n<li>First Screen will look like as below. Click Configure.\n<div id=\"attachment_5062\" style=\"width: 843px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/configure-ssis-netsuite-connection-1.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-5062\" class=\"size-full wp-image-5062\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/configure-ssis-netsuite-connection-1.png\" alt=\"Configure SSIS NetSuite Connection\" width=\"833\" height=\"775\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/configure-ssis-netsuite-connection-1.png 833w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/configure-ssis-netsuite-connection-1-300x279.png 300w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/configure-ssis-netsuite-connection-1-768x715.png 768w\" sizes=\"(max-width: 833px) 100vw, 833px\" \/><\/a><p id=\"caption-attachment-5062\" class=\"wp-caption-text\">Configure SSIS NetSuite Connection<\/p><\/div><\/li>\n<li>On <strong>Dynamic Token<\/strong>\u00a0&gt;\u00a0<strong>Request Tab<\/strong> we have to set Token URL, Method, Body, Header.\n<ol>\n<li>In the URL enter same URL again\n<pre class=\"lang:default highlight:0 decode:true\">https:\/\/webservices.netsuite.com\/services\/NetSuitePort_2017_1<\/pre>\n<\/li>\n<li>In the Body enter as below. Change APPLICATION-ID and ACCOUNT-ID with correct ID we obtained earlier. [$userid$] and [$password$] is special placeholders will be replaced automatically at runtime.<div class=\"su-note\"  style=\"border-color:#e5de9d;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\"><div class=\"su-note-inner su-u-clearfix su-u-trim\" style=\"background-color:#FFF8B7;border-color:#ffffff;color:#333333;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\"><strong>NOTE:<\/strong> Try to match your URL version in the Body Request. If you used For example if you used 2019_1 in URL then change below body to match that version <\/div><\/div>\n<pre class=\"lang:xhtml decode:true\">&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\r\n&lt;soap:Envelope xmlns:soap=\"http:\/\/schemas.xmlsoap.org\/soap\/envelope\/\" xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\" xmlns:xsd=\"http:\/\/www.w3.org\/2001\/XMLSchema\"&gt;\r\n  &lt;soap:Header&gt;\r\n    &lt;applicationInfo xmlns=\"urn:messages_2017_1.platform.webservices.netsuite.com\"&gt;\r\n      &lt;applicationId&gt;xxxxxxYOUR-APPLICATION-IDxxxxxx&lt;\/applicationId&gt;\r\n    &lt;\/applicationInfo&gt;\r\n  &lt;\/soap:Header&gt;\r\n  &lt;soap:Body&gt;\r\n    &lt;login xmlns=\"urn:messages_2017_1.platform.webservices.netsuite.com\"&gt;\r\n      &lt;passport&gt;\r\n        &lt;email xmlns=\"urn:core_2017_1.platform.webservices.netsuite.com\"&gt;[$userid$]&lt;\/email&gt;\r\n        &lt;password xmlns=\"urn:core_2017_1.platform.webservices.netsuite.com\"&gt;[$password$]&lt;\/password&gt;\r\n        &lt;account xmlns=\"urn:core_2017_1.platform.webservices.netsuite.com\"&gt;xxxxxxYOUR-ACCOUNT-IDxxxxxx&lt;\/account&gt;\r\n        &lt;role internalId=\"3\" xmlns=\"urn:core_2017_1.platform.webservices.netsuite.com\" \/&gt;\r\n      &lt;\/passport&gt;\r\n    &lt;\/login&gt;\r\n  &lt;\/soap:Body&gt;\r\n&lt;\/soap:Envelope&gt;<\/pre>\n<div class=\"su-note\"  style=\"border-color:#e5de9d;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\"><div class=\"su-note-inner su-u-clearfix su-u-trim\" style=\"background-color:#FFF8B7;border-color:#ffffff;color:#333333;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\">NOTE: Remove below line from above Body if you get INVALID_ROLE error later in this tutorial. If if you get INVALID_LOGIN_CREDENTIALS error then refer here.<\/div><\/div>\n<pre class=\"lang:default highlight:0 decode:true\">&lt;role internalId=\"3\" xmlns=\"urn:core_2017_1.platform.webservices.netsuite.com\" \/&gt;<\/pre>\n<\/li>\n<li>Select Content Type as text\/xml<\/li>\n<li>In the Headers click on Raw Edit Button and enter like below.\n<pre class=\"lang:default highlight:0 decode:true\">SOAPAction: \"login\"<\/pre>\n<\/li>\n<\/ol>\n<\/li>\n<li>Once all settings done your <strong>Request<\/strong> Tab will look like below\n<div id=\"attachment_5063\" style=\"width: 826px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/configure-ssis-netsuite-connection-dynamic-token-request.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-5063\" class=\"size-full wp-image-5063\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/configure-ssis-netsuite-connection-dynamic-token-request.png\" alt=\"SSIS NetSuite Connection - Configure Token Request\" width=\"816\" height=\"801\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/configure-ssis-netsuite-connection-dynamic-token-request.png 816w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/configure-ssis-netsuite-connection-dynamic-token-request-300x294.png 300w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/configure-ssis-netsuite-connection-dynamic-token-request-768x754.png 768w\" sizes=\"(max-width: 816px) 100vw, 816px\" \/><\/a><p id=\"caption-attachment-5063\" class=\"wp-caption-text\">SSIS NetSuite Connection &#8211; Configure Token Request<\/p><\/div><\/li>\n<li>On <strong>Response<\/strong> Tab configure like below. You have to enter Cookie name as <strong>JSESSIONID<\/strong>\n<div id=\"attachment_5064\" style=\"width: 749px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/configure-ssis-netsuite-connection-dynamic-token-response.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-5064\" class=\"size-full wp-image-5064\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/configure-ssis-netsuite-connection-dynamic-token-response.png\" alt=\"SSIS NetSuite Connection - Configure Token Response\" width=\"739\" height=\"548\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/configure-ssis-netsuite-connection-dynamic-token-response.png 739w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/configure-ssis-netsuite-connection-dynamic-token-response-300x222.png 300w\" sizes=\"(max-width: 739px) 100vw, 739px\" \/><\/a><p id=\"caption-attachment-5064\" class=\"wp-caption-text\">SSIS NetSuite Connection &#8211; Configure Token Response<\/p><\/div><\/li>\n<li>Click OK to Save Connection.<\/li>\n<li>We will configure XML Source in next section.<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<h3>Configure SSIS XML Source to read NetSuite data<\/h3>\n<p>Now let&#8217;s continue configuration of XML Source.\u00a0In this section we will show you how to get data without pagination. In next section we will see how to modify XML Source Settings to pagination request to read many records (e.g. 1000+ rows).<\/p>\n<ol>\n<li>On your XML Source enter NetSuite Webservice URL like below.\n<pre class=\"lang:default highlight:0 decode:true\">https:\/\/webservices.netsuite.com\/services\/NetSuitePort_2017_1<\/pre>\n<\/li>\n<li>Now check Use Credentials and select previously created HTTP connection.<\/li>\n<li>Select Method as\u00a0\u00a0<strong>POST<\/strong> and content type as <strong>text\/xml<\/strong><\/li>\n<li>Edit Request Body and enter like below (or any other XML body for API you like to call. Make sure SOAPAction in next step updated correctly too for other action)<div class=\"su-note\"  style=\"border-color:#e5de9d;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\"><div class=\"su-note-inner su-u-clearfix su-u-trim\" style=\"background-color:#FFF8B7;border-color:#ffffff;color:#333333;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\">NOTE: Try to match your URL version in the Body Request. If you used For example if you used 2019_1 in URL then change below body to match that version <\/div><\/div>\n<pre class=\"lang:xhtml decode:true\">&lt;soapenv:Envelope \r\n   xmlns:soapenv=\"http:\/\/schemas.xmlsoap.org\/soap\/envelope\/\" \r\n   xmlns:urn=\"urn:messages_2018_1.platform.webservices.netsuite.com\" \r\n   xmlns:urn1=\"urn:core_2018_1.platform.webservices.netsuite.com\"&gt;\r\n   &lt;soapenv:Body&gt;\r\n      &lt;urn:getAll&gt;\r\n         &lt;record recordType=\"currency\"\/&gt; \r\n      &lt;\/urn:getAll&gt;\r\n   &lt;\/soapenv:Body&gt;\r\n&lt;\/soapenv:Envelope&gt;<\/pre>\n<\/li>\n<li><div class=\"su-note\"  style=\"border-color:#e5de9d;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\"><div class=\"su-note-inner su-u-clearfix su-u-trim\" style=\"background-color:#FFF8B7;border-color:#ffffff;color:#333333;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\">NOTE: If you used\u00a0NetSuitePort_2019_1 or higher version in URL then make sure you changed version\u00a0\u00a0<strong>2017_1<\/strong> to <strong>2019_1<\/strong> in below body<\/div><\/div><\/li>\n<li>Now you click Raw Edit above headers grid and enter method name in SOAPAction (e.g. <strong>getAll<\/strong> in our case)\n<pre class=\"lang:default highlight:0 decode:true\">SOAPAction: \"getAll\"<\/pre>\n<div class=\"su-note\"  style=\"border-color:#e5de9d;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\"><div class=\"su-note-inner su-u-clearfix su-u-trim\" style=\"background-color:#FFF8B7;border-color:#ffffff;color:#333333;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\">NOTE: SOAPAction Header is very important so make sure you change it to match Action you like to call. You can Use Correct <a href=\"https:\/\/www.netsuite.com\/portal\/developers\/resources\/suitetalk-documentation.shtml\" target=\"_blank\" rel=\"noopener\">WebService WSDL File (Metadata)<\/a>\u00a0\u00a0in Tool like <a href=\"https:\/\/zappysys.com\/blog\/calling-soap-web-service-in-ssis-xml-source\/\" target=\"_blank\" rel=\"noopener\">SOAPUI as explained here<\/a><\/p>\n<p><a href=\"https:\/\/webservices.netsuite.com\/wsdl\/v2017_1_0\/netsuite.wsdl\">Version 2017_1 WSDL Link<\/a><br \/>\n<a href=\"https:\/\/webservices.netsuite.com\/wsdl\/v2018_1_0\/netsuite.wsdl\">Version 2018_1 WSDL Link<\/a><br \/>\n<a href=\"https:\/\/webservices.netsuite.com\/wsdl\/v2019_1_0\/netsuite.wsdl\" target=\"_blank\" rel=\"noopener\">Version 2019_1 WSDL Link<\/a><br \/>\nFor Other Versions Just Change URL Version Part to different Number e.g. <strong>2019_2_0<\/strong><\/p>\n<\/div><\/div><\/li>\n<li>Now enter Filter like below or navigate by clicking Select Filter button.\n<pre class=\"lang:default highlight:0 decode:true\">$.soapenv:Envelope.soapenv:Body.getAllResponse.platformCore:getAllResult.platformCore:recordList.platformCore:record[*]<\/pre>\n<div id=\"attachment_5107\" style=\"width: 838px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/ssis-xml-source-configure-netsuite-soap-api-getall-select-filter.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-5107\" class=\"size-full wp-image-5107\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/ssis-xml-source-configure-netsuite-soap-api-getall-select-filter.png\" alt=\"Configure XML Source - NetSuite SOAP API getAll (Body, Header, ContentType, Method, Filter)\" width=\"828\" height=\"507\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/ssis-xml-source-configure-netsuite-soap-api-getall-select-filter.png 828w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/ssis-xml-source-configure-netsuite-soap-api-getall-select-filter-300x184.png 300w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/ssis-xml-source-configure-netsuite-soap-api-getall-select-filter-768x470.png 768w\" sizes=\"(max-width: 828px) 100vw, 828px\" \/><\/a><p id=\"caption-attachment-5107\" class=\"wp-caption-text\">Configure XML Source &#8211; NetSuite SOAP API getAll (Body, Header, ContentType, Method, Filter)<\/p><\/div><\/li>\n<li>Now click preview data.\n<div id=\"attachment_5108\" style=\"width: 630px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/ssis-xml-source-configure-netsuite-soap-api-getall-preview-data.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-5108\" class=\"size-full wp-image-5108\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/ssis-xml-source-configure-netsuite-soap-api-getall-preview-data.png\" alt=\"Preview NetSuite data in XML Source\" width=\"620\" height=\"310\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/ssis-xml-source-configure-netsuite-soap-api-getall-preview-data.png 620w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/ssis-xml-source-configure-netsuite-soap-api-getall-preview-data-300x150.png 300w\" sizes=\"(max-width: 620px) 100vw, 620px\" \/><\/a><p id=\"caption-attachment-5108\" class=\"wp-caption-text\">Preview NetSuite data in XML Source<\/p><\/div><\/li>\n<li>Click OK to save XML Source UI<\/li>\n<li>Now you can connect XML Source to target like OLEDB Destination and load NetSuite data into SQL Server.<\/li>\n<\/ol>\n<h3>Configure\u00a0SSIS XML Source with Pagination<\/h3>\n<p>So in previous section we saw how to configure XML Source for basic API calls (without pagination). In this section we will see how to call more complex API (e.g. search ) which requires pagination. Some ideas about NetSuite Pagination <a href=\"https:\/\/zappysys.com\/blog\/read-netsuite-data-power-bi\/\" target=\"_blank\" rel=\"noopener\">discussed here too<\/a>.<\/p>\n<p>Foe pagination setup using XML Source we have to configure following properties via Properties Grid or Advanced Edit rather than Normal UI. May of these properties not available via UI as of now.<\/p>\n<ol>\n<li>Create new data flow and drag new ZS XML Source.<\/li>\n<li>Right click on XML Source and click Properties in Data flow designer. Find property by name in the Grid and set correct value.<br \/>\n<strong>NOTE:<\/strong> In newer version v3.1.2 or higher you can use XML Source UI to enter some multi line properties for ease of use (e.g.\u00a0FirstPageBodyPart and NextPageBodyPart can be entered on Advanced Pagination Tab, all other properties are easier to enter from Grid Mode if you sort alphabetically)<\/li>\n<\/ol>\n<div class=\"su-table su-table-alternate\">\n<table style=\"border-collapse: collapse;width: 100%;height: 198px\" border=\"1\">\n<tbody>\n<tr>\n<td style=\"width: 22.434%\">ElementsToTreatAsArray<\/td>\n<td style=\"width: 77.566%\">platformCore:record<\/td>\n<\/tr>\n<tr style=\"height: 22px\">\n<td style=\"width: 22.434%;height: 22px\">EnablePageTokenForBody<\/td>\n<td style=\"width: 77.566%;height: 22px\">True<\/td>\n<\/tr>\n<tr style=\"height: 22px\">\n<td style=\"width: 22.434%;height: 22px\">Filter<\/td>\n<td style=\"width: 77.566%;height: 22px\">$.soapenv:Envelope.soapenv:Body.search[$tag$]Response.platformCore:searchResult.platformCore:recordList.platformCore:record[*]<\/td>\n<\/tr>\n<tr style=\"height: 22px\">\n<td style=\"width: 22.434%;height: 22px\">FirstPageBodyPart<\/td>\n<td style=\"width: 77.566%;height: 22px\">\n<pre class=\"lang:xhtml decode:true\">    &lt;search xmlns=\"urn:messages_2017_1.platform.webservices.netsuite.com\"&gt;\r\n      &lt;searchRecord xmlns:q1=\"urn:accounting_2017_1.lists.webservices.netsuite.com\" xsi:type=\"q1:AccountSearch\"&gt;\r\n        &lt;q1:basic&gt;\r\n          &lt;description operator=\"doesNotContain\" xmlns=\"urn:common_2017_1.platform.webservices.netsuite.com\"&gt;\r\n            &lt;searchValue xmlns=\"urn:core_2017_1.platform.webservices.netsuite.com\"&gt;x&lt;\/searchValue&gt;\r\n          &lt;\/description&gt;\r\n          &lt;name operator=\"contains\" xmlns=\"urn:common_2017_1.platform.webservices.netsuite.com\"&gt;\r\n            &lt;searchValue xmlns=\"urn:core_2017_1.platform.webservices.netsuite.com\"&gt;a&lt;\/searchValue&gt;\r\n          &lt;\/name&gt;\r\n        &lt;\/q1:basic&gt;\r\n      &lt;\/searchRecord&gt;\r\n    &lt;\/search&gt;<\/pre>\n<p>Change as per your need but we used above example search<\/td>\n<\/tr>\n<tr style=\"height: 22px\">\n<td style=\"width: 22.434%;height: 22px\">HasDifferentNextPageInfo<\/td>\n<td style=\"width: 77.566%;height: 22px\">True<\/td>\n<\/tr>\n<tr style=\"height: 22px\">\n<td style=\"width: 22.434%;height: 22px\">NextPageBodyPart<\/td>\n<td style=\"width: 77.566%;height: 22px\">\n<pre class=\"lang:xhtml decode:true\">    &lt;searchMoreWithId xmlns=\"urn:messages_2017_1.platform.webservices.netsuite.com\"&gt;\r\n      &lt;searchId&gt;[$pagetoken$]&lt;\/searchId&gt;\r\n      &lt;pageIndex&gt;[$pagenumber$]&lt;\/pageIndex&gt;\r\n    &lt;\/searchMoreWithId&gt;<\/pre>\n<p>&nbsp;<\/td>\n<\/tr>\n<tr style=\"height: 22px\">\n<td style=\"width: 22.434%;height: 22px\">NextUrlAttribute<\/td>\n<td style=\"width: 77.566%;height: 22px\">$.soapenv:Envelope.soapenv:Body.search[$tag$]Response.platformCore:searchResult.platformCore:searchId<\/td>\n<\/tr>\n<tr style=\"height: 22px\">\n<td style=\"width: 22.434%;height: 22px\">PagePlaceholders<\/td>\n<td style=\"width: 77.566%;height: 22px\">header=|MoreWithId;filter=|MoreWithId<\/td>\n<\/tr>\n<tr style=\"height: 22px\">\n<td style=\"width: 22.434%;height: 22px\">PagesMaxPagesExpr<\/td>\n<td style=\"width: 77.566%;height: 22px\">$.soapenv:Envelope.soapenv:Body.searchResponse.platformCore:searchResult.platformCore:totalPages<\/td>\n<\/tr>\n<tr style=\"height: 22px\">\n<td style=\"width: 22.434%;height: 22px\"><\/td>\n<td style=\"width: 77.566%;height: 22px\"><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Once above items are set in property grid. Double click XML source to edit few more items from UI.<\/p>\n<ol>\n<li>Enter URL as below\n<pre class=\"lang:default highlight:0 decode:true \">https:\/\/webservices.netsuite.com\/services\/NetSuitePort_2017_1<\/pre>\n<\/li>\n<li>Check Use Credentials and select <strong>HTTP connection<\/strong> we created in previous section.<\/li>\n<li>Click <strong>Raw Edit<\/strong> button (above headers grid) and enter below\n<pre class=\"lang:default highlight:0 decode:true\">SOAPAction: \"search[$tag$]\"<\/pre>\n<\/li>\n<li>Click on Edit button next to Body. Enter following XML fragment for search request. <strong>Change ApplicationId<\/strong> and adjust PageSize if needed.\n<pre class=\"lang:xhtml decode:true\">&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\r\n&lt;soap:Envelope xmlns:soap=\"http:\/\/schemas.xmlsoap.org\/soap\/envelope\/\" xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\" xmlns:xsd=\"http:\/\/www.w3.org\/2001\/XMLSchema\"&gt;\r\n  &lt;soap:Header&gt;\r\n    &lt;applicationInfo xmlns=\"urn:messages_2017_1.platform.webservices.netsuite.com\"&gt;\r\n      &lt;applicationId&gt;ABCD-1234-XXXXXXXXXXXXXXX&lt;\/applicationId&gt;\r\n    &lt;\/applicationInfo&gt;\r\n    &lt;searchPreferences xmlns=\"urn:messages_2017_1.platform.webservices.netsuite.com\"&gt;\r\n      &lt;pageSize&gt;100&lt;\/pageSize&gt;\r\n    &lt;\/searchPreferences&gt;\r\n  &lt;\/soap:Header&gt;\r\n  &lt;soap:Body&gt;\r\n[$tag$]\r\n  &lt;\/soap:Body&gt;\r\n&lt;\/soap:Envelope&gt;<\/pre>\n<\/li>\n<li>Select <strong>POST<\/strong> method, change content type to <strong>XML (text \/ xml, charset=UTF-8)<\/strong><\/li>\n<li>That&#8217;s it. Click &#8216;Preview to confirm.<\/li>\n<li>Click ok to save XML Source.\n<div id=\"attachment_5109\" style=\"width: 900px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/ssis-xml-source-configure-netsuite-pagination-preview-data.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-5109\" class=\"size-full wp-image-5109\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/ssis-xml-source-configure-netsuite-pagination-preview-data.png\" alt=\"Read NetSuite data in SSIS with Pagination ( search, searchMoreWithId API call)\" width=\"890\" height=\"787\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/ssis-xml-source-configure-netsuite-pagination-preview-data.png 890w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/ssis-xml-source-configure-netsuite-pagination-preview-data-300x265.png 300w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/ssis-xml-source-configure-netsuite-pagination-preview-data-768x679.png 768w\" sizes=\"(max-width: 890px) 100vw, 890px\" \/><\/a><p id=\"caption-attachment-5109\" class=\"wp-caption-text\">Read NetSuite data in SSIS with Pagination ( search, searchMoreWithId API call)<\/p><\/div><\/li>\n<\/ol>\n<h3>Configure SQL Server Destination to load NetSuite data<\/h3>\n<p>Once you have XML Source configured you can connect XML Source to Target (OLEDB Destination) and load data into SQL Server.<\/p>\n<h2>Conclusion<\/h2>\n<p>In this post we explored many advanced options of HTTP Connection and XML Source to enable NetSuite API integration in SSIS. <a href=\"https:\/\/zappysys.com\/products\/ssis-powerpack\/\">Download SSIS PowerPack<\/a> today for FREE to uncover many other data integration scenarios not discussed in this article.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction In this post we will learn how to read data from NetSuite in SSIS. We will use ZappySys XML Source for SOAP API access. &nbsp; &nbsp; What is NetSuite CRM? NetSuite is a CRM \/ ERP product. It gives you scalable cloud CRM \/ ERP solution targeted at high-growing, mid-sized businesses and large enterprises. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":5110,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[225,16,8,62],"tags":[366,67],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\r\n<title>How to read data from NetSuite in SSIS (SimpleTalk SOAP API) | ZappySys Blog<\/title>\r\n<meta name=\"description\" content=\"Learn how to read data from NetSuite in SSIS. We will explore how to call NetSuite SOAP API in SSIS, configure API pagination. Load NetSuite in SQL Server.\" \/>\r\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\r\n<link rel=\"canonical\" href=\"https:\/\/zappysys.com\/blog\/read-data-netsuite-ssis-simpletalk-soap-api\/\" \/>\r\n<meta property=\"og:locale\" content=\"en_US\" \/>\r\n<meta property=\"og:type\" content=\"article\" \/>\r\n<meta property=\"og:title\" content=\"How to read data from NetSuite in SSIS (SimpleTalk SOAP API) | ZappySys Blog\" \/>\r\n<meta property=\"og:description\" content=\"Learn how to read data from NetSuite in SSIS. We will explore how to call NetSuite SOAP API in SSIS, configure API pagination. Load NetSuite in SQL Server.\" \/>\r\n<meta property=\"og:url\" content=\"https:\/\/zappysys.com\/blog\/read-data-netsuite-ssis-simpletalk-soap-api\/\" \/>\r\n<meta property=\"og:site_name\" content=\"ZappySys Blog\" \/>\r\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/ZappySys\/\" \/>\r\n<meta property=\"article:published_time\" content=\"2018-09-06T15:59:12+00:00\" \/>\r\n<meta property=\"article:modified_time\" content=\"2020-05-29T21:48:49+00:00\" \/>\r\n<meta property=\"og:image\" content=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/netsuite-logo.png\" \/>\r\n\t<meta property=\"og:image:width\" content=\"665\" \/>\r\n\t<meta property=\"og:image:height\" content=\"471\" \/>\r\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\r\n<meta name=\"author\" content=\"ZappySys\" \/>\r\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\r\n<meta name=\"twitter:creator\" content=\"@https:\/\/twitter.com\/zappysys\/\" \/>\r\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"ZappySys\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\r\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/zappysys.com\/blog\/read-data-netsuite-ssis-simpletalk-soap-api\/\",\"url\":\"https:\/\/zappysys.com\/blog\/read-data-netsuite-ssis-simpletalk-soap-api\/\",\"name\":\"How to read data from NetSuite in SSIS (SimpleTalk SOAP API) | ZappySys Blog\",\"isPartOf\":{\"@id\":\"https:\/\/zappysys.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/zappysys.com\/blog\/read-data-netsuite-ssis-simpletalk-soap-api\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/zappysys.com\/blog\/read-data-netsuite-ssis-simpletalk-soap-api\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/netsuite-logo.png\",\"datePublished\":\"2018-09-06T15:59:12+00:00\",\"dateModified\":\"2020-05-29T21:48:49+00:00\",\"author\":{\"@id\":\"https:\/\/zappysys.com\/blog\/#\/schema\/person\/2756c237457fbc95d82cb38962f81f82\"},\"description\":\"Learn how to read data from NetSuite in SSIS. We will explore how to call NetSuite SOAP API in SSIS, configure API pagination. Load NetSuite in SQL Server.\",\"breadcrumb\":{\"@id\":\"https:\/\/zappysys.com\/blog\/read-data-netsuite-ssis-simpletalk-soap-api\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/zappysys.com\/blog\/read-data-netsuite-ssis-simpletalk-soap-api\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/zappysys.com\/blog\/read-data-netsuite-ssis-simpletalk-soap-api\/#primaryimage\",\"url\":\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/netsuite-logo.png\",\"contentUrl\":\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/netsuite-logo.png\",\"width\":665,\"height\":471},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/zappysys.com\/blog\/read-data-netsuite-ssis-simpletalk-soap-api\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/zappysys.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to read data from NetSuite in SSIS (SimpleTalk SOAP API)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/zappysys.com\/blog\/#website\",\"url\":\"https:\/\/zappysys.com\/blog\/\",\"name\":\"ZappySys Blog\",\"description\":\"SSIS \/ ODBC Drivers \/ API Connectors for JSON, XML, Azure, Amazon AWS, Salesforce, MongoDB and more\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/zappysys.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/zappysys.com\/blog\/#\/schema\/person\/2756c237457fbc95d82cb38962f81f82\",\"name\":\"ZappySys\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/zappysys.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5c9be148088ba9b8af8e955c5f7c22b5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/5c9be148088ba9b8af8e955c5f7c22b5?s=96&d=mm&r=g\",\"caption\":\"ZappySys\"},\"sameAs\":[\"http:\/\/www.zappysys.com\/\",\"https:\/\/www.facebook.com\/ZappySys\/\",\"https:\/\/twitter.com\/https:\/\/twitter.com\/zappysys\/\"],\"url\":\"https:\/\/zappysys.com\/blog\/author\/admin\/\"}]}<\/script>\r\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to read data from NetSuite in SSIS (SimpleTalk SOAP API) | ZappySys Blog","description":"Learn how to read data from NetSuite in SSIS. We will explore how to call NetSuite SOAP API in SSIS, configure API pagination. Load NetSuite in SQL Server.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/zappysys.com\/blog\/read-data-netsuite-ssis-simpletalk-soap-api\/","og_locale":"en_US","og_type":"article","og_title":"How to read data from NetSuite in SSIS (SimpleTalk SOAP API) | ZappySys Blog","og_description":"Learn how to read data from NetSuite in SSIS. We will explore how to call NetSuite SOAP API in SSIS, configure API pagination. Load NetSuite in SQL Server.","og_url":"https:\/\/zappysys.com\/blog\/read-data-netsuite-ssis-simpletalk-soap-api\/","og_site_name":"ZappySys Blog","article_author":"https:\/\/www.facebook.com\/ZappySys\/","article_published_time":"2018-09-06T15:59:12+00:00","article_modified_time":"2020-05-29T21:48:49+00:00","og_image":[{"width":665,"height":471,"url":"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/netsuite-logo.png","type":"image\/png"}],"author":"ZappySys","twitter_card":"summary_large_image","twitter_creator":"@https:\/\/twitter.com\/zappysys\/","twitter_misc":{"Written by":"ZappySys","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/zappysys.com\/blog\/read-data-netsuite-ssis-simpletalk-soap-api\/","url":"https:\/\/zappysys.com\/blog\/read-data-netsuite-ssis-simpletalk-soap-api\/","name":"How to read data from NetSuite in SSIS (SimpleTalk SOAP API) | ZappySys Blog","isPartOf":{"@id":"https:\/\/zappysys.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/zappysys.com\/blog\/read-data-netsuite-ssis-simpletalk-soap-api\/#primaryimage"},"image":{"@id":"https:\/\/zappysys.com\/blog\/read-data-netsuite-ssis-simpletalk-soap-api\/#primaryimage"},"thumbnailUrl":"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/netsuite-logo.png","datePublished":"2018-09-06T15:59:12+00:00","dateModified":"2020-05-29T21:48:49+00:00","author":{"@id":"https:\/\/zappysys.com\/blog\/#\/schema\/person\/2756c237457fbc95d82cb38962f81f82"},"description":"Learn how to read data from NetSuite in SSIS. We will explore how to call NetSuite SOAP API in SSIS, configure API pagination. Load NetSuite in SQL Server.","breadcrumb":{"@id":"https:\/\/zappysys.com\/blog\/read-data-netsuite-ssis-simpletalk-soap-api\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zappysys.com\/blog\/read-data-netsuite-ssis-simpletalk-soap-api\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/zappysys.com\/blog\/read-data-netsuite-ssis-simpletalk-soap-api\/#primaryimage","url":"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/netsuite-logo.png","contentUrl":"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2018\/09\/netsuite-logo.png","width":665,"height":471},{"@type":"BreadcrumbList","@id":"https:\/\/zappysys.com\/blog\/read-data-netsuite-ssis-simpletalk-soap-api\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/zappysys.com\/blog\/"},{"@type":"ListItem","position":2,"name":"How to read data from NetSuite in SSIS (SimpleTalk SOAP API)"}]},{"@type":"WebSite","@id":"https:\/\/zappysys.com\/blog\/#website","url":"https:\/\/zappysys.com\/blog\/","name":"ZappySys Blog","description":"SSIS \/ ODBC Drivers \/ API Connectors for JSON, XML, Azure, Amazon AWS, Salesforce, MongoDB and more","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/zappysys.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/zappysys.com\/blog\/#\/schema\/person\/2756c237457fbc95d82cb38962f81f82","name":"ZappySys","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/zappysys.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/5c9be148088ba9b8af8e955c5f7c22b5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5c9be148088ba9b8af8e955c5f7c22b5?s=96&d=mm&r=g","caption":"ZappySys"},"sameAs":["http:\/\/www.zappysys.com\/","https:\/\/www.facebook.com\/ZappySys\/","https:\/\/twitter.com\/https:\/\/twitter.com\/zappysys\/"],"url":"https:\/\/zappysys.com\/blog\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/posts\/4755"}],"collection":[{"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/comments?post=4755"}],"version-history":[{"count":8,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/posts\/4755\/revisions"}],"predecessor-version":[{"id":8957,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/posts\/4755\/revisions\/8957"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/media\/5110"}],"wp:attachment":[{"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/media?parent=4755"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/categories?post=4755"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/tags?post=4755"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}