<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SSIS XML Source (File / SOAP) Archives | ZappySys Blog</title>
	<atom:link href="https://zappysys.com/blog/category/ssis/components/ssis-xml-source-file/feed/" rel="self" type="application/rss+xml" />
	<link>https://zappysys.com/blog/category/ssis/components/ssis-xml-source-file/</link>
	<description>SSIS / ODBC Drivers / API Connectors for JSON, XML, Azure, Amazon AWS, Salesforce, MongoDB and more</description>
	<lastBuildDate>Thu, 25 Sep 2025 21:02:07 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.4.4</generator>

<image>
	<url>https://zappysys.com/blog/wp-content/uploads/2023/01/cropped-zappysys-symbol-large-32x32.png</url>
	<title>SSIS XML Source (File / SOAP) Archives | ZappySys Blog</title>
	<link>https://zappysys.com/blog/category/ssis/components/ssis-xml-source-file/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Read data from SharePoint List in SSIS (On-Premises SOAP API)</title>
		<link>https://zappysys.com/blog/ssis-read-data-sharepoint-premises-soap-api/</link>
		
		<dc:creator><![CDATA[ZappySys]]></dc:creator>
		<pubDate>Fri, 18 Feb 2022 13:26:38 +0000</pubDate>
				<category><![CDATA[SSIS XML Source (File / SOAP)]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[Sharepoint]]></category>
		<category><![CDATA[soap]]></category>
		<category><![CDATA[web service]]></category>
		<category><![CDATA[xml]]></category>
		<guid isPermaLink="false">https://zappysys.com/blog/?p=9545</guid>

					<description><![CDATA[<p>Introduction In this article, we learn how to call SharePoint (on-premises) SOAP API Service in SSIS. If you intend to call SharePoint Online (part of Office 365), we suggest reading SSIS SharePoint Online Connector article. Using SOAP API with SharePoint in SSIS is a common requirement to Administer SharePoint. SharePoint on-premises is a nice Microsoft [&#8230;]</p>
<p>The post <a href="https://zappysys.com/blog/ssis-read-data-sharepoint-premises-soap-api/">Read data from SharePoint List in SSIS (On-Premises SOAP API)</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Introduction</h2>
<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>UPDATE:</strong> ZappySys has released a brand new <a href="https://zappysys.com/api/integration-hub/sharepoint-connector/">API Connector for SharePoint Online</a> which makes it much simpler to <strong>Read/Write SharePoint Data in SSIS</strong> compared to the steps listed in this article. You can still use steps from this article but if you are new to API or want to avoid learning curve with API then use newer approach.</p>
<p>Please visit <a href="https://zappysys.com/api/integration-hub/">this page to see all</a> Pre-Configured ready to use API connectors which you can use in <a href="https://zappysys.com/products/ssis-powerpack/ssis-api-source/">SSIS API Source</a> / <a href="https://zappysys.com/products/ssis-powerpack/ssis-api-destination/">SSIS API Destination</a> OR <a href="https://zappysys.com/products/odbc-powerpack/odbc-api-driver/">API ODBC Driver</a> (for non-SSIS Apps such as Excel, Power BI, Informatica).</p>
</div></div>
In this article, we learn how to call SharePoint (on-premises) SOAP API Service in SSIS. If you intend to call SharePoint Online (part of Office 365), we suggest reading <a href="https://zappysys.com/api/integration-hub/sharepoint-connector/ssis" target="_blank" rel="noopener">SSIS SharePoint Online Connector</a> article.</p>
<p><a href="https://zappysys.com/blog/wp-content/uploads/2018/05/sharepoint-icon.jpg"><img loading="lazy" decoding="async" class="alignleft wp-image-3731 " src="https://zappysys.com/blog/wp-content/uploads/2018/05/sharepoint-icon-150x150.jpg" alt="icon SharePoint" width="86" height="86" srcset="https://zappysys.com/blog/wp-content/uploads/2018/05/sharepoint-icon-150x150.jpg 150w, https://zappysys.com/blog/wp-content/uploads/2018/05/sharepoint-icon.jpg 225w" sizes="(max-width: 86px) 100vw, 86px" /></a>Using SOAP API with SharePoint in SSIS is a common requirement to Administer SharePoint. SharePoint on-premises is a nice Microsoft application used to share documents and collaborate with the company. You can have schedules, projects, documents, and more shared using a Web platform.</p>
<p>In addition, it is a very useful tool that your company may need. It is also possible to automate, administer tasks using SOAP API.<br />
In this article, we will learn how to create SOAP API queries to SharePoint on-premises.</p>
<p>Also, we will show our ZappySys SSIS PowerPack that includes very powerful tools to export SharePoint data from REST API to any other source.<br />
<div class="su-table su-table-alternate">
<table style="width: 494px" width="300">
<tbody>
<tr style="line-height: 0px">
<td style="width: 48.0625px"><a href="https://zappysys.com/products/ssis-powerpack/ssis-rest-api-web-service-task/" rel="noopener"><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-3074" src="https://zappysys.com/images/SSIS-PowerPack/ssis-rest-api-web-service-task.png" alt="REST API Web Service Task SSIS" width="50" height="50" /></a></td>
<td style="vertical-align: middle;width: 429.938px"><a href="https://zappysys.com/products/ssis-powerpack/ssis-rest-api-web-service-task/" rel="noopener">SSIS REST API Web Service Task<br />
</a></td>
</tr>
<tr style="line-height: 0px">
<td style="height: 50px;width: 48.0625px"><a href="https://zappysys.com/products/ssis-powerpack/ssis-xml-source/" rel="noopener"><br />
</a><a href="https://zappysys.com/products/ssis-powerpack/ssis-xml-source/" rel="noopener"><img loading="lazy" decoding="async" src="https://zappysys.com/images/SSIS-PowerPack/ssis-xml-source.png" alt="SSIS XML Source (File, SOAP, REST Connector) " width="50" height="50" /></a></td>
<td style="vertical-align: middle;height: 58px;width: 429.938px"><a href="https://zappysys.com/products/ssis-powerpack/ssis-xml-source/" rel="noopener">SSIS XML Source (File, REST, SOAP Web Service)</a></td>
</tr>
</tbody>
</table>
</div>
<h2>Requirements</h2>
<ol>
<li>Firstly, you will need SSDT installed.</li>
<li>Secondly, <a href="https://zappysys.com/products/ssis-powerpack/" target="_blank" rel="noopener">SSIS PowerPack</a> installed.</li>
<li><a href="https://www.soapui.org/downloads/soapui/" target="_blank" rel="noopener">SoapUI installed</a>.</li>
</ol>
<h2>Getting started</h2>
<p>We will start with SoapUI application. It will help us to get all the possible methods SharePoint SOAP API allows. Also, it will show the inner workings of how the requests should look, which we will later replicate on XML Source. SoapUI will be our polestar.</p>
<h2>How to call SharePoint SOAP API (On-Premises)</h2>
<p>To call SOAP API in SSIS you have to perform the following steps at a high level. Detailed steps are described in the next section</p>
<ol>
<li>Import WSDL file or URL for your Service in SoapUI for testing.
<ol>
<li>File &gt; New SOAP Project.</li>
<li>In the <em>Initial WSDL</em> field enter<br />
<em>http://your.domain.com/_vti_bin/Lists.asmx?wsdl<br />
or<br />
http://your.domain.com/my-site/_vti_bin/Lists.asmx?wsdl</em></li>
</ol>
</li>
<li>Add credentials for SOAP Web service (Basic Auth or WSS)</li>
<li>Create SOAP Request XML (Edit default parameters) and <strong>Click Play Button </strong>to test your request. Associative photo:
<div id="attachment_2543" style="width: 745px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2016/01/create-workday-soap-request-using-soapui-api-xml-body.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-2543" class="size-full wp-image-2543" src="https://zappysys.com/blog/wp-content/uploads/2016/01/create-workday-soap-request-using-soapui-api-xml-body.png" alt="Create SOAP Request Body from WSDL (Using SoapUI tool)" width="735" height="451" srcset="https://zappysys.com/blog/wp-content/uploads/2016/01/create-workday-soap-request-using-soapui-api-xml-body.png 735w, https://zappysys.com/blog/wp-content/uploads/2016/01/create-workday-soap-request-using-soapui-api-xml-body-300x184.png 300w" sizes="(max-width: 735px) 100vw, 735px" /></a><p id="caption-attachment-2543" class="wp-caption-text">Create SOAP Request Body from WSDL (Using SoapUI tool)</p></div></li>
<li>If your test works in SoapUI then you are ready to move to SSIS part.</li>
<li>Copy Service URL, Request Body and Headers to Notepad &#8212; we will use it in SSIS.<br />
For Header see <strong>Raw</strong> Tab on SoapUI &gt; Copy two lines <strong>Content-Type</strong> and <strong>SOAPAction.</strong></p>
<div id="attachment_7355" style="width: 638px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2016/06/soapui-get-contenttype-soapaction-raw-tab.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-7355" class="size-full wp-image-7355" src="https://zappysys.com/blog/wp-content/uploads/2016/06/soapui-get-contenttype-soapaction-raw-tab.png" alt="Get ContentType and SOAPAction Headers from SoapUI Raw tab" width="628" height="457" srcset="https://zappysys.com/blog/wp-content/uploads/2016/06/soapui-get-contenttype-soapaction-raw-tab.png 628w, https://zappysys.com/blog/wp-content/uploads/2016/06/soapui-get-contenttype-soapaction-raw-tab-300x218.png 300w" sizes="(max-width: 628px) 100vw, 628px" /></a><p id="caption-attachment-7355" class="wp-caption-text">Get ContentType and SOAPAction Headers from SoapUI Raw tab</p></div></li>
</ol>
<p>In the next section, we will see how to call SharePoint SOAP Web Service in SSIS.</p>
<h2>How to read data from a SharePoint List via SOAP Web Service</h2>
<p>Now let&#8217;s move onto SSIS and get some data from SharePoint using <em>XML Source</em>.</p>
<ol>
<li>Open SSIS, create a new Integration project and create a new SSIS package.</li>
<li>Drag and drop Data Flow onto the Control Flow from SSIS Toolbox.</li>
<li>Then drag and drop <a href="//zappysys.com/products/ssis-powerpack/ssis-xml-source/" target="_blank" rel="noopener">XML Source</a> onto Data Flow (you may also use other similar connectors such as <a href="https://zappysys.com/products/ssis-powerpack/ssis-web-api-destination-connector/" target="_blank" rel="noopener">REST API Task</a> or <a href="https://zappysys.com/products/ssis-powerpack/ssis-web-api-destination-connector/" target="_blank" rel="noopener">Web API Destination</a>).</li>
<li>Then configure <em>XML Source</em> in this way:<br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-9553" src="https://zappysys.com/blog/wp-content/uploads/2022/02/how-to-read-data-from-sharepoint-via-soap-api-webservice.png" alt="" width="636" height="750" srcset="https://zappysys.com/blog/wp-content/uploads/2022/02/how-to-read-data-from-sharepoint-via-soap-api-webservice.png 636w, https://zappysys.com/blog/wp-content/uploads/2022/02/how-to-read-data-from-sharepoint-via-soap-api-webservice-254x300.png 254w" sizes="(max-width: 636px) 100vw, 636px" /></p>
<ol>
<li>Enter URL:<br />
<span style="text-decoration: underline;">https://my.sharepoint.site.com/sites/mysite/_vti_bin/Lists.asmx</span><br />
or<br />
<span style="text-decoration: underline;">https://my.sharepoint.site.com/_vti_bin/Lists.asmx</span> (depends if you have many sites or just one).</li>
<li>Check <strong>Use Credentials</strong> checkbox and create <strong>ZS-HTTP</strong> connection. Use <strong>Basic</strong> or <strong>NTLM</strong> authorization scheme.</li>
<li>Then copy configuration from SoapUI to XML Source. E.g. <strong>HTTP Request Method</strong>, <strong>Body</strong>, <strong>Body Content-Type, HTTP Headers </strong>(e.g. SOAPAction header).</li>
<li>Use <strong>$.soap:Envelope.soap:Body.GetListItemsResponse.GetListItemsResult.listitems.rs:data.z:row[*]</strong> as filter. If it doesn&#8217;t work, use <strong>Select Filter</strong> button to select the path manually and select <strong>row</strong> node.</li>
</ol>
</li>
<li>What&#8217;s left is to connect XML Source with OLEDB Destination or a similar destination component:<br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-9554" src="https://zappysys.com/blog/wp-content/uploads/2022/02/sharepoint-on-premises-load-list-using-soap-webservice-api-into-database.png" alt="" width="351" height="289" srcset="https://zappysys.com/blog/wp-content/uploads/2022/02/sharepoint-on-premises-load-list-using-soap-webservice-api-into-database.png 351w, https://zappysys.com/blog/wp-content/uploads/2022/02/sharepoint-on-premises-load-list-using-soap-webservice-api-into-database-300x247.png 300w" sizes="(max-width: 351px) 100vw, 351px" /></li>
</ol>
<h2>Conclusion</h2>
<p>To conclude, we can say that using SSIS PowerPack component XML Source and SoapUI we could achieve our goal of getting data from SharePoint On-Premises. The next step could be writing data to SharePoint via the same SOAP API interface, but this time using <a href="https://zappysys.com/products/ssis-powerpack/ssis-web-api-destination-connector/" target="_blank" rel="noopener">Web API Destination</a> component.</p>
<p>The post <a href="https://zappysys.com/blog/ssis-read-data-sharepoint-premises-soap-api/">Read data from SharePoint List in SSIS (On-Premises SOAP API)</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How to Read API data in SSIS and Load into SQL Table</title>
		<link>https://zappysys.com/blog/ssis-read-api-data-load-sql-table/</link>
		
		<dc:creator><![CDATA[ZappySys]]></dc:creator>
		<pubDate>Fri, 25 Sep 2020 17:35:17 +0000</pubDate>
				<category><![CDATA[REST API Integration]]></category>
		<category><![CDATA[SSIS Components]]></category>
		<category><![CDATA[SSIS CSV Source]]></category>
		<category><![CDATA[SSIS JSON Source (File/REST)]]></category>
		<category><![CDATA[SSIS XML Source (File / SOAP)]]></category>
		<category><![CDATA[oauth]]></category>
		<guid isPermaLink="false">https://zappysys.com/blog/?p=9141</guid>

					<description><![CDATA[<p>Introduction If you have need to integrate REST API in SSIS (i.e. fetch JSON, XML, CSV via HTTP call) and wondering how to Read API data in SSIS and Load into SQL DB (i.e. SQL Server, MySQL, Oracle) then you are at the right place. In this article we will cover simple step by step [&#8230;]</p>
<p>The post <a href="https://zappysys.com/blog/ssis-read-api-data-load-sql-table/">How to Read API data in SSIS and Load into SQL Table</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Introduction</h2>
<p><a href="https://zappysys.com/blog/wp-content/uploads/2017/09/api-180x180.png"><img loading="lazy" decoding="async" class=" wp-image-1854 alignleft" src="https://zappysys.com/blog/wp-content/uploads/2017/09/api-180x180.png" alt="" width="109" height="109" srcset="https://zappysys.com/blog/wp-content/uploads/2017/09/api-180x180.png 180w, https://zappysys.com/blog/wp-content/uploads/2017/09/api-180x180-150x150.png 150w" sizes="(max-width: 109px) 100vw, 109px" /></a>If you have need to integrate REST API in SSIS (i.e. fetch JSON, XML, CSV via HTTP call) and wondering how to Read API data in SSIS and Load into SQL DB (i.e. SQL Server, MySQL, Oracle) then you are at the right place.</p>
<p>In this article we will cover simple step by step approach how to achieve API integration in few clicks. For detailed introduction please refer to our <a href="https://zappysys.com/blog/call-rest-api-using-ssis-web-service-task/" target="_blank" rel="noopener">previous article</a>.</p>
<p>In next few sections we will cover the following SSIS Components to read data from API like a Table (Parse in Rows / Column). Our instructions will be mostly for JSON Format but concepts are same for other formats (i.e. XML / CSV).</p>
<div class="su-table su-table-alternate">
<table>
<colgroup>
<col style="vertical-align: top" width="100" />
<col style="vertical-align: top" /></colgroup>
<tbody>
<tr>
<td><img decoding="async" style="width: 72px;height: 72px" src="//zappysys.com/images/ssis-powerpack/SSIS-Json-Source-Adapter.png" alt="Custom SSIS Components - Json Source" /></td>
<td style="vertical-align: top"><a href="//zappysys.com/products/ssis-powerpack/ssis-json-file-source/">JSON Source Connector</a> (Read from REST API, JSON File or OData Service): Use this dataflow component when you have to <strong>fetch data from REST API webservice like a table</strong>. This component allows you to extract JSON data from webservice and de-normalize nested structure so you can save to Relational database such as SQL Server or any other target (Oracle, FlatFile, Excel, MySQL). This component also supports reading local JSON files or direct JSON string (Wildcard pattern supported too e.g. c:\data\file*.json).</td>
</tr>
<tr>
<td><img decoding="async" style="width: 72px;height: 72px" src="//zappysys.com/images/ssis-powerpack/ssis-xml-source.png" alt="Custom SSIS Components - XML Source (Read File/SOAP/REST Web Service)" /></td>
<td style="vertical-align: top"><a href="//zappysys.com/products/ssis-powerpack/ssis-xml-source/">XML Source Connector</a> (SOAP, File, REST) : Use this dataflow component when you have to fetch data from XML or SOAP webservice and consume data like a table. This component allows you to extract data from webservice and save to SQL Server or any other target (Oracle, FlatFile, Excel, MySQL). This component also supports reading local XML files or direct XML string.</td>
</tr>
<tr>
<td><img loading="lazy" decoding="async" class="alignnone" style="width: 72px;height: 72px" src="https://zappysys.com/onlinehelp/ssis-powerpack/scr/images/csv-source/ssis-csv-file-source.png" alt="Custom SSIS Components - CSV Source (Read File/REST API)" width="128" height="128" /></td>
<td style="vertical-align: top"><a href="https://zappysys.com/products/ssis-powerpack/ssis-csv-file-source-flat-file-web-api/">CSV Source Connector</a> (File, REST) : Use this dataflow component when you have to fetch data from File or REST API which returns data in CSV format . This component allows you to extract data from webservice and save to SQL Server or any other target (Oracle, FlatFile, Excel, MySQL). This component also supports reading local CSV files or direct CSV string.</td>
</tr>
</tbody>
</table>
</div>
<p>There are few more API components not discussed in this articles. They are <a href="https://zappysys.com/products/ssis-powerpack/ssis-rest-api-web-service-task/" target="_blank" rel="noopener">REST API Task</a> (no Parser &#8211; Just raw API calls) and <a href="https://zappysys.com/products/ssis-powerpack/ssis-web-api-destination-connector/" target="_blank" rel="noopener">Web API Destination</a> (Write / Send Data To API / Delete rows). They both have different use case to check them see it fits in your need.</p>
<div class="content_block" id="custom_post_widget-2523"><h2><span id="Prerequisites">Prerequisites</span></h2>
Before we perform the steps listed in this article, you will need to make sure the following prerequisites are met:
<ol style="margin-left: 1.5em;">
 	<li><abbr title="SQL Server Integration Services">SSIS</abbr> designer installed. Sometimes 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>
 	<li>Basic knowledge of SSIS package development using <em>Microsoft SQL Server Integration Services</em>.</li>
 	<li>Make sure <span style="text-decoration: underline;"><a href="https://zappysys.com/products/ssis-powerpack/" target="_blank" rel="noopener">ZappySys SSIS PowerPack</a></span> is installed (<a href="https://zappysys.com/products/ssis-powerpack/download/" target="_blank" rel="noopener">download it</a>, if you haven't already).</li>
 	<li>(<em>Optional step</em>)<em>.</em> <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>
</ol></div>
<h2>Video Tutorial</h2>
<h2><a href="https://zappysys.com/blog/ssis-read-api-data-load-sql-table/"><img decoding="async" src="https://zappysys.com/blog/wp-content/plugins/wp-youtube-lyte/lyteCache.php?origThumbUrl=%2F%2Fi.ytimg.com%2Fvi%2FaO8cVRyCBWw%2Fhqdefault.jpg" alt="YouTube Video"></a><br /><br /></h2>
<h2>Step-By-Step &#8211; Read API data in SSIS using JSON / XML / CSV Source</h2>
<p>In this section you will learn how to use JSON Source Adapter to Read data from API URL.</p>
<div>
<ol>
<li>Open Visual Studio and Create New SSIS Package Project.</li>
<li>Now, Drag and Drop the SSIS <strong>Data Flow Task</strong> from the SSIS Toolbox.<br />
<img decoding="async" class="figureimage" title="SSIS Data Flow Task - Drag and Drop" src="https://zappysys.com/onlinehelp/ssis-powerpack/scr/images/drag-and-drop-data-flow-task.png" alt="SSIS Data Flow Task - Drag and Drop" /></li>
<li>Double click on the Data Flow task to see Data Flow designer surface.</li>
<li>From the SSIS toolbox drag and drop JSON Source on the dataflow designer surface. If your data format is XML then <a href="https://zappysys.com/onlinehelp/ssis-powerpack/scr/ssis-xml-source.htm" target="_blank" rel="noopener">use XML Source</a>, if your data format is CSV then <a href="https://zappysys.com/onlinehelp/ssis-powerpack/scr/ssis-csv-source.htm">use CSV Source</a>.<br />
<img decoding="async" class="figureimage" title="SSIS JSON Source - Drag and Drop" src="https://zappysys.com/onlinehelp/ssis-powerpack/scr/images/json-source/ssis-json-source-adapter-drag.png" alt="SSIS JSON Source - Drag and Drop" /></li>
<li>Double click JSON Source to configure it.</li>
<li>From the Access Mode dropdown select [File path or web Url] and paste the following Url for this example .<br />
<pre class="crayon-plain-tag">https://services.odata.org/V3/OData/OData.svc/Products?$format=json</pre>
</li>
<li>Now next step is to select Filter (Click <strong>Browse</strong> button next to <strong>Array Filter</strong>) or just type below expression in the text box to define which Hierarchy you like to Flatten (i.e. Array).
<div id="attachment_11491" style="width: 838px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2020/09/json-source-configuration.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-11491" class="wp-image-11491 size-full" src="https://zappysys.com/blog/wp-content/uploads/2020/09/json-source-configuration.png" alt="" width="828" height="745" srcset="https://zappysys.com/blog/wp-content/uploads/2020/09/json-source-configuration.png 828w, https://zappysys.com/blog/wp-content/uploads/2020/09/json-source-configuration-300x270.png 300w, https://zappysys.com/blog/wp-content/uploads/2020/09/json-source-configuration-768x691.png 768w" sizes="(max-width: 828px) 100vw, 828px" /></a><p id="caption-attachment-11491" class="wp-caption-text">JSON Source Select Filter</p></div>
<div class="mceTemp"></div>
</li>
<li>JSON/XML can contain multiple arrays within a single document (similar to many tables within a single database). So you have to define which branch you like to extract.  Enter <a href="http://goessner.net/articles/JSONPath/" target="_blank" rel="noopener">JSONPath expression</a> in the Filter textbox to extract only specific part of JSON file as below (<strong>$.value[*]</strong> will get content of value property from JSON document. Value property is an array of JSON documents so we have to use <strong>[*]</strong> to indicate we want all records of that array)<br />
<pre class="crayon-plain-tag">$.value[*]</pre>
<div id="attachment_11492" style="width: 838px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2020/09/json-source-rsult.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-11492" class="size-full wp-image-11492" src="https://zappysys.com/blog/wp-content/uploads/2020/09/json-source-rsult.png" alt="" width="828" height="745" srcset="https://zappysys.com/blog/wp-content/uploads/2020/09/json-source-rsult.png 828w, https://zappysys.com/blog/wp-content/uploads/2020/09/json-source-rsult-300x270.png 300w, https://zappysys.com/blog/wp-content/uploads/2020/09/json-source-rsult-768x691.png 768w" sizes="(max-width: 828px) 100vw, 828px" /></a><p id="caption-attachment-11492" class="wp-caption-text">JSON Source preview data</p></div></li>
<li>Click &#8216;Preview&#8217; to check if our settings are correct.</li>
<li>Click OK to save settings.</li>
<li>How to Pass Credentials to the Service (Basic Authorization Header) Check <a href="https://zappysys.com/blog/how-to-set-base64-encoded-authorization-header-for-http-web-request/" target="_blank" rel="noopener">this article</a> for more information</li>
</ol>
<p>After this section we will see how to connect Source to Target like SQL Server and Load API data into SQL Server Table.</p>
</div>
<h2>Load API data into SQL Server Table / Other Target</h2>
<div class="content_block" id="custom_post_widget-5617"><p>ZappySys SSIS PowerPack makes it easy to load data from various sources such as REST, SOAP, JSON, XML, CSV or from other source into SQL Server, or PostgreSQL, or Amazon Redshift, or other  targets. The <strong>Upsert Destination</strong> component allows you to automatically insert new records and update existing ones based on key columns. Below are the detailed steps to configure it.</p>
<h3>Step 1: Add Upsert Destination to Data Flow</h3>
<ol>
<li>Drag and drop the <strong>Upsert Destination</strong> component from the SSIS Toolbox.</li>
<li>Connect your source component (e.g., JSON / REST / Other Source) to the Upsert Destination.</li>
</ol>
<div class="wp-caption aligncenter">
<a href="https://zappysys.com/blog/wp-content/uploads/2017/08/ssis-data-flow-drag-drop-upsert-destination.png">
<img loading="lazy" decoding="async" class="size-full" alt="" src="https://zappysys.com/blog/wp-content/uploads/2017/08/ssis-data-flow-drag-drop-upsert-destination.png" /></a>
<p class="wp-caption-text">SSIS - Data Flow - Drang and Drop Upsert Destination Component</p>
</div>
<h3>Step 2: Configure Target Connection</h3>
<ol>
<li>Double-click the <strong>Upsert Destination</strong> component to open the configuration window.</li>
<li>Under <strong>Connection</strong>, select an existing target connection or click <strong>NEW</strong> to create a new connection.
<ul>
<li>Example: SQL Server, or PostgreSQL, or Amazon Redshift.</li>
</ul>
</li>
</ol>
<h3>Step 3: Select or Create Target Table</h3>
<ol>
<li>In the <strong>Target Table</strong> dropdown, select the table where you want to load data.</li>
<li>Optionally, click <strong>NEW</strong> to create a new table based on the source columns.</li>
</ol>
<div class="wp-caption aligncenter">
<a href="https://zappysys.com/blog/wp-content/uploads/2020/09/upsert-destination-configuration.png">
<img loading="lazy" decoding="async" class="size-full" alt="" src="https://zappysys.com/blog/wp-content/uploads/2020/09/upsert-destination-configuration.png" /></a>
<p class="wp-caption-text">Configure SSIS Upsert Destination Connection - Loading data (REST / SOAP / JSON / XML /CSV) into SQL Server or other target using SSIS</p>
</div>
<h3>Step 4: Map Columns</h3>
<ol>
<li>Go to the <strong>Mappings</strong> tab.</li>
<li>Click <strong>Auto Map</strong> to map source columns to target columns by name.</li>
<li>Ensure you <strong>check the Primary key column(s)</strong> that will determine whether a record is inserted or updated.</li>
<li>You can manually adjust the mappings if necessary.</li>
</ol>
 <div class="wp-caption aligncenter">
<a href="https://zappysys.com/blog/wp-content/uploads/2020/09/upsert-destination-key.png">
<img loading="lazy" decoding="async" class="size-full" alt="" src="https://zappysys.com/blog/wp-content/uploads/2020/09/upsert-destination-key.png" /></a>
<p class="wp-caption-text">SSIS Upsert Destination - Columns Mappings</p>
</div>
<h3>Step 5: Save Settings</h3>
<ul>
<li>Click <strong>OK</strong> to save the Upsert Destination configuration.</li>
</ul>
<h3>Step 6: Optional: Add Logging or Analysis</h3>
<ul>
<li>You may add extra destination components to log the number of inserted vs. updated records for monitoring or auditing purposes.</li>
</ul>
<h3>Step 7: Execute the Package</h3>
<ul>
<li>Run your SSIS package and verify that the data is correctly inserted and updated in the target table.</li>
</ul>
<div class="wp-caption aligncenter">
<a href="https://zappysys.com/blog/wp-content/uploads/2018/12/ssis-upsert-destination-execute.png">
<img loading="lazy" decoding="async" class="size-full" alt="" src="https://zappysys.com/blog/wp-content/uploads/2018/12/ssis-upsert-destination-execute.png" /></a>
<p class="wp-caption-text">SSIS Upsert Destination Execution</p>
</div></div>
<h2>API Authentication</h2>
<p>In our step by step example we did not cover Authentication to keep things simple but in real world you have to pass some sort of authentication details to make API calls (e.g. UserID/Password or Secure Token). There are many ways to authenticate with API Services. ZappySys offer mainly 2 Connection Managers to cover most Authentication scenarios.</p>
<ol>
<li><a href="https://zappysys.com/onlinehelp/ssis-powerpack/scr/ssis-http-connection-manager.htm" target="_blank" rel="noopener">HTTP Connection Manager</a></li>
<li><a href="https://zappysys.com/onlinehelp/ssis-powerpack/scr/ssis-oauth-connection-manager.htm" target="_blank" rel="noopener">OAuth Connection Manager</a></li>
</ol>
<h3>Using HTTP Connection Manager</h3>
<p>If you have use case of using UserID / Password or any other method supported by HTTP Connection Manager then use below option (Below example is for Basic Authentication)</p>
<div id="attachment_11495" style="width: 835px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2020/09/using-HTTP-connection.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-11495" class="wp-image-11495 size-full" src="https://zappysys.com/blog/wp-content/uploads/2020/09/using-HTTP-connection.png" alt="SSIS JSON Source - Passing Basic Credentials (Supply UserID / Password) using HTTP Connection" width="825" height="812" srcset="https://zappysys.com/blog/wp-content/uploads/2020/09/using-HTTP-connection.png 825w, https://zappysys.com/blog/wp-content/uploads/2020/09/using-HTTP-connection-300x295.png 300w, https://zappysys.com/blog/wp-content/uploads/2020/09/using-HTTP-connection-768x756.png 768w" sizes="(max-width: 825px) 100vw, 825px" /></a><p id="caption-attachment-11495" class="wp-caption-text">SSIS JSON Source &#8211; Passing Basic Credentials (Supply UserID / Password) using HTTP Connection</p></div>
<h3>Using OAuth Connection Manager</h3>
<p>If your API support <a href="https://zappysys.com/blog/rest-api-authentication-with-oauth-2-0-using-ssis/" target="_blank" rel="noopener">OAuth Standard</a> for Authorization then use OAuth Connection Type as below.</p>
<div id="attachment_11496" style="width: 838px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2020/09/using-OAUTH-connection.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-11496" class="size-full wp-image-11496" src="https://zappysys.com/blog/wp-content/uploads/2020/09/using-OAUTH-connection.png" alt="" width="828" height="896" srcset="https://zappysys.com/blog/wp-content/uploads/2020/09/using-OAUTH-connection.png 828w, https://zappysys.com/blog/wp-content/uploads/2020/09/using-OAUTH-connection-277x300.png 277w, https://zappysys.com/blog/wp-content/uploads/2020/09/using-OAUTH-connection-768x831.png 768w" sizes="(max-width: 828px) 100vw, 828px" /></a><p id="caption-attachment-11496" class="wp-caption-text">Generate Token for Google API using OAuth 2.0</p></div>
<h2>API Pagination</h2>
<p>Pagination is another important concept to understand when you call API using ZappySys Connector. If you ready many records from your API then by default API might not return all rows so you have to paginate until all records are read (Like a Loop in Programming). ZappySys makes it easy to paginate. Check this article to configure <a href="https://zappysys.com/blog/ssis-rest-api-looping-until-no-more-pages-found/" target="_blank" rel="noopener">many different Pagination Modes</a></p>
<div class="content_block" id="custom_post_widget-1887"><h3>Truncation related error</h3>
<p style="text-align: justify;">The most common error you may face when you run an SSIS package is truncation error. During the design time only 300 rows are scanned from a source (a file or a REST API call response) to detect datatypes but at runtime, it is likely you will retrieve far more records. So it is possible that you will get longer strings than initially expected. For detailed instructions on how to fix common metadata related errors read an article "<a href="//zappysys.com/blog/handling-ssis-component-metadata-issues/" target="_blank" rel="noopener">How to handle SSIS errors (truncation, metadata issues)</a>".</p>

<h3>Authentication related error</h3>
Another frequent error you may get is an authentication error, which happens when you deploy/copy a package to another machine and run it there. Check <a href="#Deployment_to_Production">the paragraph below</a> to see why it happens and how to solve this problem.</div>
<div class="content_block" id="custom_post_widget-2021"><h2>Things have gone bad: Error handling &amp; debugging</h2>
<p style="text-align: justify;">Incidentally, bad things can happen<i>. </i>A remote server may go offline or your server may go out of memory. In any case, you may want to know when that happens and take actions accordingly. For that purpose, you have to redirect bad rows to some other destination. For this example, we will take and use <em>Web API Destination</em>, but basically, you can use any SSIS component:</p>

<h3>Handling errors</h3>
<ol style="margin-left: 0;">
 	<li>Add a <em>Derived Column</em> above <em>Web API Destination</em> with expression <strong>"(DT_WSTR,4000)ZS_JSON_OUT"</strong> and name it <strong>"JsonAsString"</strong>. This will let you see what JSON you are actually passing.</li>
 	<li>Then add a database or file destination or use another <em>Trash Destination</em> for debugging purposes and redirect the bad rows (<span style="color: #d66565;">red arrow</span>) from <em><em>Web API Destination </em></em>into it<em><em>. </em></em>Don't forget to set <span class="lang:default decode:true crayon-inline">Redirect row</span> option for both, <em>Error</em> and <em>Truncation</em> columns:<em><em>
</em></em>
<div class="wp-caption">

<a href="//zappysys.com/blog/wp-content/uploads/2017/06/ssis-sql-server-to-elasticsearch-error-handling-redirecting-bad-rows.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" class="alignnone wp-image-1487 size-full" src="https://zappysys.com/blog/wp-content/uploads/2017/06/ssis-sql-server-to-elasticsearch-error-handling-redirecting-bad-rows.png" alt="Redirect bad rows from &lt;em&gt;Web API Destination&lt;/em&gt; to &lt;em&gt;Trash Destination&lt;/em&gt; when load from SQL Server to Elasticsearch is failing. Add derived column JsonAsString to be able to read JSON you are using." width="739" height="267" srcset="https://zappysys.com/blog/wp-content/uploads/2017/06/ssis-sql-server-to-elasticsearch-error-handling-redirecting-bad-rows.png 739w, https://zappysys.com/blog/wp-content/uploads/2017/06/ssis-sql-server-to-elasticsearch-error-handling-redirecting-bad-rows-300x108.png 300w" sizes="(max-width: 739px) 100vw, 739px" /></a>
<p class="wp-caption-text">Redirected failed requests from <em>Web API Destination</em> to a desired destination when loading from SQL Server to REST API Service is failing. Derived Column <em>JsonAsString</em> added to be able to read JSON which was passed to Elasticsearch</p>

</div></li>
 	<li>Finally, add a <a href="https://technet.microsoft.com/en-us/library/ms140318%28v=sql.90%29.aspx?f=255&amp;MSPPError=-2147217396" target="_blank" rel="noopener"><em>Data Viewer</em></a> for the red path, if you want to debug the flow. You will be able to see URL, JSON and the error message for each record. You may want to copy-paste <em>ErrorMessage</em> to <em>Notepad </em>if you want it to be more readable:
<div class="wp-caption">

<a href="//zappysys.com/blog/wp-content/uploads/2017/06/ssis-sql-server-to-elasticsearch-error-handling.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" class="alignnone wp-image-1494 size-full" src="https://zappysys.com/blog/wp-content/uploads/2017/06/ssis-sql-server-to-elasticsearch-error-handling.png" alt="Use Data Viewer to view HTTP requests that failed to be fulfilled in Elasticsearch" width="752" height="280" srcset="https://zappysys.com/blog/wp-content/uploads/2017/06/ssis-sql-server-to-elasticsearch-error-handling.png 752w, https://zappysys.com/blog/wp-content/uploads/2017/06/ssis-sql-server-to-elasticsearch-error-handling-300x112.png 300w" sizes="(max-width: 752px) 100vw, 752px" /></a>
<p class="wp-caption-text">Use Data Viewer to view HTTP requests that failed to be fulfilled.</p>

</div></li>
</ol>
<div class="su-note" style="border-color: #e5dea5; border-radius: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px;">
<div class="su-note-inner su-clearfix" style="background-color: #fff7b7; border-color: #fffdf1; color: #333333; border-radius: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px;"><strong>NOTE</strong>: You can read more about redirecting rows in <a href="//zappysys.com/blog/ssis-error-handling-in-data-flow-redirect-bad-rows/" target="_blank" rel="noopener">SSIS Error Handling (Redirect bad rows)</a> article.</div>
</div>
<h3>Debugging HTTP requests</h3>
<p style="text-align: justify;">A common thing you have to do when working with HTTP requests is to debug those requests; e.g. to check what headers, body or URL was passed. <span id="Debug_Web_API_call_using_Fiddler"></span>To test how things look behind the scenes we strongly suggest to use <a href="https://zappysys.com/blog/how-to-use-fiddler-to-analyze-http-web-requests/" target="_blank" rel="noopener">Fiddler</a> - a popular web debugging tool.</p>
<p style="text-align: justify;">Inside it, you can double-click the URL entry (Right side) to see Request and Response Panels. The top panel is Request (URL, Headers, Body) and Bottom Panel is Response. For https:// (secure URL) make sure you enable HTTPS option in Fiddler (Tools &gt; Options &gt; HTTPS &gt; Check Decrypt https request):</p>

<div id="attachment_2344" class="wp-caption alignnone">

<a href="https://i1.wp.com/zappysys.com/blog/wp-content/uploads/2016/05/ssis-rest-api-call-debug-via-fiddler.png?ssl=1" target="_blank" rel="noopener"><img loading="lazy" decoding="async" class="alignnone wp-image-2344 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/2016/05/ssis-rest-api-call-debug-via-fiddler.png" alt="Debugging Web API call using Fiddler in SSIS" width="1287" height="564" data-attachment-id="2344" data-permalink="https://zappysys.com/blog/pass-authorization-header-redirected-location/ssis-rest-api-call-debug-via-fiddler/#main" data-orig-file="https://i1.wp.com/zappysys.com/blog/wp-content/uploads/2016/05/ssis-rest-api-call-debug-via-fiddler.png?fit=1287%2C564&amp;ssl=1" data-orig-size="1287,564" 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="ssis-rest-api-call-debug-via-fiddler" data-image-description="&lt;p&gt;Debugging Web API call using Fiddler in SSIS&lt;/p&gt; " data-medium-file="https://i1.wp.com/zappysys.com/blog/wp-content/uploads/2016/05/ssis-rest-api-call-debug-via-fiddler.png?fit=300%2C131&amp;ssl=1" data-large-file="https://i1.wp.com/zappysys.com/blog/wp-content/uploads/2016/05/ssis-rest-api-call-debug-via-fiddler.png?fit=720%2C316&amp;ssl=1" srcset="https://zappysys.com/blog/wp-content/uploads/2016/05/ssis-rest-api-call-debug-via-fiddler.png 1287w, https://zappysys.com/blog/wp-content/uploads/2016/05/ssis-rest-api-call-debug-via-fiddler-300x131.png 300w, https://zappysys.com/blog/wp-content/uploads/2016/05/ssis-rest-api-call-debug-via-fiddler-768x337.png 768w, https://zappysys.com/blog/wp-content/uploads/2016/05/ssis-rest-api-call-debug-via-fiddler-1024x449.png 1024w" sizes="(max-width: 1287px) 100vw, 1287px" /></a>
<p class="wp-caption-text">Debugging Web API call using Fiddler in SSIS</p>

</div></div>
<h2>Conclusion</h2>
<p>REST API is becoming more and more popular each day. With that Data integration from RESTful API services going to be challenge. Luckily ZappySys <a href="https://zappysys.com/products/ssis-powerpack/" target="_blank" rel="noopener">SSIS PowerPack</a> provides a great way to integrate any API in SSIS via simple drag and drop approach without coding. Try <a href="https://zappysys.com/products/ssis-powerpack/" target="_blank" rel="noopener">SSIS PowerPack for FREE</a>  see how much time / money you can save and to integrate virtually any REST API.</p>
<p>The post <a href="https://zappysys.com/blog/ssis-read-api-data-load-sql-table/">How to Read API data in SSIS and Load into SQL Table</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Pivot JSON and XML data using SSIS or ODBC Drivers</title>
		<link>https://zappysys.com/blog/pivot-json-xml-data-using-ssis-odbc-drivers/</link>
		
		<dc:creator><![CDATA[ZappySys]]></dc:creator>
		<pubDate>Wed, 11 Sep 2019 21:36:09 +0000</pubDate>
				<category><![CDATA[JSON File / REST API Driver]]></category>
		<category><![CDATA[SSIS JSON Source (File/REST)]]></category>
		<category><![CDATA[SSIS XML Source (File / SOAP)]]></category>
		<category><![CDATA[XML File / SOAP API Driver]]></category>
		<guid isPermaLink="false">https://zappysys.com/blog/?p=7975</guid>

					<description><![CDATA[<p>Introduction In our previous post we saw various ways to transform JSON arrays. However there will be a time when your JSON / XML file wont have Array and you need to Pivot JSON Data. Sample JSON data file Here is a sample JSON file which we like to parse into rows and columns. Notice [&#8230;]</p>
<p>The post <a href="https://zappysys.com/blog/pivot-json-xml-data-using-ssis-odbc-drivers/">Pivot JSON and XML data using SSIS or ODBC Drivers</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Introduction</h2>
<p>In our previous post we saw <a href="https://zappysys.com/blog/parse-multi-dimensional-json-array-ssis/" target="_blank" rel="noopener">various ways to transform JSON arrays</a>. However there will be a time when your JSON / XML file wont have Array and you need to Pivot JSON Data.</p>
<div class="content_block" id="custom_post_widget-2523"><h2><span id="Prerequisites">Prerequisites</span></h2>
Before we perform the steps listed in this article, you will need to make sure the following prerequisites are met:
<ol style="margin-left: 1.5em;">
 	<li><abbr title="SQL Server Integration Services">SSIS</abbr> designer installed. Sometimes 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>
 	<li>Basic knowledge of SSIS package development using <em>Microsoft SQL Server Integration Services</em>.</li>
 	<li>Make sure <span style="text-decoration: underline;"><a href="https://zappysys.com/products/ssis-powerpack/" target="_blank" rel="noopener">ZappySys SSIS PowerPack</a></span> is installed (<a href="https://zappysys.com/products/ssis-powerpack/download/" target="_blank" rel="noopener">download it</a>, if you haven't already).</li>
 	<li>(<em>Optional step</em>)<em>.</em> <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>
</ol></div>
<h2>Sample JSON data file</h2>
<p>Here is a sample JSON file which we like to parse into rows and columns. Notice how it is using values inside in property name. This pattern needs Pivot option usage described later in this article.</p><pre class="crayon-plain-tag">{
	"version": 1.0,
	"products": {
		"P001": {
			"name": "Product 1",
			"price": 10
		},
		"P002": {
			"name": "Product 2",
			"price": 11
		},
		"P003": {
			"name": "Product 3",
			"price": 12
		}
	}
}</pre><p>
If you like to play with real data then use below URL. This JSON has <strong>60MB</strong> worth of data for all Products offered on AWS.  And It has similar structure as above except many more attributes under <strong>products </strong>node.</p><pre class="crayon-plain-tag">https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonEC2/current/us-east-1/index.json</pre><p>
&nbsp;</p>
<h2>Using SSIS PowerPack to Pivot JSON data</h2>
<p>ZappySys offers powerful <a href="https://zappysys.com/products/ssis-powerpack/ssis-json-file-source/" target="_blank" rel="noopener">JSON</a> and <a href="https://zappysys.com/products/ssis-powerpack/ssis-xml-source/" target="_blank" rel="noopener">XML</a> Connectors. Below section will describe how to Parse and Pivot JSON data or Pivot XML data. For demo purpose we will use JSON Source but steps are almost same for XML too.</p>
<h3>Step-By-Step JSON Pivot</h3>
<ol>
<li>First drag data flow from SSIS Toolbox and then double click data flow
<div style="width: 470px" class="wp-caption alignnone"><img loading="lazy" decoding="async" class="size-full" src="https://zappysys.com/onlinehelp/ssis-powerpack/scr/images/drag-and-drop-data-flow-task.png" alt="Drag SSIS Data Flow Task from Toolbox" width="460" height="155" /><p class="wp-caption-text">Drag SSIS Data Flow Task from Toolbox</p></div></li>
<li>Once Data flow designer is open, drag ZS JSON Source from SSIS Toolbox.
<div style="width: 551px" class="wp-caption alignnone"><img loading="lazy" decoding="async" class="size-full" src="https://zappysys.com/onlinehelp/ssis-powerpack/scr/images/json-source/ssis-json-source-adapter-drag.png" alt="Drag ZappySys JSON Source" width="541" height="144" /><p class="wp-caption-text">Drag ZappySys JSON Source</p></div></li>
<li>Now for demo we will use Hard coded JSON using Direct Value option as below. You can also enter URL or File path if you select Direct Path option.</li>
<li>Go to <strong>Pivot Columns to Rows</strong> Tab and check <strong>Enable Pivoting</strong> Option
<div id="attachment_7977" style="width: 691px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2019/09/pivot-json-xml-data-option.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-7977" class="size-full wp-image-7977" src="https://zappysys.com/blog/wp-content/uploads/2019/09/pivot-json-xml-data-option.png" alt="Pivot JSON / XML Data option for ZappySys API Connectors / Drivers" width="681" height="120" srcset="https://zappysys.com/blog/wp-content/uploads/2019/09/pivot-json-xml-data-option.png 681w, https://zappysys.com/blog/wp-content/uploads/2019/09/pivot-json-xml-data-option-300x53.png 300w" sizes="(max-width: 681px) 100vw, 681px" /></a><p id="caption-attachment-7977" class="wp-caption-text">Pivot JSON / XML Data option for ZappySys API Connectors / Drivers</p></div></li>
<li>Now come back to <strong>Filter Options</strong> Tab here you can either browse Filter or enter by hand. <strong>If file is too large then enter by hand</strong>. For example in our case we will enter <pre class="crayon-plain-tag">$.products</pre>  because we like to to parse structure below that node. If you have nested hierarchy (i.e. products node under orders node and so on) then use dot to separate them e.g. <pre class="crayon-plain-tag">$.customer.orders.products</pre></li>
<li><strong>For very Large file</strong> you need to <strong>Un-check Include Parent Columns</strong> option else you will get OutOfMemory Exception</li>
<li>Now click Preview to see our data.
<div id="attachment_7976" style="width: 789px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2019/09/ssis-json-pivot-data-options.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-7976" class="size-full wp-image-7976" src="https://zappysys.com/blog/wp-content/uploads/2019/09/ssis-json-pivot-data-options.png" alt="Pivot JSON Data using SSIS JSON Source" width="779" height="744" srcset="https://zappysys.com/blog/wp-content/uploads/2019/09/ssis-json-pivot-data-options.png 779w, https://zappysys.com/blog/wp-content/uploads/2019/09/ssis-json-pivot-data-options-300x287.png 300w, https://zappysys.com/blog/wp-content/uploads/2019/09/ssis-json-pivot-data-options-768x733.png 768w" sizes="(max-width: 779px) 100vw, 779px" /></a><p id="caption-attachment-7976" class="wp-caption-text">Pivot JSON Data using SSIS JSON Source</p></div>
<p>&nbsp;</li>
<li>Now you can connect your JSON / XML source to destination. See below example.
<div id="attachment_1578" style="width: 596px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-package-execute-rest-api-loading-data-from-bigquery-to-sqlserver.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-1578" class="size-full wp-image-1578" src="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-package-execute-rest-api-loading-data-from-bigquery-to-sqlserver.png" alt="SSIS Package Execution - Loading Google BigQuery Data into SQL Server" width="586" height="296" srcset="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-package-execute-rest-api-loading-data-from-bigquery-to-sqlserver.png 586w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-package-execute-rest-api-loading-data-from-bigquery-to-sqlserver-300x152.png 300w" sizes="(max-width: 586px) 100vw, 586px" /></a><p id="caption-attachment-1578" class="wp-caption-text">SSIS Package Execution &#8211;<br />Loading Google BigQuery Data into SQL Server</p></div></li>
</ol>
<h2>Using ODBC PowerPack to Pivot JSON data</h2>
<p>So far we talked how to use SSIS to read your JSON data and Pivot it but what if you want to consume JSON / XML / REST API data in some other App without doing ETL via SSIS?  Thats where <a href="https://zappysys.com/products/odbc-powerpack/" target="_blank" rel="noopener">ZappySys ODBC PowerPack</a> comes in picture. Its a collection of many drivers including <a href="https://zappysys.com/products/odbc-powerpack/odbc-json-rest-api-driver/" target="_blank" rel="noopener">JSON Driver</a> and <a href="https://zappysys.com/products/odbc-powerpack/odbc-xml-soap-api-driver/" target="_blank" rel="noopener">XML Driver</a>.  You can also use <a href="https://zappysys.com/blog/import-rest-api-json-sql-server/" target="_blank" rel="noopener">Data Gateway Approach</a>, which allows T-SQL code to fetch JSON / XML data directly into SQL Server Table without any ETL / Programming.</p>
<p>Here is sample query you can run using JSON Driver or XML Driver</p><pre class="crayon-plain-tag">SELECT * FROM $
WITH(
	 Src='https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonEC2/current/us-east-1/index.json'
	,Filter='$.products'
	,IncludeParentColumns='False'
	,EnablePivot='True'
)</pre><p>
See below screenshot of JSON Driver Configuration to get idea.<br />
<strong>Note:</strong> Use above query rather than what is displayed in the Screenshot.</p>
<div id="attachment_4467" style="width: 883px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2018/06/call-rest-api-in-csharp-odbc-json-driver.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4467" class="size-full wp-image-4467" src="https://zappysys.com/blog/wp-content/uploads/2018/06/call-rest-api-in-csharp-odbc-json-driver.png" alt="Using ODBC DSN in C# code to call REST API" width="873" height="598" srcset="https://zappysys.com/blog/wp-content/uploads/2018/06/call-rest-api-in-csharp-odbc-json-driver.png 873w, https://zappysys.com/blog/wp-content/uploads/2018/06/call-rest-api-in-csharp-odbc-json-driver-300x205.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/06/call-rest-api-in-csharp-odbc-json-driver-768x526.png 768w" sizes="(max-width: 873px) 100vw, 873px" /></a><p id="caption-attachment-4467" class="wp-caption-text">Using ODBC DSN in C# code to call REST API</p></div>
<p>&nbsp;</p>
<div id="attachment_6416" style="width: 766px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2019/01/odbc-json-driver-generate-quickbooks-query.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-6416" class="size-full wp-image-6416" src="https://zappysys.com/blog/wp-content/uploads/2019/01/odbc-json-driver-generate-quickbooks-query.png" alt="Preview / Generate Query in JSON Driver / XML Driver" width="756" height="432" srcset="https://zappysys.com/blog/wp-content/uploads/2019/01/odbc-json-driver-generate-quickbooks-query.png 756w, https://zappysys.com/blog/wp-content/uploads/2019/01/odbc-json-driver-generate-quickbooks-query-300x171.png 300w" sizes="(max-width: 756px) 100vw, 756px" /></a><p id="caption-attachment-6416" class="wp-caption-text">Preview / Generate Query in JSON Driver / XML Driver</p></div>
<div class="content_block" id="custom_post_widget-7051">ZappySys ODBC Drivers built using ODBC standard which is widely adopted by industry for a long time. Which mean the majority of BI Tools / Database Engines / ETL Tools already there will support native / 3rd party ODBC Drivers. Below is the small list of most popular tools / programming languages our Drivers support. If your tool / programming language doesn't appear in the below list, which means we have not documented use case but as long as your tool supports ODBC Standard, our drivers should work fine.

&nbsp;

<img loading="lazy" decoding="async" class="" src="//zappysys.com/images/odbc-powerpack/odbc-powerpack-integration.jpg" alt="ZappySys ODBC Drivers for REST API, JSON, XML - Integrate with Power BI, Tableau, QlikView, QlikSense, Informatica PowerCenter, Excel, SQL Server, SSIS, SSAS, SSRS, Visual Studio / WinForm / WCF, Python, C#, VB.net, PHP. PowerShell " width="750" height="372" />
<table style="valign: top;">
<tbody>
<tr>
<td>
<p style="text-align: center;"><strong>BI / Reporting Tools
Integration</strong></p>
</td>
<td style="text-align: center;"><strong>ETL Tools
Integration
</strong></td>
<td style="text-align: center;"><strong>Programming Languages</strong>
<strong>Integration</strong></td>
</tr>
<tr>
<td>
<ul>
 	<li><a href="https://zappysys.com/blog/howto-import-json-rest-api-power-bi/" target="_blank" rel="noopener">Microsoft Power BI</a></li>
 	<li><a href="https://zappysys.com/blog/import-rest-api-tableau-read-json-soap-xml-csv/">Tableau</a></li>
 	<li><a href="https://zappysys.com/blog/read-rest-api-using-ssrs-reports-call-json-xml-web-service/" target="_blank" rel="noopener">SSRS (SQL Reporting Services)</a></li>
 	<li><a href="https://zappysys.com/blog/qlik-rest-connector-examples-read-json-xml-api/" target="_blank" rel="noopener">QlikView /Qlik Sense</a></li>
 	<li><a href="https://zappysys.com/blog/call-rest-api-in-microstrategy-json-soap-xml/" target="_blank" rel="noopener">MicroStrategy</a></li>
 	<li><a href="https://zappysys.com/blog/import-rest-api-google-sheet-call-appscript-load-json-soap-xml-csv/" target="_blank" rel="noopener">Google Sheet</a></li>
 	<li><a href="https://zappysys.com/blog/import-json-excel-load-file-rest-api/" target="_blank" rel="noopener">Microsoft Excel</a></li>
 	<li><a href="https://zappysys.com/api/integration-hub/rest-api-connector/access?context=connector" target="_blank" rel="noopener">Microsoft Access</a></li>
 	<li>Oracle OBIEE</li>
 	<li>Many more (not in this list).....</li>
</ul>
</td>
<td>
<ul>
 	<li><a href="https://zappysys.com/blog/read-json-informatica-import-rest-api-json-file/" target="_blank" rel="noopener">Informatica PowerCenter</a> (Windows)</li>
 	<li>Informatica Cloud</li>
 	<li>SSIS (SQL Integration Services)</li>
 	<li><a href="https://zappysys.com/blog/import-rest-api-json-sql-server/" target="_blank" rel="noopener">SQL Server</a></li>
 	<li><a href="https://zappysys.com/blog/read-write-rest-api-data-in-talend-json-xml-soap/" target="_blank" rel="noopener">Talend Data Studio</a></li>
 	<li><a href="https://zappysys.com/blog/pentaho-read-rest-api-in-pentaho/" target="_blank" rel="noopener">Pentaho Kettle</a></li>
 	<li>Oracle OBIEE</li>
 	<li>Many more (not in this list).....</li>
</ul>
</td>
<td>
<ul>
 	<li>Visual Studio</li>
 	<li><a href="https://zappysys.com/blog/calling-rest-api-in-c/" target="_blank" rel="noopener">C#</a></li>
 	<li>C++</li>
 	<li><a href="https://zappysys.com/blog/connect-java-to-rest-api-json-soap-xml/" target="_blank" rel="noopener">JAVA</a></li>
 	<li><a href="https://zappysys.com/blog/set-rest-python-client/" target="_blank" rel="noopener">Python</a></li>
 	<li>PHP</li>
 	<li><a href="https://zappysys.com/blog/call-rest-api-powershell-script-export-json-csv/" target="_blank" rel="noopener">PowerShell</a></li>
 	<li><a href="https://zappysys.com/blog/import-rest-api-json-sql-server/" target="_blank" rel="noopener">T-SQL (Using Linked Server)</a></li>
</ul>
</td>
</tr>
</tbody>
</table>
&nbsp;</div>
<h2>Advanced Pivot with Path / Search and Replace Option</h2>
<p>Now let&#8217;s look at an advanced scenario where you like to extract Pivot_Path (know where Pivoted Property came from). For that, you can download the latest version which providers IncludePivotPath and EnablePivotPathSearchReplace options as below.</p>
<p>As you can see in the below example let&#8217;s say you like to extract table names and view names if defined under &#8220;views&#8221; node.</p><pre class="crayon-plain-tag">{
  "table-1": {
      "views": {
        "view-tbl1-1": {},
        "view-tbl1-2": {}
    }
  },
  "table-2": {
      "views": {}
  },
  "table-3": {
      "views": {
        "view-tbl3-1": {}
    }
  }
}</pre><p>
&nbsp;</p>
<p>We set following</p>
<ul>
<li>On the Filter Options Tab<br />
Filter = <pre class="crayon-plain-tag">$..views</pre></li>
<li>on the Pivot Columns To Rows Tab<br />
Check Enable Pivoting<br />
Check Include_PivotPath<br />
Check Enable Pivot_Path search/replace<br />
Set Search for <pre class="crayon-plain-tag">(.*).views.(.*)--regex</pre>
Set Replace With <pre class="crayon-plain-tag">$1</pre></li>
</ul>
<div id="attachment_10406" style="width: 522px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2019/09/advanced-pivot-path-search-replace.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-10406" class="size-full wp-image-10406" src="https://zappysys.com/blog/wp-content/uploads/2019/09/advanced-pivot-path-search-replace.png" alt="Advanced Pivot Option - Search and Replace Path" width="512" height="650" srcset="https://zappysys.com/blog/wp-content/uploads/2019/09/advanced-pivot-path-search-replace.png 512w, https://zappysys.com/blog/wp-content/uploads/2019/09/advanced-pivot-path-search-replace-236x300.png 236w" sizes="(max-width: 512px) 100vw, 512px" /></a><p id="caption-attachment-10406" class="wp-caption-text">Advanced Pivot Option &#8211; Search and Replace Path</p></div>
<p>&nbsp;</p>
<h2>Conclusion</h2>
<p>In this particle we saw how to use some advanced options for XML/ JSON Source and ODBC Drivers. You can download respective product depending your usecase. For SSIS usecase <a href="https://zappysys.com/products/odbc-powerpack/">Download SSIS PowerPack</a> and for other ETL / Reporting app integration scenarios (i.e. Power BI, Informatica, SSRS , Excel, MS Access, SQL Server, JAVA, C# &#8230;.) <a href="https://zappysys.com/products/odbc-powerpack/" target="_blank" rel="noopener">Download ODBC PowerPack</a>.</p>
<p>&nbsp;</p>
<p>The post <a href="https://zappysys.com/blog/pivot-json-xml-data-using-ssis-odbc-drivers/">Pivot JSON and XML data using SSIS or ODBC Drivers</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Create Excel File in SSIS (Read from JSON / XML)</title>
		<link>https://zappysys.com/blog/create-excel-file-in-ssis-json-xml/</link>
		
		<dc:creator><![CDATA[ZappySys]]></dc:creator>
		<pubDate>Sat, 23 Mar 2019 06:22:22 +0000</pubDate>
				<category><![CDATA[SSIS Excel Connection]]></category>
		<category><![CDATA[SSIS Excel Destination]]></category>
		<category><![CDATA[SSIS JSON Source (File/REST)]]></category>
		<category><![CDATA[SSIS XML Source (File / SOAP)]]></category>
		<category><![CDATA[excel]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[ssis]]></category>
		<category><![CDATA[xml]]></category>
		<guid isPermaLink="false">https://zappysys.com/blog/?p=6610</guid>

					<description><![CDATA[<p>Introduction In this post, we will learn how to Create Excel File in SSIS from source like JSON / XML.  We will use SSIS PowerPack to connect and query a JSON or XML file. This article also covers creating Excel from JSON File. JSON stands for JavaScript Object Notation and it is an Open and Standard format to [&#8230;]</p>
<p>The post <a href="https://zappysys.com/blog/create-excel-file-in-ssis-json-xml/">Create Excel File in SSIS (Read from JSON / XML)</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Introduction</h2>
<p><a href="https://zappysys.com/blog/wp-content/uploads/2018/03/json-to-excel-import-export.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" class="alignleft wp-image-2845 size-thumbnail" src="https://zappysys.com/blog/wp-content/uploads/2018/03/json-to-excel-import-export-150x150.png" alt="json to excel" width="150" height="150" srcset="https://zappysys.com/blog/wp-content/uploads/2018/03/json-to-excel-import-export-150x150.png 150w, https://zappysys.com/blog/wp-content/uploads/2018/03/json-to-excel-import-export-300x300.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/03/json-to-excel-import-export.png 343w" sizes="(max-width: 150px) 100vw, 150px" /></a></p>
<p>In this post, we will learn how to <strong>Create Excel File in SSIS from source like JSON / XML</strong>.  We will use <a href="https://zappysys.com/products/ssis-powerpack/">SSIS PowerPack</a> to connect and query a JSON or XML file. This article also covers creating Excel from JSON File.</p>
<p>JSON stands for JavaScript Object Notation and it is an Open and Standard format to read an object with attributes and values.  JSON is replacing XML because it is faster to read data, it is easier to parse data, it does not require end tags, it is shorter and it can use arrays.</p>
<p>&nbsp;</p>
<h2>Prerequisite</h2>
<ol>
<li>First, you will need to have SSIS installed</li>
<li>Secondly, make sure to have SSDT</li>
<li>Make sure that Microsoft Excel installed</li>
<li>Finally, do not forget to install ZappySys <a href="https://zappysys.com/products/ssis-powerpack/" target="_blank" rel="noopener">SSIS PowerPack</a></li>
</ol>
<p>&nbsp;</p>
<p><strong>Components Mentioned in this article</strong><br />
<div class="su-table su-table-alternate">
<table style="width: 407px;height: 160px">
<tbody>
<tr style="height: 40px">
<td style="width: 33.2955px;height: 40px"><img loading="lazy" decoding="async" src="https://i1.wp.com/zappysys.com/images/ssis-powerpack/SSIS-Json-Source-Adapter.png?zoom=1.100000023841858&amp;w=720?w=720&amp;ssl=1" alt="SSIS Amazon S3 CSV File Source" width="32" height="32" /></td>
<td style="width: 357.841px;height: 40px"><a href="https://zappysys.com/products/ssis-powerpack/ssis-json-file-source/" target="_blank" rel="noopener">JSON File/REST API Source</a></td>
</tr>
<tr style="height: 40px">
<td style="width: 33.2955px;height: 40px"><img loading="lazy" decoding="async" src="https://i2.wp.com/zappysys.com/images/ssis-powerpack/ssis-xml-source.png?zoom=1.100000023841858&amp;w=720&amp;ssl=1?w=720&amp;ssl=1" alt="SSIS Amazon S3 CSV File Destination" width="32" height="32" /></td>
<td style="width: 357.841px;height: 40px"><a href="https://zappysys.com/products/ssis-powerpack/ssis-xml-source/" target="_blank" rel="noopener">XML File Source</a></td>
</tr>
<tr style="height: 40px">
<td style="width: 33.2955px;height: 40px"><img loading="lazy" decoding="async" src="https://i0.wp.com/zappysys.com/onlinehelp/ssis-powerpack/scr/images/excel-destination/ssis-excel-file-destination.png?zoom=1.100000023841858&amp;w=720&amp;ssl=1?w=720&amp;ssl=1" alt="SSIS Amazon S3 XML File Source" width="32" height="32" /></td>
<td style="width: 357.841px;height: 40px"><a href="https://zappysys.com/products/ssis-powerpack/ssis-excel-file-destination/" target="_blank" rel="noopener">Excel Destination</a></td>
</tr>
</tbody>
</table>
</div>
<h2>What is JSON File Source</h2>
<p>JSON Source Connector can be used to extract and output JSON data stored in local JSON files, JSON data coming from REST API web service calls (Web URL) or direct JSON String (variables or DB columns). JSON component also supports JSONPath to filter data from nested array/sub-documents. This component is optimized to work with very large files.</p>
<h2>What is XML File Source</h2>
<p>SSIS XML Source can be used to consume multiple XML files or XML formatted response from SOAP Web service or REST API Web Service. It supports advanced filtering along with a flexible approach to configuring request parameters for web service.</p>
<h2>Getting Started</h2>
<p>In order to start, we will show several examples. ZappySys includes an <a href="https://zappysys.com/products/ssis-powerpack/" target="_blank" rel="noopener">SSIS JSON Source for JSON or XML File as well as REST API</a> that will help you in reading JSON or XML Files from JSON or XML File to the Local machine. Here we are showing you is, How to Load JSON or XML Data in Excel File using SSIS Pack.</p>
<h2>Getting Started &#8211; Create Excel File in SSIS</h2>
<p>Let´s start with an example. In this SSIS JSON or XML Source for JSON or XML File task example, we will read JSON or XML files from Microsoft Excel File.</p>
<ol>
<li>First of All, Drag and drop Data Flow Task from SSIS Toolbox and double click it to edit.
<div id="attachment_7934" style="width: 470px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2019/09/ssis-drag-drop-data-flow-task.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-7934" class="wp-image-7934 size-full" src="https://zappysys.com/blog/wp-content/uploads/2019/09/ssis-drag-drop-data-flow-task.png" alt="Drag and Drop SSIS Data Flow Task from SSIS Toolbox" width="460" height="155" srcset="https://zappysys.com/blog/wp-content/uploads/2019/09/ssis-drag-drop-data-flow-task.png 460w, https://zappysys.com/blog/wp-content/uploads/2019/09/ssis-drag-drop-data-flow-task-300x101.png 300w" sizes="(max-width: 460px) 100vw, 460px" /></a><p id="caption-attachment-7934" class="wp-caption-text">Drag and Drop SSIS Data Flow Task from SSIS Toolbox</p></div></li>
<li>Drag and Drop relevant JSON or XML Source(REST API and File) for JSON or XML File Task from the SSIS Toolbox.
<div id="attachment_6629" style="width: 1040px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2019/03/SSIS-add-json-xml-source.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-6629" class="wp-image-6629 size-full" src="https://zappysys.com/blog/wp-content/uploads/2019/03/SSIS-add-json-xml-source.png" alt="SSIS Add JSON or XML Source" width="1030" height="725" srcset="https://zappysys.com/blog/wp-content/uploads/2019/03/SSIS-add-json-xml-source.png 1030w, https://zappysys.com/blog/wp-content/uploads/2019/03/SSIS-add-json-xml-source-300x211.png 300w, https://zappysys.com/blog/wp-content/uploads/2019/03/SSIS-add-json-xml-source-768x541.png 768w, https://zappysys.com/blog/wp-content/uploads/2019/03/SSIS-add-json-xml-source-1024x721.png 1024w" sizes="(max-width: 1030px) 100vw, 1030px" /></a><p id="caption-attachment-6629" class="wp-caption-text">SSIS Add JSON or XML Source</p></div></li>
<li>Double Click on JSON or XML Source (REST API or File) for edit.
<div id="attachment_6613" style="width: 730px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2019/03/Select-JSON-XML-Source-File.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-6613" class="wp-image-6613 size-medium_large" src="https://zappysys.com/blog/wp-content/uploads/2019/03/Select-JSON-XML-Source-File-e1553327007367-768x564.png" alt="SSIS Json/XML Source File" width="720" height="529" srcset="https://zappysys.com/blog/wp-content/uploads/2019/03/Select-JSON-XML-Source-File-e1553327007367-768x564.png 768w, https://zappysys.com/blog/wp-content/uploads/2019/03/Select-JSON-XML-Source-File-e1553327007367-300x220.png 300w, https://zappysys.com/blog/wp-content/uploads/2019/03/Select-JSON-XML-Source-File-e1553327007367.png 879w" sizes="(max-width: 720px) 100vw, 720px" /></a><p id="caption-attachment-6613" class="wp-caption-text">SSIS Json/XML Source File</p></div></li>
<li>JSON and XML Source Task is able to do more various call of Rest API using Http and Oauth2 Connection also Please refer below articles link for the same
<ul>
<li><a href="https://zappysys.com/blog/category/ssis/components/ssis-json-source/" target="_blank" rel="noopener">Various Articles for JSON Source</a></li>
<li><a href="https://zappysys.com/blog/category/ssis/components/ssis-xml-source-file/" target="_blank" rel="noopener">Various Articles for XML Source</a></li>
</ul>
</li>
<li>Now let&#8217;s create the Excel File Connection. In the connection Manager Window right click and select new connection.
<div id="attachment_6623" style="width: 730px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2019/03/Create-Excel-File-Connection.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-6623" class="wp-image-6623 size-medium_large" src="https://zappysys.com/blog/wp-content/uploads/2019/03/Create-Excel-File-Connection-768x384.png" alt="Create Excel File Connection" width="720" height="360" srcset="https://zappysys.com/blog/wp-content/uploads/2019/03/Create-Excel-File-Connection-768x384.png 768w, https://zappysys.com/blog/wp-content/uploads/2019/03/Create-Excel-File-Connection-300x150.png 300w, https://zappysys.com/blog/wp-content/uploads/2019/03/Create-Excel-File-Connection.png 942w" sizes="(max-width: 720px) 100vw, 720px" /></a><p id="caption-attachment-6623" class="wp-caption-text">Create Excel File Connection</p></div>
<p>&nbsp;</li>
<li>And Create The Zs-Excel Type Connection. And click Add.
<div id="attachment_6615" style="width: 581px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2019/03/Add-Excel-Connection.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-6615" class="wp-image-6615 size-full" src="https://zappysys.com/blog/wp-content/uploads/2019/03/Add-Excel-Connection.png" alt="Add Excel Connection" width="571" height="644" srcset="https://zappysys.com/blog/wp-content/uploads/2019/03/Add-Excel-Connection.png 571w, https://zappysys.com/blog/wp-content/uploads/2019/03/Add-Excel-Connection-266x300.png 266w" sizes="(max-width: 571px) 100vw, 571px" /></a><p id="caption-attachment-6615" class="wp-caption-text">Add Excel Connection</p></div>
<p>&nbsp;</li>
<li>Now select the excel file path in and test connection.
<div id="attachment_6616" style="width: 763px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2019/03/Select-Excel-File-For-Connection.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-6616" class="wp-image-6616 size-full" src="https://zappysys.com/blog/wp-content/uploads/2019/03/Select-Excel-File-For-Connection.png" alt="Select Excel File For Connection" width="753" height="568" srcset="https://zappysys.com/blog/wp-content/uploads/2019/03/Select-Excel-File-For-Connection.png 753w, https://zappysys.com/blog/wp-content/uploads/2019/03/Select-Excel-File-For-Connection-300x226.png 300w" sizes="(max-width: 753px) 100vw, 753px" /></a><p id="caption-attachment-6616" class="wp-caption-text">Select Excel File For Connection</p></div>
<p>&nbsp;</li>
<li> Now add Our <b><a href="https://zappysys.com/products/ssis-powerpack/ssis-excel-file-destination/" rel="noreferrer">Excel File Destination Connector</a> </b>and connect upper JSON or XML source with it<br />
<a href="https://zappysys.com/products/ssis-powerpack/ssis-excel-file-destination/" rel="noreferrer">https://zappysys.com/products/ssis-powerpack/ssis-excel-file-destination/</a><a href="https://zappysys.com/blog/wp-content/uploads/2019/03/SSIS-excel-destination.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" class="aligncenter wp-image-6627 size-full" src="https://zappysys.com/blog/wp-content/uploads/2019/03/SSIS-excel-destination.png" alt="" width="297" height="200" srcset="https://zappysys.com/blog/wp-content/uploads/2019/03/SSIS-excel-destination.png 297w, https://zappysys.com/blog/wp-content/uploads/2019/03/SSIS-excel-destination-272x182.png 272w" sizes="(max-width: 297px) 100vw, 297px" /></a></li>
<li> And now edit the Excel destination and select that created excel file connection to load the data in excel file.
<div id="attachment_6618" style="width: 666px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2019/03/SSIS-Excel-Connection-Edit.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-6618" class="wp-image-6618 size-full" src="https://zappysys.com/blog/wp-content/uploads/2019/03/SSIS-Excel-Connection-Edit.png" alt="SSIS Excel Connection Advanced Edit" width="656" height="375" srcset="https://zappysys.com/blog/wp-content/uploads/2019/03/SSIS-Excel-Connection-Edit.png 656w, https://zappysys.com/blog/wp-content/uploads/2019/03/SSIS-Excel-Connection-Edit-300x171.png 300w" sizes="(max-width: 656px) 100vw, 656px" /></a><p id="caption-attachment-6618" class="wp-caption-text">SSIS Excel Connection Advanced Edit</p></div>
<p>&nbsp;</li>
<li>Give the Range Start cell in Component Properties. (A1 for starting of the file) and select the table name.
<div id="attachment_6619" style="width: 800px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2019/03/Advance-editor-for-SSIS-excel-destination.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-6619" class="wp-image-6619 size-full" src="https://zappysys.com/blog/wp-content/uploads/2019/03/Advance-editor-for-SSIS-excel-destination.png" alt="Give RangeStartCell and TableName" width="790" height="748" srcset="https://zappysys.com/blog/wp-content/uploads/2019/03/Advance-editor-for-SSIS-excel-destination.png 790w, https://zappysys.com/blog/wp-content/uploads/2019/03/Advance-editor-for-SSIS-excel-destination-300x284.png 300w, https://zappysys.com/blog/wp-content/uploads/2019/03/Advance-editor-for-SSIS-excel-destination-768x727.png 768w" sizes="(max-width: 790px) 100vw, 790px" /></a><p id="caption-attachment-6619" class="wp-caption-text">Give RangeStartCell and TableName</p></div>
<p>&nbsp;</li>
<li> Select the input columns.
<div id="attachment_6620" style="width: 768px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2019/03/select-input-columns.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-6620" class="wp-image-6620 size-full" src="https://zappysys.com/blog/wp-content/uploads/2019/03/select-input-columns.png" alt="Select Input Columns" width="758" height="691" srcset="https://zappysys.com/blog/wp-content/uploads/2019/03/select-input-columns.png 758w, https://zappysys.com/blog/wp-content/uploads/2019/03/select-input-columns-300x273.png 300w" sizes="(max-width: 758px) 100vw, 758px" /></a><p id="caption-attachment-6620" class="wp-caption-text">Select Input Columns</p></div></li>
<li>That&#8217;s run the package and it will load all the JSON or XML File data into the Excel file.
<div id="attachment_6628" style="width: 372px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2019/03/run-package-for-json-into-excel-file.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-6628" class="wp-image-6628 size-full" src="https://zappysys.com/blog/wp-content/uploads/2019/03/run-package-for-json-into-excel-file.png" alt="run-package-for-json-into-excel-file" width="362" height="218" srcset="https://zappysys.com/blog/wp-content/uploads/2019/03/run-package-for-json-into-excel-file.png 362w, https://zappysys.com/blog/wp-content/uploads/2019/03/run-package-for-json-into-excel-file-300x181.png 300w" sizes="(max-width: 362px) 100vw, 362px" /></a><p id="caption-attachment-6628" class="wp-caption-text">run-package-for-json-into-excel-file</p></div>
<div id="attachment_6622" style="width: 625px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2019/03/excel-file-data-stored.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-6622" class="wp-image-6622 size-full" src="https://zappysys.com/blog/wp-content/uploads/2019/03/excel-file-data-stored.png" alt="Stored Data into Excel File" width="615" height="308" srcset="https://zappysys.com/blog/wp-content/uploads/2019/03/excel-file-data-stored.png 615w, https://zappysys.com/blog/wp-content/uploads/2019/03/excel-file-data-stored-300x150.png 300w" sizes="(max-width: 615px) 100vw, 615px" /></a><p id="caption-attachment-6622" class="wp-caption-text">Stored Data into Excel File</p></div>
<p>&nbsp;</li>
</ol>
<h2><span id="Conclusion">Conclusion</span></h2>
<p>Above all, in this blog, we learned how to Load JSON or XML Data in Excel File using SSIS Pack. We used <a href="https://zappysys.com/products/ssis-powerpack/ssis-amazon-s3-csv-file-source/" target="_blank" rel="noopener">JSON or Excel Source(REST API or File) for JSON or Excel file</a>, <a href="https://zappysys.com/products/ssis-powerpack/ssis-amazon-s3-json-file-source/" target="_blank" rel="noopener">Excel Destination for Excel file</a> to read the JSON or XML file and load data into Excel File. You can <a href="https://zappysys.com/products/ssis-powerpack/">download SSIS PowerPack here</a> to try many other scenarios not discussed in this blog along with 70+ other components.</p>
<h2><span id="References">References</span></h2>
<p>Finally, you can use the following links for more information:</p>
<ul>
<li><a href="https://zappysys.com/blog/category/ssis/components/ssis-json-source/" target="_blank" rel="noopener">Our Various Articles for JSON Source</a></li>
<li><a href="https://zappysys.com/blog/category/ssis/components/ssis-xml-source-file/" target="_blank" rel="noopener">Our Various Articles for XML Source</a></li>
<li><a href="https://zappysys.com/products/ssis-powerpack/ssis-excel-file-destination/" target="_blank" rel="noopener">Excel Destination</a></li>
</ul>
<p>The post <a href="https://zappysys.com/blog/create-excel-file-in-ssis-json-xml/">Create Excel File in SSIS (Read from JSON / XML)</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How to read RSS feed in SSIS and ODBC (with pagination)</title>
		<link>https://zappysys.com/blog/read-rss-feed-in-ssis-pagination/</link>
		
		<dc:creator><![CDATA[ZappySys Team]]></dc:creator>
		<pubDate>Tue, 05 Mar 2019 17:26:01 +0000</pubDate>
				<category><![CDATA[ODBC PowerPack]]></category>
		<category><![CDATA[SSIS XML Source (File / SOAP)]]></category>
		<category><![CDATA[XML File / SOAP API Driver]]></category>
		<category><![CDATA[odbc]]></category>
		<category><![CDATA[rss]]></category>
		<category><![CDATA[ssis]]></category>
		<guid isPermaLink="false">https://zappysys.com/blog/?p=6503</guid>

					<description><![CDATA[<p>Introduction Read RSS feed in SSIS can be challenging. RSS named first RDF Site Summary and later named Rich Site Summary and Really Simple Syndication allows customer applications to be updated with the news of a site. For example, Microsoft RSS feeds, Apple RSS feeds, Samsung RSS feeds, etc.  With RSS the information comes to you directly and you do [&#8230;]</p>
<p>The post <a href="https://zappysys.com/blog/read-rss-feed-in-ssis-pagination/">How to read RSS feed in SSIS and ODBC (with pagination)</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Introduction</h2>
<p><a href="https://zappysys.com/blog/wp-content/uploads/2016/08/ssis-xml-parser-transform.png"><img loading="lazy" decoding="async" class="size-full wp-image-2122 alignleft" src="https://zappysys.com/blog/wp-content/uploads/2016/08/ssis-xml-parser-transform.png" alt="" width="110" height="110" /></a>Read RSS feed in SSIS can be challenging. RSS named first RDF Site Summary and later named Rich Site Summary and Really Simple Syndication allows customer applications to be updated with the news of a site. For example, <a href="https://blog.feedspot.com/microsoft_rss_feeds/">Microsoft RSS feeds</a>, <a href="https://www.apple.com/rss/">Apple RSS feeds</a>, <a href="https://blog.feedspot.com/samsung_rss_feeds/">Samsung RSS feeds</a>, etc.  With RSS the information comes to you directly and you do not need to waste time checking the web site. In this article, we will show how to read RSS feed in SSIS and later using ODBC.</p>
<h2></h2>
<h2></h2>
<h2>Requirements</h2>
<ol>
<li>First of all, <a href="https://zappysys.com/products/ssis-powerpack/">ZappySys SSIS Powerpack</a> installed.</li>
<li>Secondly, <a href="https://docs.microsoft.com/en-us/sql/ssdt/download-sql-server-data-tools-ssdt?view=sql-server-2017">SSDT for Business Intelligence</a> (SSIS) installed.</li>
<li>Finally, <a href="https://zappysys.com/products/odbc-powerpack/">ODBC Powerpack installed</a>.</li>
</ol>
<h2>Getting Started</h2>
<h3>Understanding RSS data</h3>
<ol>
<li>In order to start, we will work with the WordPress RSS example:<br />
<pre class="crayon-plain-tag">https://wordpress.org/news/feed/</pre>
</li>
<li>When you go to the link, you see the feed like this:
<div id="attachment_6563" style="width: 761px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2019/03/RSS-file-data.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-6563" class="size-full wp-image-6563" src="https://zappysys.com/blog/wp-content/uploads/2019/03/RSS-file-data.png" alt="RSS data" width="751" height="462" srcset="https://zappysys.com/blog/wp-content/uploads/2019/03/RSS-file-data.png 751w, https://zappysys.com/blog/wp-content/uploads/2019/03/RSS-file-data-300x185.png 300w" sizes="(max-width: 751px) 100vw, 751px" /></a><p id="caption-attachment-6563" class="wp-caption-text">RSS information</p></div></li>
<li>Basically, it is an XML file with the Last Build date (lastBuildDate), the title, link, description. It shows the WordPress news per version and date.</li>
</ol>
<h3>Read RSS feed in SSIS</h3>
<ol>
<li>First of all, you need an SSIS Project and a Data Flow with the ZS XML Source (if you are not familiar with SSIS and the ZS XML Source, refer to <a href="https://youtu.be/d_x5bgGjg0Y?t=408">this link</a>.
<div style="width: 470px" class="wp-caption alignnone"><img loading="lazy" decoding="async" class="size-full" src="https://zappysys.com/onlinehelp/ssis-powerpack/scr/images/drag-and-drop-data-flow-task.png" alt="Use Data Flow" width="460" height="155" /><p class="wp-caption-text">Drag and drop Data Flow</p></div></li>
<li>Secondly, In the ZS XML Source, add the following RSS WordPress URL:<br />
<pre class="crayon-plain-tag">https://wordpress.org/news/feed/</pre>
<div id="attachment_6564" style="width: 836px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2019/03/ssis-rss-feed.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-6564" class="size-full wp-image-6564" src="https://zappysys.com/blog/wp-content/uploads/2019/03/ssis-rss-feed.png" alt="URL of RSS in SSIS" width="826" height="733" srcset="https://zappysys.com/blog/wp-content/uploads/2019/03/ssis-rss-feed.png 826w, https://zappysys.com/blog/wp-content/uploads/2019/03/ssis-rss-feed-300x266.png 300w, https://zappysys.com/blog/wp-content/uploads/2019/03/ssis-rss-feed-768x682.png 768w" sizes="(max-width: 826px) 100vw, 826px" /></a><p id="caption-attachment-6564" class="wp-caption-text">SSIS read RSS</p></div></li>
<li>After that, you will be able to see the following tags when you press the array filter:</li>
<li>This time, we will focus on the information under channel which is the most relevant, make sure that the array filter is this one:<br />
<pre class="crayon-plain-tag">$.rss.channel[*].item[*]</pre>
<div id="attachment_6568" style="width: 494px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2019/03/ssis-rss-get-data-filter.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-6568" class="size-full wp-image-6568" src="https://zappysys.com/blog/wp-content/uploads/2019/03/ssis-rss-get-data-filter.png" alt="Filter RSS data in SSIS" width="484" height="728" srcset="https://zappysys.com/blog/wp-content/uploads/2019/03/ssis-rss-get-data-filter.png 484w, https://zappysys.com/blog/wp-content/uploads/2019/03/ssis-rss-get-data-filter-199x300.png 199w" sizes="(max-width: 484px) 100vw, 484px" /></a><p id="caption-attachment-6568" class="wp-caption-text">Using RSS filters in SSIS</p></div></li>
<li>In addition, press the preview data button and you will see the following information:
<div id="attachment_6566" style="width: 968px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2019/03/ssis-xml-source-preview-data.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-6566" class="size-full wp-image-6566" src="https://zappysys.com/blog/wp-content/uploads/2019/03/ssis-xml-source-preview-data.png" alt="SSIS Preview Data" width="958" height="357" srcset="https://zappysys.com/blog/wp-content/uploads/2019/03/ssis-xml-source-preview-data.png 958w, https://zappysys.com/blog/wp-content/uploads/2019/03/ssis-xml-source-preview-data-300x112.png 300w, https://zappysys.com/blog/wp-content/uploads/2019/03/ssis-xml-source-preview-data-768x286.png 768w" sizes="(max-width: 958px) 100vw, 958px" /></a><p id="caption-attachment-6566" class="wp-caption-text">SSIS preview RSS</p></div></li>
</ol>
<h3>Read RSS feed in SSIS and copy to SQL Server</h3>
<ol>
<li>In the previous section, we got data from RSS. Now we will copy to SQL Server.</li>
<li>First of all, drag and drop the <strong>OLEDB Destination</strong> and join the <strong>XML </strong><strong>Source</strong> with the OLEDB Destination:
<div id="attachment_6570" style="width: 382px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2019/03/ssis-oledb-destination-xml-source.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-6570" class="size-full wp-image-6570" src="https://zappysys.com/blog/wp-content/uploads/2019/03/ssis-oledb-destination-xml-source.png" alt="Copy data from RSS to SQL Server" width="372" height="215" srcset="https://zappysys.com/blog/wp-content/uploads/2019/03/ssis-oledb-destination-xml-source.png 372w, https://zappysys.com/blog/wp-content/uploads/2019/03/ssis-oledb-destination-xml-source-300x173.png 300w" sizes="(max-width: 372px) 100vw, 372px" /></a><p id="caption-attachment-6570" class="wp-caption-text">SSIS RSS to OLEDB</p></div></li>
<li>Also, in the OLEDB Destination, press <strong>New</strong> button and select a SQL Server connection or create a new one:
<div id="attachment_6571" style="width: 834px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2019/03/ssis-oledb-new-connection.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-6571" class="size-full wp-image-6571" src="https://zappysys.com/blog/wp-content/uploads/2019/03/ssis-oledb-new-connection.png" alt="Create oledb destination table" width="824" height="719" srcset="https://zappysys.com/blog/wp-content/uploads/2019/03/ssis-oledb-new-connection.png 824w, https://zappysys.com/blog/wp-content/uploads/2019/03/ssis-oledb-new-connection-300x262.png 300w, https://zappysys.com/blog/wp-content/uploads/2019/03/ssis-oledb-new-connection-768x670.png 768w" sizes="(max-width: 824px) 100vw, 824px" /></a><p id="caption-attachment-6571" class="wp-caption-text">RSS to Oledb</p></div></li>
<li>In addition, in the table or view textbox press <strong>new</strong> to create a new destination table:
<div id="attachment_6573" style="width: 834px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2019/03/ssis-oledb-new-table.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-6573" class="size-full wp-image-6573" src="https://zappysys.com/blog/wp-content/uploads/2019/03/ssis-oledb-new-table.png" alt="Create SQL Server to store RSS data in SSIS" width="824" height="719" srcset="https://zappysys.com/blog/wp-content/uploads/2019/03/ssis-oledb-new-table.png 824w, https://zappysys.com/blog/wp-content/uploads/2019/03/ssis-oledb-new-table-300x262.png 300w, https://zappysys.com/blog/wp-content/uploads/2019/03/ssis-oledb-new-table-768x670.png 768w" sizes="(max-width: 824px) 100vw, 824px" /></a><p id="caption-attachment-6573" class="wp-caption-text">Create a new SQL table to store RSS data</p></div></li>
<li>Next, modify the table name:
<div id="attachment_6575" style="width: 514px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2019/03/ssis-modify-table-name.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-6575" class="size-full wp-image-6575" src="https://zappysys.com/blog/wp-content/uploads/2019/03/ssis-modify-table-name.png" alt="SQL Server table name in SSIS" width="504" height="442" srcset="https://zappysys.com/blog/wp-content/uploads/2019/03/ssis-modify-table-name.png 504w, https://zappysys.com/blog/wp-content/uploads/2019/03/ssis-modify-table-name-300x263.png 300w" sizes="(max-width: 504px) 100vw, 504px" /></a><p id="caption-attachment-6575" class="wp-caption-text">Change SSIS destination table name</p></div></li>
<li>Also, go to the mappings page to generate the mappings:
<div id="attachment_6576" style="width: 834px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2019/03/ssis-oledb-mappings.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-6576" class="size-full wp-image-6576" src="https://zappysys.com/blog/wp-content/uploads/2019/03/ssis-oledb-mappings.png" alt="SSIS with RSS to SQL Server" width="824" height="663" srcset="https://zappysys.com/blog/wp-content/uploads/2019/03/ssis-oledb-mappings.png 824w, https://zappysys.com/blog/wp-content/uploads/2019/03/ssis-oledb-mappings-300x241.png 300w, https://zappysys.com/blog/wp-content/uploads/2019/03/ssis-oledb-mappings-768x618.png 768w" sizes="(max-width: 824px) 100vw, 824px" /></a><p id="caption-attachment-6576" class="wp-caption-text">RSS Source to SQL Destination in SSIS</p></div></li>
<li>Finally, run the package and you will export the data from RSS to SQL Server.</li>
</ol>
<p>&nbsp;</p>
<h3>How to read RSS feed in SSIS using pagination</h3>
<p>If you have multiple rows, pagination helps a lot to handle multiple items. You can handle the information in pages. Instead of loading all the information, you can get the data from page 1, 2, 3 and more.</p>
<ol>
<li>First of all, in the URL, you can include the following to specify the page:<br />
<pre class="crayon-plain-tag">https://wordpress.org/news/feed/?paged=2</pre>
</li>
<li>Also, note that it used the word <strong>paged</strong> and not page. Many URLs use page and not paged, but WordPress is different:</li>
<li>In addition, if you want to use variables, you can use a variable like this:<br />
<a href="https://zappysys.com/blog/wp-content/uploads/2019/03/ssis-page-as-variable.png"><img loading="lazy" decoding="async" class="size-full wp-image-6584" src="https://zappysys.com/blog/wp-content/uploads/2019/03/ssis-page-as-variable.png" alt="RSS pagination in SSIS" width="826" height="733" srcset="https://zappysys.com/blog/wp-content/uploads/2019/03/ssis-page-as-variable.png 826w, https://zappysys.com/blog/wp-content/uploads/2019/03/ssis-page-as-variable-300x266.png 300w, https://zappysys.com/blog/wp-content/uploads/2019/03/ssis-page-as-variable-768x682.png 768w" sizes="(max-width: 826px) 100vw, 826px" /></a><br />
RSS page as a variable</li>
<li>Also, we have a pagination tab with different pagination options. You can check the configuration here:
<div id="attachment_6577" style="width: 836px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2019/03/ssis-pagination-increment-by-wordpress.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-6577" class="wp-image-6577 size-full" src="https://zappysys.com/blog/wp-content/uploads/2019/03/ssis-pagination-increment-by-wordpress.png" alt="Read RSS feed in SSIS" width="826" height="733" srcset="https://zappysys.com/blog/wp-content/uploads/2019/03/ssis-pagination-increment-by-wordpress.png 826w, https://zappysys.com/blog/wp-content/uploads/2019/03/ssis-pagination-increment-by-wordpress-300x266.png 300w, https://zappysys.com/blog/wp-content/uploads/2019/03/ssis-pagination-increment-by-wordpress-768x682.png 768w" sizes="(max-width: 826px) 100vw, 826px" /></a><p id="caption-attachment-6577" class="wp-caption-text">RSS pagination configuration</p></div></li>
<li>Finally, for more information about pagination, refer to <a href="https://zappysys.com/blog/ssis-rest-api-looping-until-no-more-pages-found/">this link</a>.</li>
</ol>
<h3>How to read RSS feed in ZappySys ODBC PowerPack</h3>
<p><a href="default.html">Zappysys ODBC PowerPack</a> is a powerful tool to access to REST API, SOAP, XML, JSON, CSV, Odata. In this article, we will show how to access to RSS using ODBC PowerPack.</p>
<ol>
<li>First of all, open your ODBC Data Source Administrator in Windows.</li>
<li>Secondly, in the user DSN, press Add.</li>
<li>Also, add the Zappysys XML Driver:
<div id="attachment_6579" style="width: 603px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2019/03/odbc-connect-XML-RSS.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-6579" class="size-full wp-image-6579" src="https://zappysys.com/blog/wp-content/uploads/2019/03/odbc-connect-XML-RSS.png" alt="Connect to RSS using ODBC" width="593" height="422" srcset="https://zappysys.com/blog/wp-content/uploads/2019/03/odbc-connect-XML-RSS.png 593w, https://zappysys.com/blog/wp-content/uploads/2019/03/odbc-connect-XML-RSS-300x213.png 300w" sizes="(max-width: 593px) 100vw, 593px" /></a><p id="caption-attachment-6579" class="wp-caption-text">odbc XML driver</p></div></li>
<li> In addition, add the following URL:<br />
<pre class="crayon-plain-tag">https://wordpress.org/news/feed/</pre>
<div id="attachment_6581" style="width: 812px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2019/03/odbc-rss-web.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-6581" class="size-full wp-image-6581" src="https://zappysys.com/blog/wp-content/uploads/2019/03/odbc-rss-web.png" alt="URL of RSS " width="802" height="702" srcset="https://zappysys.com/blog/wp-content/uploads/2019/03/odbc-rss-web.png 802w, https://zappysys.com/blog/wp-content/uploads/2019/03/odbc-rss-web-300x263.png 300w, https://zappysys.com/blog/wp-content/uploads/2019/03/odbc-rss-web-768x672.png 768w" sizes="(max-width: 802px) 100vw, 802px" /></a><p id="caption-attachment-6581" class="wp-caption-text">ODBC to RSS connection</p></div></li>
<li>Finally, you can use the filters and pagination as we did with the SSIS PowerPack in the previous sections.
<div id="attachment_6582" style="width: 812px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2019/03/odbc-rss-wordpress-pagination.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-6582" class="size-full wp-image-6582" src="https://zappysys.com/blog/wp-content/uploads/2019/03/odbc-rss-wordpress-pagination.png" alt="Use pagination for RSS " width="802" height="702" srcset="https://zappysys.com/blog/wp-content/uploads/2019/03/odbc-rss-wordpress-pagination.png 802w, https://zappysys.com/blog/wp-content/uploads/2019/03/odbc-rss-wordpress-pagination-300x263.png 300w, https://zappysys.com/blog/wp-content/uploads/2019/03/odbc-rss-wordpress-pagination-768x672.png 768w" sizes="(max-width: 802px) 100vw, 802px" /></a><p id="caption-attachment-6582" class="wp-caption-text">ODBC pagination RSS</p></div></li>
</ol>
<h2>Conclusion</h2>
<p>To conclude, we can say that with <a href="https://zappysys.com/products/ssis-powerpack/">SSIS PowerPack</a> and <a href="https://zappysys.com/products/ssis-powerpack/">ODBC PowerPack</a>, it is easy to access, filter and paginate RSS information or any XML / SOAP API. We strongly recommend you to try the product by yourself and check the results.</p>
<h2>References</h2>
<p>For more information about RSS, refer to these links:</p>
<ul>
<li><a href="https://en.wikipedia.org/wiki/RSS">RSS</a></li>
<li><a href="http://www.whatisrss.com/">What Is RSS? RSS Explained</a></li>
</ul>
<p>The post <a href="https://zappysys.com/blog/read-rss-feed-in-ssis-pagination/">How to read RSS feed in SSIS and ODBC (with pagination)</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Read SAP S4 / HANA data in SSIS (OData REST API)</title>
		<link>https://zappysys.com/blog/read-sap-s4-hana-data-ssis-cloud-odata-rest-api/</link>
		
		<dc:creator><![CDATA[ZappySys]]></dc:creator>
		<pubDate>Thu, 20 Dec 2018 00:12:16 +0000</pubDate>
				<category><![CDATA[REST API Integration]]></category>
		<category><![CDATA[SSIS Upsert Destination]]></category>
		<category><![CDATA[SSIS XML Source (File / SOAP)]]></category>
		<category><![CDATA[odata]]></category>
		<category><![CDATA[rest api]]></category>
		<category><![CDATA[s/4hana]]></category>
		<category><![CDATA[sap]]></category>
		<category><![CDATA[sql server]]></category>
		<category><![CDATA[xml]]></category>
		<guid isPermaLink="false">https://zappysys.com/blog/?p=5663</guid>

					<description><![CDATA[<p>Introduction In our previous post, we saw how to call REST API in SSIS. Now let&#8217;s learn how to read data from SAP S4 / HANA OData Service (i.e. S/4HANA). SAP HANA provides an OData REST API interface to access data in your application using HTTP Protocol. We will use the SSIS XML Source component to read [&#8230;]</p>
<p>The post <a href="https://zappysys.com/blog/read-sap-s4-hana-data-ssis-cloud-odata-rest-api/">Read SAP S4 / HANA data in SSIS (OData REST API)</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Introduction</h2>
<p><a href="https://zappysys.com/blog/wp-content/uploads/2018/12/sap-logo.png"><img loading="lazy" decoding="async" class=" wp-image-5680 alignleft" src="https://zappysys.com/blog/wp-content/uploads/2018/12/sap-logo.png" alt="" width="110" height="110" srcset="https://zappysys.com/blog/wp-content/uploads/2018/12/sap-logo.png 195w, https://zappysys.com/blog/wp-content/uploads/2018/12/sap-logo-150x150.png 150w" sizes="(max-width: 110px) 100vw, 110px" /></a>In our previous post, we saw how to <a href="https://zappysys.com/blog/call-rest-api-using-ssis-web-service-task/" target="_blank" rel="noopener">call REST API in SSIS</a>. Now let&#8217;s learn how to read data from SAP S4 / HANA OData Service (i.e. S/4HANA). SAP HANA provides an OData REST API interface to access data in your application using HTTP Protocol. We will use the <a href="https://zappysys.com/products/ssis-powerpack/ssis-xml-source/" target="_blank" rel="noopener">SSIS XML Source</a> component to read SAP data and load it into the SQL Server Table in a few clicks.</p>
<p>&nbsp;</p>
<div class="content_block" id="custom_post_widget-2523"><h2><span id="Prerequisites">Prerequisites</span></h2>
Before we perform the steps listed in this article, you will need to make sure the following prerequisites are met:
<ol style="margin-left: 1.5em;">
 	<li><abbr title="SQL Server Integration Services">SSIS</abbr> designer installed. Sometimes 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>
 	<li>Basic knowledge of SSIS package development using <em>Microsoft SQL Server Integration Services</em>.</li>
 	<li>Make sure <span style="text-decoration: underline;"><a href="https://zappysys.com/products/ssis-powerpack/" target="_blank" rel="noopener">ZappySys SSIS PowerPack</a></span> is installed (<a href="https://zappysys.com/products/ssis-powerpack/download/" target="_blank" rel="noopener">download it</a>, if you haven't already).</li>
 	<li>(<em>Optional step</em>)<em>.</em> <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>
</ol></div>
<h2>About SAP HANA / OData REST API Service</h2>
<p>You can expose your SAP Data using ODATA REST API Service. Here is a <a href="https://www.erpworkbench.com/sap-webapps/segw-odata-gateway-service.htm" target="_blank" rel="noopener">good article</a> that shows how to expose data as an OData Service. For more information on the SAP OData Service feature check the <a href="https://help.sap.com/doc/05d53b2d3bbb43d2ab5efa23829b2777/1610%20001/en-US/frameset.htm?ecaeea50ca692309e10000000a445394.html" target="_blank" rel="noopener">SAP help page</a>. If you are new to OData standard then <a href="https://www.odata.org/getting-started/basic-tutorial/" target="_blank" rel="noopener">read an article</a> to learn more about it. If you need an XML-based OData Service then use the test URLs below:</p><pre class="crayon-plain-tag">https://services.odata.org/Northwind/Northwind.svc/
https://services.odata.org/Northwind/Northwind.svc/Customers
https://services.odata.org/Northwind/Northwind.svc/Orders
https://services.odata.org/Northwind/Northwind.svc/Invoices
https://services.odata.org/Northwind/Northwind.svc/Products</pre><p>
Now let&#8217;s look at how to read SAP Data in SSIS. At this point, we assume you have exposed your data as OData Endpoint.</p>
<h2>Step-by-Step Instructions</h2>
<p>Let&#8217;s look at the step-by-step approach to how to read SAP data using SSIS components. Then we will load SAP HANA data into SQL Server.</p>
<h3>Read SAP HANA data using XML Source</h3>
<p>First, let&#8217;s look at the steps on how to configure XML Source. We will read data from SAP S4 / HANA OData Service and then we will look at how to load data into SQL Server in the next section.</p>
<ol>
<li>Open an SSIS package.</li>
<li>Drag <strong>Data Flow Task</strong> from <em>SSIS Toolbox </em>and double-click it to open it.</li>
<li>From the <em>SSIS Toolbox</em> drag <strong>ZS XML Source</strong> onto the background of Data Flow (in the designer). Double-click it to open the <em>XML Source</em> configuration window.</li>
<li>Change <em>Data Format</em> to <strong>OData</strong>. Selecting this option will take care of <a href="https://zappysys.com/blog/ssis-rest-api-looping-until-no-more-pages-found/" target="_blank" rel="noopener">REST API pagination</a> too.</li>
<li>Enter your <em>OData Service URL. </em>Its format looks similar to the one shown below. Replace 3 parts with your own value (i.e. replace {MY-INSTANCE}, {MY-PROJECT}, {MY-TABLE}):<br />
<pre class="crayon-plain-tag">https://{MY-INSTANCE}/sap/opu/odata/sap/{MY-PROJECT}/{MY-TABLE}</pre>
For example, if you are hosting SAP HANA in a cloud instance then your URL may look like this:<br />
<pre class="crayon-plain-tag">https://myXXXXXX-api.s4hana.ondemand.com/sap/opu/odata/sap/MyTestProject/PurchaseOrders</pre>
</li>
<li>Check the <strong>Use Credentials</strong> checkbox and select the <strong>New ZS-HTTP Connection</strong> option.</li>
<li>In <em>HTTP Connection Manager</em> select the <a href="https://zappysys.com/blog/how-to-set-base64-encoded-authorization-header-for-http-web-request/" target="_blank" rel="noopener">Basic Authentication</a> option and enter your SAP HANA UserID / Password.
<div id="attachment_5668" style="width: 867px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2018/12/read-sap-s4-hana-odata-ssis-xml-rest-api-service.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-5668" class="size-full wp-image-5668" src="https://zappysys.com/blog/wp-content/uploads/2018/12/read-sap-s4-hana-odata-ssis-xml-rest-api-service.png" alt="Configure SSIS HTTP Connection (SAP S4 / HANA OData Service - Using Basic Authentication)" width="857" height="740" srcset="https://zappysys.com/blog/wp-content/uploads/2018/12/read-sap-s4-hana-odata-ssis-xml-rest-api-service.png 857w, https://zappysys.com/blog/wp-content/uploads/2018/12/read-sap-s4-hana-odata-ssis-xml-rest-api-service-300x259.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/12/read-sap-s4-hana-odata-ssis-xml-rest-api-service-768x663.png 768w" sizes="(max-width: 857px) 100vw, 857px" /></a><p id="caption-attachment-5668" class="wp-caption-text">Configure SSIS HTTP Connection (SAP S4 / HANA OData Service &#8211; Using Basic Authentication)</p></div></li>
<li>Let&#8217;s get back to the <em>XML Source</em> connector we created in the previous stage. Press the <strong>Select Filter</strong> button or directly type <pre class="crayon-plain-tag">$.feed.entry[*]</pre>  into the field as shown below:
<div id="attachment_5669" style="width: 893px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2018/12/ssis-odata-read-xml-data-source.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-5669" class="size-full wp-image-5669" src="https://zappysys.com/blog/wp-content/uploads/2018/12/ssis-odata-read-xml-data-source.png" alt="Select Filter for OData Service (XML REST API)" width="883" height="730" srcset="https://zappysys.com/blog/wp-content/uploads/2018/12/ssis-odata-read-xml-data-source.png 883w, https://zappysys.com/blog/wp-content/uploads/2018/12/ssis-odata-read-xml-data-source-300x248.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/12/ssis-odata-read-xml-data-source-768x635.png 768w" sizes="(max-width: 883px) 100vw, 883px" /></a><p id="caption-attachment-5669" class="wp-caption-text">Select Filter for OData Service (XML REST API)</p></div></li>
<li>Click <strong>Preview</strong> to make sure you can see the records.</li>
<li>Click OK to save the configuration and close the configuration window.</li>
</ol>
<p>In the next section, we will configure the target to load SAP data into SQL Server using the <a href="https://zappysys.com/products/ssis-powerpack/ssis-upsert-destination/" target="_blank" rel="noopener">ZappySys Upsert Destination</a> Data Flow component.</p>
<h3>Load SAP HANA data into SQL Server using Upsert Destination</h3>
<div class="content_block" id="custom_post_widget-5617"><p>ZappySys SSIS PowerPack makes it easy to load data from various sources such as REST, SOAP, JSON, XML, CSV or from other source into SQL Server, or PostgreSQL, or Amazon Redshift, or other  targets. The <strong>Upsert Destination</strong> component allows you to automatically insert new records and update existing ones based on key columns. Below are the detailed steps to configure it.</p>
<h3>Step 1: Add Upsert Destination to Data Flow</h3>
<ol>
<li>Drag and drop the <strong>Upsert Destination</strong> component from the SSIS Toolbox.</li>
<li>Connect your source component (e.g., JSON / REST / Other Source) to the Upsert Destination.</li>
</ol>
<div class="wp-caption aligncenter">
<a href="https://zappysys.com/blog/wp-content/uploads/2017/08/ssis-data-flow-drag-drop-upsert-destination.png">
<img loading="lazy" decoding="async" class="size-full" alt="" src="https://zappysys.com/blog/wp-content/uploads/2017/08/ssis-data-flow-drag-drop-upsert-destination.png" /></a>
<p class="wp-caption-text">SSIS - Data Flow - Drang and Drop Upsert Destination Component</p>
</div>
<h3>Step 2: Configure Target Connection</h3>
<ol>
<li>Double-click the <strong>Upsert Destination</strong> component to open the configuration window.</li>
<li>Under <strong>Connection</strong>, select an existing target connection or click <strong>NEW</strong> to create a new connection.
<ul>
<li>Example: SQL Server, or PostgreSQL, or Amazon Redshift.</li>
</ul>
</li>
</ol>
<h3>Step 3: Select or Create Target Table</h3>
<ol>
<li>In the <strong>Target Table</strong> dropdown, select the table where you want to load data.</li>
<li>Optionally, click <strong>NEW</strong> to create a new table based on the source columns.</li>
</ol>
<div class="wp-caption aligncenter">
<a href="https://zappysys.com/blog/wp-content/uploads/2020/09/upsert-destination-configuration.png">
<img loading="lazy" decoding="async" class="size-full" alt="" src="https://zappysys.com/blog/wp-content/uploads/2020/09/upsert-destination-configuration.png" /></a>
<p class="wp-caption-text">Configure SSIS Upsert Destination Connection - Loading data (REST / SOAP / JSON / XML /CSV) into SQL Server or other target using SSIS</p>
</div>
<h3>Step 4: Map Columns</h3>
<ol>
<li>Go to the <strong>Mappings</strong> tab.</li>
<li>Click <strong>Auto Map</strong> to map source columns to target columns by name.</li>
<li>Ensure you <strong>check the Primary key column(s)</strong> that will determine whether a record is inserted or updated.</li>
<li>You can manually adjust the mappings if necessary.</li>
</ol>
 <div class="wp-caption aligncenter">
<a href="https://zappysys.com/blog/wp-content/uploads/2020/09/upsert-destination-key.png">
<img loading="lazy" decoding="async" class="size-full" alt="" src="https://zappysys.com/blog/wp-content/uploads/2020/09/upsert-destination-key.png" /></a>
<p class="wp-caption-text">SSIS Upsert Destination - Columns Mappings</p>
</div>
<h3>Step 5: Save Settings</h3>
<ul>
<li>Click <strong>OK</strong> to save the Upsert Destination configuration.</li>
</ul>
<h3>Step 6: Optional: Add Logging or Analysis</h3>
<ul>
<li>You may add extra destination components to log the number of inserted vs. updated records for monitoring or auditing purposes.</li>
</ul>
<h3>Step 7: Execute the Package</h3>
<ul>
<li>Run your SSIS package and verify that the data is correctly inserted and updated in the target table.</li>
</ul>
<div class="wp-caption aligncenter">
<a href="https://zappysys.com/blog/wp-content/uploads/2018/12/ssis-upsert-destination-execute.png">
<img loading="lazy" decoding="async" class="size-full" alt="" src="https://zappysys.com/blog/wp-content/uploads/2018/12/ssis-upsert-destination-execute.png" /></a>
<p class="wp-caption-text">SSIS Upsert Destination Execution</p>
</div></div>
<h2>Conclusion</h2>
<p>In this post, we saw how easy it is to read SAP S4 HANA data using XML Source SSIS connector that is part of <a href="https://zappysys.com/products/ssis-powerpack/" target="_blank" rel="noopener">ZappySys SSIS PowerPack</a>. <a href="https://zappysys.com/products/ssis-powerpack/download/" target="_blank" rel="noopener">Download it</a>, try it out, and see it for yourself! It has many more connectors that were not mentioned in this post but could be also very helpful in your daily work.</p>
<p>The post <a href="https://zappysys.com/blog/read-sap-s4-hana-data-ssis-cloud-odata-rest-api/">Read SAP S4 / HANA data in SSIS (OData REST API)</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Call Oracle UCM Web Service in SSIS (Read XML SOAP API)</title>
		<link>https://zappysys.com/blog/read-write-oracle-ucm-web-service-using-ssis/</link>
		
		<dc:creator><![CDATA[ZappySys]]></dc:creator>
		<pubDate>Mon, 17 Dec 2018 18:32:11 +0000</pubDate>
				<category><![CDATA[HTTP Connection]]></category>
		<category><![CDATA[REST API Integration]]></category>
		<category><![CDATA[SSIS XML Source (File / SOAP)]]></category>
		<category><![CDATA[soap]]></category>
		<guid isPermaLink="false">https://zappysys.com/blog/?p=5615</guid>

					<description><![CDATA[<p>Introduction In this post we will learn how to access data from Oracle UCM Web Service (Middle layer for WebLogic) and load into SQL Server or any other target. We will use SSIS XML Source to achieve this result. &#160; &#160; About Oracle UCM Web Service If you are not sure what is SOAP Web [&#8230;]</p>
<p>The post <a href="https://zappysys.com/blog/read-write-oracle-ucm-web-service-using-ssis/">Call Oracle UCM Web Service in SSIS (Read XML SOAP API)</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Introduction</h2>
<p><a href="https://zappysys.com/blog/wp-content/uploads/2018/12/oracle-logo.png"><img loading="lazy" decoding="async" class=" wp-image-5682 alignleft" src="https://zappysys.com/blog/wp-content/uploads/2018/12/oracle-logo.png" alt="" width="110" height="110" srcset="https://zappysys.com/blog/wp-content/uploads/2018/12/oracle-logo.png 243w, https://zappysys.com/blog/wp-content/uploads/2018/12/oracle-logo-150x150.png 150w" sizes="(max-width: 110px) 100vw, 110px" /></a>In this post we will learn how to access data from <a href="https://docs.oracle.com/cd/E21764_01/doc.1111/e10807/c12_web_services.htm#CSSDK816" target="_blank" rel="noopener">Oracle UCM Web Service</a> (Middle layer for WebLogic) and load into SQL Server or any other target. We will use <a href="https://zappysys.com/products/ssis-powerpack/ssis-xml-source/" target="_blank" rel="noopener">SSIS XML Source</a> to achieve this result.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="content_block" id="custom_post_widget-2523"><h2><span id="Prerequisites">Prerequisites</span></h2>
Before we perform the steps listed in this article, you will need to make sure the following prerequisites are met:
<ol style="margin-left: 1.5em;">
 	<li><abbr title="SQL Server Integration Services">SSIS</abbr> designer installed. Sometimes 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>
 	<li>Basic knowledge of SSIS package development using <em>Microsoft SQL Server Integration Services</em>.</li>
 	<li>Make sure <span style="text-decoration: underline;"><a href="https://zappysys.com/products/ssis-powerpack/" target="_blank" rel="noopener">ZappySys SSIS PowerPack</a></span> is installed (<a href="https://zappysys.com/products/ssis-powerpack/download/" target="_blank" rel="noopener">download it</a>, if you haven't already).</li>
 	<li>(<em>Optional step</em>)<em>.</em> <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>
</ol></div>
<h2>About Oracle UCM Web Service</h2>
<p>If you are not sure what is SOAP Web Service and how to call in SSIS, First read <a href="https://zappysys.com/blog/calling-soap-web-service-in-ssis-xml-source/">this article</a> to understand general concepts of calling SOAP API in SSIS.</p>
<p>UCM Web Service offers <a href="https://docs.oracle.com/cd/E21764_01/doc.1111/e10807/a01_wsdl_and_soap.htm#CSSDK1102" target="_blank" rel="noopener">calling various commands</a>. You have to send XML Request and server will send you XML response with requested data. We will use <a href="https://zappysys.com/blog/parse-multi-dimensional-json-array-ssis/" target="_blank" rel="noopener">Array Transformation Technique (Key / Value Pattern)</a> to extract complex nested XML data.</p>
<h2>Step-By-Step</h2>
<p>Now let&#8217;s look at how to call Oracle UCM SOAP API in SSIS.</p>
<h3>Read from Oracle UCM Web Service using XML Source</h3>
<ol>
<li>Drag Data Flow Task in SSIS Designer</li>
<li>Inside Data flow drag <a href="https://zappysys.com/products/ssis-powerpack/ssis-xml-source/" target="_blank" rel="noopener">ZS SSIS XML Source</a> from toolbox</li>
<li>First enter URL as below (Replace INSTANCE ID with your own instance)<br />
<pre class="crayon-plain-tag">https://YOUR-INSTANCE-ID.oraclecloud.com/idcws/GenericSoapPort</pre>
</li>
<li>Now Check Use Credentials and select new ZS-HTTP connection</li>
<li>Enter your User ID and Password to call Web Service using Basic Authentication. Click OK to save.
<div id="attachment_5626" style="width: 827px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2018/12/ssis-oracle-ucm-web-api-connection-settings.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-5626" class="size-full wp-image-5626" src="https://zappysys.com/blog/wp-content/uploads/2018/12/ssis-oracle-ucm-web-api-connection-settings.png" alt="Configure HTTP Connection - Call Oracle UCM Web Service (SOAP XML)" width="817" height="673" srcset="https://zappysys.com/blog/wp-content/uploads/2018/12/ssis-oracle-ucm-web-api-connection-settings.png 817w, https://zappysys.com/blog/wp-content/uploads/2018/12/ssis-oracle-ucm-web-api-connection-settings-300x247.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/12/ssis-oracle-ucm-web-api-connection-settings-768x633.png 768w" sizes="(max-width: 817px) 100vw, 817px" /></a><p id="caption-attachment-5626" class="wp-caption-text">Configure HTTP Connection &#8211; Call Oracle UCM Web Service (SOAP XML)</p></div></li>
<li>On XML Source UI Select Content Type = XML (text / xml, charset=UTF-8)</li>
<li>Select Request Method as <strong>POST</strong></li>
<li>Click Enter Raw Edit for HTTP Headers and enter below<br />
<pre class="crayon-plain-tag">SOAPAction: &quot;urn:GenericSoap/GenericSoapOperation&quot;</pre>
</li>
<li>Click on Edit Body and enter your Request Body in XML format.For example to call <strong>GET_SEARCH_RESULTS</strong> service to retrieve the search results for the passed query text you can submit Request Body as below.<br />
<strong>NOTICE:</strong>  String in Search Text was surrounded by backtick (  `  ). Single tick / double quote didn&#8217;t work in our case.<br />
<pre class="crayon-plain-tag">&lt;soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ucm="http://www.oracle.com/UCM"&gt;
&lt;soapenv:Body&gt;
  &lt;ucm:GenericRequest webKey="cs"&gt;
    &lt;ucm:Service IdcService="GET_SEARCH_RESULTS"&gt;
      &lt;ucm:Document&gt;
        &lt;ucm:Field name="QueryText"&gt;dDocTitle &amp;lt;starts&amp;gt; `MY_sites_201`&lt;/ucm:Field&gt;
      &lt;/ucm:Document&gt;
    &lt;/ucm:Service&gt;
  &lt;/ucm:GenericRequest&gt;
&lt;/soapenv:Body&gt;
&lt;/soapenv:Envelope&gt;</pre>
<a href="https://zappysys.com/blog/wp-content/uploads/2018/12/ssis-xml-source-read-oracle-ucm-soap-service.png"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-5625" src="https://zappysys.com/blog/wp-content/uploads/2018/12/ssis-xml-source-read-oracle-ucm-soap-service.png" alt="" width="975" height="661" srcset="https://zappysys.com/blog/wp-content/uploads/2018/12/ssis-xml-source-read-oracle-ucm-soap-service.png 975w, https://zappysys.com/blog/wp-content/uploads/2018/12/ssis-xml-source-read-oracle-ucm-soap-service-300x203.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/12/ssis-xml-source-read-oracle-ucm-soap-service-768x521.png 768w" sizes="(max-width: 975px) 100vw, 975px" /></a></li>
<li>Now Select Filter (Browse upto Fields under SearchResult node. Once you click OK try to edit your Expression so it looks like below. As you may notice we changed <strong>ResultSet[*]</strong> to <strong>ResultSet[?(@@name==&#8217;SearchResults&#8217;)]</strong><br />
This will ensure that we extract records from only SearchResult Node and not other nodes such as UserAttribInfo or EnterpriseSearchResults<br />
<pre class="crayon-plain-tag">$.env:Envelope.env:Body.ns2:GenericResponse.ns2:Service.ns2:Document.ns2:ResultSet[?(@@name=='SearchResults')].ns2:Row[*]</pre>
<div id="attachment_5624" style="width: 955px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2018/12/ssis-xml-source-select-filter.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-5624" class="size-full wp-image-5624" src="https://zappysys.com/blog/wp-content/uploads/2018/12/ssis-xml-source-select-filter.png" alt="Select Filter" width="945" height="390" srcset="https://zappysys.com/blog/wp-content/uploads/2018/12/ssis-xml-source-select-filter.png 945w, https://zappysys.com/blog/wp-content/uploads/2018/12/ssis-xml-source-select-filter-300x124.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/12/ssis-xml-source-select-filter-768x317.png 768w" sizes="(max-width: 945px) 100vw, 945px" /></a><p id="caption-attachment-5624" class="wp-caption-text">Select Filter</p></div></li>
<li>Now go to 2D Array Tab. Select <a href="https://zappysys.com/blog/parse-multi-dimensional-json-array-ssis/" target="_blank" rel="noopener">Key / Value Pattern Option</a>.</li>
<li>Select Column Names / Value Filters as below. You can Use Browse Option to navigate to that field or just type below directly. Below expression will Transform Rows into Column. Foreach attribute name we will get one column.Column Name Filter =&gt;  <strong>$.ns2:Field[*].@name</strong><br />
Column Value Filter =&gt;  <strong>$.ns2:Field[*].#text</strong></li>
<li>Now Click Preview to confirm it works<br />
<a href="https://zappysys.com/blog/wp-content/uploads/2018/12/ssis-calling-oracle-ucm-web-service-weblogic-soap-api.png"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-5627" src="https://zappysys.com/blog/wp-content/uploads/2018/12/ssis-calling-oracle-ucm-web-service-weblogic-soap-api.png" alt="" width="842" height="735" srcset="https://zappysys.com/blog/wp-content/uploads/2018/12/ssis-calling-oracle-ucm-web-service-weblogic-soap-api.png 842w, https://zappysys.com/blog/wp-content/uploads/2018/12/ssis-calling-oracle-ucm-web-service-weblogic-soap-api-300x262.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/12/ssis-calling-oracle-ucm-web-service-weblogic-soap-api-768x670.png 768w" sizes="(max-width: 842px) 100vw, 842px" /></a></li>
<li>That&#8217;s it, you can now click OK to close UI.</li>
</ol>
<h3>Loading Oracle UCM SOAP API data into SQL Server / Other Target</h3>
<div class="content_block" id="custom_post_widget-5617"><p>ZappySys SSIS PowerPack makes it easy to load data from various sources such as REST, SOAP, JSON, XML, CSV or from other source into SQL Server, or PostgreSQL, or Amazon Redshift, or other  targets. The <strong>Upsert Destination</strong> component allows you to automatically insert new records and update existing ones based on key columns. Below are the detailed steps to configure it.</p>
<h3>Step 1: Add Upsert Destination to Data Flow</h3>
<ol>
<li>Drag and drop the <strong>Upsert Destination</strong> component from the SSIS Toolbox.</li>
<li>Connect your source component (e.g., JSON / REST / Other Source) to the Upsert Destination.</li>
</ol>
<div class="wp-caption aligncenter">
<a href="https://zappysys.com/blog/wp-content/uploads/2017/08/ssis-data-flow-drag-drop-upsert-destination.png">
<img loading="lazy" decoding="async" class="size-full" alt="" src="https://zappysys.com/blog/wp-content/uploads/2017/08/ssis-data-flow-drag-drop-upsert-destination.png" /></a>
<p class="wp-caption-text">SSIS - Data Flow - Drang and Drop Upsert Destination Component</p>
</div>
<h3>Step 2: Configure Target Connection</h3>
<ol>
<li>Double-click the <strong>Upsert Destination</strong> component to open the configuration window.</li>
<li>Under <strong>Connection</strong>, select an existing target connection or click <strong>NEW</strong> to create a new connection.
<ul>
<li>Example: SQL Server, or PostgreSQL, or Amazon Redshift.</li>
</ul>
</li>
</ol>
<h3>Step 3: Select or Create Target Table</h3>
<ol>
<li>In the <strong>Target Table</strong> dropdown, select the table where you want to load data.</li>
<li>Optionally, click <strong>NEW</strong> to create a new table based on the source columns.</li>
</ol>
<div class="wp-caption aligncenter">
<a href="https://zappysys.com/blog/wp-content/uploads/2020/09/upsert-destination-configuration.png">
<img loading="lazy" decoding="async" class="size-full" alt="" src="https://zappysys.com/blog/wp-content/uploads/2020/09/upsert-destination-configuration.png" /></a>
<p class="wp-caption-text">Configure SSIS Upsert Destination Connection - Loading data (REST / SOAP / JSON / XML /CSV) into SQL Server or other target using SSIS</p>
</div>
<h3>Step 4: Map Columns</h3>
<ol>
<li>Go to the <strong>Mappings</strong> tab.</li>
<li>Click <strong>Auto Map</strong> to map source columns to target columns by name.</li>
<li>Ensure you <strong>check the Primary key column(s)</strong> that will determine whether a record is inserted or updated.</li>
<li>You can manually adjust the mappings if necessary.</li>
</ol>
 <div class="wp-caption aligncenter">
<a href="https://zappysys.com/blog/wp-content/uploads/2020/09/upsert-destination-key.png">
<img loading="lazy" decoding="async" class="size-full" alt="" src="https://zappysys.com/blog/wp-content/uploads/2020/09/upsert-destination-key.png" /></a>
<p class="wp-caption-text">SSIS Upsert Destination - Columns Mappings</p>
</div>
<h3>Step 5: Save Settings</h3>
<ul>
<li>Click <strong>OK</strong> to save the Upsert Destination configuration.</li>
</ul>
<h3>Step 6: Optional: Add Logging or Analysis</h3>
<ul>
<li>You may add extra destination components to log the number of inserted vs. updated records for monitoring or auditing purposes.</li>
</ul>
<h3>Step 7: Execute the Package</h3>
<ul>
<li>Run your SSIS package and verify that the data is correctly inserted and updated in the target table.</li>
</ul>
<div class="wp-caption aligncenter">
<a href="https://zappysys.com/blog/wp-content/uploads/2018/12/ssis-upsert-destination-execute.png">
<img loading="lazy" decoding="async" class="size-full" alt="" src="https://zappysys.com/blog/wp-content/uploads/2018/12/ssis-upsert-destination-execute.png" /></a>
<p class="wp-caption-text">SSIS Upsert Destination Execution</p>
</div></div>
<h2>Conclusion</h2>
<p>In this post we saw how easy it is to consume XML SOAP Web Service in SSIS. We called SOAP Service for Oracle UCM Web Service and loaded data into target like SQL Server. You can <a href="https://zappysys.com/products/ssis-powerpack/">download SSIS PowerPack</a> and try many other scenarios like this using 70+ other SSIS Tasks /Components not mentioned in this article.</p>
<p>The post <a href="https://zappysys.com/blog/read-write-oracle-ucm-web-service-using-ssis/">Call Oracle UCM Web Service in SSIS (Read XML SOAP API)</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How to read data from QuickBooks Online in SSIS</title>
		<link>https://zappysys.com/blog/read-data-quickbooks-online-using-ssis/</link>
		
		<dc:creator><![CDATA[ZappySys]]></dc:creator>
		<pubDate>Sat, 08 Sep 2018 06:25:14 +0000</pubDate>
				<category><![CDATA[REST API Integration]]></category>
		<category><![CDATA[SSIS REST API Task]]></category>
		<category><![CDATA[SSIS XML Source (File / SOAP)]]></category>
		<category><![CDATA[oauth]]></category>
		<category><![CDATA[oauth2]]></category>
		<category><![CDATA[quickbooks]]></category>
		<category><![CDATA[rest]]></category>
		<category><![CDATA[rest api]]></category>
		<category><![CDATA[ssis]]></category>
		<guid isPermaLink="false">https://zappysys.com/blog/?p=4763</guid>

					<description><![CDATA[<p>Introduction QuickBooks Online is a well-known Cloud-based Accounting Software. In this post, you will learn how to implement QuickBooks Online API Integration with SQL Server or any other RDBMS (e.g. Oracle, MySQL, Postgresql) using SSIS in few clicks. We will use SSIS XML Source to Read data from QuickBooks Online and Load into SQL Server / other targets (Using OAuth Connection). We will [&#8230;]</p>
<p>The post <a href="https://zappysys.com/blog/read-data-quickbooks-online-using-ssis/">How to read data from QuickBooks Online in SSIS</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Introduction</h2>
<p><a href="https://zappysys.com/blog/wp-content/uploads/2019/01/QuickBookLogo.png"><img loading="lazy" decoding="async" class="wp-image-6399 size-full alignleft" src="https://zappysys.com/blog/wp-content/uploads/2019/01/QuickBookLogo.png" alt="QuickBooks Online Logo" width="225" height="225" srcset="https://zappysys.com/blog/wp-content/uploads/2019/01/QuickBookLogo.png 225w, https://zappysys.com/blog/wp-content/uploads/2019/01/QuickBookLogo-150x150.png 150w" sizes="(max-width: 225px) 100vw, 225px" /></a>QuickBooks Online is a well-known Cloud-based Accounting Software. In this post, you will learn how to implement <a href="https://developer.intuit.com/docs/00_quickbooks_online/1_get_started/00_get_started" target="_blank" rel="noopener">QuickBooks Online API</a> Integration with SQL Server or any other RDBMS (e.g. Oracle, MySQL, Postgresql) using <strong>SSIS</strong> in few clicks. We will use <a href="https://zappysys.com/products/ssis-powerpack/ssis-xml-source/" target="_blank" rel="noopener">SSIS XML Source</a> to <strong>Read data from QuickBooks Online</strong> and Load into SQL Server / other targets (Using OAuth Connection). We will discuss on How to Create an Intuit Developer Account, How to Create QuickBooks Online App for OAuth, We will also discuss reverse scenario to <strong>Write data to QuickBooks Online</strong> (API POST for Insert or Update in QuickBooks Online) using <a href="https://zappysys.com/products/ssis-powerpack/ssis-rest-api-web-service-task/">SSIS REST API Task</a><br />
In nutshell, this post will focus on how to call QuickBooks Online API using SSIS.<br />
So let’s get started.</p>
<h2><span id="Prerequisites">Prerequisites</span></h2>
<p>Before we look into Step-By-Step section to extract and load data from <strong>QuickBooks Online to SQL Server</strong> let’s make sure you met the following requirements.</p>
<ol>
<li>SSIS designer installed. Sometimes it is referred as BIDS or SSDT (<a href="https://docs.microsoft.com/en-us/sql/ssdt/download-sql-server-data-tools-ssdt" target="_blank" rel="noopener">download it from Microsoft site</a>).</li>
<li>Basic knowledge of SSIS package development using <em>Microsoft SQL Server Integration Services</em>.</li>
<li><a href="https://zappysys.com/products/ssis-powerpack/" target="_blank" rel="noopener"><em>ZappySys SSIS PowerPack</em> installed</a>. Click on the link to download a FREE trial.</li>
<li>You have the basic familiarity with REST API concepts and QuickBooks Online API.</li>
</ol>
<h2>What is QuickBooks Online</h2>
<p><b>QuickBooks</b> is an accounting software package developed and marketed by Intuit. QuickBooks products are geared mainly toward small and medium-sized businesses and offer on-premises accounting applications as well as cloud-based versions that accept business payments, manage and pay bills, and payroll functions.</p>
<h2>Getting Started</h2>
<p>In order to start, we will show several examples. ZappySys includes an <a href="https://zappysys.com/products/ssis-powerpack/ssis-xml-source/">SSIS XML Source</a> that will help you to call QuickBooks Online API, read various data from QuickBooks Online with SSIS, create a new Contact on QuickBooks Online with SSIS and do many more actions using REST API. To learn more about QuickBooks Online API <a href="https://developer.intuit.com/docs/00_quickbooks_online/1_get_started/00_get_started" rel="noopener">check this help file</a>.</p>
<p>To access QuickBooks Online data using REST API call, you need to create an Intuit Developer Account and then create QuickBooks Online App.</p>
<h3>Create an Intuit Developer Account</h3>
<p>Follow the mentioned steps below to create an Intuit developer account:</p>
<ol>
<li>you can visit this site <a class="link-https" title="https://developer.intuit.com" href="https://developer.intuit.com/" target="_blank" rel="external nofollow noopener">developer.intuit.com</a>, and click on Sign up from the menu bar.</li>
<li>A registration form will be opened in a Popup. you can fill up and then click on Create Account.
<div id="attachment_4769" style="width: 1938px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/09/intuit-developer-account-signup-page.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4769" class="size-full wp-image-4769" src="https://zappysys.com/blog/wp-content/uploads/2018/09/intuit-developer-account-signup-page.png" alt="Signup Form: Intuit Developer Account" width="1928" height="1400" /></a><p id="caption-attachment-4769" class="wp-caption-text">Signup Form: Intuit Developer Account</p></div></li>
<li>Complete the validation check and click <strong>Continue</strong>.</li>
<li>On the confirmation dialog, provide a few details to fill out your profile and click <strong>All set</strong>.</li>
</ol>
<div class="locale-US style-wrap">
<p>Your account is created! You&#8217;ll automatically be redirected to the <a title="3. Create an app" href="https://developer.intuit.com/docs/00_quickbooks_online/1_get_started/30_create_an_app" target="_self" rel="internal noopener">app creation page</a> to get coding on your app.<br />
<div class="su-note"  style="border-color:#e5e54c;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:#FFFF66;border-color:#ffffff;color:#333333;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;"><strong>Note</strong></p>
<p>Choose the user ID of your account carefully. Once an app is created in a given account it cannot be moved to another account or deleted. If you are building apps for a client, we recommend you create a dedicated account for that client that stays with them, leaving them full access.</div></div>
<h3>Create a QuickBooks Online App</h3>
<p>Follow the steps below to start creating your QuickBooks Online app.</p>
<ol>
<li>From the <a class="link-https" title="https://developer.intuit.com" href="https://developer.intuit.com/" target="_blank" rel="external nofollow noopener">developer</a> portal, click on <strong>My Apps</strong>.</li>
<li>after that, Click <strong><strong>Create a new app.<br />
</strong></strong></p>
<div id="attachment_4771" style="width: 983px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/09/create-new-app-intuit.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4771" class="size-full wp-image-4771" src="https://zappysys.com/blog/wp-content/uploads/2018/09/create-new-app-intuit.png" alt="Create new App: Select APIS" width="973" height="483" /></a><p id="caption-attachment-4771" class="wp-caption-text">Create a new App: Select APIS</p></div></li>
<li>Click the <strong>Select APIs</strong> button under Just start coding.</li>
<li>Select the APIs you wish to use. This selection can always be changed later via your <a title="Configure app settings" href="https://developer.intuit.com/docs/00_quickbooks_online/4_go_live/30_publish_to_app_store/45_configure_app_settings" target="_self" rel="internal noopener">app&#8217;s settings</a>.</li>
<li>Your new app opens to its Dashboard tab.</li>
<li>Click the <strong>Keys</strong> tab. This is where you can find all keys related to your app.
<div id="attachment_4773" style="width: 1468px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/09/intuit-myapps-credentials-for-oauth2.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4773" class="size-full wp-image-4773" src="https://zappysys.com/blog/wp-content/uploads/2018/09/intuit-myapps-credentials-for-oauth2.png" alt="Intuit App: Client Id,Secret Keys for OAuth Connection" width="1458" height="895" /></a><p id="caption-attachment-4773" class="wp-caption-text">Intuit App: Client Id, Secret Keys for OAuth Connection</p></div></li>
<li>To copy a key or token, click its <strong>Copy</strong> button.</li>
</ol>
<p>finally, we are ready with an App. Let´s start with an example. In this example, we will show how to retrieve all Invoices data from QuickBooks Online with SSIS.</p>
<h3>Load QuickBooks Online data to SQL Server using SSIS XML Source</h3>
<p>Now once you registered OAuth app in the QuickBooks Online website we can move to SSIS Part.</p>
<h4>Configure OAuth Connection Manager</h4>
<ol>
<li>Right click on Connection Managers Panel to Create New OAuth Connection, and Context Menu will appear, Select New Connection from the Context Menu.
<div id="attachment_4723" style="width: 687px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-connection-managers-select-connection.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4723" class="size-full wp-image-4723" src="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-connection-managers-select-connection.png" alt="Connection Manager Panel: Select Connection" width="677" height="348" srcset="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-connection-managers-select-connection.png 677w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-connection-managers-select-connection-300x154.png 300w" sizes="(max-width: 677px) 100vw, 677px" /></a><p id="caption-attachment-4723" class="wp-caption-text">Connection Manager Panel: Select Connection</p></div></li>
<li>Select ZS-OAuth Connection Manager from the Connection Managers list.
<div id="attachment_4724" style="width: 681px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-connection-managers-list-select-zs-oauth-connection-manager.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4724" class="wp-image-4724 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-connection-managers-list-select-zs-oauth-connection-manager.png" alt="SSIS Connection Mangers List: Select O-AUTH Connection Manager" width="671" height="549" srcset="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-connection-managers-list-select-zs-oauth-connection-manager.png 671w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-connection-managers-list-select-zs-oauth-connection-manager-300x245.png 300w" sizes="(max-width: 671px) 100vw, 671px" /></a><p id="caption-attachment-4724" class="wp-caption-text">SSIS Connection Managers List: Select O-AUTH Connection Manager</p></div></li>
<li>Configure the new OAuth Connection for <strong>QuickBooks Online</strong> as below.<br />
Basically, you need to configure the configurations of App on the General tab (i.e. OAuth Provider, Client ID, Client Secret, Scopes, etc.)</p>
<div id="attachment_4776" style="width: 781px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-oauth-connection-manager-for-intuit-quickbooks-online-api-general-tab.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4776" class="size-full wp-image-4776" src="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-oauth-connection-manager-for-intuit-quickbooks-online-api-general-tab.png" alt="SSIS OAuth Connection Manager: General Tab Configurations" width="771" height="697" srcset="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-oauth-connection-manager-for-intuit-quickbooks-online-api-general-tab.png 771w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-oauth-connection-manager-for-intuit-quickbooks-online-api-general-tab-300x271.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-oauth-connection-manager-for-intuit-quickbooks-online-api-general-tab-768x694.png 768w" sizes="(max-width: 771px) 100vw, 771px" /></a><p id="caption-attachment-4776" class="wp-caption-text">SSIS OAuth Connection Manager: General Tab Configurations</p></div></li>
<li>also, most importantly, you need to Enter your Callback URL in Advanced Tab.
<div id="attachment_4777" style="width: 781px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-oauth-connection-manager-for-intuit-quickbooks-online-api-advanced-tab.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4777" class="size-full wp-image-4777" src="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-oauth-connection-manager-for-intuit-quickbooks-online-api-advanced-tab.png" alt="SSIS OAuth Connection Manager: Advanced Tab Configurations" width="771" height="697" srcset="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-oauth-connection-manager-for-intuit-quickbooks-online-api-advanced-tab.png 771w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-oauth-connection-manager-for-intuit-quickbooks-online-api-advanced-tab-300x271.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-oauth-connection-manager-for-intuit-quickbooks-online-api-advanced-tab-768x694.png 768w" sizes="(max-width: 771px) 100vw, 771px" /></a><p id="caption-attachment-4777" class="wp-caption-text">SSIS OAuth Connection Manager: Advanced Tab Configurations</p></div></li>
<li>finally, you need to check &#8220;<strong>Do not include credentials in header</strong>&#8221;
<div id="attachment_4778" style="width: 781px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-oauth-connection-manager-for-intuit-quickbooks-online-api-oauth-2-grant-options-tab.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4778" class="size-full wp-image-4778" src="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-oauth-connection-manager-for-intuit-quickbooks-online-api-oauth-2-grant-options-tab.png" alt="SSIS OAuth Connection Manager: OAuth2 Grant Options Tab Configurations" width="771" height="697" srcset="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-oauth-connection-manager-for-intuit-quickbooks-online-api-oauth-2-grant-options-tab.png 771w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-oauth-connection-manager-for-intuit-quickbooks-online-api-oauth-2-grant-options-tab-300x271.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-oauth-connection-manager-for-intuit-quickbooks-online-api-oauth-2-grant-options-tab-768x694.png 768w" sizes="(max-width: 771px) 100vw, 771px" /></a><p id="caption-attachment-4778" class="wp-caption-text">SSIS OAuth Connection Manager: OAuth2 Grant Options Tab Configurations</p></div></li>
<li>finally, you are done with the OAuth Configurations. Click on Generate Token button to Generate token and then click on Test Connection button and click on OK to save the connection manager configurations settings.</li>
</ol>
<h4>Configure XML Source Component to read data from QuickBooks Online</h4>
<ol>
<li>First of all, Create a new SSIS Project or Open Existing Project in Visual Studio  (File &gt; New &gt; Project &gt; Business Intelligence &gt; Integration Services)</li>
<li>Once SSIS Package is open, Goto Data Flow Section, Drag and Drop <a href="https://zappysys.com/products/ssis-powerpack/ssis-xml-source/">ZS XML Source Component</a> from the SSIS Toolbox.
<div id="attachment_4779" style="width: 756px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-xml-source-drag-and-drop-component.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4779" class="wp-image-4779 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-xml-source-drag-and-drop-component.png" alt="Drag and Drop XML Source Component to read data from QuickBooks Online" width="746" height="396" srcset="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-xml-source-drag-and-drop-component.png 746w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-xml-source-drag-and-drop-component-300x159.png 300w" sizes="(max-width: 746px) 100vw, 746px" /></a><p id="caption-attachment-4779" class="wp-caption-text">Drag and Drop XML Source Component</p></div></li>
<li>furthermore, Double click on that Component to Edit the Configurations. Select File path or web URL from the Access Mode drop-down.<br />
Enter Web URL like this:<br />
<code class=" language-html"><span class="token url_links2">&lt;RequestURL&gt;/v3/company/&lt;realmID&gt;/query?query=&lt;selectStatement&gt;</span></code>here, We have used 3 placeholders<strong>.<br />
* &lt;RequestURL&gt;</strong>is either a SandBox base URL or Production base URL.<br />
<pre class="crayon-plain-tag">Sandbox Base URL: https://sandbox-quickbooks.api.intuit.com
Production Base URL: https://quickbooks.api.intuit.com</pre>
* <strong>&lt;realmID&gt; </strong>is your QuickBooks Online sandbox/production <strong>company ID</strong>.<br />
* <strong>&lt;selectStatement&gt; </strong>can be any query something like <strong>select * from invoice where id = &#8216;239&#8217; (Select statement must be URL Encoded first, For URL Encode you can use ZappySys&#8217;s inbuilt functions for URL Encoding <a href="https://zappysys.com/onlinehelp/ssis-powerpack/scr/ssis-format-specifiers.htm">See this</a>)<br />
For more information on Query, an Invoice Request API <a href="https://developer.intuit.com/docs/api/accounting/invoice">see this</a><br />
</strong>You can use Variable too in your Request URL, to make URL Dynamic, See the below-attached Screenshot.<br />
To make URL dynamic first create an SSIS variable like below screenshot and then change URL to use <a href="https://zappysys.com/onlinehelp/ssis-powerpack/scr/ssis-format-specifiers.htm" target="_blank" rel="noopener">Variable Placeholder</a> like this<br />
<pre class="crayon-plain-tag">https://sandbox-quickbooks.api.intuit.com/v3/company/{{User::CompanyID}}/query?query={{User::SelectQuery,FUN_URLENC}}</pre>
<div id="attachment_4781" style="width: 848px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-xml-source-enter-request-url.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4781" class="wp-image-4781 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-xml-source-enter-request-url.png" alt="SSIS XML Source Component: Enter Request URL to read data from QuickBooks Online" width="838" height="730" srcset="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-xml-source-enter-request-url.png 838w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-xml-source-enter-request-url-300x261.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-xml-source-enter-request-url-768x669.png 768w" sizes="(max-width: 838px) 100vw, 838px" /></a><p id="caption-attachment-4781" class="wp-caption-text">SSIS XML Source Component: Enter Request URL</p></div></li>
<li> After that, Check the <strong>Use Credentials</strong> checkbox and Select your OAUTH Connection Manager from the drop-down.
<div id="attachment_4783" style="width: 937px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-xml-source-select-oauth-connection-manager.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4783" class="wp-image-4783 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-xml-source-select-oauth-connection-manager.png" alt="SSIS XML Source Component: Check Use Credentials and Select OAuth Connection Manager to read data from QuickBooks Online" width="927" height="737" srcset="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-xml-source-select-oauth-connection-manager.png 927w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-xml-source-select-oauth-connection-manager-300x239.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-xml-source-select-oauth-connection-manager-768x611.png 768w" sizes="(max-width: 927px) 100vw, 927px" /></a><p id="caption-attachment-4783" class="wp-caption-text">SSIS XML Source Component: Check Use Credentials and Select OAuth Connection Manager</p></div></li>
<li>furthermore, Select the Filter to set the Filter.
<div id="attachment_4784" style="width: 1130px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-xml-source-query-invoice-set-filter.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4784" class="wp-image-4784 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-xml-source-query-invoice-set-filter.png" alt="SSIS XML Source Component: Select Filter to read data from QuickBooks Online" width="1120" height="728" srcset="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-xml-source-query-invoice-set-filter.png 1120w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-xml-source-query-invoice-set-filter-300x195.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-xml-source-query-invoice-set-filter-768x499.png 768w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-xml-source-query-invoice-set-filter-1024x666.png 1024w" sizes="(max-width: 1120px) 100vw, 1120px" /></a><p id="caption-attachment-4784" class="wp-caption-text">SSIS XML Source Component: Select Filter</p></div></li>
<li>It seems like you are all OK with the configurations, Click on Preview button to see the response data.
<div id="attachment_4785" style="width: 1310px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-xml-source-all-invoices-see-preview.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4785" class="wp-image-4785 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-xml-source-all-invoices-see-preview.png" alt="SSIS XML Source Component: See Preview to read data from QuickBooks Online" width="1300" height="729" srcset="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-xml-source-all-invoices-see-preview.png 1300w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-xml-source-all-invoices-see-preview-300x168.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-xml-source-all-invoices-see-preview-768x431.png 768w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-xml-source-all-invoices-see-preview-1024x574.png 1024w" sizes="(max-width: 1300px) 100vw, 1300px" /></a><p id="caption-attachment-4785" class="wp-caption-text">SSIS XML Source Component: See Preview</p></div></li>
<li>finally, Click on OK button to save JSON Source settings.</li>
</ol>
<h4>Configure OLE DB Destination Component for dumping Invoices data into SQL</h4>
<ol>
<li>first of all, Drag any destination (i.e. OLEDB Destination) from your SSIS toolbox. For demo purpose, we will load QuickBooks Online Invoices data into SQL Server Table.
<div id="attachment_4798" style="width: 899px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-ole-db-destination-component-drag-and-drop.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4798" class="size-full wp-image-4798" src="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-ole-db-destination-component-drag-and-drop.png" alt="Drag and Drop OLE DB Destination Component" width="889" height="542" srcset="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-ole-db-destination-component-drag-and-drop.png 889w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-ole-db-destination-component-drag-and-drop-300x183.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-ole-db-destination-component-drag-and-drop-768x468.png 768w" sizes="(max-width: 889px) 100vw, 889px" /></a><p id="caption-attachment-4798" class="wp-caption-text">Drag and Drop OLE DB Destination Component</p></div></li>
<li>Configure OLEDB Destination (Select Connection and Target Table). You can Create a new Table for the destination by clicking a NEW button next to Table drop-down.
<div id="attachment_4799" style="width: 1171px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-ole-db-destination-for-dumping-invoices-data-in-sql.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4799" class="size-full wp-image-4799" src="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-ole-db-destination-for-dumping-invoices-data-in-sql.png" alt="OLE DB Destination Component - Configure for dumping Invoices from QuickBooks Online data in SQL Table" width="1161" height="772" srcset="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-ole-db-destination-for-dumping-invoices-data-in-sql.png 1161w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-ole-db-destination-for-dumping-invoices-data-in-sql-300x199.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-ole-db-destination-for-dumping-invoices-data-in-sql-768x511.png 768w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-ole-db-destination-for-dumping-invoices-data-in-sql-1024x681.png 1024w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-ole-db-destination-for-dumping-invoices-data-in-sql-272x182.png 272w" sizes="(max-width: 1161px) 100vw, 1161px" /></a><p id="caption-attachment-4799" class="wp-caption-text">OLE DB Destination Component &#8211; Configure for dumping Invoices from QuickBooks Online data in SQL Table</p></div></li>
<li>almost you are done with the configurations, just need to configure mappings, So for that Click on the Columns Tab to configure Mappings. also, Click on OK button to Save the configurations of OLE DB Destination Component.
<div id="attachment_4800" style="width: 834px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-ole-db-destination-configure-column-mappings.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4800" class="size-full wp-image-4800" src="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-ole-db-destination-configure-column-mappings.png" alt="OLE DB Destination - Column Configurations" width="824" height="718" srcset="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-ole-db-destination-configure-column-mappings.png 824w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-ole-db-destination-configure-column-mappings-300x261.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-ole-db-destination-configure-column-mappings-768x669.png 768w" sizes="(max-width: 824px) 100vw, 824px" /></a><p id="caption-attachment-4800" class="wp-caption-text">OLE DB Destination &#8211; Column Configurations</p></div></li>
<li>finally, Execute your package to Load Invoices data from QuickBooks Online to SQL Server.
<div id="attachment_4801" style="width: 680px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-package-successfull-execution.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4801" class="size-full wp-image-4801" src="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-package-successfull-execution.png" alt="Package executed successfully: Invoices data dumped to SQL" width="670" height="447" srcset="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-package-successfull-execution.png 670w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-package-successfull-execution-300x200.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-package-successfull-execution-272x182.png 272w" sizes="(max-width: 670px) 100vw, 670px" /></a><p id="caption-attachment-4801" class="wp-caption-text">Package executed successfully: Invoices data dumped into SQL</p></div></li>
<li>After that, you can see the dumped records into SQL Table.
<div id="attachment_4802" style="width: 1350px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/09/quick-books-online-invoices-data-dumped-in-sql.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4802" class="size-full wp-image-4802" src="https://zappysys.com/blog/wp-content/uploads/2018/09/quick-books-online-invoices-data-dumped-in-sql.png" alt="SQL Table: see the inserted records after the complete Package execution" width="1340" height="457" srcset="https://zappysys.com/blog/wp-content/uploads/2018/09/quick-books-online-invoices-data-dumped-in-sql.png 1340w, https://zappysys.com/blog/wp-content/uploads/2018/09/quick-books-online-invoices-data-dumped-in-sql-300x102.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/09/quick-books-online-invoices-data-dumped-in-sql-768x262.png 768w, https://zappysys.com/blog/wp-content/uploads/2018/09/quick-books-online-invoices-data-dumped-in-sql-1024x349.png 1024w" sizes="(max-width: 1340px) 100vw, 1340px" /></a><p id="caption-attachment-4802" class="wp-caption-text">SQL Table: see the inserted records after the complete Package execution</p></div></li>
</ol>
<h2>Create a new Invoice on Quick Books Online (Use SSIS REST API Task)</h2>
<p>Now let&#8217;s look at one more example to call Quick Books Online REST API. This time we will create a new Invoice using REST API call in SSIS. For this, we will use <a href="https://zappysys.com/products/ssis-powerpack/ssis-rest-api-web-service-task/">SSIS REST API Task</a></p>
<ol>
<li>First of All, Goto Control Flow Section, Drag and Drop <a href="https://zappysys.com/products/ssis-powerpack/ssis-rest-api-web-service-task/">SSIS REST API Task</a> from the SSIS Toolbox.
<div id="attachment_3777" style="width: 577px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/05/ssis-rest-api-task-share-post-on-linkedin.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3777" class="wp-image-3777 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/05/ssis-rest-api-task-share-post-on-linkedin.png" alt="Drag and Drop REST API Task" width="567" height="297" srcset="https://zappysys.com/blog/wp-content/uploads/2018/05/ssis-rest-api-task-share-post-on-linkedin.png 567w, https://zappysys.com/blog/wp-content/uploads/2018/05/ssis-rest-api-task-share-post-on-linkedin-300x157.png 300w" sizes="(max-width: 567px) 100vw, 567px" /></a><p id="caption-attachment-3777" class="wp-caption-text">Drag and Drop REST API Task</p></div></li>
<li>furthermore, Double click on that Component to Edit the Configurations and Configure the task like the below-attached screesnshot.<br />
<pre class="crayon-plain-tag">::::: Request Settings :::::

* Select Request URL Access Mode to select Url from Connection.
* Select Url Connection: Select your created OAUTH Connection Manager.
* Enter Reqeust URL
      Request URL: POST &lt;RequestURL&gt;/v3/company/&lt;realmID&gt;/invoice
      here, 
      &lt;RequestURL&gt; is either a SandBox base URL OR Production base URL.
      SandBox base URL: https://sandbox-quickbooks.api.intuit.com
      Production base URL: https://quickbooks.api.intuit.com
      &lt;realmID&gt; is your QuickBooks Online sandbox/production company ID.
* Select HTTP Request Method as POST method
* Enter Request Body.
      Request Body:
      {
	"Line": [{
		"Amount": 100.00,
		"DetailType": "SalesItemLineDetail",
		"SalesItemLineDetail": {
			"ItemRef": {
				"value": "1",
				"name": "Services"
			},
			"TaxCodeRef": {
				"value":"20"
			}
		}
	}],
	"CustomerRef": {
		"value": "1"
	}
      }
* Select Body Content Type: application/json
(For more Information See this QuickBooks Online API Documentation for Creating a new Invoice, 
https://developer.intuit.com/docs/api/accounting/invoice)</pre>
<div id="attachment_4804" style="width: 1175px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-rest-api-task-intuit-create-invoice-configurations.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4804" class="wp-image-4804 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-rest-api-task-intuit-create-invoice-configurations.png" alt="REST API Task: QuickBooks Online REST API Configurations" width="1165" height="690" srcset="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-rest-api-task-intuit-create-invoice-configurations.png 1165w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-rest-api-task-intuit-create-invoice-configurations-300x178.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-rest-api-task-intuit-create-invoice-configurations-768x455.png 768w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-rest-api-task-intuit-create-invoice-configurations-1024x606.png 1024w" sizes="(max-width: 1165px) 100vw, 1165px" /></a><p id="caption-attachment-4804" class="wp-caption-text">REST API Task: QuickBooks Online REST API Configurations</p></div></li>
<li>So all good with the Configurations let&#8217;s do Test Request/Response by clicking on Test Request/Response button. See the below-attached request/response screen.
<div id="attachment_4805" style="width: 1282px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-rest-api-task-intuit-create-invoice-test-request-response.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4805" class="wp-image-4805 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-rest-api-task-intuit-create-invoice-test-request-response.png" alt="Create New Invoice in QuickBooks Online Account: Do Test Request/Response" width="1272" height="693" srcset="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-rest-api-task-intuit-create-invoice-test-request-response.png 1272w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-rest-api-task-intuit-create-invoice-test-request-response-300x163.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-rest-api-task-intuit-create-invoice-test-request-response-768x418.png 768w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-rest-api-task-intuit-create-invoice-test-request-response-1024x558.png 1024w" sizes="(max-width: 1272px) 100vw, 1272px" /></a><p id="caption-attachment-4805" class="wp-caption-text">Create New Invoice in QuickBooks Online Account: Do Test Request/Response</p></div></li>
<li>finally, you have created an Invoice in QuickBooks Online successfully using QuickBooks Online&#8217;s Intuit REST API and REST API Task, See in QuickBooks Online Site.
<div id="attachment_4806" style="width: 1586px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/09/see-the-newly-created-invoice-in-intuit-quick-books-site.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4806" class="wp-image-4806 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/09/see-the-newly-created-invoice-in-intuit-quick-books-site.png" alt="QuickBooks Online Site: See the Newly Created Invoice" width="1576" height="563" srcset="https://zappysys.com/blog/wp-content/uploads/2018/09/see-the-newly-created-invoice-in-intuit-quick-books-site.png 1576w, https://zappysys.com/blog/wp-content/uploads/2018/09/see-the-newly-created-invoice-in-intuit-quick-books-site-300x107.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/09/see-the-newly-created-invoice-in-intuit-quick-books-site-768x274.png 768w, https://zappysys.com/blog/wp-content/uploads/2018/09/see-the-newly-created-invoice-in-intuit-quick-books-site-1024x366.png 1024w" sizes="(max-width: 1576px) 100vw, 1576px" /></a><p id="caption-attachment-4806" class="wp-caption-text">QuickBooks Online Site: See the Newly Created Invoice</p></div></li>
<li>And that&#8217;s it. similarly, you can Update/Delete particular Invoice in Invoices List in QuickBooks Online.</li>
</ol>
<h2><span id="Conclusion">Conclusion</span></h2>
<p>In this blog, we learned how to read QuickBooks Online Invoices data in SSIS, How to Create an Intuit Developer Account, How to Create QuickBooks Online App for QuickBooks Online REST API OAuth Connection, How to get all Invoices data from QuickBooks Online and create a new Invoice on QuickBooks Online with SSIS using <a href="https://zappysys.com/products/ssis-powerpack/ssis-xml-source/">ZS XML Source Component</a> and <a href="https://zappysys.com/products/ssis-powerpack/ssis-rest-api-web-service-task/">SSIS REST API Task</a> in a very simple way. You can achieve many more functionalities with the use of both of these tools. Check our blogs/articles on <strong>REST API Task </strong><a href="https://zappysys.com/blog/tag/ssis-rest-api-task/">https://zappysys.com/blog/tag/ssis-rest-api-task/</a> and <strong>XML Source Component </strong><a href="https://zappysys.com/blog/tag/ssis-xml-source/">https://zappysys.com/blog/tag/ssis-xml-source/</a> to find out what <em>these tools</em> are capable of more.</p>
<h2><span id="References">References</span></h2>
<p>Finally, you can use the following links for more information about the use of QuickBooks Online REST API with our tools:</p>
<ul>
<li><a href="https://developer.intuit.com/docs/00_quickbooks_online/2_build/60_tutorials">QuickBooks Online Documentation for REST API</a></li>
<li><strong>Landing Page</strong> for <a href="https://zappysys.com/products/ssis-powerpack/ssis-rest-api-web-service-task/">REST API Task</a>, you can also find <a href="https://youtu.be/jPdcQlWOBZA">Tutorial Video</a> here.</li>
<li><strong>Landing Page</strong> for <a href="https://zappysys.com/products/ssis-powerpack/ssis-xml-source/">XML Source Component</a>, you can also find <a href="https://youtu.be/2Li6Vy-nQvw">Tutorial Video</a> here.</li>
<li><strong>Help File:</strong> Documentation of <a href="https://zappysys.com/onlinehelp/ssis-powerpack/index.htm#page=ssis-rest-api-web-service-task.htm">SSIS REST API Task</a> and <a href="https://zappysys.com/onlinehelp/ssis-powerpack/index.htm#page=ssis-xml-source.htm">XML Source Component</a>.</li>
</ul>
<p>&nbsp;</p>
</div>
<p>The post <a href="https://zappysys.com/blog/read-data-quickbooks-online-using-ssis/">How to read data from QuickBooks Online in SSIS</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How to read data from NetSuite in SSIS (SimpleTalk SOAP API)</title>
		<link>https://zappysys.com/blog/read-data-netsuite-ssis-simpletalk-soap-api/</link>
		
		<dc:creator><![CDATA[ZappySys]]></dc:creator>
		<pubDate>Thu, 06 Sep 2018 15:59:12 +0000</pubDate>
				<category><![CDATA[REST API Integration]]></category>
		<category><![CDATA[SSIS Components]]></category>
		<category><![CDATA[SSIS PowerPack]]></category>
		<category><![CDATA[SSIS XML Source (File / SOAP)]]></category>
		<category><![CDATA[NetSuite]]></category>
		<category><![CDATA[soap]]></category>
		<guid isPermaLink="false">https://zappysys.com/blog/?p=4755</guid>

					<description><![CDATA[<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. &#160; &#160; 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. [&#8230;]</p>
<p>The post <a href="https://zappysys.com/blog/read-data-netsuite-ssis-simpletalk-soap-api/">How to read data from NetSuite in SSIS (SimpleTalk SOAP API)</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Introduction</h2>
<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>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="content_block" id="custom_post_widget-2523"><h2><span id="Prerequisites">Prerequisites</span></h2>
Before we perform the steps listed in this article, you will need to make sure the following prerequisites are met:
<ol style="margin-left: 1.5em;">
 	<li><abbr title="SQL Server Integration Services">SSIS</abbr> designer installed. Sometimes 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>
 	<li>Basic knowledge of SSIS package development using <em>Microsoft SQL Server Integration Services</em>.</li>
 	<li>Make sure <span style="text-decoration: underline;"><a href="https://zappysys.com/products/ssis-powerpack/" target="_blank" rel="noopener">ZappySys SSIS PowerPack</a></span> is installed (<a href="https://zappysys.com/products/ssis-powerpack/download/" target="_blank" rel="noopener">download it</a>, if you haven't already).</li>
 	<li>(<em>Optional step</em>)<em>.</em> <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>
</ol></div>
<h2><span id="What_is_NetSuite_CRM">What is NetSuite CRM?</span></h2>
<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>
<h2><span id="Getting_Started">Preparing for NetSuite WebService Call in SSIS</span></h2>
<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>
<div class="content_block" id="custom_post_widget-5058"><h3>How to enable NetSuite Web Service Feature</h3>
Before you call any NetSuite SOAP API (i.e. <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).

<a href="https://system.netsuite.com/app/help/helpcenter.nl?fid=section_N3419926.html" target="_blank" rel="noopener">Click this link</a> to see steps to enable Web Service Feature
<div id="attachment_4616" class="wp-caption alignnone">

<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>
<p class="wp-caption-text">Enable NetSuite Web Service Feature (SuiteTalk API)</p>

</div>
<h3><span id="Obtain_NetSuite_Account_ID">Obtain NetSuite Account ID</span></h3>
NetSuite Account ID is needed by Login API call. So perform following steps if you dont know account id.
<ol>
 	<li>Login to your NetSuite Portal</li>
 	<li>Click the <strong>Setup Tab</strong></li>
 	<li>In the drop-down click <strong>Integration</strong> &gt;  <strong>Web services preferences</strong></li>
 	<li>On that page you will find your Account ID (<strong>example account ID = TSTDRV1234567</strong> )</li>
</ol>
<div id="attachment_4620" class="wp-caption alignnone">

<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>
<p class="wp-caption-text">Obtain NetSuite Account ID (Needed for Web Service Login)</p>

</div>
<h3><span id="Obtain_NetSuite_Application_ID">Obtain NetSuite Application ID</span></h3>
Once you have account ID now we need to get Application ID. For that follow these steps.
<ol>
 	<li>Login to your NetSuite Portal</li>
 	<li>Click the <strong>Setup Tab</strong></li>
 	<li>In the drop-down click <strong>Integration</strong> &gt;  <strong>Manage Integrations</strong></li>
 	<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> )</li>
 	<li>If you don’t have any application created yet then just click on New.</li>
</ol>
<div id="attachment_4619" class="wp-caption alignnone">

<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>
<p class="wp-caption-text">Create new App / Get NetSuite Application ID</p>

</div>
<h3></h3></div>
<div class="content_block" id="custom_post_widget-5098"><h2>Understanding how NetSuite SOAP API Call works</h2>
In 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.

There are two steps involved before you can call any SOAP API in NetSuite.
<ol>
 	<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 JSESSIONID from response Cookie (This token expires after some time)</li>
 	<li>Call any other API (Pass obtained JSESSIONID token in Cookie header)</li>
</ol>
<h3>NetSuite Login Call</h3>
<strong>Request</strong>
<pre class="lang:default highlight:0 decode:true">POST https://webservices.netsuite.com/services/NetSuitePort_2017_1
Content-Type: text/xml;charset=UTF-8
SOAPAction: "login"
Accept-Encoding: gzip, deflate

&lt;?xml version="1.0" encoding="utf-8"?&gt;
&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;
  &lt;soap:Header&gt;
    &lt;applicationInfo xmlns="urn:messages_2017_1.platform.webservices.netsuite.com"&gt;
      &lt;applicationId&gt;xxxxxxxxxxxxxx&lt;/applicationId&gt;
    &lt;/applicationInfo&gt;
  &lt;/soap:Header&gt;
  &lt;soap:Body&gt;
    &lt;login xmlns="urn:messages_2017_1.platform.webservices.netsuite.com"&gt;
      &lt;passport&gt;
        &lt;email xmlns="urn:core_2017_1.platform.webservices.netsuite.com"&gt;xxxxxxxxxxxxx&lt;/email&gt;
        &lt;password xmlns="urn:core_2017_1.platform.webservices.netsuite.com"&gt;xxxxxxxxxxxx&lt;/password&gt;
        &lt;account xmlns="urn:core_2017_1.platform.webservices.netsuite.com"&gt;TSTxxxxxxxxxxxxxxx&lt;/account&gt;
        &lt;role internalId="3" xmlns="urn:core_2017_1.platform.webservices.netsuite.com" /&gt;
      &lt;/passport&gt;
    &lt;/login&gt;
  &lt;/soap:Body&gt;
&lt;/soap:Envelope&gt;</pre>
<strong>Response</strong>

Notice JSESSIONID=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).
<pre class="lang:default highlight:0 decode:true">HTTP/1.1 200 OK
Date: Wed, 03 Oct 2018 16:50:41 GMT
Content-Length: 1676
Content-Type: text/xml; charset=utf-8
X-N-OperationId: 777274f6-49c6-4883-bcd1-1d70df90d78e
Strict-Transport-Security: max-age=31536000
NS_RTIMER_COMPOSITE: 13633xxxxxxxxx:70617xxxxxxxxxxxxx36F6D:80
Set-Cookie: JSESSIONID=6xI61rdFt26pxxxxxxxxxxxxxxxqvJIMlu!-17981123445; path=/; secure; HttpOnly
Set-Cookie: NS_VER=2018.1.0; domain=webservices.netsuite.com; path=/
Set-Cookie: NS_ROUTING_VERSION=LAGGING; path=/
P3P: CP="CAO PSAa OUR BUS PUR"
Vary: User-Agent
Keep-Alive: timeout=10, max=990
Connection: Keep-Alive

&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&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;
  &lt;soapenv:Header&gt;
    &lt;platformMsgs:documentInfo xmlns:platformMsgs="urn:messages_2017_1.platform.webservices.netsuite.com"&gt;
      &lt;platformMsgs:nsId&gt;WEBSERVICES_xxxxxxxxxxxxxxxxx_9fc719&lt;/platformMsgs:nsId&gt;
    &lt;/platformMsgs:documentInfo&gt;
  &lt;/soapenv:Header&gt;
  &lt;soapenv:Body&gt;
    &lt;loginResponse xmlns="urn:messages_2017_1.platform.webservices.netsuite.com"&gt;
      &lt;sessionResponse xmlns="urn:messages_2017_1.platform.webservices.netsuite.com"&gt;
        &lt;ns1:status isSuccess="true" xmlns:ns1="urn:core_2017_1.platform.webservices.netsuite.com"/&gt;
        &lt;ns2:wsRoleList xmlns:ns2="urn:core_2017_1.platform.webservices.netsuite.com"&gt;
          &lt;ns2:wsRole&gt;
            &lt;ns2:role internalId="3"&gt;
              &lt;ns2:name&gt;Administrator&lt;/ns2:name&gt;
            &lt;/ns2:role&gt;
            &lt;ns2:isDefault&gt;false&lt;/ns2:isDefault&gt;
            &lt;ns2:isInactive&gt;false&lt;/ns2:isInactive&gt;
          &lt;/ns2:wsRole&gt;
          &lt;ns2:wsRole&gt;
            &lt;ns2:role internalId="15"&gt;
              &lt;ns2:name&gt;Employee Center&lt;/ns2:name&gt;
            &lt;/ns2:role&gt;
            &lt;ns2:isDefault&gt;false&lt;/ns2:isDefault&gt;
            &lt;ns2:isInactive&gt;false&lt;/ns2:isInactive&gt;
          &lt;/ns2:wsRole&gt;
      &lt;/sessionResponse&gt;
    &lt;/loginResponse&gt;
  &lt;/soapenv:Body&gt;
&lt;/soapenv:Envelope&gt;</pre>
&nbsp;
<h3>NetSuite API Call ( getAll method )</h3>
Now 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>.

You can use NetSuite WSDL file <a href="http://www.netsuite.com/portal/developers/resources/suitetalk-documentation.shtml" target="_blank" rel="noopener">from here</a> and import it in <a href="https://zappysys.com/blog/calling-soap-web-service-in-ssis-xml-source/" target="_blank" rel="noopener">SoapUI</a>.

<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>

&nbsp;

<strong>Request</strong>

See 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.
<pre class="lang:default highlight:0 decode:true">POST https://webservices.netsuite.com/services/NetSuitePort_2017_1
Content-Type: text/xml;charset=UTF-8
SOAPAction: "getAll"
Cookie: JSESSIONID=6xI61rxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxMlu!-1798141234
Accept-Encoding: gzip, deflate

&lt;soapenv:Envelope 
   xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
   xmlns:urn="urn:messages_2018_1.platform.webservices.netsuite.com" 
   xmlns:urn1="urn:core_2018_1.platform.webservices.netsuite.com"&gt;
   &lt;soapenv:Body&gt;
      &lt;urn:getAll&gt;
         &lt;record recordType="currency"/&gt; 
      &lt;/urn:getAll&gt;
   &lt;/soapenv:Body&gt;
&lt;/soapenv:Envelope&gt;</pre>
<strong>Response</strong>
<pre class="lang:default highlight:0 decode:true">HTTP/1.1 200 OK
Date: Wed, 03 Oct 2018 16:50:42 GMT
Content-Length: 9648
Content-Type: text/xml; charset=utf-8
X-N-OperationId: 1b2989e4-b930-4a72-b471-00a8e131dfd4
NS_RTIMER_COMPOSITE: 21403xxxxxx:706172746E65xxxxxxxxxxxx6F6D:80
Strict-Transport-Security: max-age=31536000
P3P: CP="CAO PSAa OUR BUS PUR"
Vary: User-Agent

&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&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;
  &lt;soapenv:Header&gt;
    &lt;platformMsgs:documentInfo xmlns:platformMsgs="urn:messages_2017_1.platform.webservices.netsuite.com"&gt;
      &lt;platformMsgs:nsId&gt;WEBSERVICES_TSTDRV1439151_100320189871507121000128715_6ae8e8&lt;/platformMsgs:nsId&gt;
    &lt;/platformMsgs:documentInfo&gt;
  &lt;/soapenv:Header&gt;
  &lt;soapenv:Body&gt;
    &lt;getAllResponse xmlns="urn:messages_2018_1.platform.webservices.netsuite.com"&gt;
      &lt;platformCore:getAllResult xmlns:platformCore="urn:core_2017_1.platform.webservices.netsuite.com"&gt;
        &lt;platformCore:status isSuccess="true" /&gt;
        &lt;platformCore:totalRecords&gt;11&lt;/platformCore:totalRecords&gt;
        &lt;platformCore:recordList&gt;
          &lt;platformCore:record internalId="1" xsi:type="listAcct:Currency" xmlns:listAcct="urn:accounting_2017_1.lists.webservices.netsuite.com"&gt;
            &lt;listAcct:name&gt;USD&lt;/listAcct:name&gt;
            &lt;listAcct:symbol&gt;USD&lt;/listAcct:symbol&gt;
            &lt;listAcct:isBaseCurrency&gt;true&lt;/listAcct:isBaseCurrency&gt;
            &lt;listAcct:isInactive&gt;false&lt;/listAcct:isInactive&gt;
            &lt;listAcct:overrideCurrencyFormat&gt;false&lt;/listAcct:overrideCurrencyFormat&gt;
            &lt;listAcct:displaySymbol&gt;$&lt;/listAcct:displaySymbol&gt;
            &lt;listAcct:symbolPlacement&gt;_beforeNumber&lt;/listAcct:symbolPlacement&gt;
            &lt;listAcct:locale&gt;_unitedStatesEnglish&lt;/listAcct:locale&gt;
            &lt;listAcct:formatSample&gt;$1,234.56&lt;/listAcct:formatSample&gt;
            &lt;listAcct:exchangeRate&gt;1.0&lt;/listAcct:exchangeRate&gt;
            &lt;listAcct:fxRateUpdateTimezone&gt;_americaNewYork&lt;/listAcct:fxRateUpdateTimezone&gt;
            &lt;listAcct:currencyPrecision&gt;_two&lt;/listAcct:currencyPrecision&gt;
          &lt;/platformCore:record&gt;
          &lt;platformCore:record internalId="2" xsi:type="listAcct:Currency" xmlns:listAcct="urn:accounting_2017_1.lists.webservices.netsuite.com"&gt;
            &lt;listAcct:name&gt;GBP&lt;/listAcct:name&gt;
            &lt;listAcct:symbol&gt;GBP&lt;/listAcct:symbol&gt;
            &lt;listAcct:isBaseCurrency&gt;true&lt;/listAcct:isBaseCurrency&gt;
            &lt;listAcct:isInactive&gt;false&lt;/listAcct:isInactive&gt;
            &lt;listAcct:overrideCurrencyFormat&gt;false&lt;/listAcct:overrideCurrencyFormat&gt;
            &lt;listAcct:displaySymbol&gt;£&lt;/listAcct:displaySymbol&gt;
            &lt;listAcct:symbolPlacement&gt;_beforeNumber&lt;/listAcct:symbolPlacement&gt;
            &lt;listAcct:locale&gt;_unitedKingdomEnglish&lt;/listAcct:locale&gt;
            &lt;listAcct:formatSample&gt;£1,234.56&lt;/listAcct:formatSample&gt;
            &lt;listAcct:exchangeRate&gt;1.33165497&lt;/listAcct:exchangeRate&gt;
            &lt;listAcct:fxRateUpdateTimezone&gt;_americaNewYork&lt;/listAcct:fxRateUpdateTimezone&gt;
            &lt;listAcct:currencyPrecision&gt;_two&lt;/listAcct:currencyPrecision&gt;
          &lt;/platformCore:record&gt;
          &lt;platformCore:record internalId="3" xsi:type="listAcct:Currency" xmlns:listAcct="urn:accounting_2017_1.lists.webservices.netsuite.com"&gt;
            &lt;listAcct:name&gt;CAD&lt;/listAcct:name&gt;
            &lt;listAcct:symbol&gt;CAD&lt;/listAcct:symbol&gt;
            &lt;listAcct:isBaseCurrency&gt;true&lt;/listAcct:isBaseCurrency&gt;
            &lt;listAcct:isInactive&gt;false&lt;/listAcct:isInactive&gt;
            &lt;listAcct:overrideCurrencyFormat&gt;false&lt;/listAcct:overrideCurrencyFormat&gt;
            &lt;listAcct:displaySymbol&gt;$&lt;/listAcct:displaySymbol&gt;
            &lt;listAcct:symbolPlacement&gt;_beforeNumber&lt;/listAcct:symbolPlacement&gt;
            &lt;listAcct:locale&gt;_canadaEnglish&lt;/listAcct:locale&gt;
            &lt;listAcct:formatSample&gt;$1,234.56&lt;/listAcct:formatSample&gt;
            &lt;listAcct:exchangeRate&gt;0.76457273&lt;/listAcct:exchangeRate&gt;
            &lt;listAcct:fxRateUpdateTimezone&gt;_americaNewYork&lt;/listAcct:fxRateUpdateTimezone&gt;
            &lt;listAcct:currencyPrecision&gt;_two&lt;/listAcct:currencyPrecision&gt;
          &lt;/platformCore:record&gt;
        &lt;/platformCore:recordList&gt;
      &lt;/platformCore:getAllResult&gt;
    &lt;/getAllResponse&gt;
  &lt;/soapenv:Body&gt;
&lt;/soapenv:Envelope&gt;</pre>
<h3>NetSuite Search API (Pagination Example)</h3>
Now 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.

<strong>Request (Page-1)</strong>
<pre class="lang:default highlight:0 decode:true">POST https://webservices.netsuite.com/services/NetSuitePort_2017_1
Content-Type: text/xml; charset=utf-8
SOAPAction: "search"
Cookie: JSESSIONID=BKQ7xxxxxxxxxxxx4Ug!-995xxxxxx
Accept-Encoding: gzip, deflate

&lt;?xml version="1.0" encoding="utf-8"?&gt;
&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;
  &lt;soap:Header&gt;
    &lt;applicationInfo xmlns="urn:messages_2017_1.platform.webservices.netsuite.com"&gt;
      &lt;applicationId&gt;xxxxxxxxxxxxxxx&lt;/applicationId&gt;
    &lt;/applicationInfo&gt;
    &lt;searchPreferences xmlns="urn:messages_2017_1.platform.webservices.netsuite.com"&gt;
      &lt;pageSize&gt;50&lt;/pageSize&gt;
    &lt;/searchPreferences&gt;
  &lt;/soap:Header&gt;
  &lt;soap:Body&gt;
    &lt;search xmlns="urn:messages_2017_1.platform.webservices.netsuite.com"&gt;
      &lt;searchRecord xmlns:q1="urn:accounting_2017_1.lists.webservices.netsuite.com" xsi:type="q1:AccountSearch"&gt;
        &lt;q1:basic&gt;
          &lt;description operator="doesNotContain" xmlns="urn:common_2017_1.platform.webservices.netsuite.com"&gt;
            &lt;searchValue xmlns="urn:core_2017_1.platform.webservices.netsuite.com"&gt;x&lt;/searchValue&gt;
          &lt;/description&gt;
          &lt;name operator="contains" xmlns="urn:common_2017_1.platform.webservices.netsuite.com"&gt;
            &lt;searchValue xmlns="urn:core_2017_1.platform.webservices.netsuite.com"&gt;a&lt;/searchValue&gt;
          &lt;/name&gt;
        &lt;/q1:basic&gt;
      &lt;/searchRecord&gt;
    &lt;/search&gt;
  &lt;/soap:Body&gt;
&lt;/soap:Envelope&gt;</pre>
&nbsp;

<strong>Response (Page-1)</strong>

In 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.

<strong>platformCore:searchId</strong> = WEBSERVICES_ABCD_12345-xxxxxxxxx
<strong>platformCore:totalPages</strong> = 4
<pre class="lang:default highlight:0 decode:true">HTTP/1.1 200 OK
Date: Wed, 03 Oct 2018 18:40:33 GMT
Content-Length: 49266
Content-Type: text/xml; charset=utf-8
X-N-OperationId: c1e79336-63b7-4eb7-989e-5c3d24c56891
NS_RTIMER_COMPOSITE: 118xxxxxxxx:70617xxxxxxxxxxxxxxxxxxxxxD:80
Strict-Transport-Security: max-age=31536000
P3P: CP="CAO PSAa OUR BUS PUR"
Vary: User-Agent

&lt;?xml version="1.0" encoding="utf-8"?&gt;
&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;
  &lt;soapenv:Header&gt;
    &lt;platformMsgs:documentInfo xmlns:platformMsgs="urn:messages_2017_1.platform.webservices.netsuite.com"&gt;
      &lt;platformMsgs:nsId&gt;WEBSERVICES_ABCD_12345-xxxxxxxxx&lt;/platformMsgs:nsId&gt;
    &lt;/platformMsgs:documentInfo&gt;
  &lt;/soapenv:Header&gt;
  &lt;soapenv:Body&gt;
    &lt;searchResponse xmlns="urn:messages_2017_1.platform.webservices.netsuite.com"&gt;
      &lt;platformCore:searchResult xmlns:platformCore="urn:core_2017_1.platform.webservices.netsuite.com"&gt;
        &lt;platformCore:status isSuccess="true" /&gt;
        &lt;platformCore:totalRecords&gt;193&lt;/platformCore:totalRecords&gt;
        &lt;platformCore:pageSize&gt;50&lt;/platformCore:pageSize&gt;
        &lt;platformCore:totalPages&gt;4&lt;/platformCore:totalPages&gt;
        &lt;platformCore:pageIndex&gt;1&lt;/platformCore:pageIndex&gt;
        &lt;platformCore:searchId&gt;WEBSERVICES_ABCD_12345-xxxxxxxxx&lt;/platformCore:searchId&gt;
        &lt;platformCore:recordList&gt;
          &lt;platformCore:record internalId="1" xsi:type="listAcct:Account" xmlns:listAcct="urn:accounting_2017_1.lists.webservices.netsuite.com"&gt;
            &lt;listAcct:acctType&gt;_bank&lt;/listAcct:acctType&gt;
            &lt;listAcct:acctNumber&gt;1111&lt;/listAcct:acctNumber&gt;
            &lt;listAcct:acctName&gt;Checking&lt;/listAcct:acctName&gt;
            &lt;listAcct:includeChildren&gt;false&lt;/listAcct:includeChildren&gt;
            &lt;listAcct:currency internalId="1"&gt;
              &lt;platformCore:name&gt;USD&lt;/platformCore:name&gt;
            &lt;/listAcct:currency&gt;
            &lt;listAcct:generalRate&gt;_current&lt;/listAcct:generalRate&gt;
            &lt;listAcct:parent internalId="246"&gt;
              &lt;platformCore:name&gt;xxxxxxxxxxxxxxxxxxx&lt;/platformCore:name&gt;
            &lt;/listAcct:parent&gt;
            &lt;listAcct:cashFlowRate&gt;_average&lt;/listAcct:cashFlowRate&gt;
            &lt;listAcct:description&gt;Checking&lt;/listAcct:description&gt;
            &lt;listAcct:isInactive&gt;false&lt;/listAcct:isInactive&gt;
            &lt;listAcct:inventory&gt;false&lt;/listAcct:inventory&gt;
            &lt;listAcct:eliminate&gt;false&lt;/listAcct:eliminate&gt;
            &lt;listAcct:revalue&gt;true&lt;/listAcct:revalue&gt;
          &lt;/platformCore:record&gt;
          &lt;platformCore:record internalId="2" xsi:type="listAcct:Account" xmlns:listAcct="urn:accounting_2017_1.lists.webservices.netsuite.com"&gt;
            &lt;listAcct:acctType&gt;_bank&lt;/listAcct:acctType&gt;
            &lt;listAcct:acctNumber&gt;22222&lt;/listAcct:acctNumber&gt;
            &lt;listAcct:acctName&gt;Savings&lt;/listAcct:acctName&gt;
            &lt;listAcct:includeChildren&gt;false&lt;/listAcct:includeChildren&gt;
            &lt;listAcct:currency internalId="1"&gt;
              &lt;platformCore:name&gt;USD&lt;/platformCore:name&gt;
            &lt;/listAcct:currency&gt;
            &lt;listAcct:generalRate&gt;_current&lt;/listAcct:generalRate&gt;
            &lt;listAcct:parent internalId="246"&gt;
              &lt;platformCore:name&gt;yyyyyyyyy&lt;/platformCore:name&gt;
            &lt;/listAcct:parent&gt;
            &lt;listAcct:cashFlowRate&gt;_average&lt;/listAcct:cashFlowRate&gt;
            &lt;listAcct:description&gt;Savings&lt;/listAcct:description&gt;
            &lt;listAcct:isInactive&gt;false&lt;/listAcct:isInactive&gt;
            &lt;listAcct:inventory&gt;false&lt;/listAcct:inventory&gt;
            &lt;listAcct:eliminate&gt;false&lt;/listAcct:eliminate&gt;
            &lt;listAcct:revalue&gt;true&lt;/listAcct:revalue&gt;
          &lt;/platformCore:record&gt;
          .........
          .........
          .........
          .........		  
        &lt;/platformCore:recordList&gt;
      &lt;/platformCore:searchResult&gt;
    &lt;/searchResponse&gt;
  &lt;/soapenv:Body&gt;
&lt;/soapenv:Envelope&gt;</pre>
&nbsp;

<strong>Request (Page-2 and onwards)</strong>

Here is the second page request. Notice few things here. In heraders we are now sending <strong>SOAPAction: "searchMoreWithId"</strong> rather than <strong>"search"</strong>.  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.
<pre class="lang:default decode:true">POST https://webservices.netsuite.com/services/NetSuitePort_2017_1
Content-Type: text/xml; charset=utf-8
SOAPAction: "searchMoreWithId"
Cookie: JSESSIONID=BKQ7xxxxxxxxxxxx4Ug!-995xxxxxx
Accept-Encoding: gzip, deflate

&lt;?xml version="1.0" encoding="utf-8"?&gt;
&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;
  &lt;soap:Header&gt;
    &lt;applicationInfo xmlns="urn:messages_2017_1.platform.webservices.netsuite.com"&gt;
      &lt;applicationId&gt;xxxxxxxxxxxxxxxxxx&lt;/applicationId&gt;
    &lt;/applicationInfo&gt;
    &lt;searchPreferences xmlns="urn:messages_2017_1.platform.webservices.netsuite.com"&gt;
      &lt;pageSize&gt;50&lt;/pageSize&gt;
    &lt;/searchPreferences&gt;
  &lt;/soap:Header&gt;
  &lt;soap:Body&gt;
    &lt;searchMoreWithId xmlns="urn:messages_2017_1.platform.webservices.netsuite.com"&gt;
      &lt;searchId&gt;WEBSERVICES_ABCD_12345-xxxxxxxxx&lt;/searchId&gt;
      &lt;pageIndex&gt;2&lt;/pageIndex&gt;
    &lt;/searchMoreWithId&gt;
  &lt;/soap:Body&gt;
&lt;/soap:Envelope&gt;</pre>
<strong>Response (Page-2 and onwards)</strong>
<pre class="lang:default decode:true  ">HTTP/1.1 200 OK
Date: Wed, 03 Oct 2018 18:40:33 GMT
Content-Length: 49266
Content-Type: text/xml; charset=utf-8
X-N-OperationId: c1e79336-63b7-4eb7-989e-5c3d24c56891
NS_RTIMER_COMPOSITE: 118xxxxxxxx:70617xxxxxxxxxxxxxxxxxxxxxD:80
Strict-Transport-Security: max-age=31536000
P3P: CP="CAO PSAa OUR BUS PUR"
Vary: User-Agent

&lt;?xml version="1.0" encoding="utf-8"?&gt;
&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;
  &lt;soapenv:Header&gt;
    &lt;platformMsgs:documentInfo xmlns:platformMsgs="urn:messages_2017_1.platform.webservices.netsuite.com"&gt;
      &lt;platformMsgs:nsId&gt;WEBSERVICES_ABCD_12345-xxxxxxxxx&lt;/platformMsgs:nsId&gt;
    &lt;/platformMsgs:documentInfo&gt;
  &lt;/soapenv:Header&gt;
  &lt;soapenv:Body&gt;
    &lt;searchMoreWithIdResponse xmlns="urn:messages_2017_1.platform.webservices.netsuite.com"&gt;
      &lt;platformCore:searchResult xmlns:platformCore="urn:core_2017_1.platform.webservices.netsuite.com"&gt;
        &lt;platformCore:status isSuccess="true" /&gt;
        &lt;platformCore:totalRecords&gt;193&lt;/platformCore:totalRecords&gt;
        &lt;platformCore:pageSize&gt;50&lt;/platformCore:pageSize&gt;
        &lt;platformCore:totalPages&gt;4&lt;/platformCore:totalPages&gt;
        &lt;platformCore:pageIndex&gt;2&lt;/platformCore:pageIndex&gt;
        &lt;platformCore:searchId&gt;WEBSERVICES_ABCD_12345-xxxxxxxxx&lt;/platformCore:searchId&gt;
        &lt;platformCore:recordList&gt;
          &lt;platformCore:record internalId="1" xsi:type="listAcct:Account" xmlns:listAcct="urn:accounting_2017_1.lists.webservices.netsuite.com"&gt;
            &lt;listAcct:acctType&gt;_bank&lt;/listAcct:acctType&gt;
            &lt;listAcct:acctNumber&gt;8000&lt;/listAcct:acctNumber&gt;
            &lt;listAcct:acctName&gt;Checking&lt;/listAcct:acctName&gt;
            &lt;listAcct:includeChildren&gt;false&lt;/listAcct:includeChildren&gt;
            &lt;listAcct:currency internalId="1"&gt;
              &lt;platformCore:name&gt;USD&lt;/platformCore:name&gt;
            &lt;/listAcct:currency&gt;
            &lt;listAcct:generalRate&gt;_current&lt;/listAcct:generalRate&gt;
            &lt;listAcct:parent internalId="246"&gt;
              &lt;platformCore:name&gt;xxxxxxxxxxxxxxxxxxx&lt;/platformCore:name&gt;
            &lt;/listAcct:parent&gt;
            &lt;listAcct:cashFlowRate&gt;_average&lt;/listAcct:cashFlowRate&gt;
            &lt;listAcct:description&gt;Checking&lt;/listAcct:description&gt;
            &lt;listAcct:isInactive&gt;false&lt;/listAcct:isInactive&gt;
            &lt;listAcct:inventory&gt;false&lt;/listAcct:inventory&gt;
            &lt;listAcct:eliminate&gt;false&lt;/listAcct:eliminate&gt;
            &lt;listAcct:revalue&gt;true&lt;/listAcct:revalue&gt;
          &lt;/platformCore:record&gt;
          &lt;platformCore:record internalId="2" xsi:type="listAcct:Account" xmlns:listAcct="urn:accounting_2017_1.lists.webservices.netsuite.com"&gt;
            &lt;listAcct:acctType&gt;_bank&lt;/listAcct:acctType&gt;
            &lt;listAcct:acctNumber&gt;8001&lt;/listAcct:acctNumber&gt;
            &lt;listAcct:acctName&gt;Savings&lt;/listAcct:acctName&gt;
            &lt;listAcct:includeChildren&gt;false&lt;/listAcct:includeChildren&gt;
            &lt;listAcct:currency internalId="1"&gt;
              &lt;platformCore:name&gt;USD&lt;/platformCore:name&gt;
            &lt;/listAcct:currency&gt;
            &lt;listAcct:generalRate&gt;_current&lt;/listAcct:generalRate&gt;
            &lt;listAcct:parent internalId="246"&gt;
              &lt;platformCore:name&gt;yyyyyyyyy&lt;/platformCore:name&gt;
            &lt;/listAcct:parent&gt;
            &lt;listAcct:cashFlowRate&gt;_average&lt;/listAcct:cashFlowRate&gt;
            &lt;listAcct:description&gt;Savings&lt;/listAcct:description&gt;
            &lt;listAcct:isInactive&gt;false&lt;/listAcct:isInactive&gt;
            &lt;listAcct:inventory&gt;false&lt;/listAcct:inventory&gt;
            &lt;listAcct:eliminate&gt;false&lt;/listAcct:eliminate&gt;
            &lt;listAcct:revalue&gt;true&lt;/listAcct:revalue&gt;
          &lt;/platformCore:record&gt;
          .........
          .........
          .........
          .........		  
        &lt;/platformCore:recordList&gt;
      &lt;/platformCore:searchResult&gt;
    &lt;/searchMoreWithIdResponse&gt;
  &lt;/soapenv:Body&gt;
&lt;/soapenv:Envelope&gt;</pre>
&nbsp;

&nbsp;</div>
<p>&nbsp;</p>
<h2><span id="Getting_Started">Getting Started</span></h2>
<p>Now let’s check step by step instructions on <strong>how to load NetSuite data in SSIS</strong>. In this exercise we will focus on <a href="https://system.netsuite.com/app/help/helpcenter.nl?fid=section_N3519853.html" target="_blank" rel="noopener">calling search API</a> but you can call virtually any API using the same technique.</p>
<p>For detailed help on NetSuite SOAP API and other useful information check <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 <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 <strong>AccountSearch</strong> as below example. This name can be found <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> You can change it to something else. For now dont worry too much until we get to that point.</p>
<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">
<div class="crayon-main">
<div class="crayon-nums-content">
<div class="crayon-num" data-line="crayon-5bb3ef8dce2fc034493941-1"></div>
</div>
<div class="crayon-pre">
<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>
</div>
</div>
<div></div>
</div>
<h3>Configure SSIS HTTP Connection for NetSuite</h3>
<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>
<ol>
<li style="list-style-type: none;">
<ol>
<li>Open SSIS Package</li>
<li>Drag Data flow from SSIS Toolbox and double click it</li>
<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> and drag it on the surface.</li>
<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.<br />
<pre class="crayon-plain-tag">https://webservices.netsuite.com/services/NetSuitePort_2017_1</pre>
&#8211;OR&#8211;</p>
<p>To use <pre class="crayon-plain-tag">NetSuitePort_2019_1</pre>  or 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><pre class="crayon-plain-tag">https://111222333444.suitetalk.api.netsuite.com/services/NetSuitePort_2019_1</pre><p>
</li>
<li>Check Use Credentials option and Click New HTTP connection.</li>
<li>Configure general properties of connections as below.
<ol>
<li>Select Credentials Type as <strong>Dynamic Token</strong></li>
<li>Use any <strong>URL</strong> (It will be ignored)</li>
<li>Enter your NetSuite UserID, Password</li>
<li>Enter Header as <strong>Cookie</strong></li>
<li>Enter AUth Scheme as <strong>JSESSIONID=</strong></li>
</ol>
</li>
<li>First Screen will look like as below. Click Configure.
<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>
<li>On <strong>Dynamic Token</strong> &gt; <strong>Request Tab</strong> we have to set Token URL, Method, Body, Header.
<ol>
<li>In the URL enter same URL again<br />
<pre class="crayon-plain-tag">https://webservices.netsuite.com/services/NetSuitePort_2017_1</pre>
</li>
<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>
<pre class="crayon-plain-tag">&lt;?xml version="1.0" encoding="utf-8"?&gt;
&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;
  &lt;soap:Header&gt;
    &lt;applicationInfo xmlns="urn:messages_2017_1.platform.webservices.netsuite.com"&gt;
      &lt;applicationId&gt;xxxxxxYOUR-APPLICATION-IDxxxxxx&lt;/applicationId&gt;
    &lt;/applicationInfo&gt;
  &lt;/soap:Header&gt;
  &lt;soap:Body&gt;
    &lt;login xmlns="urn:messages_2017_1.platform.webservices.netsuite.com"&gt;
      &lt;passport&gt;
        &lt;email xmlns="urn:core_2017_1.platform.webservices.netsuite.com"&gt;[$userid$]&lt;/email&gt;
        &lt;password xmlns="urn:core_2017_1.platform.webservices.netsuite.com"&gt;[$password$]&lt;/password&gt;
        &lt;account xmlns="urn:core_2017_1.platform.webservices.netsuite.com"&gt;xxxxxxYOUR-ACCOUNT-IDxxxxxx&lt;/account&gt;
        &lt;role internalId="3" xmlns="urn:core_2017_1.platform.webservices.netsuite.com" /&gt;
      &lt;/passport&gt;
    &lt;/login&gt;
  &lt;/soap:Body&gt;
&lt;/soap:Envelope&gt;</pre>
<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>
<pre class="crayon-plain-tag">&lt;role internalId="3" xmlns="urn:core_2017_1.platform.webservices.netsuite.com" /&gt;</pre>
</li>
<li>Select Content Type as text/xml</li>
<li>In the Headers click on Raw Edit Button and enter like below.<br />
<pre class="crayon-plain-tag">SOAPAction: "login"</pre>
</li>
</ol>
</li>
<li>Once all settings done your <strong>Request</strong> Tab will look like below
<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>
<li>On <strong>Response</strong> Tab configure like below. You have to enter Cookie name as <strong>JSESSIONID</strong>
<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>
<li>Click OK to Save Connection.</li>
<li>We will configure XML Source in next section.</li>
</ol>
</li>
</ol>
<h3>Configure SSIS XML Source to read NetSuite data</h3>
<p>Now let&#8217;s continue configuration of XML Source. In 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>
<ol>
<li>On your XML Source enter NetSuite Webservice URL like below.<br />
<pre class="crayon-plain-tag">https://webservices.netsuite.com/services/NetSuitePort_2017_1</pre>
</li>
<li>Now check Use Credentials and select previously created HTTP connection.</li>
<li>Select Method as  <strong>POST</strong> and content type as <strong>text/xml</strong></li>
<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>
<pre class="crayon-plain-tag">&lt;soapenv:Envelope 
   xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
   xmlns:urn="urn:messages_2018_1.platform.webservices.netsuite.com" 
   xmlns:urn1="urn:core_2018_1.platform.webservices.netsuite.com"&gt;
   &lt;soapenv:Body&gt;
      &lt;urn:getAll&gt;
         &lt;record recordType="currency"/&gt; 
      &lt;/urn:getAll&gt;
   &lt;/soapenv:Body&gt;
&lt;/soapenv:Envelope&gt;</pre>
</li>
<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 NetSuitePort_2019_1 or higher version in URL then make sure you changed version  <strong>2017_1</strong> to <strong>2019_1</strong> in below body</div></div></li>
<li>Now you click Raw Edit above headers grid and enter method name in SOAPAction (e.g. <strong>getAll</strong> in our case)<br />
<pre class="crayon-plain-tag">SOAPAction: "getAll"</pre>
<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>  in 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>
<p><a href="https://webservices.netsuite.com/wsdl/v2017_1_0/netsuite.wsdl">Version 2017_1 WSDL Link</a><br />
<a href="https://webservices.netsuite.com/wsdl/v2018_1_0/netsuite.wsdl">Version 2018_1 WSDL Link</a><br />
<a href="https://webservices.netsuite.com/wsdl/v2019_1_0/netsuite.wsdl" target="_blank" rel="noopener">Version 2019_1 WSDL Link</a><br />
For Other Versions Just Change URL Version Part to different Number e.g. <strong>2019_2_0</strong></p>
</div></div></li>
<li>Now enter Filter like below or navigate by clicking Select Filter button.<br />
<pre class="crayon-plain-tag">$.soapenv:Envelope.soapenv:Body.getAllResponse.platformCore:getAllResult.platformCore:recordList.platformCore:record[*]</pre>
<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>
<li>Now click preview data.
<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>
<li>Click OK to save XML Source UI</li>
<li>Now you can connect XML Source to target like OLEDB Destination and load NetSuite data into SQL Server.</li>
</ol>
<h3>Configure SSIS XML Source with Pagination</h3>
<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>
<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>
<ol>
<li>Create new data flow and drag new ZS XML Source.</li>
<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 />
<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. FirstPageBodyPart and NextPageBodyPart can be entered on Advanced Pagination Tab, all other properties are easier to enter from Grid Mode if you sort alphabetically)</li>
</ol>
<div class="su-table su-table-alternate">
<table style="border-collapse: collapse;width: 100%;height: 198px" border="1">
<tbody>
<tr>
<td style="width: 22.434%">ElementsToTreatAsArray</td>
<td style="width: 77.566%">platformCore:record</td>
</tr>
<tr style="height: 22px">
<td style="width: 22.434%;height: 22px">EnablePageTokenForBody</td>
<td style="width: 77.566%;height: 22px">True</td>
</tr>
<tr style="height: 22px">
<td style="width: 22.434%;height: 22px">Filter</td>
<td style="width: 77.566%;height: 22px">$.soapenv:Envelope.soapenv:Body.search[$tag$]Response.platformCore:searchResult.platformCore:recordList.platformCore:record[*]</td>
</tr>
<tr style="height: 22px">
<td style="width: 22.434%;height: 22px">FirstPageBodyPart</td>
<td style="width: 77.566%;height: 22px">
<pre class="crayon-plain-tag">&lt;search xmlns="urn:messages_2017_1.platform.webservices.netsuite.com"&gt;
      &lt;searchRecord xmlns:q1="urn:accounting_2017_1.lists.webservices.netsuite.com" xsi:type="q1:AccountSearch"&gt;
        &lt;q1:basic&gt;
          &lt;description operator="doesNotContain" xmlns="urn:common_2017_1.platform.webservices.netsuite.com"&gt;
            &lt;searchValue xmlns="urn:core_2017_1.platform.webservices.netsuite.com"&gt;x&lt;/searchValue&gt;
          &lt;/description&gt;
          &lt;name operator="contains" xmlns="urn:common_2017_1.platform.webservices.netsuite.com"&gt;
            &lt;searchValue xmlns="urn:core_2017_1.platform.webservices.netsuite.com"&gt;a&lt;/searchValue&gt;
          &lt;/name&gt;
        &lt;/q1:basic&gt;
      &lt;/searchRecord&gt;
    &lt;/search&gt;</pre>
Change as per your need but we used above example search</td>
</tr>
<tr style="height: 22px">
<td style="width: 22.434%;height: 22px">HasDifferentNextPageInfo</td>
<td style="width: 77.566%;height: 22px">True</td>
</tr>
<tr style="height: 22px">
<td style="width: 22.434%;height: 22px">NextPageBodyPart</td>
<td style="width: 77.566%;height: 22px">
<pre class="crayon-plain-tag">&lt;searchMoreWithId xmlns="urn:messages_2017_1.platform.webservices.netsuite.com"&gt;
      &lt;searchId&gt;[$pagetoken$]&lt;/searchId&gt;
      &lt;pageIndex&gt;[$pagenumber$]&lt;/pageIndex&gt;
    &lt;/searchMoreWithId&gt;</pre>
&nbsp;</td>
</tr>
<tr style="height: 22px">
<td style="width: 22.434%;height: 22px">NextUrlAttribute</td>
<td style="width: 77.566%;height: 22px">$.soapenv:Envelope.soapenv:Body.search[$tag$]Response.platformCore:searchResult.platformCore:searchId</td>
</tr>
<tr style="height: 22px">
<td style="width: 22.434%;height: 22px">PagePlaceholders</td>
<td style="width: 77.566%;height: 22px">header=|MoreWithId;filter=|MoreWithId</td>
</tr>
<tr style="height: 22px">
<td style="width: 22.434%;height: 22px">PagesMaxPagesExpr</td>
<td style="width: 77.566%;height: 22px">$.soapenv:Envelope.soapenv:Body.searchResponse.platformCore:searchResult.platformCore:totalPages</td>
</tr>
<tr style="height: 22px">
<td style="width: 22.434%;height: 22px"></td>
<td style="width: 77.566%;height: 22px"></td>
</tr>
</tbody>
</table>
</div>
<p>Once above items are set in property grid. Double click XML source to edit few more items from UI.</p>
<ol>
<li>Enter URL as below<br />
<pre class="crayon-plain-tag">https://webservices.netsuite.com/services/NetSuitePort_2017_1</pre>
</li>
<li>Check Use Credentials and select <strong>HTTP connection</strong> we created in previous section.</li>
<li>Click <strong>Raw Edit</strong> button (above headers grid) and enter below<br />
<pre class="crayon-plain-tag">SOAPAction: "search[$tag$]"</pre>
</li>
<li>Click on Edit button next to Body. Enter following XML fragment for search request. <strong>Change ApplicationId</strong> and adjust PageSize if needed.<br />
<pre class="crayon-plain-tag">&lt;?xml version="1.0" encoding="utf-8"?&gt;
&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;
  &lt;soap:Header&gt;
    &lt;applicationInfo xmlns="urn:messages_2017_1.platform.webservices.netsuite.com"&gt;
      &lt;applicationId&gt;ABCD-1234-XXXXXXXXXXXXXXX&lt;/applicationId&gt;
    &lt;/applicationInfo&gt;
    &lt;searchPreferences xmlns="urn:messages_2017_1.platform.webservices.netsuite.com"&gt;
      &lt;pageSize&gt;100&lt;/pageSize&gt;
    &lt;/searchPreferences&gt;
  &lt;/soap:Header&gt;
  &lt;soap:Body&gt;
[$tag$]
  &lt;/soap:Body&gt;
&lt;/soap:Envelope&gt;</pre>
</li>
<li>Select <strong>POST</strong> method, change content type to <strong>XML (text / xml, charset=UTF-8)</strong></li>
<li>That&#8217;s it. Click &#8216;Preview to confirm.</li>
<li>Click ok to save XML Source.
<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>
</ol>
<h3>Configure SQL Server Destination to load NetSuite data</h3>
<p>Once you have XML Source configured you can connect XML Source to Target (OLEDB Destination) and load data into SQL Server.</p>
<h2>Conclusion</h2>
<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>
<p>The post <a href="https://zappysys.com/blog/read-data-netsuite-ssis-simpletalk-soap-api/">How to read data from NetSuite in SSIS (SimpleTalk SOAP API)</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How to call SOAP / REST API using Dynamic Token in SSIS / ODBC</title>
		<link>https://zappysys.com/blog/call-soap-rest-api-using-dynamic-token-ssis/</link>
		
		<dc:creator><![CDATA[ZappySys]]></dc:creator>
		<pubDate>Sat, 07 Jul 2018 09:03:41 +0000</pubDate>
				<category><![CDATA[HTTP Connection]]></category>
		<category><![CDATA[SSIS XML Source (File / SOAP)]]></category>
		<category><![CDATA[jsonpath]]></category>
		<category><![CDATA[regex]]></category>
		<category><![CDATA[rest api]]></category>
		<category><![CDATA[ssis]]></category>
		<category><![CDATA[xpath]]></category>
		<guid isPermaLink="false">https://zappysys.com/blog/?p=4378</guid>

					<description><![CDATA[<p>Introduction In this blog, we will learn how to call SOAP / REST API using Dynamic Token in SSIS (i.e. Two steps authentication approach &#8211; Fist Call Login API to get token and then call API). In our previous blog post, we saw how to call Web API using some industry standards approaches, such as [&#8230;]</p>
<p>The post <a href="https://zappysys.com/blog/call-soap-rest-api-using-dynamic-token-ssis/">How to call SOAP / REST API using Dynamic Token in SSIS / ODBC</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Introduction</h2>
<p><a href="https://zappysys.com/blog/wp-content/uploads/2018/06/REST-API-icon.jpg"><img loading="lazy" decoding="async" class="size-full wp-image-4254 alignleft" src="https://zappysys.com/blog/wp-content/uploads/2018/06/REST-API-icon.jpg" alt="Logo REST API" width="217" height="232" /></a>In this blog, we will learn how to call SOAP / REST API using Dynamic Token in SSIS (i.e. Two steps authentication approach &#8211; Fist Call Login API to get token and then call API).</p>
<p>In our previous blog post, we saw how to call Web API using some industry standards approaches, such as <a href="https://zappysys.com/blog/rest-api-authentication-with-oauth-2-0-using-ssis/" target="_blank" rel="noopener">OAuth 2.0 Authorization</a> or <a href="https://zappysys.com/blog/how-to-set-base64-encoded-authorization-header-for-http-web-request/" target="_blank" rel="noopener">Basic Authorization</a>. However, not all APIs follow the industry standard to authenticate API requests. After talking with many customers we noticed that very common non-standard technique to authenticate API is Dynamic Token Approach. In this approach first, you have to call Login request to get a temporary token (i.e. sessionid ). Once you get that temp token you can supply it along with your API requests. These temp token/session id usually expires in short time (i.e. expire in one hour or so).</p>
<p>Sounds complicated? Well not really if you use ZappySys <a href="https://zappysys.com/products/ssis-powerpack/" target="_blank" rel="noopener">SSIS PowerPack</a> or <a href="https://zappysys.com/products/odbc-powerpack/" target="_blank" rel="noopener">ODBC Drivers for API</a>. In this post, we will go through the steps, to authenticate using Dynamic Token approach. We will show you features of  <a href="https://zappysys.com/onlinehelp/ssis-powerpack/scr/ssis-http-connection-manager.htm">ZappySys SSIS HTTP Connection Manager</a>. For example purpose, we will call XML SOAP API using <a href="https://zappysys.com/products/ssis-powerpack/ssis-xml-source/">SSIS XML Source Connector</a> but same concepts can be applied to read from JSON API using  <a href="https://zappysys.com/products/ssis-powerpack/ssis-json-file-source/">SSIS JSON Source Connector</a> or CSV API using <a href="https://zappysys.com/products/ssis-powerpack/ssis-csv-file-source-flat-file-web-api/" target="_blank" rel="noopener">CSV Source Connector</a>.</p>
<p>So let&#8217;s get started.</p>
<h2></h2>
<div class="content_block" id="custom_post_widget-2523"><h2><span id="Prerequisites">Prerequisites</span></h2>
Before we perform the steps listed in this article, you will need to make sure the following prerequisites are met:
<ol style="margin-left: 1.5em;">
 	<li><abbr title="SQL Server Integration Services">SSIS</abbr> designer installed. Sometimes 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>
 	<li>Basic knowledge of SSIS package development using <em>Microsoft SQL Server Integration Services</em>.</li>
 	<li>Make sure <span style="text-decoration: underline;"><a href="https://zappysys.com/products/ssis-powerpack/" target="_blank" rel="noopener">ZappySys SSIS PowerPack</a></span> is installed (<a href="https://zappysys.com/products/ssis-powerpack/download/" target="_blank" rel="noopener">download it</a>, if you haven't already).</li>
 	<li>(<em>Optional step</em>)<em>.</em> <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>
</ol></div>
<h2>Getting Started</h2>
<p>In order to start, we will show several examples. ZappySys includes an <a href="https://zappysys.com/products/ssis-powerpack/ssis-xml-source/">SSIS XML Source Connector</a> and  <a href="https://zappysys.com/products/ssis-powerpack/ssis-json-file-source/">SSIS JSON Source Connector</a> that will help you to call SOAP / REST API, read various data from SOAP / REST API with SSIS.</p>
<p>To get token from login / authentication URL you have to gather a few pieces from your API documentation.</p>
<ul>
<li>How to call Login API for your API &#8211; (This is not the same URL as Vendor Site Login Page, but its usually API Login endpoint e.g. https://somecompany/api/v2/login)</li>
<li>API Response Format (e.g. JSON, XML ,CSV or Random Text )</li>
</ul>
<p>In our below example steps, we will use XML API which requires POST method first to pass Userid / password to authenticate. If Authentication is successful it may return a response in XML format which contains token.</p>
<p>In the next step, we will call other API (e.g. get-data) and pass token as Authorization Header. All these steps will be done automatically using  <a href="https://zappysys.com/onlinehelp/ssis-powerpack/scr/ssis-http-connection-manager.htm">ZappySys SSIS HTTP Connection Manager</a>.</p>
<h2>Create HTTP Connection for Dynamic Token</h2>
<p>To get API response data using SOAP / REST API call, you need to get an API Token from your login request URL. I am using ZappySys sample SOAP API to show you for the Demo purpose. Follow the steps mentioned below to get API Token:</p>
<h3>Create in SSIS</h3>
<ol>
<li>Right Click on Connection Managers Window, and one Context menu appears for creating a new connection manager.
<div id="attachment_10775" style="width: 742px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/07/Select-connection.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-10775" class="size-full wp-image-10775" src="https://zappysys.com/blog/wp-content/uploads/2018/07/Select-connection.png" alt="Select new connection" width="732" height="446" srcset="https://zappysys.com/blog/wp-content/uploads/2018/07/Select-connection.png 732w, https://zappysys.com/blog/wp-content/uploads/2018/07/Select-connection-300x183.png 300w" sizes="(max-width: 732px) 100vw, 732px" /></a><p id="caption-attachment-10775" class="wp-caption-text">Connection Manager Window: Create New Connection</p></div>
<div class="mceTemp"></div>
</li>
<li>Select ZS HTTP Connection Manager from the list of Connection Managers and, double-click on it or click on Add button to add a new Connection Manager. By Default, The created connection manager is of Package-Level. You can set Project Level Connection manager too If you want.
<div id="attachment_10776" style="width: 486px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/07/Select-HTTP-connection.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-10776" class="size-full wp-image-10776" src="https://zappysys.com/blog/wp-content/uploads/2018/07/Select-HTTP-connection.png" alt="Connection list from SSIS" width="476" height="487" srcset="https://zappysys.com/blog/wp-content/uploads/2018/07/Select-HTTP-connection.png 476w, https://zappysys.com/blog/wp-content/uploads/2018/07/Select-HTTP-connection-293x300.png 293w" sizes="(max-width: 476px) 100vw, 476px" /></a><p id="caption-attachment-10776" class="wp-caption-text">List of SSIS Connection Managers – Select HTTP Connection Manager</p></div></li>
</ol>
<h3>Create in ODBC</h3>
<p>To use HTTP Connection in ODBC Drivers you can change connection Type to HTTP like below and it will show similar UI discussed in this article.</p>
<div id="attachment_10777" style="width: 814px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/07/Create-HTTP-connection-in-ODBC.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-10777" class="size-full wp-image-10777" src="https://zappysys.com/blog/wp-content/uploads/2018/07/Create-HTTP-connection-in-ODBC.png" alt="New HTTP connection in ODBC" width="804" height="522" srcset="https://zappysys.com/blog/wp-content/uploads/2018/07/Create-HTTP-connection-in-ODBC.png 804w, https://zappysys.com/blog/wp-content/uploads/2018/07/Create-HTTP-connection-in-ODBC-300x195.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/07/Create-HTTP-connection-in-ODBC-768x499.png 768w" sizes="(max-width: 804px) 100vw, 804px" /></a><p id="caption-attachment-10777" class="wp-caption-text">Create an HTTP connection inside an ODBC driver</p></div>
<h2>Configure HTTP Connection Credential Type</h2>
<p>Once you add new SSIS ZS HTTP Connection Manager, Go to General Tab and Configure HTTP Connection Manager for Two Step Authorization Flow. Enter API URL, Login Credentials, and configure some basic settings for the same. We used Login URL as just example but you can enter any valid API URL endpoint here. Actual Login URL goes on Dynamic Token Tab (see next step)</p>
<div id="attachment_10778" style="width: 628px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/07/HTTP-connection-dynamic-token-general-tab.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-10778" class="size-full wp-image-10778" src="https://zappysys.com/blog/wp-content/uploads/2018/07/HTTP-connection-dynamic-token-general-tab.png" alt="HTTP connection with dynamic token in ODBC" width="618" height="515" srcset="https://zappysys.com/blog/wp-content/uploads/2018/07/HTTP-connection-dynamic-token-general-tab.png 618w, https://zappysys.com/blog/wp-content/uploads/2018/07/HTTP-connection-dynamic-token-general-tab-300x250.png 300w" sizes="(max-width: 618px) 100vw, 618px" /></a><p id="caption-attachment-10778" class="wp-caption-text">SSIS ZS HTTP Connection Manager: General Tab Configurations Settings</p></div>
<h2>Configure Request Settings</h2>
<p>Once you enter Username / password details on General Tab now we need to setup some information like Login Request URL, Body, Headers. Lets look at few options.</p>
<h3><strong>Passing User ID /Password in Body</strong></h3>
<ol>
<li>Go to Dynamic Token tab, Enter the following pieces.
<ol>
<li>Token/API Login URL<br />
For our example enter API Login URL as:<br />
<pre class="crayon-plain-tag">https://zappysys.com/downloads/files/test/soap-login.aspx</pre></li>
<li>Request Method as <strong>POST</strong></li>
<li>Request Body as below. Notice we used <pre class="crayon-plain-tag">[$userid$]</pre>  and <pre class="crayon-plain-tag">[$password$]</pre>  placeholders. These are replaced automatically at runtime so you do not have to hard code in Body and keep it secure. (See General Tab to enter UserID/Password)<br />
<strong>Pass User ID / Password in Body</strong><br />
<pre class="crayon-plain-tag">&lt;soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:urn=""urn:partner.soap.sforce.com""&gt;
   &lt;soapenv:Body&gt;
      &lt;urn:login&gt;
         &lt;urn:username&gt;[$userid$]&lt;/urn:username&gt;
         &lt;urn:password&gt;[$password$]&lt;/urn:password&gt;
      &lt;/urn:login&gt;
   &lt;/soapenv:Body&gt;
&lt;/soapenv:Envelope&gt;</pre>
</li>
<li>Select Request Body Content Type. For JSON data it may be application/json. For Key/Value Pair  <strong>key1=value1&amp;key2=value2</strong> leave it Default.<strong>Passing User ID /Password in Request BODY</strong>
<div id="attachment_10779" style="width: 858px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/07/HTTP-connection-dynamic-token-configuration-tab.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-10779" class="size-full wp-image-10779" src="https://zappysys.com/blog/wp-content/uploads/2018/07/HTTP-connection-dynamic-token-configuration-tab.png" alt="HTTP connection dynamic tab" width="848" height="797" srcset="https://zappysys.com/blog/wp-content/uploads/2018/07/HTTP-connection-dynamic-token-configuration-tab.png 848w, https://zappysys.com/blog/wp-content/uploads/2018/07/HTTP-connection-dynamic-token-configuration-tab-300x282.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/07/HTTP-connection-dynamic-token-configuration-tab-768x722.png 768w" sizes="(max-width: 848px) 100vw, 848px" /></a><p id="caption-attachment-10779" class="wp-caption-text">SSIS ZS HTTP Connection Manager: Dynamic Token Tab Configurations Settings of Request Tab</p></div></li>
</ol>
</li>
</ol>
<h3><strong>Passing User ID / Password in URL (GET Request)</strong></h3>
<p>Our Example API pass credentials in the <strong>POST</strong> body but some API may pass via URL as <strong>GET</strong> request.</p>
<p>In such case, you can enter like this<br />
<pre class="crayon-plain-tag">https://mysite.com/api/v2/login?userid=[$userid$]&amp;password=[$password$]</pre>
Notice in above URL we used <pre class="crayon-plain-tag">[$userid$]</pre>  and <pre class="crayon-plain-tag">[$password$]</pre>   placeholders. These are replaced automatically at runtime (See General Tab to enter UserID/Password)</p>
<h3><strong>Passing User ID /Password in Header as Basic Authentication</strong></h3>
<p>Another scenario is API requires <a href="https://zappysys.com/blog/how-to-set-base64-encoded-authorization-header-for-http-web-request/" target="_blank" rel="noopener">HTTP Basic authentication</a>, (Pass User ID / Password in Header as Base64 encoded value) then you can pass credentials like this:</p>
<p><code style="margin-bottom: 10pt;">Authorization: Basic &lt;&lt;[$userid$]:[$password$],FUN_BASE64ENC&gt;&gt;<br />
</code></p>
<p>Here we have used <code style="margin-bottom: 10pt;">FUN_BASE64ENC</code> function but there are <a href="https://zappysys.com/onlinehelp/ssis-powerpack/scr/ssis-format-specifiers.htm" target="_blank" rel="noopener">many other functions</a> can be used anywhere in Body or Headers</p>
<div id="attachment_10780" style="width: 652px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/07/HTTP-connection-dynamic-token-configuration-header-ODBC.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-10780" class="size-full wp-image-10780" src="https://zappysys.com/blog/wp-content/uploads/2018/07/HTTP-connection-dynamic-token-configuration-header-ODBC.png" alt="HTTP connection dynamic token in header request credentials" width="642" height="512" srcset="https://zappysys.com/blog/wp-content/uploads/2018/07/HTTP-connection-dynamic-token-configuration-header-ODBC.png 642w, https://zappysys.com/blog/wp-content/uploads/2018/07/HTTP-connection-dynamic-token-configuration-header-ODBC-300x239.png 300w" sizes="(max-width: 642px) 100vw, 642px" /></a><p id="caption-attachment-10780" class="wp-caption-text">Using Basic Authentication in Dynamic Token approach</p></div>
<h2>Configure Response Settings</h2>
<p>Now lets configure how to extract token (single value) from response. Which can be XML, JSON or sometimes Raw Text. We support 4 modes (default = None means full response text is treated as token). If you want to extract just single value and not full text then use below settings.</p>
<h3>XML Expression Type (Use XPath)</h3>
<ol>
<li>Now, Go to Response Settings tab under a Dynamic Token tab, Enter Response Settings like Token Extract Mode, Expression Type, Content Filter Expression as below XPath Expression. The expression basically extracts content from sessionid XML node using below <a href="https://zappysys.com/blog/ssis-extract-single-xml-node-using-xpath-soap-response/" target="_blank" rel="noopener">XPath Expression</a>.<pre class="crayon-plain-tag">//*[local-name()='sessionid']</pre>
<div id="attachment_10781" style="width: 650px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/07/HTTP-connection-dynamic-token-response-settings-tab.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-10781" class="size-full wp-image-10781" src="https://zappysys.com/blog/wp-content/uploads/2018/07/HTTP-connection-dynamic-token-response-settings-tab.png" alt="Get XML response for dynamic token" width="640" height="510" srcset="https://zappysys.com/blog/wp-content/uploads/2018/07/HTTP-connection-dynamic-token-response-settings-tab.png 640w, https://zappysys.com/blog/wp-content/uploads/2018/07/HTTP-connection-dynamic-token-response-settings-tab-300x239.png 300w" sizes="(max-width: 640px) 100vw, 640px" /></a><p id="caption-attachment-10781" class="wp-caption-text">ODBC ZS HTTP Connection Manager: Dynamic Token Tab Configurations Settings of Response Tab</p></div></li>
<li>That&#8217;s it click on OK button to save your Connection Manager Configurations.</li>
</ol>
<h3>JSON Expression Type (Use JSONPath)</h3>
<p>If you API returns JSON response (like <a href="https://zappysys.com/blog/read-walmart-api-data-ssis-odbc/">Walmart API Example</a>) then you can do something like below. Choose Expression Type=JSON and in Response Content Filter You can enter expression like $.some_property_name  (e.g. $.access_token). Check more about How to write <a href="https://zappysys.com/blog/jsonpath-examples-expression-cheetsheet/">JSON Path expression here</a>.</p>
<div id="attachment_10782" style="width: 793px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/07/HTTP-connection-dynamic-token-response-settings-tab-SSIS.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-10782" class="size-full wp-image-10782" src="https://zappysys.com/blog/wp-content/uploads/2018/07/HTTP-connection-dynamic-token-response-settings-tab-SSIS.png" alt="Walmart API – Extract Token – Response Settings" width="783" height="646" srcset="https://zappysys.com/blog/wp-content/uploads/2018/07/HTTP-connection-dynamic-token-response-settings-tab-SSIS.png 783w, https://zappysys.com/blog/wp-content/uploads/2018/07/HTTP-connection-dynamic-token-response-settings-tab-SSIS-300x248.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/07/HTTP-connection-dynamic-token-response-settings-tab-SSIS-768x634.png 768w" sizes="(max-width: 783px) 100vw, 783px" /></a><p id="caption-attachment-10782" class="wp-caption-text">SSIS ZS HTTP Connection Manager &#8211; Get a JSON response for the token</p></div>
<h3>Regular Expression Type (Use Regex)</h3>
<p>Another advanced mode to extract token from response is Regex Mode. You can write any valid regular expression <a href="https://zappysys.com/blog/using-regular-expressions-in-ssis/" target="_blank" rel="noopener">like this one</a> to extract just one value.</p>
<p>For example if your response returns raw string with token in double quotes but you want just token and no double quotes around it then try something like below.</p>
<div id="attachment_10783" style="width: 793px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/07/HTTP-connection-dynamic-token-response-settings-tab-regex-example.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-10783" class="size-full wp-image-10783" src="https://zappysys.com/blog/wp-content/uploads/2018/07/HTTP-connection-dynamic-token-response-settings-tab-regex-example.png" alt="Dynamic token from a regex expression" width="783" height="646" srcset="https://zappysys.com/blog/wp-content/uploads/2018/07/HTTP-connection-dynamic-token-response-settings-tab-regex-example.png 783w, https://zappysys.com/blog/wp-content/uploads/2018/07/HTTP-connection-dynamic-token-response-settings-tab-regex-example-300x248.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/07/HTTP-connection-dynamic-token-response-settings-tab-regex-example-768x634.png 768w" sizes="(max-width: 783px) 100vw, 783px" /></a><p id="caption-attachment-10783" class="wp-caption-text">Extract Token from response – Remove double quotes around value using Regular Expression</p></div>
<h2><strong>Call API </strong><strong>in SSIS with </strong><strong>Dynamic API Token</strong></h2>
<p>Now once you have setup HTTP connection manager to authenticate and get API token, we are ready for next step. Now we can use that token in SOAP / REST API Service call. So, let&#8217;s move to the SSIS Part.</p>
<ol>
<li>Once SSIS Package is open, Goto Data Flow Section, For that Drag and Drop DataFlow Task from the SSIS Toolbox.
<div id="attachment_10784" style="width: 472px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/07/SSIS-drag-and-drop-data-flow.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-10784" class="wp-image-10784 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/07/SSIS-drag-and-drop-data-flow.png" alt="Use data flow " width="462" height="157" srcset="https://zappysys.com/blog/wp-content/uploads/2018/07/SSIS-drag-and-drop-data-flow.png 462w, https://zappysys.com/blog/wp-content/uploads/2018/07/SSIS-drag-and-drop-data-flow-300x102.png 300w" sizes="(max-width: 462px) 100vw, 462px" /></a><p id="caption-attachment-10784" class="wp-caption-text">Drag and drop Data flow task</p></div></li>
<li>Now, Drag and Drop SSIS ZS XML Source Component from the SSIS Toolbox (if your API is JSON based then drag ZS JSON Source).
<div id="attachment_10785" style="width: 854px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/07/SSIS-drag-and-drop-XML-source.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-10785" class="wp-image-10785 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/07/SSIS-drag-and-drop-XML-source.png" alt="Drag and Drop ZS SSIS XML Source Component" width="844" height="401" srcset="https://zappysys.com/blog/wp-content/uploads/2018/07/SSIS-drag-and-drop-XML-source.png 844w, https://zappysys.com/blog/wp-content/uploads/2018/07/SSIS-drag-and-drop-XML-source-300x143.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/07/SSIS-drag-and-drop-XML-source-768x365.png 768w" sizes="(max-width: 844px) 100vw, 844px" /></a><p id="caption-attachment-10785" class="wp-caption-text">Drag and Drop ZS SSIS XML Source Component</p></div></li>
<li>Let&#8217;s double-click on XML Source Component to configure it&#8217;s Properties. Enter Request URL.<br />
<pre class="crayon-plain-tag">https://zappysys.com/downloads/files/test/soap-getdata.aspx</pre>
<div id="attachment_10786" style="width: 838px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/07/XML-source-enter-URL.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-10786" class="wp-image-10786 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/07/XML-source-enter-URL.png" alt="Enter URL to XML source" width="828" height="735" srcset="https://zappysys.com/blog/wp-content/uploads/2018/07/XML-source-enter-URL.png 828w, https://zappysys.com/blog/wp-content/uploads/2018/07/XML-source-enter-URL-300x266.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/07/XML-source-enter-URL-768x682.png 768w" sizes="(max-width: 828px) 100vw, 828px" /></a><p id="caption-attachment-10786" class="wp-caption-text">SSIS XML Source: Enter your SOAP Request URL</p></div></li>
<li>Check Use Credentials (Username/Password OR Token), Select HTTP Connection Manager from the drop-down list, we have created just before.
<div id="attachment_10787" style="width: 838px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/07/XML-source-enter-credential.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-10787" class="wp-image-10787 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/07/XML-source-enter-credential.png" alt="USe a credentials inside XML source" width="828" height="374" srcset="https://zappysys.com/blog/wp-content/uploads/2018/07/XML-source-enter-credential.png 828w, https://zappysys.com/blog/wp-content/uploads/2018/07/XML-source-enter-credential-300x136.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/07/XML-source-enter-credential-768x347.png 768w" sizes="(max-width: 828px) 100vw, 828px" /></a><p id="caption-attachment-10787" class="wp-caption-text">ZS SSIS XML Source Component: Check Use Credentials and Select Connection Manager</p></div></li>
<li>Select the Request Method and Enter SOAP Request Body something like this. Notice that we used <strong>[$token$]</strong> as a placeholder. This is automatically replaced at runtime by ZS-HTTP Connection Manager.<strong>Passing Token in Body</strong><br />
<pre class="crayon-plain-tag">&lt;soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:partner.soap.sforce.com"&gt;
   &lt;soapenv:Body&gt;
      &lt;urn:sessionid&gt;[$token$]&lt;/urn:sessionid&gt;
   &lt;/soapenv:Body&gt;
&lt;/soapenv:Envelope&gt;</pre>
<strong>Passing Token in Header<br />
</strong><br />
If your API expects token via HTTP Header (e.g. <strong>Authorization:</strong> <strong>xxxx-my-token-xxxxxxxx</strong> ) then make sure you configure Auth Scheme and Header name on HTTP Connection. By default it sends Token in Authorization header if you dont do anything.</p>
<div id="attachment_10788" style="width: 836px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/07/Passing-Token-in-Header.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-10788" class="size-full wp-image-10788" src="https://zappysys.com/blog/wp-content/uploads/2018/07/Passing-Token-in-Header.png" alt="Dynamic Token in the header" width="826" height="733" srcset="https://zappysys.com/blog/wp-content/uploads/2018/07/Passing-Token-in-Header.png 826w, https://zappysys.com/blog/wp-content/uploads/2018/07/Passing-Token-in-Header-300x266.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/07/Passing-Token-in-Header-768x682.png 768w" sizes="(max-width: 826px) 100vw, 826px" /></a><p id="caption-attachment-10788" class="wp-caption-text">ZS SSIS XML Source Component: Enter SOAP Request Body</p></div></li>
<li>Select Content-Type as per your Request, here we are selecting <pre class="crayon-plain-tag">text/XML;charset=UTF-8</pre>  and adding 1 HTTP Header: <pre class="crayon-plain-tag">SOAPAction: "https://zappysys.com/soap-getdata"</pre>
<div id="attachment_10789" style="width: 838px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/07/Passing-Token-in-body.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-10789" class="size-full wp-image-10789" src="https://zappysys.com/blog/wp-content/uploads/2018/07/Passing-Token-in-body.png" alt="Select Content-Type Add HTTP Request Header" width="828" height="742" srcset="https://zappysys.com/blog/wp-content/uploads/2018/07/Passing-Token-in-body.png 828w, https://zappysys.com/blog/wp-content/uploads/2018/07/Passing-Token-in-body-300x269.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/07/Passing-Token-in-body-768x688.png 768w" sizes="(max-width: 828px) 100vw, 828px" /></a><p id="caption-attachment-10789" class="wp-caption-text">ZS SSIS XML Source Component: Select Content-Type Add HTTP Request Header</p></div></li>
<li>select Filter Path: set as per your requirements. here for this example, we are setting:<br />
<pre class="crayon-plain-tag">$.soapenv:Envelope.soapenv:Body.urn:Row[*]</pre>
<div id="attachment_10790" style="width: 838px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/07/XML-source-dynamic-token-result.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-10790" class="size-full wp-image-10790" src="https://zappysys.com/blog/wp-content/uploads/2018/07/XML-source-dynamic-token-result.png" alt="XML source filter with dynamic token" width="828" height="742" srcset="https://zappysys.com/blog/wp-content/uploads/2018/07/XML-source-dynamic-token-result.png 828w, https://zappysys.com/blog/wp-content/uploads/2018/07/XML-source-dynamic-token-result-300x269.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/07/XML-source-dynamic-token-result-768x688.png 768w" sizes="(max-width: 828px) 100vw, 828px" /></a><p id="caption-attachment-10790" class="wp-caption-text">ZS SSIS XML Source Component: Select Filter</p></div>
<p>&nbsp;</li>
<li>Check Include Parent Columns checkbox, for including parent Columns, and then click on Preview button to see the Preview data.
<div id="attachment_10791" style="width: 838px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/07/XML-source-dynamic-token-result-preview.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-10791" class="size-full wp-image-10791" src="https://zappysys.com/blog/wp-content/uploads/2018/07/XML-source-dynamic-token-result-preview.png" alt="Preview data XML source dynamic token" width="828" height="742" srcset="https://zappysys.com/blog/wp-content/uploads/2018/07/XML-source-dynamic-token-result-preview.png 828w, https://zappysys.com/blog/wp-content/uploads/2018/07/XML-source-dynamic-token-result-preview-300x269.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/07/XML-source-dynamic-token-result-preview-768x688.png 768w" sizes="(max-width: 828px) 100vw, 828px" /></a><p id="caption-attachment-10791" class="wp-caption-text">SSIS XML Source Component: See the Preview data</p></div></li>
<li>That&#8217;s it. Click on OK button to Save your Configuration.</li>
<li>Finally drag any destination (i.e. OLEDB Destination) from your SSIS toolbox. If you want to load this data into SQL, then Drag OLE DB Destination Component, and configure it.</li>
</ol>
<h2><span id="Conclusion">Conclusion</span></h2>
<p>In this blog, we learned how to call any SOAP/REST API with Dynamic Token, retrieve Service response data with SSIS using <a href="https://zappysys.com/products/ssis-powerpack/ssis-xml-source/">XML Source <span style="color: #0000ee;"><u>Component</u></span></a> OR <a href="https://zappysys.com/products/ssis-powerpack/ssis-json-file-source/">JSON Source Component</a>   in a very simple way. Furthermore, you can achieve many more functionalities with this tool. Check our blogs/articles on <strong>XML Source Component </strong>to find out what <em>this tool</em> is capable of more.</p>
<h2><span id="References">References</span></h2>
<p>Finally, you can use the following links for more information about the call any SOAP / REST API with Dynamic Token feature with our tools:</p>
<ul>
<li><strong>Landing Page</strong> for <a href="https://zappysys.com/products/ssis-powerpack/ssis-xml-source/">XML Source</a>, you can also find <a href="https://youtu.be/2Li6Vy-nQvw">Tutorial Video</a> here.</li>
<li><strong>Help File:</strong> Documentation of <a href="https://zappysys.com/onlinehelp/ssis-powerpack/scr/ssis-xml-source.htm">XML Source</a>.</li>
</ul>
<p>The post <a href="https://zappysys.com/blog/call-soap-rest-api-using-dynamic-token-ssis/">How to call SOAP / REST API using Dynamic Token in SSIS / ODBC</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
