<?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>oauth2 Archives | ZappySys Blog</title>
	<atom:link href="https://zappysys.com/blog/tag/oauth2/feed/" rel="self" type="application/rss+xml" />
	<link>https://zappysys.com/blog/tag/oauth2/</link>
	<description>SSIS / ODBC Drivers / API Connectors for JSON, XML, Azure, Amazon AWS, Salesforce, MongoDB and more</description>
	<lastBuildDate>Thu, 11 Dec 2025 11:54:29 +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>oauth2 Archives | ZappySys Blog</title>
	<link>https://zappysys.com/blog/tag/oauth2/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>How to call NetSuite RESTlet API in SSIS / ODBC</title>
		<link>https://zappysys.com/blog/call-netsuite-restlet-ssis-odbc/</link>
		
		<dc:creator><![CDATA[ZappySys]]></dc:creator>
		<pubDate>Mon, 23 May 2022 21:18:19 +0000</pubDate>
				<category><![CDATA[ODBC PowerPack]]></category>
		<category><![CDATA[REST API]]></category>
		<category><![CDATA[REST API Integration]]></category>
		<category><![CDATA[SSIS OAuth Connection]]></category>
		<category><![CDATA[SSIS REST API Task]]></category>
		<category><![CDATA[NetSuite]]></category>
		<category><![CDATA[oauth]]></category>
		<category><![CDATA[oauth1]]></category>
		<category><![CDATA[oauth2]]></category>
		<category><![CDATA[rest api]]></category>
		<guid isPermaLink="false">https://zappysys.com/blog/?p=9657</guid>

					<description><![CDATA[<p>Introduction In our previous post we saw how to read API data in SSIS. This post we will cover how to call NetSuite RESTlet to read / write data in SSIS or ODBC Apps. For demo purpose we will use SSIS PowerPack REST API Task but concepts and many UI elements remain same for ODBC [&#8230;]</p>
<p>The post <a href="https://zappysys.com/blog/call-netsuite-restlet-ssis-odbc/">How to call NetSuite RESTlet API 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/2022/05/netsuite-logo.png"><img loading="lazy" decoding="async" class=" wp-image-9658 alignleft" src="https://zappysys.com/blog/wp-content/uploads/2022/05/netsuite-logo.png" alt="" width="144" height="114" srcset="https://zappysys.com/blog/wp-content/uploads/2022/05/netsuite-logo.png 309w, https://zappysys.com/blog/wp-content/uploads/2022/05/netsuite-logo-300x238.png 300w" sizes="(max-width: 144px) 100vw, 144px" /></a>In our previous post we saw how to <a href="https://zappysys.com/blog/ssis-read-api-data-load-sql-table/">read API data in SSIS</a>. This post we will cover how to call <a href="https://docs.oracle.com/en/cloud/saas/netsuite/ns-online-help/section_N2979684.html">NetSuite RESTlet</a> to read / write data in SSIS or ODBC Apps. For demo purpose we will use <a href="https://zappysys.com/products/ssis-powerpack/ssis-rest-api-web-service-task/">SSIS PowerPack REST API Task</a> but concepts and many UI elements remain same for <a href="https://zappysys.com/products/odbc-powerpack/odbc-json-rest-api-driver/">ODBC JSON Driver</a> too. This article assumes you know how to write Netsuite RESTlet and you have obtained Credentials to call RESTlet from extranal app.</p>
<h2></h2>
<h2></h2>
<h2>What is NetSuite RESTlets</h2>
<p>NetSuite added a really nice feature to expose business data and workflows as API by writing Javascript functions which they call it <strong>RESTlets</strong>. You can secure and customize these restlets as per your need.</p>
<p>You can automate CRUD (Create /Read / Write / Delete) operations in NetSuite by writing special functions in JavaScript and expose those functions as API URL which can be called by any external Systems (i.e. SSIS Packages , ODBC Apps like Power BI, Informatica, SSRS).</p>
<p>RESTlet can be secured few ways such as OAuth 1.0 and OAuth 2.0 authentication. We will cover both approach briefly in this article. You can choose any one as per 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>Creating NetSuite RESTlet / Obtain OAuth Credentials (Client ID and Secret)</h2>
<p>Below video shows how to obtain necessary credentials to call Netsuites API (RESTlet).</p>
<p>At mark 4:30 seconds it will show you How to use OAuth 2.0 for calling RESTlet</p>
<a href="https://zappysys.com/blog/call-netsuite-restlet-ssis-odbc/"><img decoding="async" src="https://zappysys.com/blog/wp-content/plugins/wp-youtube-lyte/lyteCache.php?origThumbUrl=%2F%2Fi.ytimg.com%2Fvi%2FMAOMQp5dh0U%2Fhqdefault.jpg" alt="YouTube Video"></a><br /><br /></p>
<p>&nbsp;</p>
<h2>Create NetSuite RESTlet Connection</h2>
<p>There are few ways to authenticate NetSuite RESTlet. If you are using ZappySys Products then it makes it super easy to use either approach. Lets look at both approaches.</p>
<h3>Using OAuth 2.0 (Recommended)</h3>
<p>As per above video if you obtained Client ID and Secret for OAuth 2.0 you can follow below steps to configure OAuth connection to call RESTlet.</p>
<p>What you need to use OAuth 2.0.</p>
<ul>
<li>Your Account ID (it goes in URL)</li>
<li>Your Client ID and Secret (Obtained from Netsuite Portal) &#8211; See above video Mark 04:30</li>
<li>Register Redirect URL in NetSuite portal (we recommend you use <strong>https://zappysys.com/oauth</strong> as call back Url for Automatic Code extraction)</li>
</ul>
<p><strong>Steps to configure OAuth Connection</strong></p>
<ol>
<li>Right click on Connection Panel and choose Choose &#8220;New Connection..&#8221;. Select <strong>ZS-OAUTH</strong> type<br />
<strong><strong><br />
</strong></strong></p>
<div id="attachment_1569" style="width: 687px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-oauth-create-new-connection.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-1569" class="size-full wp-image-1569" src="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-oauth-create-new-connection.png" alt="Create new SSIS OAuth API Connection Manager" width="677" height="220" srcset="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-oauth-create-new-connection.png 677w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-oauth-create-new-connection-300x97.png 300w" sizes="(max-width: 677px) 100vw, 677px" /></a><p id="caption-attachment-1569" class="wp-caption-text">Create new SSIS OAuth API Connection Manager</p></div>
<p>&nbsp;</p>
<p>&nbsp;</li>
<li> Enter following things<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
<strong>On General Tab<br />
</strong>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
ClientID and Secret: <strong>&lt;get it from NetSuite&gt;</strong><br />
Authorization URL: <strong>https://&lt;accountID&gt;.</strong><a href="http://app.netsuite.com/app/login/oauth2/authorize.nl" target="_blank" rel="noopener noreferrer"><strong>app.netsuite.com/app/login/oauth2/authorize.nl</strong></a><br />
Token URL: <strong>https://&lt;accountID&gt;.suitetalk.api.netsuite.com/services/rest/auth/oauth2/v1/token<br />
</strong>Scope: <strong><strong><strong>restlet</strong></strong></strong></p>
<div id="attachment_9660" style="width: 642px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2022/05/netsuite-oauth2-api-connection.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-9660" class="size-full wp-image-9660" src="https://zappysys.com/blog/wp-content/uploads/2022/05/netsuite-oauth2-api-connection.png" alt="Configure NetSuite OAuth 2.0 Connection for API call" width="632" height="418" srcset="https://zappysys.com/blog/wp-content/uploads/2022/05/netsuite-oauth2-api-connection.png 632w, https://zappysys.com/blog/wp-content/uploads/2022/05/netsuite-oauth2-api-connection-300x198.png 300w" sizes="(max-width: 632px) 100vw, 632px" /></a><p id="caption-attachment-9660" class="wp-caption-text">Configure NetSuite OAuth 2.0 Connection for API call</p></div>
<p>&nbsp;</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
<strong>On Advanced Tab<br />
</strong>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
Callback / Redirect URL:  <strong>https://zappysys.com/oauth </strong> (this must be entered same way in NetSuite Portal)</p>
<div id="attachment_9659" style="width: 563px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2022/05/oauth2-connection-callback-redirect-url.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-9659" class="size-full wp-image-9659" src="https://zappysys.com/blog/wp-content/uploads/2022/05/oauth2-connection-callback-redirect-url.png" alt="OAuth2 Connection - Callback / Redirect URL" width="553" height="201" srcset="https://zappysys.com/blog/wp-content/uploads/2022/05/oauth2-connection-callback-redirect-url.png 553w, https://zappysys.com/blog/wp-content/uploads/2022/05/oauth2-connection-callback-redirect-url-300x109.png 300w" sizes="(max-width: 553px) 100vw, 553px" /></a><p id="caption-attachment-9659" class="wp-caption-text">OAuth2 Connection &#8211; Callback / Redirect URL</p></div></li>
<li>Now go back to General Tab and click <strong>Generate Token</strong> button</li>
<li>Follow login screen and try to finish the flow. At the end it will generate Tokens and populate on UI</li>
<li>Click OK to save</li>
</ol>
<h3>Using OAuth 1.0</h3>
<p>Another approach is use OAuth 1.0 (Older version). If you have enabled OAuth 1.0 in NetSuite then follow below steps (Create connection is same as before).</p>
<ol>
<li>Setup General Tab and Advanced Tab as below.<br />
On <strong>==== </strong><strong>General Tab====</strong>:<br />
Enter ClientID, ClientSecret, AccessToken, AccessToken Secret<br />
On <strong>==== </strong><strong>Advanced Tab ====</strong>:<br />
Check <strong>Do Not Include Empty Key/Value Pairs</strong><br />
Select Signature Method as <strong>HMAC-SHA256</strong><br />
For Extra Token Attribute enter <strong>realm=&lt;your-account-number&gt;_SB1</strong></li>
<li>Click OK to Save</li>
</ol>
<p><a href="https://zappysys.com/blog/wp-content/uploads/2022/05/netsuite-oauth1-api-connection.png"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-9662" src="https://zappysys.com/blog/wp-content/uploads/2022/05/netsuite-oauth1-api-connection.png" alt="" width="495" height="363" srcset="https://zappysys.com/blog/wp-content/uploads/2022/05/netsuite-oauth1-api-connection.png 495w, https://zappysys.com/blog/wp-content/uploads/2022/05/netsuite-oauth1-api-connection-300x220.png 300w" sizes="(max-width: 495px) 100vw, 495px" /></a></p>
<p><a href="https://zappysys.com/blog/wp-content/uploads/2022/05/netsuite-oauth1-api-connection_realm_accountnumber.png"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-9661" src="https://zappysys.com/blog/wp-content/uploads/2022/05/netsuite-oauth1-api-connection_realm_accountnumber.png" alt="" width="495" height="363" srcset="https://zappysys.com/blog/wp-content/uploads/2022/05/netsuite-oauth1-api-connection_realm_accountnumber.png 495w, https://zappysys.com/blog/wp-content/uploads/2022/05/netsuite-oauth1-api-connection_realm_accountnumber-300x220.png 300w" sizes="(max-width: 495px) 100vw, 495px" /></a></p>
<h2></h2>
<h2>Call NetSuite RESTlet in SSIS</h2>
<ol>
<li>Create a new SSIS Package</li>
<li>Drag REST API Task from SSIS Toolbox<img decoding="async" class="figureimage" title="SSIS REST Api Web Service Task - Drag and Drop" src="https://zappysys.com/onlinehelp/ssis-powerpack/scr/images/rest-api-task/ssis-rest-api-web-service-task-drag.png" alt="SSIS REST Api Task - Drag and Drop" /></li>
<li>Double click the Task to configure</li>
<li>Select <strong>URL from Connection </strong></li>
<li>From Connection dropdown select OAuth connection we created in the earlier section (either OAuth 1 or OAuth 2)</li>
<li>Enter the URL as below. Assuming you copied URL from NetSuite Replace script ID and account number<br />
<pre class="crayon-plain-tag">https://&lt;account-number&gt;-sb1.restlets.api.netsuite.com/app/site/hosting/restlet.nl?script=&lt;scriptid&gt;&amp;deploy=1</pre>Enter <strong>&lt;account-number&gt;</strong><br />
Enter <strong>&lt;scriptid&gt;</strong></li>
<li>Change Method to POST if your script supports Parameters (Else you can supply id=xxxx and recordtype=xxxxx in the URL for GET request)</li>
<li>If its POST request then chnage ContentType to ApplicationJSON (application/json)</li>
<li>Enter your Input in the body. In below example our RESTlet takes sql query as input so we enter just one parameter named query but you can have different parameter(s)<br />
<pre class="crayon-plain-tag">Syntax:  { param1_name : &lt;value&gt; , param2_name : &lt;value&gt; ....  }</pre>
</li>
<li>Now click Test see everything works
<div id="attachment_9663" style="width: 1178px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2022/05/calling-netsuite-restlet-api-ssis.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-9663" class="size-full wp-image-9663" src="https://zappysys.com/blog/wp-content/uploads/2022/05/calling-netsuite-restlet-api-ssis.png" alt="Calling NetSuite RESTlet in SSIS (Using REST API Task)" width="1168" height="928" srcset="https://zappysys.com/blog/wp-content/uploads/2022/05/calling-netsuite-restlet-api-ssis.png 1168w, https://zappysys.com/blog/wp-content/uploads/2022/05/calling-netsuite-restlet-api-ssis-300x238.png 300w, https://zappysys.com/blog/wp-content/uploads/2022/05/calling-netsuite-restlet-api-ssis-768x610.png 768w, https://zappysys.com/blog/wp-content/uploads/2022/05/calling-netsuite-restlet-api-ssis-1024x814.png 1024w" sizes="(max-width: 1168px) 100vw, 1168px" /></a><p id="caption-attachment-9663" class="wp-caption-text">Calling NetSuite RESTlet in SSIS (Using REST API Task)</p></div></li>
</ol>
<p>&nbsp;</p>
<h2>Conclusion</h2>
<p>We saw how easy it is to call NetSuite RESTlets or other NetSuite API in SSIS / other BI Apps using ODBC Drivers provided by ZappySys. <a href="https://zappysys.com/products/ssis-powerpack/download/">Download SSIS PowerPack</a> and try your self see how easy it is to consume virtually any API in SSIS.</p>
<p>The post <a href="https://zappysys.com/blog/call-netsuite-restlet-ssis-odbc/">How to call NetSuite RESTlet API in SSIS / ODBC</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How to Make PayPal API Call in ODBC / SQL Server (T-SQL)</title>
		<link>https://zappysys.com/blog/make-paypal-api-call-odbc-sql-server/</link>
		
		<dc:creator><![CDATA[ZappySys]]></dc:creator>
		<pubDate>Sat, 14 Sep 2019 08:49:27 +0000</pubDate>
				<category><![CDATA[JSON File / REST API Driver]]></category>
		<category><![CDATA[T-SQL (SQL Server)]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[oauth2]]></category>
		<category><![CDATA[odbc]]></category>
		<category><![CDATA[paypal]]></category>
		<guid isPermaLink="false">https://zappysys.com/blog/?p=8010</guid>

					<description><![CDATA[<p>Introduction In our previous article we saw how to call PayPal API in SSIS. Now in this article, we will see How to Make PayPal API Call in ODBC from the SQL Server. This blog mainly focuses on ODBC approach but steps mentioned to call PayPal APIs can be useful for any developer regardless of which [&#8230;]</p>
<p>The post <a href="https://zappysys.com/blog/make-paypal-api-call-odbc-sql-server/">How to Make PayPal API Call in ODBC / SQL Server (T-SQL)</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2><span id="Introduction">Introduction</span></h2>
<p><a href="https://zappysys.com/blog/wp-content/uploads/2019/08/paypal-logo-preview.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" class="alignleft wp-image-7825 size-thumbnail" title="PayPal" src="https://zappysys.com/blog/wp-content/uploads/2019/08/paypal-logo-preview-150x150.png" alt="PayPal" width="150" height="150" srcset="https://zappysys.com/blog/wp-content/uploads/2019/08/paypal-logo-preview-150x150.png 150w, https://zappysys.com/blog/wp-content/uploads/2019/08/paypal-logo-preview-300x300.png 300w, https://zappysys.com/blog/wp-content/uploads/2019/08/paypal-logo-preview.png 512w" sizes="(max-width: 150px) 100vw, 150px" /></a>In our previous article we saw <a href="https://zappysys.com/blog/read-paypal-api-data-ssis/" target="_blank" rel="noopener">how to call PayPal API in SSIS</a>. Now in this article, we will see How to Make PayPal API Call in ODBC from the SQL Server. This blog mainly focuses on ODBC approach but steps mentioned to call PayPal APIs can be useful for any developer regardless of which programming language or tool set you use. We will also see How to send basic Authorization header along with body in OAuth2.</p>
<p>We will go through the steps to Create PayPal Order from MS SQL Server.</p>
<p>In nutshell, this post will focus on how to make PayPal API Call using ODBC Driver.</p>
<p>&nbsp;</p>
<h2><span id="Prerequisites">Prerequisites</span></h2>
<p>Before we perform the steps listed in this article, you will need to make sure the following prerequisites are met:</p>
<ol>
<li>A first requirement, make sure that Microsoft Access installed</li>
<li>Make sure to have <a href="https://zappysys.com/products/odbc-powerpack/" target="_blank" rel="noopener">ZappySys ODBC PowerPack</a> installed.</li>
<li>Credentials of PayPal API. Click <a href="https://developer.paypal.com/developer/applications/" target="_blank" rel="noopener">here</a> to create API.</li>
</ol>
<h2><span id="What_is_Walmart"><span id="What_is_WordPress">What is PayPal?</span></span></h2>
<p><a href="https://www.paypal.com" target="_blank" rel="noopener">PayPal</a> is an American company operating a worldwide online payments system that supports online money transfers and serves as an electronic alternative to traditional paper methods like checks and money orders. The company operates as a payment processor for online vendors, auction sites, and many other commercial users, for which it charges a fee in exchange for benefits such as one-click transactions and password memory. PayPal&#8217;s payment system, also called PayPal, is considered a type of payment rail.</p>
<h2 class="dx-content-title">Get Started with PayPal API</h2>
<p>If you have need to automate PayPal operations (e.g. read / write / update / delete ) then you can use PayPal REST API. Before you can integrate a PayPal product or solution, you must set up your development environment to get OAuth 2.0 client ID and secret credentials for the sandbox and live environments. You exchange these credentials for an access token that authorizes your REST API calls. To test your web and mobile apps, you create sandbox accounts.</p>
<h3 id="get-credentials" class="dx-anchor">Get PayPal credentials</h3>
<p>To generate OAuth 2.0 credentials for the sandbox and live environments:</p>
<ol>
<li><a href="https://www.paypal.com/signin?returnUri=https%3A%2F%2Fdeveloper.paypal.com%2Fdeveloper%2Fapplications" target="_blank" rel="noopener"><strong>Log into Dashboard</strong></a> and type your PayPal personal or business account email and password.</li>
<li>In the <strong>REST API apps</strong> section, click <strong>Create App</strong>. The purpose of this app is to generate your credentials.</li>
<li>Type a name for your app and click <strong>Create App</strong>. The page shows your sandbox app information, which includes your credentials.<br />
<blockquote class="dx-blockquote-note"><p><strong>Note:</strong> To show your live app information, toggle to <strong>Live</strong>.</p></blockquote>
</li>
<li>Copy and save the client ID and secret for your sandbox app.
<div id="attachment_7837" style="width: 730px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2019/08/paypal-client-ID-and-secret.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-7837" class="wp-image-7837 size-medium_large" src="https://zappysys.com/blog/wp-content/uploads/2019/08/paypal-client-ID-and-secret-768x443.png" alt="PayPal Client ID and Secret" width="720" height="415" srcset="https://zappysys.com/blog/wp-content/uploads/2019/08/paypal-client-ID-and-secret-768x443.png 768w, https://zappysys.com/blog/wp-content/uploads/2019/08/paypal-client-ID-and-secret-300x173.png 300w, https://zappysys.com/blog/wp-content/uploads/2019/08/paypal-client-ID-and-secret.png 940w" sizes="(max-width: 720px) 100vw, 720px" /></a><p id="caption-attachment-7837" class="wp-caption-text">PayPal Client ID and Secret</p></div></li>
<li>Review your app details and save your app.</li>
</ol>
<h2><span id="Read_PayPal_API_Data_using_SSIS_JSON_Source"><span id="Read_Walmart_API_Data_using_SSIS_JSON_Source"><span id="Read_data_fromWordPressusing_SSIS_JSON_Source">Call PayPal </span></span></span>Create Order API in SQL Server (T-SQL) using Data Gateway</h2>
<p>Let’s start with an example. We use JSON Driver to make the call to PayPal API, we will Create the PayPal Order from SQL Server.</p>
<p>In REST API calls, include the URL to the API service for the environment:</p>
<ul class="compact">
<li>Sandbox: <code>https://api.sandbox.paypal.com</code></li>
<li>Live: <code>https://api.paypal.com</code></li>
</ul>
<ol>
<li>To do this, first of all, we will open the ZappySys Data Gateway Configuration:
<div id="attachment_5283" style="width: 410px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/11/start-menu-open-zappysys-data-gateway.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-5283" class="wp-image-5283 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/11/start-menu-open-zappysys-data-gateway.png" alt="Open ZappySys Data Gateway" width="400" height="315" srcset="https://zappysys.com/blog/wp-content/uploads/2018/11/start-menu-open-zappysys-data-gateway.png 400w, https://zappysys.com/blog/wp-content/uploads/2018/11/start-menu-open-zappysys-data-gateway-300x236.png 300w" sizes="(max-width: 400px) 100vw, 400px" /></a><p id="caption-attachment-5283" class="wp-caption-text">Open ZappySys Data Gateway</p></div></li>
<li>Add the Native &#8211; ZappySys JSON Driver Data source.
<div id="attachment_5284" style="width: 568px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/11/zappysys-data-gateway-add-data-source.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-5284" class="wp-image-5284 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/11/zappysys-data-gateway-add-data-source.png" alt="Add Gateway Data Source (Native JSON Driver)" width="558" height="533" srcset="https://zappysys.com/blog/wp-content/uploads/2018/11/zappysys-data-gateway-add-data-source.png 558w, https://zappysys.com/blog/wp-content/uploads/2018/11/zappysys-data-gateway-add-data-source-300x287.png 300w" sizes="(max-width: 558px) 100vw, 558px" /></a><p id="caption-attachment-5284" class="wp-caption-text">Add Gateway Data Source (Native JSON Driver)</p></div></li>
<li>Now it&#8217;s time to connect with PayPal. Let&#8217;s use JSON Driver Data source with the following URL:<br />
<pre class="crayon-plain-tag">https://api.sandbox.paypal.com/v2/checkout/orders</pre>
Body:<br />
<pre class="crayon-plain-tag">{
  "intent": "CAPTURE",
  "purchase_units": [
    {
      "amount": {
        "currency_code": "USD",
        "value": "100.00"
      }
    }
  ]
}</pre>
<div id="attachment_8013" style="width: 875px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2019/09/odbc-json-driver-paypal-create-order.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-8013" class="wp-image-8013 size-full" src="https://zappysys.com/blog/wp-content/uploads/2019/09/odbc-json-driver-paypal-create-order.png" alt="PayPal : Create Order" width="865" height="703" srcset="https://zappysys.com/blog/wp-content/uploads/2019/09/odbc-json-driver-paypal-create-order.png 865w, https://zappysys.com/blog/wp-content/uploads/2019/09/odbc-json-driver-paypal-create-order-300x244.png 300w, https://zappysys.com/blog/wp-content/uploads/2019/09/odbc-json-driver-paypal-create-order-768x624.png 768w" sizes="(max-width: 865px) 100vw, 865px" /></a><p id="caption-attachment-8013" class="wp-caption-text">PayPal : Create Order</p></div></li>
<li>Create Basic OAuth Client Credentials Grant (Configure ZS-OAuth Connection).<br />
In the SSIS ZS OAuth Connection Manager, Select Provider as Custom, select version as OAuth2 and select Grant Type as  Client Credentials Grant. Enter the credentials and access token url and click OK.<br />
<pre class="crayon-plain-tag">https://api.sandbox.paypal.com/v1/oauth2/token</pre>
<div id="attachment_8014" style="width: 807px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2019/09/odbc-paypal-oauth-basic-client-credential-grant.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-8014" class="wp-image-8014 size-full" src="https://zappysys.com/blog/wp-content/uploads/2019/09/odbc-paypal-oauth-basic-client-credential-grant.png" alt="ZS OAuth Connection – Client Credentials Grant" width="797" height="751" srcset="https://zappysys.com/blog/wp-content/uploads/2019/09/odbc-paypal-oauth-basic-client-credential-grant.png 797w, https://zappysys.com/blog/wp-content/uploads/2019/09/odbc-paypal-oauth-basic-client-credential-grant-300x283.png 300w, https://zappysys.com/blog/wp-content/uploads/2019/09/odbc-paypal-oauth-basic-client-credential-grant-768x724.png 768w" sizes="(max-width: 797px) 100vw, 797px" /></a><p id="caption-attachment-8014" class="wp-caption-text">ZS OAuth Connection – Client Credentials Grant</p></div></li>
<li>Furthermore, Now click on Test Connection button to test PayPal Connection.
<div id="attachment_8015" style="width: 812px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2019/09/odbc-paypal-test-connection.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-8015" class="wp-image-8015 size-full" src="https://zappysys.com/blog/wp-content/uploads/2019/09/odbc-paypal-test-connection.png" alt="PayPal : Test Connection" width="802" height="702" srcset="https://zappysys.com/blog/wp-content/uploads/2019/09/odbc-paypal-test-connection.png 802w, https://zappysys.com/blog/wp-content/uploads/2019/09/odbc-paypal-test-connection-300x263.png 300w, https://zappysys.com/blog/wp-content/uploads/2019/09/odbc-paypal-test-connection-768x672.png 768w" sizes="(max-width: 802px) 100vw, 802px" /></a><p id="caption-attachment-8015" class="wp-caption-text">PayPal : Test Connection</p></div></li>
<li>Write your Query and <strong>Preview Data</strong>.</li>
<li><strong>(Optional Step)</strong> If your Query use POST method (e.g. Create Invoice) to submit data then you have <a href="https://zappysys.com/blog/caching-metadata-odbc-drivers-performance/#Metadata_Options_in_SQL_Query" target="_blank" rel="noopener">Save Metadata (Read More)</a>. We will use this meta file in later step when we call POST request.
<div id="attachment_4716" style="width: 551px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2018/08/post-data-json-rest-api-using-sql-query-odbc-driver.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4716" class="size-full wp-image-4716" src="https://zappysys.com/blog/wp-content/uploads/2018/08/post-data-json-rest-api-using-sql-query-odbc-driver.png" alt="Generate Metadata File for REST API POST Operation using ZappySys API Driver (JSON / XML)" width="541" height="593" srcset="https://zappysys.com/blog/wp-content/uploads/2018/08/post-data-json-rest-api-using-sql-query-odbc-driver.png 541w, https://zappysys.com/blog/wp-content/uploads/2018/08/post-data-json-rest-api-using-sql-query-odbc-driver-274x300.png 274w" sizes="(max-width: 541px) 100vw, 541px" /></a><p id="caption-attachment-4716" class="wp-caption-text">Generate Metadata File for REST API POST Operation using ZappySys API Driver (JSON / XML)</p></div></li>
<li>Now using Code Generator we will generate the query.
<div id="attachment_6416" style="width: 766px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2019/01/odbc-json-driver-generate-quickbooks-query.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-6416" class="wp-image-6416 size-full" src="https://zappysys.com/blog/wp-content/uploads/2019/01/odbc-json-driver-generate-quickbooks-query.png" alt="odbc-json-driver-generate-quickbooks-query" 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">Generate Query</p></div></li>
</ol>
<h3>Setup Linked Server <span id="Create_ODBC_DSN_8211_JSON_Driver">in MS SQL Server for PayPal</span></h3>
<p>Once you configured the data source in Gateway, we can now setup Linked Server in SQL Server to query API Calls.</p>
<ol>
<li>Assuming you have installed SQL Server and SSMS. If not then get both for FREE from here: <a href="https://www.microsoft.com/en-us/sql-server/sql-server-editions-express" target="_blank" rel="noopener">Get SQL Server Express</a> and  <a href="https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms" target="_blank" rel="noopener">Get SSMS</a></li>
<li>Open SSMS and connect to SQL Server.</li>
<li>Go to Root &gt; Server Objects &gt; Linked Servers node. Right click and click <strong>New Linked Server&#8230;</strong>
<div class="wp-caption alignnone">
<p><a href="https://i1.wp.com/zappysys.com/blog/wp-content/uploads/2018/03/create-new-linked-server-ssms.png?ssl=1" target="_blank" rel="noopener"><img loading="lazy" decoding="async" src="https://i1.wp.com/zappysys.com/blog/wp-content/uploads/2018/03/create-new-linked-server-ssms.png?w=720&amp;ssl=1" alt="Add Linked Server in SQL Server" width="420" height="262" /></a></p>
<p class="wp-caption-text">Add Linked Server in SQL Server</p>
</div>
</li>
<li> Now enter the linked server name, select Provider as SQL Native Client</li>
<li>Enter data source as <strong><pre class="crayon-plain-tag">GatewayServerName, PORT_NUMBER</pre></strong> where server name is where ZappySys Gateway is running (Can be same as SQL Server machine or remote machine). Default PORT_NUMBER is 5000 but confirm on Data gateway &gt; General tab in case its different.</li>
<li>Enter Catalog Name. This must match name from Data gateway Data sources grid &gt; Name column
<div class="wp-caption alignnone">
<p><a href="https://i1.wp.com/zappysys.com/blog/wp-content/uploads/2018/11/ssms-sql-server-configure-linked-server-1.png?ssl=1" target="_blank" rel="noopener"><img loading="lazy" decoding="async" src="https://i1.wp.com/zappysys.com/blog/wp-content/uploads/2018/11/ssms-sql-server-configure-linked-server-1.png?w=720&amp;ssl=1" alt="Configure Linked Server Provider, Catalog, Server, Port for ZappySys Data Gateway Connection" width="643" height="496" /></a></p>
<p class="wp-caption-text">Configure Linked Server Provider, Catalog, Server, Port for ZappySys Data Gateway Connection</p>
</div>
</li>
<li>Click on Security Tab and select last option &#8220;<strong>Be made using this security context</strong>&#8220;. Enter your gateway user account here.</li>
<li>Click OK to save Linked Server</li>
</ol>
<h3>Create Order in PayPal from SQL Server (Call POST API Method)</h3>
<ol>
<li>To Create Order in PayPal we need to execute the query like this. Please refer to this link for more information: <a href="https://developer.paypal.com/docs/api/orders/v2/#orders_create" target="_blank" rel="noopener">Create Order example.</a><br />
<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;">Important Note*: Below query uses META property <a href="https://zappysys.com/blog/caching-metadata-odbc-drivers-performance/#Metadata_Options_in_SQL_Query" target="_blank" rel="noopener">(fully explained here)</a>. This is needed if you creating anew record using POST, PUT. If you don&#8217;t pass META='{xxxx}&#8217; in query driver calls REST API two times (first time to parse metadata and second time to get actual data). So that you find some odd thing in PayPal if you execute the query without Meta then you will find two same Orders created in your PayPal as the driver makes two calls as mentioned above.</div></div>
<pre class="crayon-plain-tag">-- In below query rather than WITH(META=''[{"Name": "Success","Type": "Int32"}]'' ....
-- You can also use WITH(META=''c:\my-meta-file.txt'' .... We created this file in previous section

SELECT * FROM OPENQUERY([MY_LINKED_SERVER_NAME]
, 'SELECT * FROM $
WITH(META=''[{"Name": "Success","Type": "Int32"}]''
	 ,Src=''https://api.sandbox.paypal.com/v2/checkout/orders''
	,RequestData=''{
  "intent": "CAPTURE",
  "purchase_units": [
    {
      "amount": {
        "currency_code": "USD",
        "value": "100.00"
      }
    }
  ]
}''
	,RequestContentTypeCode=''ApplicationJson''
	,RequestMethod=''POST''
)')</pre>
</li>
<li>Here is the preview after you run REST API query in SQL Server. It will return created Order Id, Links and status. Notice that you can override default configuration by supplying <a href="https://zappysys.com/onlinehelp/odbc-powerpack/scr/json-odbc-driver-connectionstring.htm" target="_blank" rel="noopener">many parameters</a> in WITH clause.
<div id="attachment_8018" style="width: 586px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2019/09/sql-server-create-order-result.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-8018" class="wp-image-8018 size-full" src="https://zappysys.com/blog/wp-content/uploads/2019/09/sql-server-create-order-result.png" alt="Create Order In PayPal Using SQL Query" width="576" height="750" srcset="https://zappysys.com/blog/wp-content/uploads/2019/09/sql-server-create-order-result.png 576w, https://zappysys.com/blog/wp-content/uploads/2019/09/sql-server-create-order-result-230x300.png 230w" sizes="(max-width: 576px) 100vw, 576px" /></a><p id="caption-attachment-8018" class="wp-caption-text">Create Order In PayPal Using SQL Query</p></div></li>
<li>You can also find this created Order by opening that URL in the browser.
<div id="attachment_8019" style="width: 730px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2019/09/paypal-created-order.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-8019" class="wp-image-8019 size-medium_large" src="https://zappysys.com/blog/wp-content/uploads/2019/09/paypal-created-order-768x751.png" alt="Created Order In PayPal" width="720" height="704" srcset="https://zappysys.com/blog/wp-content/uploads/2019/09/paypal-created-order-768x751.png 768w, https://zappysys.com/blog/wp-content/uploads/2019/09/paypal-created-order-300x293.png 300w, https://zappysys.com/blog/wp-content/uploads/2019/09/paypal-created-order.png 815w" sizes="(max-width: 720px) 100vw, 720px" /></a><p id="caption-attachment-8019" class="wp-caption-text">Created Order In PayPal</p></div></li>
</ol>
<h2><span id="Read_PayPal_API_Data_using_SSIS_JSON_Source"><span id="Read_Walmart_API_Data_using_SSIS_JSON_Source"><span id="Read_data_fromWordPressusing_SSIS_JSON_Source">PayPal API integration in ODBC apps (e.g. Power BI, Excel, Informatica, Access, C#&#8230;)</span></span></span></h2>
<p>So far we have looked at SQL Server integration only, but what if you like to use same powerful ZappySys API drivers part of <a href="https://zappysys.com/products/odbc-powerpack/" target="_blank" rel="noopener">ODBC PowerPack</a> in other Apps like Power BI, Excel, MS Access, Informatica and many more&#8230; ?? Well not to worry if you know that App supports ODBC you can use ZappySys ODBC Driver same way described earlier&#8230; only difference is you dont need Linked Server and you dont have to use OPENQUERY statement when you use ODBC Drivers.</p>
<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><span id="Step-by-Step_Import_REST_API_into_Power_BI">Conclusion</span></h2>
<p>So in this blog, we learned how to generate a PayPal API Token, Load PayPal data in MS SQL Server table using <a href="https://zappysys.com/products/odbc-powerpack/odbc-json-rest-api-driver/" target="_blank" rel="noopener">ODBC JSON / REST API Driver</a> in a very simple way. You can achieve many more functionalities with this tool. Check our blogs/articles on <a href="https://zappysys.com/blog/category/odbc-powerpack/odbc-drivers/json-rest-api-driver/" target="_blank" rel="noopener"><strong>JSON / REST API Driver</strong></a> 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 use of PayPal API with our tools:</p>
<ul>
<li><strong>Landing Page</strong> for <a href="https://zappysys.com/products/odbc-powerpack/odbc-json-rest-api-driver/" target="_blank" rel="noopener">ODBC JSON / REST API Driver</a>, you can also find <a href="https://youtu.be/iwezz0Z3D4U" target="_blank" rel="noopener">Tutorial Video</a> here.</li>
<li><strong>Help File:</strong> Documentation of <a href="https://zappysys.com/onlinehelp/odbc-powerpack/index.htm#page=json-odbc-driver-intro.htm" target="_blank" rel="noopener">JSON Driver</a>.</li>
<li><a href="https://developer.paypal.com/docs/api/overview/" target="_blank" rel="noopener">PayPal API</a></li>
</ul>
<p>The post <a href="https://zappysys.com/blog/make-paypal-api-call-odbc-sql-server/">How to Make PayPal API Call in ODBC / SQL Server (T-SQL)</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How to read PayPal API data in SSIS</title>
		<link>https://zappysys.com/blog/read-paypal-api-data-ssis/</link>
		
		<dc:creator><![CDATA[ZappySys]]></dc:creator>
		<pubDate>Sat, 24 Aug 2019 08:36:05 +0000</pubDate>
				<category><![CDATA[REST API]]></category>
		<category><![CDATA[REST API Integration]]></category>
		<category><![CDATA[SSIS JSON Source (File/REST)]]></category>
		<category><![CDATA[SSIS Logging Task]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[oauth]]></category>
		<category><![CDATA[oauth2]]></category>
		<category><![CDATA[paypal]]></category>
		<category><![CDATA[ssis]]></category>
		<guid isPermaLink="false">https://zappysys.com/blog/?p=7822</guid>

					<description><![CDATA[<p>Introduction In this article, we will see how to read PayPal API data in SSIS and load into SQL Server. This blog mainly focuses on SSIS approach but steps mentioned to call PayPal APIs can be useful for any developer regardless of which programming language or tool set you use. We will also see How to send [&#8230;]</p>
<p>The post <a href="https://zappysys.com/blog/read-paypal-api-data-ssis/">How to read PayPal API data in SSIS</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2><span id="Introduction">Introduction</span></h2>
<p><a href="https://zappysys.com/blog/wp-content/uploads/2019/08/paypal-logo-preview.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" class="alignleft wp-image-7825 size-thumbnail" title="PayPal" src="https://zappysys.com/blog/wp-content/uploads/2019/08/paypal-logo-preview-150x150.png" alt="PayPal" width="150" height="150" srcset="https://zappysys.com/blog/wp-content/uploads/2019/08/paypal-logo-preview-150x150.png 150w, https://zappysys.com/blog/wp-content/uploads/2019/08/paypal-logo-preview-300x300.png 300w, https://zappysys.com/blog/wp-content/uploads/2019/08/paypal-logo-preview.png 512w" sizes="(max-width: 150px) 100vw, 150px" /></a>In this article, we will see how to read PayPal API data in SSIS and load into SQL Server. This blog mainly focuses on SSIS approach but steps mentioned to call PayPal APIs can be useful for any developer regardless of which programming language or tool set you use. We will also see How to send basic Authorization header along with body in OAuth2.</p>
<p>We will go through the steps to read data from PayPal Transactions and Load into MS SQL Server.</p>
<p>In nutshell, this post will focus on how to make PayPal API Call using SSIS.</p>
<p>&nbsp;</p>
<h2><span id="Prerequisites">Prerequisites</span></h2>
<p>Before we perform the steps listed in this article, you will need to make sure the following prerequisites are met:</p>
<ol>
<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 Microsoft site</a>).</li>
<li>Basic knowledge of SSIS package development using <em>Microsoft SQL Server Integration Services</em>.</li>
<li>Make sure <a href="https://zappysys.com/products/ssis-powerpack/" target="_blank" rel="noopener">ZappySys SSIS PowerPack</a> is installed (<a href="https://zappysys.com/products/ssis-powerpack/download/" target="_blank" rel="noopener">download it</a>).</li>
<li>Credentials of PayPal API. Click <a href="https://developer.paypal.com/developer/applications/" target="_blank" rel="noopener">here</a> to create API.</li>
</ol>
<h2><span id="What_is_Walmart"><span id="What_is_WordPress">What is PayPal?</span></span></h2>
<p><a href="https://www.paypal.com" target="_blank" rel="noopener">PayPal</a> is an American company operating a worldwide online payments system that supports online money transfers and serves as an electronic alternative to traditional paper methods like checks and money orders. The company operates as a payment processor for online vendors, auction sites, and many other commercial users, for which it charges a fee in exchange for benefits such as one-click transactions and password memory. PayPal&#8217;s payment system, also called PayPal, is considered a type of payment rail.</p>
<h2 class="dx-content-title">Get Started with PayPal API</h2>
<p>If you have need to automate PayPal operations (e.g. read / write / update / delete ) then you can use PayPal REST API. Before you can integrate a PayPal product or solution, you must set up your development environment to get OAuth 2.0 client ID and secret credentials for the sandbox and live environments. You exchange these credentials for an access token that authorizes your REST API calls. To test your web and mobile apps, you create sandbox accounts.</p>
<h3 id="get-credentials" class="dx-anchor">Get PayPal credentials</h3>
<p>To generate OAuth 2.0 credentials for the sandbox and live environments:</p>
<ol>
<li><a href="https://www.paypal.com/signin?returnUri=https%3A%2F%2Fdeveloper.paypal.com%2Fdeveloper%2Fapplications" target="_blank" rel="noopener"><strong>Log into Dashboard</strong></a> and type your PayPal personal or business account email and password.</li>
<li>In the <strong>REST API apps</strong> section, click <strong>Create App</strong>. The purpose of this app is to generate your credentials.</li>
<li>Type a name for your app and click <strong>Create App</strong>. The page shows your sandbox app information, which includes your credentials.<br />
<blockquote class="dx-blockquote-note"><p><strong>Note:</strong> To show your live app information, toggle to <strong>Live</strong>.</p></blockquote>
</li>
<li>Copy and save the client ID and secret for your sandbox app.
<div id="attachment_7837" style="width: 730px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2019/08/paypal-client-ID-and-secret.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-7837" class="wp-image-7837 size-medium_large" src="https://zappysys.com/blog/wp-content/uploads/2019/08/paypal-client-ID-and-secret-768x443.png" alt="PayPal Client ID and Secret" width="720" height="415" srcset="https://zappysys.com/blog/wp-content/uploads/2019/08/paypal-client-ID-and-secret-768x443.png 768w, https://zappysys.com/blog/wp-content/uploads/2019/08/paypal-client-ID-and-secret-300x173.png 300w, https://zappysys.com/blog/wp-content/uploads/2019/08/paypal-client-ID-and-secret.png 940w" sizes="(max-width: 720px) 100vw, 720px" /></a><p id="caption-attachment-7837" class="wp-caption-text">PayPal Client ID and Secret</p></div></li>
<li>Review your app details and save your app.</li>
</ol>
<h2><span id="Read_Walmart_API_Data_using_SSIS_JSON_Source"><span id="Read_data_fromWordPressusing_SSIS_JSON_Source">Read PayPal API Data using SSIS JSON Source</span></span></h2>
<p>Let’s start with an example. We use SSIS JSON Source component to make the call to PayPal API, we will read PayPal data and load into SQL Server. First of All, Open Visual Studio and Create New SSIS Package Project.</p>
<p>In REST API calls, include the URL to the API service for the environment:</p>
<ul class="compact">
<li>Sandbox: <code>https://api.sandbox.paypal.com</code></li>
<li>Live: <code>https://api.paypal.com</code></li>
</ul>
<h3><span id="GetDynamic_Token_Configure_ZS-HTTP_Connection"><span id="Step-1_GetDynamic_Token_Configure_ZS-HTTP_Connection">Create Basic OAuth Client Credentials Grant (Configure ZS-OAuth Connection)</span></span></h3>
<p>To get API response data using SOAP / REST API call, you need to get an API Token from your token request URL. Follow the steps mentioned below to get API Token:</p>
<ol>
<li>Now, Right Click on Connection Managers Window, and one Context menu appears for creating a new connection manager.
<div id="attachment_4382" style="width: 730px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/07/ssis-connection-manager-create-new-connection-e1531164541889.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4382" class="wp-image-4382 size-medium_large" src="https://zappysys.com/blog/wp-content/uploads/2018/07/ssis-connection-manager-create-new-connection-768x462.png" alt="Connection Manager Window: Create New Connection" width="720" height="433" /></a><p id="caption-attachment-4382" class="wp-caption-text">Connection Manager Window: Create New Connection</p></div></li>
<li>Select ZS-OAuth 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_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" target="_blank" rel="noopener"><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 Maangers 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 Mangers List: Select O-AUTH Connection Manager</p></div></li>
<li>In the SSIS ZS OAuth Connection Manager, Select Provider as Custom, select version as OAuth2 and select Grant Type as  Client Credentials Grant. Enter the credentials and access token url and test the connection.<br />
<pre class="crayon-plain-tag">https://api.sandbox.paypal.com/v1/oauth2/token</pre>
&nbsp;</p>
<div id="attachment_7841" style="width: 671px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2019/08/ssis-oauth-basic-client-credential-grant.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-7841" class="wp-image-7841 size-full" src="https://zappysys.com/blog/wp-content/uploads/2019/08/ssis-oauth-basic-client-credential-grant.png" alt="ZS OAuth Connection – Client Credentials Grant " width="661" height="694" srcset="https://zappysys.com/blog/wp-content/uploads/2019/08/ssis-oauth-basic-client-credential-grant.png 661w, https://zappysys.com/blog/wp-content/uploads/2019/08/ssis-oauth-basic-client-credential-grant-286x300.png 286w" sizes="(max-width: 661px) 100vw, 661px" /></a><p id="caption-attachment-7841" class="wp-caption-text">ZS OAuth Connection – Client Credentials Grant</p></div></li>
<li>Click on OK button to save OAuth Connection configure settings.</li>
</ol>
<p>That’s it we have successfully configured Connection for PayPal API in SSIS. In the next section, we will see how to use this connection and read various data from PayPal API.</p>
<h3>Read <span id="Read_Walmart_API_Data_in_SSIS"><span id="Read_YouTube_Playlists_in_SSIS">PayPal </span></span><span id="Read_Walmart_API_Data_in_SSIS"><span id="Read_YouTube_Playlists_in_SSIS">API Data in SSIS</span></span></h3>
<p>Once we have done creating HTTP Connection Manager we can move forward to read PayPal API data inside Data Flow. So lets Configure SSIS JSON / REST API Source.</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="size-full wp-image-7934" 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>From the SSIS toolbox drag and drop JSON Source on the dataflow designer surface.
<div id="attachment_3766" style="width: 604px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/05/ssis-json-source-for-getting-basic-profile-from-linkedin.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3766" class="wp-image-3766 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/05/ssis-json-source-for-getting-basic-profile-from-linkedin.png" alt="Drag and Drop JSON Source Component" width="594" height="268" srcset="https://zappysys.com/blog/wp-content/uploads/2018/05/ssis-json-source-for-getting-basic-profile-from-linkedin.png 594w, https://zappysys.com/blog/wp-content/uploads/2018/05/ssis-json-source-for-getting-basic-profile-from-linkedin-300x135.png 300w" sizes="(max-width: 594px) 100vw, 594px" /></a><p id="caption-attachment-3766" class="wp-caption-text">Drag and Drop JSON Source Component</p></div></li>
<li>Double click JSON Source and enter the following URL as below to get invoices and select that created OAuth Connection.<br />
<pre class="crayon-plain-tag">https://api.sandbox.paypal.com/v1/invoicing/invoices?page=0&amp;page_size=100&amp;total_count_required=true</pre>
<div id="attachment_7842" style="width: 730px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2019/08/ssis-json-source-set-url-connection.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-7842" class="wp-image-7842 size-medium_large" src="https://zappysys.com/blog/wp-content/uploads/2019/08/ssis-json-source-set-url-connection-768x682.png" alt="SSIS JSON Source" width="720" height="639" srcset="https://zappysys.com/blog/wp-content/uploads/2019/08/ssis-json-source-set-url-connection-768x682.png 768w, https://zappysys.com/blog/wp-content/uploads/2019/08/ssis-json-source-set-url-connection-300x266.png 300w, https://zappysys.com/blog/wp-content/uploads/2019/08/ssis-json-source-set-url-connection.png 826w" sizes="(max-width: 720px) 100vw, 720px" /></a><p id="caption-attachment-7842" class="wp-caption-text">SSIS JSON Source</p></div></li>
<li>Now Go to Pagination tab select mode as Url Parameter and add indicator as <pre class="crayon-plain-tag">page</pre>  and Add the increment value same as <pre class="crayon-plain-tag">page_size</pre>  value we set in url, there for in our case we set 100. For pagination call please click here for reference to this link.
<div id="attachment_7843" style="width: 730px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2019/08/ssis-paypal-pagination.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-7843" class="size-medium_large wp-image-7843" src="https://zappysys.com/blog/wp-content/uploads/2019/08/ssis-paypal-pagination-768x682.png" alt="PayPal Pagination" width="720" height="639" srcset="https://zappysys.com/blog/wp-content/uploads/2019/08/ssis-paypal-pagination-768x682.png 768w, https://zappysys.com/blog/wp-content/uploads/2019/08/ssis-paypal-pagination-300x266.png 300w, https://zappysys.com/blog/wp-content/uploads/2019/08/ssis-paypal-pagination.png 826w" sizes="(max-width: 720px) 100vw, 720px" /></a><p id="caption-attachment-7843" class="wp-caption-text">PayPal Pagination</p></div></li>
<li>Select the desire Array Filter and click on preview.
<div id="attachment_7844" style="width: 730px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2019/08/ssis-paypal-preview.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-7844" class="size-medium_large wp-image-7844" src="https://zappysys.com/blog/wp-content/uploads/2019/08/ssis-paypal-preview-768x528.png" alt="PayPal Preview" width="720" height="495" srcset="https://zappysys.com/blog/wp-content/uploads/2019/08/ssis-paypal-preview-768x528.png 768w, https://zappysys.com/blog/wp-content/uploads/2019/08/ssis-paypal-preview-300x206.png 300w, https://zappysys.com/blog/wp-content/uploads/2019/08/ssis-paypal-preview-1024x705.png 1024w, https://zappysys.com/blog/wp-content/uploads/2019/08/ssis-paypal-preview.png 1071w" sizes="(max-width: 720px) 100vw, 720px" /></a><p id="caption-attachment-7844" class="wp-caption-text">PayPal Preview</p></div></li>
<li>That’s it, you are ready to load PayPal API Data into SQL Server.</li>
</ol>
<h3><span id="Load_Walmart_API_data_into_SQL_Server">Load PayPal API data into SQL Server</span></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><span id="Conclusion">Conclusion</span></h2>
<p>After all, we saw you how to extract information from REST API such as PayPal REST API using HTTP Connection and load into SQL Server. We also learned techniques like How to get Dynamic Token using HTTP Connection. To explore many other scenarios not discussed in this article download <a href="https://zappysys.com/products/ssis-powerpack/">SSIS PowerPack from here (includes 70+ Components)</a>.</p>
<h2><span id="References">References</span></h2>
<p>Finally, you can use the following links for more information:</p>
<ul>
<li>Help File: <a href="https://zappysys.com/onlinehelp/ssis-powerpack/scr/json-source.htm" target="_blank" rel="noopener">JSON Source(REST API or File)</a>, <a href="https://zappysys.com/onlinehelp/ssis-powerpack/scr/ssis-logging-task.htm" target="_blank" rel="noopener">ZS Logging Task</a></li>
<li><a href="https://developer.paypal.com/docs/api/overview/" target="_blank" rel="noopener">PayPal API</a></li>
<li><a href="https://zappysys.com/blog/call-soap-rest-api-using-dynamic-token-ssis/" target="_blank" rel="noopener">Dynamic token generation</a></li>
</ul>
<p>The post <a href="https://zappysys.com/blog/read-paypal-api-data-ssis/">How to read PayPal API data in SSIS</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How to read Microsoft Dynamics 365 OData API data in SSIS (CRM Web API)</title>
		<link>https://zappysys.com/blog/read-microsoft-dynamics-365-odata-api-data-ssis/</link>
		
		<dc:creator><![CDATA[ZappySys]]></dc:creator>
		<pubDate>Sat, 25 May 2019 10:28:13 +0000</pubDate>
				<category><![CDATA[SSIS JSON Source (File/REST)]]></category>
		<category><![CDATA[365]]></category>
		<category><![CDATA[CRM 365]]></category>
		<category><![CDATA[dynamics crm]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[Microsoft Dynamics 365]]></category>
		<category><![CDATA[oauth]]></category>
		<category><![CDATA[oauth2]]></category>
		<category><![CDATA[odata]]></category>
		<category><![CDATA[ssis]]></category>
		<guid isPermaLink="false">https://zappysys.com/blog/?p=7004</guid>

					<description><![CDATA[<p>Introduction In our previous article, we talked about how to read from Dynamics CRM using easy to use SSIS Dynamics CRM Source connector. In this post, you will learn how to use SSIS JSON Source (for REST API) instead of CRM Source. Using SSIS JSON Source you can read virtually any REST API or JSON file data including Dynamics CRM [&#8230;]</p>
<p>The post <a href="https://zappysys.com/blog/read-microsoft-dynamics-365-odata-api-data-ssis/">How to read Microsoft Dynamics 365 OData API data in SSIS (CRM Web 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/05/dynamics-crm-365-logo-300x300.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" class="wp-image-3577 size-thumbnail alignleft" src="https://zappysys.com/blog/wp-content/uploads/2018/05/dynamics-crm-365-logo-300x300-150x150.png" alt="" width="150" height="150" /></a>In our previous article, we talked about how to <a href="https://zappysys.com/blog/ssis-dynamics-crm-read-import-crm-365-onpremises/" target="_blank" rel="noopener">read from Dynamics CRM</a> using easy to use <a href="https://zappysys.com/products/ssis-powerpack/ssis-dynamics-crm-source-connector/" target="_blank" rel="noopener">SSIS Dynamics CRM Source connector</a>. In this post, you will learn how to use <a href="https://zappysys.com/products/ssis-powerpack/ssis-json-file-source/" target="_blank" rel="noopener">SSIS JSON Source (for REST API)</a> instead of CRM Source. Using SSIS JSON Source you can read virtually any REST API or JSON file data including Dynamics CRM / Dataverse. For this article, our goal is to learn <strong>How to read Microsoft Dynamics 365 data using Web API (OData API) in SSIS.</strong> We will use drag and drop approach without any coding.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2><strong>Why use Web API (OAuth) for Dynamics 365 CRM?</strong></h2>
<p>Microsoft has announced depreciation of older CRM API (SOAP API with WS-Trust Authentication) which means they are no longer going to support the older style of authentication so no option but to switch to newer authentication / API.</p>
<p>In the older approach (SOAP API with WS-Trust Authentication) you must pass your User Name and Password to authenticate, also if MFA / 2FA (Multi-Factored Auth) is turned on by organization policy you cannot use your user id / password in API call. In new authentication (i.e. OAuth) you have to use Client Id and Client Secret only.</p>
<p>Now let&#8217;s look at the step by step approach to call Dynamics 365 REST API.</p>
<h2>Step-1 : Register Dynamics CRM / Dataverse App obtain App Id / Client Secret</h2>
<p>The very first step to access Microsoft Dynamics CRM 365 API is to obtain Application Id (also referred as Client Id)  and Client Secret. We will use this information later in this article (on OAuth connection UI).</p>
<ol>
<li><a href="https://zappysys.com/blog/register-app-dynamics-crm-365-cds-dataverse-api-azure-ad-oauth/" target="_blank" rel="noopener">Register Dynamics CRM / Dataverse App With Azure</a> and get the credential (App Id, Client Secret).</li>
</ol>
<h2></h2>
<h2>Step-2 : Read Microsoft Dynamics 365 API data in SSIS using JSON Source</h2>
<p>Let&#8217;s start with an example. We use SSIS JSON Source Task to make calls to Microsoft Dynamics 365 API, we will load Dynamics 365 Leads data to SQL Server.</p>
<p>Please refer to this link for more information: <a href="https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/about?view=dynamics-ce-odata-9" target="_blank" rel="noopener">Microsoft Dynamics 365 Web API Reference</a></p>
<h3>Find out API Url for your environment (organization url)</h3>
<p>Once we are done with the creation of the Azure AD app to obtain App Id /Secret out next step is to find out the base API URL for your organization / environment.</p>
<p>If you have multiple environments (i.e. Prod, Sandbox) then each environment might have its own unique URL)</p>
<ol>
<li>To find your API Service URL, Click on <strong>Gear Icon</strong></li>
<li>Choose <strong>Advanced Settings</strong></li>
<li>Click down arrow on <strong>Settings</strong></li>
<li>Click <strong>Customization</strong></li>
<li>Click <strong>Developer Resource</strong> Link</li>
<li>On this page now you can see various URLs. For examples used in this article, we need to get is <strong>Service Root URL</strong> for <strong>Web API</strong></li>
</ol>
<div id="attachment_10125" style="width: 730px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2019/05/dynamics-crm-find-organization-url-soap-web-api-1.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-10125" class="wp-image-10125 size-large" src="https://zappysys.com/blog/wp-content/uploads/2019/05/dynamics-crm-find-organization-url-soap-web-api-1-1024x626.png" alt="dynamics-crm-find-organization-url-soap-web-api" width="720" height="440" srcset="https://zappysys.com/blog/wp-content/uploads/2019/05/dynamics-crm-find-organization-url-soap-web-api-1-1024x626.png 1024w, https://zappysys.com/blog/wp-content/uploads/2019/05/dynamics-crm-find-organization-url-soap-web-api-1-300x183.png 300w, https://zappysys.com/blog/wp-content/uploads/2019/05/dynamics-crm-find-organization-url-soap-web-api-1-768x469.png 768w, https://zappysys.com/blog/wp-content/uploads/2019/05/dynamics-crm-find-organization-url-soap-web-api-1.png 1028w" sizes="(max-width: 720px) 100vw, 720px" /></a><p id="caption-attachment-10125" class="wp-caption-text">How to Find Organization Id / Web API URL / SOAP API Service URL (Unique Environment Instance URL)</p></div>
<p>&nbsp;</p>
<h3>Create SSIS Data Flow to read data from Dynamics CRM / Dataverse</h3>
<ol>
<li>
        First of All, Drag and drop Data Flow Task from SSIS Toolbox and double click it to edit.<img class="yoast-text-mark" /></p>
<p>        <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>
        Furthermore, Drag and Drop JSON Source(REST API and File) File Task from the SSIS Toolbox.<img class="yoast-text-mark" /></p>
<p>        <div id="attachment_3766" style="width: 604px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/05/ssis-json-source-for-getting-basic-profile-from-linkedin.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3766" class="size-full wp-image-3766" src="https://zappysys.com/blog/wp-content/uploads/2018/05/ssis-json-source-for-getting-basic-profile-from-linkedin.png" alt="Drag and Drop JSON Source Component" width="594" height="268" srcset="https://zappysys.com/blog/wp-content/uploads/2018/05/ssis-json-source-for-getting-basic-profile-from-linkedin.png 594w, https://zappysys.com/blog/wp-content/uploads/2018/05/ssis-json-source-for-getting-basic-profile-from-linkedin-300x135.png 300w" sizes="(max-width: 594px) 100vw, 594px" /></a><p id="caption-attachment-3766" class="wp-caption-text">Drag and Drop JSON Source Component</p></div>
    </li>
</ol>
<h3></h3>
<h3>Create OAuth Connection for Dynamics CRM / Dataverse</h3>
<p>Now lets look at how to create and configure OAuth connection to call Web API for Dynamics CRM / Dataverse</p>
<ol>
<li>
        Check Use Credentials Option and select a new ZS-OAuth Connection from the drop-down.</p>
<p>        <div id="attachment_7689" style="width: 730px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2019/05/ssis-check-use-credentials-select-connection.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-7689" class="wp-image-7689 size-medium_large" src="https://zappysys.com/blog/wp-content/uploads/2019/05/ssis-check-use-credentials-select-connection-768x593.png" alt="Check Use Credentials " width="720" height="556" srcset="https://zappysys.com/blog/wp-content/uploads/2019/05/ssis-check-use-credentials-select-connection-768x593.png 768w, https://zappysys.com/blog/wp-content/uploads/2019/05/ssis-check-use-credentials-select-connection-300x232.png 300w, https://zappysys.com/blog/wp-content/uploads/2019/05/ssis-check-use-credentials-select-connection.png 823w" sizes="(max-width: 720px) 100vw, 720px" /></a><p id="caption-attachment-7689" class="wp-caption-text">Check Use Credentials</p></div>
    </li>
<li>
        Once OAuth Connection UI opens up. Configure like below on General Tab.<br />
        Change OAuth Version to <strong>OAuth2</strong><br />
        Change Grant Type to <strong>Client Credentials</strong><br />
        Enter <strong>Client Id</strong> (Azure AD App Id) (Obtained in the Previous Section)<br />
        Enter <strong>Client Secret</strong> (Obtained in the Previous Section)<br />
        Enter <strong>Token URL</strong> (see below)</p>
<div id="attachment_10127" style="width: 616px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2019/05/azure-ad-app-oauth-client-credentials-grant-1.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-10127" class="wp-image-10127 size-full" src="https://zappysys.com/blog/wp-content/uploads/2019/05/azure-ad-app-oauth-client-credentials-grant-1.png" alt="azure-ad-app-oauth-client-credentials-grant" width="606" height="351" srcset="https://zappysys.com/blog/wp-content/uploads/2019/05/azure-ad-app-oauth-client-credentials-grant-1.png 606w, https://zappysys.com/blog/wp-content/uploads/2019/05/azure-ad-app-oauth-client-credentials-grant-1-300x174.png 300w" sizes="(max-width: 606px) 100vw, 606px" /></a><p id="caption-attachment-10127" class="wp-caption-text">Configure OAuth Connection for Azure AD App &#8211; Client Credentials Grant (Tenant Specific Token EndPoints)</p></div>
<p>        <span style="text-decoration: underline;"><strong>For Client Credentials Grant</strong></span><br />
        Enter Token URL as <strong>https://login.microsoftonline.com/<span style="color: #0000ff;">&lt;your-tenant-id&gt;</span>/oauth2/token</strong><br />
        (You can find Tenant ID on the Overview page of your Azure AD App)</p>
<p>        <span style="text-decoration: underline;"><strong>For Default Grant (3-legged &#8211; requires User Login Prompt)</strong></span><br />
        Enter Auth URL as <strong>https://login.microsoftonline.com/common/oauth2/authorize</strong><br />
        Enter Token  URL as <strong><strong>https://login.microsoftonline.com/common/oauth2/token</strong></strong></p>
<p>        &nbsp;</p>
<div id="attachment_10128" style="width: 858px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2019/05/azure-ad-app-token-url-with-tenant-id-oauth-v1-1.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-10128" class="wp-image-10128 size-full" src="https://zappysys.com/blog/wp-content/uploads/2019/05/azure-ad-app-token-url-with-tenant-id-oauth-v1-1.png" alt="azure-ad-app-token-url-with-tenant-id-oauth-v1" width="848" height="448" srcset="https://zappysys.com/blog/wp-content/uploads/2019/05/azure-ad-app-token-url-with-tenant-id-oauth-v1-1.png 848w, https://zappysys.com/blog/wp-content/uploads/2019/05/azure-ad-app-token-url-with-tenant-id-oauth-v1-1-300x158.png 300w, https://zappysys.com/blog/wp-content/uploads/2019/05/azure-ad-app-token-url-with-tenant-id-oauth-v1-1-768x406.png 768w, https://zappysys.com/blog/wp-content/uploads/2019/05/azure-ad-app-token-url-with-tenant-id-oauth-v1-1-720x380.png 720w" sizes="(max-width: 848px) 100vw, 848px" /></a><p id="caption-attachment-10128" class="wp-caption-text">Where to find Token Endpoint with Tenant ID in the URL (Azure AD App)</p></div>
<p>        &nbsp;
    </li>
<li>
        Now go to Advanced Tab and configure like belowEnter <strong>Extra Attribute for /auth</strong> as  <pre class="crayon-plain-tag">resource=https://&lt;your-instance-id&gt;.api.&lt;your-crm-region&gt;.dynamics.com</pre>
<p>        <div id="attachment_9471" style="width: 595px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2019/05/resource-dyanmics-crm-connection-for-cleint-cred-token.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-9471" class="size-full wp-image-9471" src="https://zappysys.com/blog/wp-content/uploads/2019/05/resource-dyanmics-crm-connection-for-cleint-cred-token.png" alt="Client Credentials Grant for Dynamics CRM / Dataverse - API Access (Azure AD App / OAuth)" width="585" height="254" srcset="https://zappysys.com/blog/wp-content/uploads/2019/05/resource-dyanmics-crm-connection-for-cleint-cred-token.png 585w, https://zappysys.com/blog/wp-content/uploads/2019/05/resource-dyanmics-crm-connection-for-cleint-cred-token-300x130.png 300w" sizes="(max-width: 585px) 100vw, 585px" /></a><p id="caption-attachment-9471" class="wp-caption-text">Client Credentials Grant for Dynamics CRM / Dataverse &#8211; API Access (Azure AD App / OAuth)</p></div>
    </li>
<li>Click OK to Save connection.</li>
</ol>
<h3>Get all Accounts, Contacts, and Leads using Dynamics 365 API</h3>
<p>Now let&#8217;s configure API URL from where you like to read data.</p>
<p>For example, if you just use the root URL then it will list all possible entries</p>
<p>Root URL: <pre class="crayon-plain-tag">https://{{organization-uri}}/api/data/v9.1/</pre>
<ol>
<li>Double click on the Component to Edit the Configurations.</li>
<li>Change Data Format to <strong>OData</strong>.</li>
<li>
        In the Web URL Field, you can enter any valid URL for Web API. Please refer to this link of <a href="https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/account?view=dynamics-ce-odata-9" target="_blank" rel="noopener">Dynamics 365 Rest API</a> for more information.<strong>Example Data URLs</strong></p><pre class="crayon-plain-tag">https://{{organization-uri}}/api/data/v9.1/
https://{{organization-uri}}/api/data/v9.1/accounts
https://{{organization-uri}}/api/data/v9.1/contacts
https://{{organization-uri}}/api/data/v9.1/leads</pre><p>
        Here, replace <strong>{{organization-uri}} </strong>in URL to your Microsoft Dynamics 365 site domain name (Example <strong><span style="text-decoration: underline;">zappy6.api.crm.dynamics.com</span></strong> Dynamics 365 URL)<strong>.</strong></p>
<p>        <div id="attachment_7211" style="width: 730px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2019/05/ssis-D365-API-set-url-json-source.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-7211" class="wp-image-7211 size-medium_large" src="https://zappysys.com/blog/wp-content/uploads/2019/05/ssis-D365-API-set-url-json-source-768x682.png" alt="Set URL in JSON Source" width="720" height="639" srcset="https://zappysys.com/blog/wp-content/uploads/2019/05/ssis-D365-API-set-url-json-source-768x682.png 768w, https://zappysys.com/blog/wp-content/uploads/2019/05/ssis-D365-API-set-url-json-source-300x266.png 300w, https://zappysys.com/blog/wp-content/uploads/2019/05/ssis-D365-API-set-url-json-source.png 826w" sizes="(max-width: 720px) 100vw, 720px" /></a><p id="caption-attachment-7211" class="wp-caption-text">Set URL in JSON Source</p></div>
    </li>
</ol>
<h3>Preview / Query Dynamics 365 Data</h3>
<ol>
<li>Now select Array filter as <pre class="crayon-plain-tag">$.value[*]</pre>  (Click <strong>Select Filter</strong> Button &#8211; Choose value node)</li>
<li>
        Click on the Preview button to get the data.</p>
<p>        <div id="attachment_7687" style="width: 730px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2019/05/ssis-json-source-preview-dynamic-crm.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-7687" class="wp-image-7687 size-medium_large" src="https://zappysys.com/blog/wp-content/uploads/2019/05/ssis-json-source-preview-dynamic-crm-768x631.png" alt="Preview Data" width="720" height="592" srcset="https://zappysys.com/blog/wp-content/uploads/2019/05/ssis-json-source-preview-dynamic-crm-768x631.png 768w, https://zappysys.com/blog/wp-content/uploads/2019/05/ssis-json-source-preview-dynamic-crm-300x246.png 300w, https://zappysys.com/blog/wp-content/uploads/2019/05/ssis-json-source-preview-dynamic-crm.png 891w" sizes="(max-width: 720px) 100vw, 720px" /></a><p id="caption-attachment-7687" class="wp-caption-text">Preview Data</p></div>
    </li>
<li>Finally, click OK to save JSON Source settings.</li>
<li>That’s it we are ready to load Dynamics 365 API data to SQL Server.</li>
</ol>
<h3>Load Microsoft Dynamics 365 API data into SQL Server</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><span id="Conclusion">Conclusion</span></h2>
<p>In this post you have seen how to Read Microsoft Dynamics 365 API data in SSIS. We used <a href="https://zappysys.com/products/ssis-powerpack/ssis-json-file-source/" target="_blank" rel="noopener">JSON Source Component</a> to call Dynamics 365 REST API and load data into SQL server. 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 about the use of Dynamics 365 REST API with our tools:</p>
<ul>
<li><a href="https://zappysys.com/products/ssis-powerpack/ssis-json-file-source/" target="_blank" rel="noopener">JSON Source</a>, you can also find <a href="https://youtu.be/t4fSghbSZLo" target="_blank" rel="noopener">Tutorial Video</a> here.</li>
<li><strong>Help File:</strong> Documentation of <a href="https://zappysys.com/onlinehelp/ssis-powerpack/index.htm#page=json-source.htm" target="_blank" rel="noopener">SSIS Json Source</a></li>
<li><a href="https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/about?view=dynamics-ce-odata-9" target="_blank" rel="noopener">Microsoft Dynamics CRM Web API Reference</a></li>
<li><a href="https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/entitytypes?view=dynamics-ce-odata-9" target="_blank" rel="noopener">Dynamics 365 Web API EntityType Reference</a></li>
</ul>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>The post <a href="https://zappysys.com/blog/read-microsoft-dynamics-365-odata-api-data-ssis/">How to read Microsoft Dynamics 365 OData API data in SSIS (CRM Web API)</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Read data from QuickBooks Online into SQL Server via ODBC Driver</title>
		<link>https://zappysys.com/blog/read-data-from-quickbooks-online-to-sql-server/</link>
		
		<dc:creator><![CDATA[ZappySys]]></dc:creator>
		<pubDate>Wed, 23 Jan 2019 12:12:20 +0000</pubDate>
				<category><![CDATA[JSON File / REST API Driver]]></category>
		<category><![CDATA[REST API Integration]]></category>
		<category><![CDATA[T-SQL (SQL Server)]]></category>
		<category><![CDATA[json driver]]></category>
		<category><![CDATA[oauth]]></category>
		<category><![CDATA[oauth2]]></category>
		<category><![CDATA[odbc]]></category>
		<category><![CDATA[odbc json driver]]></category>
		<category><![CDATA[quickbooks]]></category>
		<guid isPermaLink="false">https://zappysys.com/blog/?p=5133</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 ODBC in few clicks. We will use ODBC JSON / REST API Driver to read data from QuickBooks Online and Load into SQL Server / other targets (Using OAuth [&#8230;]</p>
<p>The post <a href="https://zappysys.com/blog/read-data-from-quickbooks-online-to-sql-server/">Read data from QuickBooks Online into SQL Server via ODBC Driver</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" target="_blank" rel="noopener"><img loading="lazy" decoding="async" class="alignleft wp-image-6399 " src="https://zappysys.com/blog/wp-content/uploads/2019/01/QuickBookLogo.png" alt="QuickBooks Online Logo" width="164" height="164" 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: 164px) 100vw, 164px" /></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>ODBC</strong> in few clicks. We will use <a href="https://zappysys.com/products/odbc-powerpack/odbc-json-rest-api-driver/" target="_blank" rel="noopener">ODBC JSON / REST API Driver</a> to read data from QuickBooks Online 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.</p>
<p>In nutshell, this post will focus on how to call QuickBooks Online API using ODBC.<br />
So let’s get started.</p>
<p>&nbsp;</p>
<h2><span id="Prerequisites">Prerequisites</span></h2>
<p>Before we look into Step-By-Step section to extract and read data from <strong>QuickBooks Online to SQL Server</strong> let’s make sure you met the following requirements.</p>
<ol>
<li>A first requirement will be to SQL Server Database Engine Installed</li>
<li>The second requirement will be SSMS installed</li>
<li>Finally, make sure to have <a href="https://zappysys.com/products/odbc-powerpack/" target="_blank" rel="noopener">ZappySys ODBC PowerPack</a> installed.</li>
</ol>
<div class="content_block" id="custom_post_widget-6478"><h2>What is QuickBooks Online</h2>
<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.
<h2>Getting Started</h2>
In order to start, we will show several examples. ZappySys includes an <a href="https://zappysys.com/products/odbc-powerpack/odbc-json-rest-api-driver/" target="_blank" rel="noopener">ODBC JSON / REST API Driver</a> that will help you to call QuickBooks Online API, read various data from QuickBooks Online with ODBC. To learn more about QuickBooks Online API <a href="https://developer.intuit.com/docs/00_quickbooks_online/1_get_started/00_get_started" target="_blank" rel="noopener">check this help file</a>.

To access QuickBooks Online data using REST API call, you need to create an Intuit Developer Account and then create QuickBooks Online App.
<h3>Create an Intuit Developer Account</h3>
Follow the mentioned steps below to create an Intuit developer account:
<ol>
 	<li>you can visit this site <a class="link-https" title="https://developer.intuit.com" href="https://developer.intuit.com/" target="_blank" rel="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 class="wp-caption alignnone">

<a href="https://zappysys.com/blog/wp-content/uploads/2018/09/intuit-developer-account-signup-page-e1551710928190.png" target="_blank" rel="noopener"><img decoding="async" src="https://zappysys.com/blog/wp-content/uploads/2018/09/intuit-developer-account-signup-page-e1551710928190.png" alt="Signup Form: Intuit Developer Account" /></a>
<p 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">

Your account is created! You'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="_blank" rel="internal noopener">app creation page</a> to get coding on your app.
<div class="su-note-inner su-clearfix" style="background-color: #fff4b7;border-color: #fffdf1;color: #333333;padding: 8px">

<strong>Note:</strong>

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>
<h3>Create a QuickBooks Online App</h3>
Follow the steps below to start creating your QuickBooks Online app.
<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>Create a new app.
</strong>
<div class="wp-caption alignnone">

<a href="https://zappysys.com/blog/wp-content/uploads/2018/09/create-new-app-intuit-e1551711044554.png" target="_blank" rel="noopener"><img decoding="async" src="https://zappysys.com/blog/wp-content/uploads/2018/09/create-new-app-intuit-e1551711044554.png" alt="Create new App: Select APIS" /></a>
<p 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="_blank" rel="internal noopener">app'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 class="wp-caption alignnone">

<a href="https://zappysys.com/blog/wp-content/uploads/2018/09/intuit-myapps-credentials-for-oauth2-e1551711138195.png" target="_blank" rel="noopener"><img decoding="async" src="https://zappysys.com/blog/wp-content/uploads/2018/09/intuit-myapps-credentials-for-oauth2-e1551711138195.png" alt="Intuit App: Client Id,Secret Keys for OAuth Connection" /></a>
<p 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>
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 ODBC.

</div></div>
<h3><span id="Create_ODBC_Native_Zappysys_JSON_Driver_Data_Source"><span id="Create_ODBC_DSN_8211_JSON_Driver">Create ODBC – Native Zappysys JSON Driver Data Source</span></span></h3>
<ol>
<li>To do this, first of all, we will open the ZappySys Data Gateway Configuration:
<div id="attachment_5283" style="width: 410px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/11/start-menu-open-zappysys-data-gateway.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-5283" class="wp-image-5283 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/11/start-menu-open-zappysys-data-gateway.png" alt="Open ZappySys Data Gateway" width="400" height="315" srcset="https://zappysys.com/blog/wp-content/uploads/2018/11/start-menu-open-zappysys-data-gateway.png 400w, https://zappysys.com/blog/wp-content/uploads/2018/11/start-menu-open-zappysys-data-gateway-300x236.png 300w" sizes="(max-width: 400px) 100vw, 400px" /></a><p id="caption-attachment-5283" class="wp-caption-text">Open ZappySys Data Gateway</p></div></li>
<li>Add the Native &#8211; ZappySys JSON Driver Data source.
<div id="attachment_5284" style="width: 568px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-5284" class="wp-image-5284 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/11/zappysys-data-gateway-add-data-source.png" alt="Add Gateway Data Source (Native JSON Driver)" width="558" height="533" srcset="https://zappysys.com/blog/wp-content/uploads/2018/11/zappysys-data-gateway-add-data-source.png 558w, https://zappysys.com/blog/wp-content/uploads/2018/11/zappysys-data-gateway-add-data-source-300x287.png 300w" sizes="(max-width: 558px) 100vw, 558px" /><p id="caption-attachment-5284" class="wp-caption-text">Add Gateway Data Source (Native JSON Driver)</p></div></li>
<li>Now it&#8217;s time to connect with QuickBooks. Let&#8217;s use JSON Driver Data source with the following URL:<br />
<pre class="crayon-plain-tag">https://{RequestURL}/v3/company/{realmID}/query?query={selectStatement}</pre>
here, We have used 3 placeholders<strong>.<br />
* {RequestURL}</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>{realmID} </strong>is your QuickBooks Online sandbox/production <strong>company ID</strong>.<br />
* <strong>{selectStatement} </strong>can be any query something like <strong>Select * From Invoice (*Note: select statement must be URL encoded first)<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>I am using my sandbox URL like this:<br />
<pre class="crayon-plain-tag">https://sandbox-quickbooks.api.intuit.com/v3/company/193514799372394/query?query=SELECT * FROM Invoice STARTPOSITION &lt;%startposition%&gt; MAXRESULTS 1000</pre>
<div id="attachment_10598" style="width: 666px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/read-data-from-quickbooks-online-to-sql-server/reading-data-from-intuit-quickbooks-via-odbc-driver-2/#main"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-10598" class="wp-image-10598 size-full" src="https://zappysys.com/blog/wp-content/uploads/2019/01/Reading-data-from-Intuit-QuickBooks-via-ODBC-driver-1.png" alt="" width="656" height="806" srcset="https://zappysys.com/blog/wp-content/uploads/2019/01/Reading-data-from-Intuit-QuickBooks-via-ODBC-driver-1.png 656w, https://zappysys.com/blog/wp-content/uploads/2019/01/Reading-data-from-Intuit-QuickBooks-via-ODBC-driver-1-244x300.png 244w" sizes="(max-width: 656px) 100vw, 656px" /></a><p id="caption-attachment-10598" class="wp-caption-text">Setup QuickBooks ODBC-based data source configuration</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/read-data-quickbooks-online-using-ssis/ssis-oauth-connection-manager-for-intuit-quickbooks-online-api-general-tab/#main" rel="noopener"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4776" class="wp-image-4776 size-full" 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">OAuth Connection Manager: General Tab Configurations</p></div></li>
<li>Most importantly, you also 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/read-data-quickbooks-online-using-ssis/ssis-oauth-connection-manager-for-intuit-quickbooks-online-api-advanced-tab/#main" rel="noopener"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4777" class="wp-image-4777 size-full" 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">OAuth Connection Manager: Advanced Tab Configurations</p></div></li>
<li>Similarly, 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/read-data-quickbooks-online-using-ssis/ssis-oauth-connection-manager-for-intuit-quickbooks-online-api-oauth-2-grant-options-tab/#main" rel="noopener"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4778" class="wp-image-4778 size-full" 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">OAuth Connection Manager: OAuth2 Grant Options Tab Configurations</p></div></li>
<li>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.
<div id="attachment_6415" style="width: 781px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/read-data-from-quickbooks-online-to-sql-server/odbc-quickbooks-oauth-test/#main" rel="noopener"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-6415" class="wp-image-6415 size-full" src="https://zappysys.com/blog/wp-content/uploads/2019/01/odbc-quickbooks-oauth-test.png" alt="" width="771" height="738" srcset="https://zappysys.com/blog/wp-content/uploads/2019/01/odbc-quickbooks-oauth-test.png 771w, https://zappysys.com/blog/wp-content/uploads/2019/01/odbc-quickbooks-oauth-test-300x287.png 300w, https://zappysys.com/blog/wp-content/uploads/2019/01/odbc-quickbooks-oauth-test-768x735.png 768w" sizes="(max-width: 771px) 100vw, 771px" /></a><p id="caption-attachment-6415" class="wp-caption-text">Generate Token and Test Connection</p></div></li>
<li>Let&#8217;s continue on, and enable pagination by configuring it like in the image below in the <em>Pagination</em> tab. In the <em>Page Num Indicator</em> field input this value: <code>&lt;%startposition%&gt;</code> Then set <em>Increment By</em> value to a maximum number of results possible: <code>1000</code><a href="https://zappysys.com/blog/wp-content/uploads/2019/01/Pagination-reading-data-from-Intuit-QuickBooks-via-ODBC-driver.png"><br />
</a></p>
<div id="attachment_10595" style="width: 668px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/read-data-from-quickbooks-online-to-sql-server/pagination-reading-data-from-intuit-quickbooks-via-odbc-driver/#main"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-10595" class="wp-image-10595 size-full" src="https://zappysys.com/blog/wp-content/uploads/2019/01/Pagination-reading-data-from-Intuit-QuickBooks-via-ODBC-driver.png" alt="" width="658" height="508" srcset="https://zappysys.com/blog/wp-content/uploads/2019/01/Pagination-reading-data-from-Intuit-QuickBooks-via-ODBC-driver.png 658w, https://zappysys.com/blog/wp-content/uploads/2019/01/Pagination-reading-data-from-Intuit-QuickBooks-via-ODBC-driver-300x232.png 300w" sizes="(max-width: 658px) 100vw, 658px" /></a><p id="caption-attachment-10595" class="wp-caption-text">Configuring pagination to get QuickBooks all rows in ODBC JSON-based driver data source</p></div></li>
<li>Finally, now using Code Generator we will generate the query.
<div id="attachment_6416" style="width: 766px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/read-data-from-quickbooks-online-to-sql-server/odbc-json-driver-generate-quickbooks-query/#main" rel="noopener"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-6416" class="wp-image-6416 size-full" src="https://zappysys.com/blog/wp-content/uploads/2019/01/odbc-json-driver-generate-quickbooks-query.png" alt="odbc-json-driver-generate-quickbooks-query" 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">Generate Query</p></div></li>
</ol>
<h3>Load QuickBooks Invoices data in MS SQL Server</h3>
<div class="content_block" id="custom_post_widget-6457">Once you configured the data source in Gateway, we can now setup Linked Server in SQL Server to query API data.
<ol style="margin-left: 10px;">
 	<li>Assuming you have installed SQL Server and SSMS. If not then get both for FREE from here: <a href="https://www.microsoft.com/en-us/sql-server/sql-server-editions-express" target="_blank" rel="noopener">Get SQL Server Express</a> and  <a href="https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms" target="_blank" rel="noopener">Get SSMS</a></li>
 	<li>Open SSMS and connect to SQL Server.</li>
 	<li>Go to Root &gt; Server Objects &gt; Linked Servers node. Right click and click <strong>New Linked Server...</strong>
<div class="wp-caption alignnone">

<a href="https://i1.wp.com/zappysys.com/blog/wp-content/uploads/2018/03/create-new-linked-server-ssms.png?ssl=1" target="_blank" rel="noopener"><img loading="lazy" decoding="async" src="https://i1.wp.com/zappysys.com/blog/wp-content/uploads/2018/03/create-new-linked-server-ssms.png?w=720&amp;ssl=1" alt="Add Linked Server in SQL Server" width="420" height="262" /></a>
<p class="wp-caption-text">Add Linked Server in SQL Server</p>

</div></li>
 	<li> Now enter the linked server name, select Provider as SQL Native Client</li>
 	<li>Enter data source as <strong><span class="lang:default decode:true crayon-inline">GatewayServerName, PORT_NUMBER</span></strong> where server name is where ZappySys Gateway is running (Can be same as SQL Server machine or remote machine). Default PORT_NUMBER is 5000 but confirm on Data gateway &gt; General tab in case its different.</li>
 	<li>Enter Catalog Name. This must match name from Data gateway Data sources grid &gt; Name column
<div class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2018/11/ssms-sql-server-configure-linked-server-2.png">
<img decoding="async" src="https://zappysys.com/blog/wp-content/uploads/2018/11/ssms-sql-server-configure-linked-server-2.png" alt="Configure Linked Server Provider, Catalog, Server, Port for ZappySys Data Gateway Connection" />
</a>
<p class="wp-caption-text">Configure Linked Server Provider, Catalog, Server, Port for ZappySys Data Gateway Connection</p>
</div>
<div style="color: #31708f;background-color: #d9edf7;border-color: #bce8f1;padding: 15px;margin-bottom: 20px;border: 1px solid transparent;border-radius: 4px;">
<strong>INFO:</strong><br/>
<ul>
    <li>
      For <strong>SQL Server 2012, 2014, 2016, 2017, and 2019</strong>, use the <em>SQL Server Native Client 11.0</em> as the Provider.
    </li>
    <li>
      For <strong>SQL Server 2022 or higher</strong>, use the <em>Microsoft OLE DB Driver for SQL Server</em> as the Provider.
    </li>
  </ul>
</div></li>
 	<li>Click on Security Tab and select last option "<strong>Be made using this security context</strong>". Enter your gateway user account here.</li>
<li>
        <p>Optional: Under the Server Options Tab, Enable <b>RPC</b> and <b>RPC Out</b> and Disable Promotion of Distributed Transactions<b>(MSDTC)</b>.</p>
		<div class="wp-caption alignnone">
			<img decoding="async" class="block margin-bottom-10 img-thumbnail" src="https://zappysys.com/blog/wp-content/uploads/2018/11/linked-server-options-rpc-msdtc.png" title="RPC and MSDTC Settings" alt="RPC and MSDTC Settings" />
			<p class="wp-caption-text">RPC and MSDTC Settings</p>
		</div>
        <hr />
        <p>
            You need to enable RPC Out if you plan to use <b><i>EXEC(...) AT [MY_LINKED_SERVER_NAME]</i></b> rather than OPENQUERY.
            <br />
            If don't enabled it, you will encounter the <i>'Server "MY_LINKED_SERVER_NAME" is not configured for RPC'</i> error.
        </p>
        <p>
            Query Example:
            <code class="sql">EXEC('Select * from Products') AT [MY_LINKED_SERVER_NAME]</code>
        </p>
        <hr />
        <p>
            If you plan to use <b><i>'INSERT INTO...EXEC(....) AT [MY_LINKED_SERVER_NAME]'</i></b> in that case you need to Disable Promotion of Distributed Transactions(MSDTC).
            <br />
            If don't disabled it, you will encounter the <i>'The operation could not be performed because OLE DB provider "SQLNCLI11/MSOLEDBSQL" for linked server "MY_LINKED_SERVER_NAME" was unable to begin a distributed transaction.'</i> error.
        </p>
        <p>
            Query Example:
<pre class="">Insert Into dbo.Products 
EXEC('Select * from Products') AT [MY_LINKED_SERVER_NAME]</pre>
        </p>
        <hr />
</li>
 	<li>Click OK to save Linked Server</li>
 	<li>In SSMS execute below SQL query to test your connectivity.
<pre class="">SELECT * FROM OPENQUERY( MY_LINKED_SERVER_NAME, 'SELECT * FROM $')</pre>
</li>
 	<li>Here is the preview after you run some REST API query in SQL Server. Notice that you can override default configuration by supplying <a href="https://zappysys.com/onlinehelp/odbc-powerpack/scr/json-odbc-driver-connectionstring.htm" target="_blank" rel="noopener">many parameters</a> in WITH clause (second query example in the screenshot).
<div class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2019/01/odbc_json_driver__api_query_data_in_mssqlserver.png" target="_blank" rel="noopener">
<img loading="lazy" decoding="async" width="750" height="354" class="wp-image-6455 size-full" src="https://zappysys.com/blog/wp-content/uploads/2019/01/odbc_json_driver__api_query_data_in_mssqlserver.png" alt="odbc_json_driver_api_query_data_in_mssqlserver" srcset="https://zappysys.com/blog/wp-content/uploads/2019/01/odbc_json_driver__api_query_data_in_mssqlserver.png 750w, https://zappysys.com/blog/wp-content/uploads/2019/01/odbc_json_driver__api_query_data_in_mssqlserver-300x142.png 300w" sizes="(max-width: 750px) 100vw, 750px" />
</a>
<p class="wp-caption-text">SSMS Output - Query REST API via Linked Server OPENQUERY statement (Connect to ZappySys Data Gateway)</p>

</div></li>
 	<li>You can wrap your queries inside View or wrap inside Stored procedure to parameterize. Here is an example of creating the view which calls REST API queries.
<pre class="lang:tsql decode:true">CREATE VIEW dbo.vw_MyAPICall_View 
AS 
/*Call REST API inside SQL Server View*/
SELECT * FROM OPENQUERY( MY_LINKED_SERVER_NAME , 'SELECT * FROM $');

GO
</pre>
</li>
 	<li>Notice in above approach if you parameterize Stored Procedure then <a href="https://zappysys.com/blog/create-csv-list-sql-server-table-columns-datatypes/" target="_blank" rel="noopener">check this article to understand Dynamic Metadata</a>.</li>
 	<li>Now let's insert API data into the new data table "tblMyAPiData" in the SQL server database. For that, we need to execute below SQL query.
<pre class="lang:tsql decode:true ">Select * into tblMyAPiData FROM OPENQUERY( MY_LINKED_SERVER_NAME , 'SELECT * FROM $')</pre>
<div class="wp-caption alignnone">

<a href="https://zappysys.com/blog/wp-content/uploads/2019/02/odbc_json_driver_insert_data_in_sql.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" width="681" height="571" class="wp-image-6469 size-full" src="https://zappysys.com/blog/wp-content/uploads/2019/02/odbc_json_driver_insert_data_in_sql.png" alt="odbc_json_driver_insert_data_in_sql" srcset="https://zappysys.com/blog/wp-content/uploads/2019/02/odbc_json_driver_insert_data_in_sql.png 681w, https://zappysys.com/blog/wp-content/uploads/2019/02/odbc_json_driver_insert_data_in_sql-300x252.png 300w" sizes="(max-width: 681px) 100vw, 681px" /></a>
<p class="wp-caption-text">Insert data into the new table</p>

</div></li>
 	<li>Let's insert and update records into the already created table <span class="lang:default decode:true crayon-inline">"tblMyAPiData"</span>
<ul>
 	<li>To do that first we need to insert the new API data into the <span class="lang:default decode:true crayon-inline">"#temp_tblMyAPiData"</span> temporary database table.</li>
 	<li>Now let's delete the old records from the database table which are updated.</li>
 	<li>At the last insert all new API data into the database table.</li>
 	<li>To do that, we need to query like below SQL queries.</li>
</ul>
<pre class="lang:default decode:true">SELECT * into #temp_tblMyAPiData FROM OPENQUERY(MY_LINKED_SERVER_NAME, 'SELECT * FROM $')

DELETE FROM [dbo].[tblMyAPiData] WHERE id in (SELECT id FROM #temp_tblMyAPiData)

INSERT INTO tblMyAPiData
SELECT * FROM #temp_tblMyAPiData</pre>
&nbsp;</li>
 	<li>In the upper step, we see how to insert and update new records. Now if you want to update particular fields records only then you need to query like this.
<pre class="lang:default decode:true">Update dbtbl_1
set dbtbl_1.field1 = dbtbl_2.field1,
    dbtbl_1.field2 = dbtbl_2.field2
FROM tblMyAPiData dbtbl_1
JOIN (SELECT * FROM OPENQUERY(MY_LINKED_SERVER_NAME, 'SELECT * FROM $')) dbtbl_2 on dbtbl_1.id=dbtbl_2.id</pre>
<div class="su-note-inner su-clearfix" style="background-color: #fff4b7;border-color: #fffdf1;color: #333333">
<blockquote>*NOTE: If you are getting error like : "<strong>Cannot resolve the collation conflict between “Latin1_General_CI_AI” and “SQL_Latin1_General_CP1_CI_AS” in the equal to operation</strong>" then you need to query like this :
<pre class="lang:default decode:true">Update dbtbl_1
set dbtbl_1.field1 = dbtbl_2.field1,
    dbtbl_1.field2 = dbtbl_2.field2
FROM tblMyAPiData dbtbl_1
JOIN (SELECT * FROM OPENQUERY(MY_LINKED_SERVER_NAME, 'SELECT * FROM $')) dbtbl_2 
on dbtbl_1.id=dbtbl_2.id 
<strong>COLLATE SQL_Latin1_General_CP1_CI_AS</strong></pre>
&nbsp;</blockquote>
</div></li>
</ol></div>
<h2><span id="Step-by-Step_Import_REST_API_into_Power_BI">Conclusion</span></h2>
<p>So in this blog, we learned how to generate a QuickBooks API Token, Load QuickBooks Invoices data in MS SQL Server table using <a href="https://zappysys.com/products/odbc-powerpack/odbc-json-rest-api-driver/" target="_blank" rel="noopener">ODBC JSON / REST API Driver</a> in a very simple way. You can achieve many more functionalities with this tool. Check our blogs/articles on <strong>JSON / REST API Driver</strong> <a href="https://zappysys.com/blog/category/odbc-powerpack/odbc-drivers/json-rest-api-driver/" target="_blank" rel="noopener">https://zappysys.com/blog/category/odbc-powerpack/odbc-drivers/json-rest-api-driver/</a> 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 use of QuickBooks API with our tools:</p>
<ul>
<li><a href="https://developer.atlassian.com/cloud/jira/platform/rest/" target="_blank" rel="noopener">QuickBooks Documentation for API</a></li>
<li><strong>Landing Page</strong> for <a href="https://zappysys.com/products/odbc-powerpack/odbc-json-rest-api-driver/" target="_blank" rel="noopener">ODBC JSON / REST API Driver</a>, you can also find <a href="https://youtu.be/iwezz0Z3D4U" target="_blank" rel="noopener">Tutorial Video</a> here.</li>
<li><strong>Help File:</strong> Documentation of <a href="https://zappysys.com/onlinehelp/odbc-powerpack/index.htm#page=json-odbc-driver-intro.htm" target="_blank" rel="noopener">JSON Driver</a>.</li>
<li><strong>Blog/articles link</strong>: <a href="https://zappysys.com/blog/category/odbc-powerpack/odbc-drivers/json-rest-api-driver/" target="_blank" rel="noopener">https://zappysys.com/blog/category/odbc-powerpack/odbc-drivers/json-rest-api-driver/</a></li>
</ul>
<p>The post <a href="https://zappysys.com/blog/read-data-from-quickbooks-online-to-sql-server/">Read data from QuickBooks Online into SQL Server via ODBC Driver</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How to read data from Splunk in SSIS</title>
		<link>https://zappysys.com/blog/read-data-splunk-ssis/</link>
		
		<dc:creator><![CDATA[ZappySys]]></dc:creator>
		<pubDate>Sat, 29 Sep 2018 11:35:54 +0000</pubDate>
				<category><![CDATA[HTTP Connection]]></category>
		<category><![CDATA[REST API]]></category>
		<category><![CDATA[REST API Integration]]></category>
		<category><![CDATA[SSIS Connection Manager]]></category>
		<category><![CDATA[SSIS JSON Source (File/REST)]]></category>
		<category><![CDATA[oauth2]]></category>
		<category><![CDATA[rest]]></category>
		<category><![CDATA[rest api]]></category>
		<category><![CDATA[splunk]]></category>
		<category><![CDATA[ssis]]></category>
		<guid isPermaLink="false">https://zappysys.com/blog/?p=4979</guid>

					<description><![CDATA[<p>Introduction Splunk is commonly used for searching, monitoring, and analyzing machine-generated big data, via a Web-style interface. In this post, you will learn how to implement Splunk API Integration with SQL Server or any other RDBMS (e.g. Oracle, MySQL, Postgresql) using SSIS in a few clicks. We will use SSIS XML Source to Read data from Splunk and Load into SQL Server / other [&#8230;]</p>
<p>The post <a href="https://zappysys.com/blog/read-data-splunk-ssis/">How to read data from Splunk 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/2018/09/splunk-logo.png"><img loading="lazy" decoding="async" class="alignleft size-thumbnail wp-image-4980" src="https://zappysys.com/blog/wp-content/uploads/2018/09/splunk-logo-150x150.png" alt="Splunk Logo" width="150" height="150" /></a>Splunk is commonly used for searching, monitoring, and analyzing machine-generated big data, via a Web-style interface. In this post, you will learn how to implement <a href="http://docs.splunk.com/Documentation/Splunk/latest/RESTREF/RESTprolog" target="_blank" rel="noopener">Splunk API</a> Integration with SQL Server or any other RDBMS (e.g. Oracle, MySQL, Postgresql) using <strong>SSIS</strong> in a 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 Splunk</strong> and Load into SQL Server / other targets (Using HTTP Connection).</p>
<p>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 Splunk</strong> (API POST for Insert or Update in Splunk) using <a href="https://zappysys.com/products/ssis-powerpack/ssis-rest-api-web-service-task/">SSIS REST API Task</a></p>
<p>In nutshell, this post will focus on how to call Splunk API using SSIS.<br />
So let’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>What is Splunk</h2>
<p>Splunk is a software platform to search, analyze and visualize the machine-generated data gathered from the websites, applications, sensors, devices etc. which make up your IT infrastructure and business.</p>
<p>The other benefits of implementing Splunk are:</p>
<ul>
<li>Input data can be in any format for e.g. .csv, or JSON or other formats</li>
<li>Give Alerts / Events notification at the onset of a machine state</li>
<li>Accurately predict the resources needed for scaling up the infrastructure</li>
<li>Create knowledge objects for Operational Intelligence</li>
</ul>
<h2>Why Use Splunk REST API</h2>
<p>So there will be a time when you want to automate certain things without using Splunk Web Portal. Here are some example scenarios which can be solved using <a href="http://dev.splunk.com/restapi" target="_blank" rel="noopener">the Splunk REST API</a>.</p>
<ul>
<li>Reading/Update Splunk configuration files</li>
<li>Creating Splunk searches using the REST API</li>
<li>Create a new Splunk object for a specific context</li>
<li>Edit a Splunk object</li>
</ul>
<h2>Step-By-Step &#8211; Import Splunk data into SQL Server</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 Splunk API, read search job results data from Splunk with SSIS, create a new Saved Search on Splunk with SSIS and do many more actions using REST API. To learn more about Splunk REST API <a href="http://dev.splunk.com/restapi" rel="noopener">check this help file</a>.</p>
<p>To get Splunk data using the REST API call, you need to have a Free or Licensed Splunk Account. You can Download Splunk Enterprise or Register with Splunk <a href="https://www.splunk.com/en_us/download.html">see this link.</a> You can find the videos for <strong>How to Install</strong> and <strong>Getting Data in</strong> on this link: <a href="https://www.splunk.com/en_us/training/videos/all-videos.html" target="_blank" rel="noopener">Splunk Enterprise Videos</a>.</p>
<h3>Create / Configure Splunk Dataset</h3>
<p>So first step in our demo would be make sure we have at least one Splunk Dataset which we can query using REST API. If you have already configured Dataset then skip this section.</p>
<ol>
<li>First of all, let&#8217;s start the Splunk on your machine from the program menu.
<div id="attachment_6225" style="width: 402px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-start-splunk.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-6225" class="wp-image-6225 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-start-splunk.png" alt="ssis-start-splunk" width="392" height="622" srcset="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-start-splunk.png 392w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-start-splunk-189x300.png 189w" sizes="(max-width: 392px) 100vw, 392px" /></a><p id="caption-attachment-6225" class="wp-caption-text">Start Splunk</p></div></li>
<li>Hence, Splunk opens into the browser. So let&#8217;s logged in and let&#8217;s Add Data for WinEvents to be searched in our next phase.
<div id="attachment_6226" style="width: 921px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-add-data-click.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-6226" class="wp-image-6226 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-add-data-click-e1550857291681.png" alt="ssis-splunk-add-data-click" width="911" height="439" srcset="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-add-data-click-e1550857291681.png 911w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-add-data-click-e1550857291681-300x145.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-add-data-click-e1550857291681-768x370.png 768w" sizes="(max-width: 911px) 100vw, 911px" /></a><p id="caption-attachment-6226" class="wp-caption-text">Add Data</p></div></li>
<li>To start adding data first, choose a data source. For example, you can monitor WinEvents.
<div id="attachment_6227" style="width: 568px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-moniter-data-click.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-6227" class="wp-image-6227 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-moniter-data-click-e1550857375668.png" alt="ssis-splunk-moniter-data-click" width="558" height="337" srcset="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-moniter-data-click-e1550857375668.png 558w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-moniter-data-click-e1550857375668-300x181.png 300w" sizes="(max-width: 558px) 100vw, 558px" /></a><p id="caption-attachment-6227" class="wp-caption-text">Select Data Source</p></div></li>
<li>Select Search &amp; Reporting in App Context and click next for review and click next to finish.
<div id="attachment_6228" style="width: 993px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-select-search-and-reporting.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-6228" class="wp-image-6228 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-select-search-and-reporting-e1550857445835.png" alt="ssis-splunk-select-search-and-reporting" width="983" height="423" srcset="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-select-search-and-reporting-e1550857445835.png 983w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-select-search-and-reporting-e1550857445835-300x129.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-select-search-and-reporting-e1550857445835-768x330.png 768w" sizes="(max-width: 983px) 100vw, 983px" /></a><p id="caption-attachment-6228" class="wp-caption-text">Select Search &amp; Reporting</p></div></li>
<li>That&#8217;s it local event logs input has been created successfully for searching.
<div id="attachment_6229" style="width: 914px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-start-searching-local-source.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-6229" class="wp-image-6229 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-start-searching-local-source-e1550857538570.png" alt="ssis-splunk-start-searching-local-source" width="904" height="640" srcset="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-start-searching-local-source-e1550857538570.png 904w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-start-searching-local-source-e1550857538570-300x212.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-start-searching-local-source-e1550857538570-768x544.png 768w" sizes="(max-width: 904px) 100vw, 904px" /></a><p id="caption-attachment-6229" class="wp-caption-text">Start searching for local events</p></div></li>
<li>Therefore you will redirect to search page.
<div id="attachment_6230" style="width: 1202px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-search-page.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-6230" class="wp-image-6230 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-search-page-e1550857659614.png" alt="ssis-splunk-search-page" width="1192" height="692" srcset="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-search-page-e1550857659614.png 1192w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-search-page-e1550857659614-300x174.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-search-page-e1550857659614-768x446.png 768w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-search-page-e1550857659614-1024x594.png 1024w" sizes="(max-width: 1192px) 100vw, 1192px" /></a><p id="caption-attachment-6230" class="wp-caption-text">Splunk search page</p></div></li>
<li>So, let&#8217;s import WinEvents search data into SQL Server in the next few sections.</li>
</ol>
<p>&nbsp;</p>
<h3>Connect to Splunk in SSIS / Create Search JOB / Obtain JobID</h3>
<p>Now once you have Splunk Dataset configured, next step is Call Splunk API. So most common thing you will do with splunk API is to call splunk search API. In splunk Search API is Job Style API means you perform following steps</p>
<ol>
<li>First call /services/search/jobs/ endpoint with Search query (in POST) to create search Job. It returns you Job ID (also known as <strong>SID</strong>)</li>
<li>Wait until Job is done (This part may be tricky) &#8230; SO you may have to add timer task after first step and in the 3rd step enable Retry option on HTTP connection just incase it didnt finish within supplied delay.</li>
<li>Once Job finished you can read by calling below API endpoint.<br />
/services/search/jobs/{{your Job Id}}/results?output_mode=json</li>
</ol>
<p>Thats it now let&#8217;s look at actual steps</p>
<ol>
<li>Now let&#8217;s make the first call to search job using a POST method. If you are using a custom time range, pass it in with the POST request. Refer this link for more information: <a href="https://docs.splunk.com/Documentation/Splunk/7.2.3/Search/ExportdatausingRESTAPI" target="_blank" rel="noopener">Export data using the Splunk REST API</a>. If your URL is different than below HTTP connection then Check <strong>Use direct URL</strong> option on REST API Task and enter custom URL.<br />
<pre class="crayon-plain-tag">URL:
https://localhost:8089/services/search/jobs/

Post Reuest Data:
search=search source="WinEventLog:*" host="SCIFI08" earliest=-1d&amp;output_mode=json</pre>
<div id="attachment_6309" style="width: 1579px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-search-post-call.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-6309" class="wp-image-6309 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-search-post-call.png" alt="ssis-splunk-search-post-call" width="1569" height="714" srcset="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-search-post-call.png 1569w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-search-post-call-300x137.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-search-post-call-768x349.png 768w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-search-post-call-1024x466.png 1024w" sizes="(max-width: 1569px) 100vw, 1569px" /></a><p id="caption-attachment-6309" class="wp-caption-text">Splunk POST Search request</p></div></li>
<li>So let&#8217;s get Response SID(Search job ID) into the variable to be used in the next call to get results.
<div id="attachment_6311" style="width: 1182px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-get-sid-in-variable.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-6311" class="wp-image-6311 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-get-sid-in-variable.png" alt="ssis-splunk-get-sid-in-variable" width="1172" height="659" srcset="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-get-sid-in-variable.png 1172w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-get-sid-in-variable-300x169.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-get-sid-in-variable-768x432.png 768w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-get-sid-in-variable-1024x576.png 1024w" sizes="(max-width: 1172px) 100vw, 1172px" /></a><p id="caption-attachment-6311" class="wp-caption-text">Store Splunk Response Search Job ID in a variable</p></div></li>
<li>Now add the Data Flow Task to retrieve Splunk search result data using JSON Source (REST API or File) in it. In below URL we are specifying <strong>count=5</strong> but in real world change it to 100 or higher.<br />
<pre class="crayon-plain-tag">TO Get Metadata deatils:
https://localhost:8089/services/search/jobs/1549701697.1424/results?output_mode=json&amp;offset=0&amp;count=5</pre>
<div id="attachment_6314" style="width: 1335px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-get-results-meta.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-6314" class="wp-image-6314 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-get-results-meta.png" alt="ssis-splunk-get-results-meta" width="1325" height="733" srcset="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-get-results-meta.png 1325w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-get-results-meta-300x166.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-get-results-meta-768x425.png 768w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-get-results-meta-1024x566.png 1024w" sizes="(max-width: 1325px) 100vw, 1325px" /></a><p id="caption-attachment-6314" class="wp-caption-text">Splunk Search JSON Results Data</p></div></li>
<li>Furthermore, Let&#8217;s set pagination to get all the results data.<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: In below screenshot we are specifying count=5 and Increment=5 just to show demo but in real world set both items to higher value (e.g. 100) so you request more records per page.</div></div>
<div id="attachment_6319" style="width: 814px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-set-pagination.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-6319" class="wp-image-6319 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-set-pagination.png" alt="ssis-splunk-set-pagination" width="804" height="860" srcset="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-set-pagination.png 804w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-set-pagination-280x300.png 280w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-set-pagination-768x821.png 768w" sizes="(max-width: 804px) 100vw, 804px" /></a><p id="caption-attachment-6319" class="wp-caption-text">Set Pagination</p></div></li>
<li>Let&#8217;s preview the results data.
<div id="attachment_6316" style="width: 1045px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-preview-results.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-6316" class="wp-image-6316 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-preview-results-e1550857742506.png" alt="Preview Splunk Search Data" width="1035" height="725" srcset="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-preview-results-e1550857742506.png 1035w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-preview-results-e1550857742506-300x210.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-preview-results-e1550857742506-768x538.png 768w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-preview-results-e1550857742506-1024x717.png 1024w" sizes="(max-width: 1035px) 100vw, 1035px" /></a><p id="caption-attachment-6316" class="wp-caption-text">Preview Splunk Search Data</p></div></li>
<li>Edit JSON Source again and replace the below URL with it to get results By SID(Search Job ID) variable. And create the new HTTP connection as if the search job(SID) is newly created, it is possible that we will #get 204s(No Content) until the job is ready to respond.<br />
<pre class="crayon-plain-tag">https://localhost:8089/services/search/jobs/{{User::v_sid}}/results?output_mode=json&amp;offset=0&amp;count=5</pre>
<div id="attachment_6342" style="width: 1505px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-204-handling.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-6342" class="wp-image-6342 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-204-handling.png" alt="ssis-splunk-204-handling" width="1495" height="731" srcset="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-204-handling.png 1495w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-204-handling-300x147.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-204-handling-768x376.png 768w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-204-handling-1024x501.png 1024w" sizes="(max-width: 1495px) 100vw, 1495px" /></a><p id="caption-attachment-6342" class="wp-caption-text">204 No Content response error handling</p></div></li>
<li>Furthermore, click on OK button and make sure we need to <strong><strong>click on NO.</strong></strong>
<div id="attachment_6343" style="width: 836px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-set-variable-url.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-6343" class="wp-image-6343 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-set-variable-url.png" alt="ssis-splunk-set-variable-url" width="826" height="733" srcset="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-set-variable-url.png 826w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-set-variable-url-300x266.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-splunk-set-variable-url-768x682.png 768w" sizes="(max-width: 826px) 100vw, 826px" /></a><p id="caption-attachment-6343" class="wp-caption-text">Splunk URL With variable</p></div></li>
<li>Finally, we are ready to Load Splunk data into the SQL Server.</li>
</ol>
<h3>Load Splunk data into SQL Server</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><span id="Conclusion">Conclusion</span></h2>
<p>Above all, in this blog, we learned how to read Splunk data in SSIS. Furthermore we used <a href="https://zappysys.com/products/ssis-powerpack/ssis-xml-source/">XML Source Component</a> and <a href="https://zappysys.com/products/ssis-powerpack/ssis-rest-api-web-service-task/">SSIS REST API Task</a> to call Splunk REST API and load data into SQL server. 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 about the use of Splunk Online REST API with our tools:</p>
<ul>
<li><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><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">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>The post <a href="https://zappysys.com/blog/read-data-splunk-ssis/">How to read data from Splunk 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 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 call Zoom REST API using SSIS (OAuth / JWT)</title>
		<link>https://zappysys.com/blog/call-zoom-rest-api-using-ssis/</link>
		
		<dc:creator><![CDATA[ZappySys]]></dc:creator>
		<pubDate>Fri, 07 Sep 2018 20:17:34 +0000</pubDate>
				<category><![CDATA[REST API Integration]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[jwt]]></category>
		<category><![CDATA[oauth]]></category>
		<category><![CDATA[oauth2]]></category>
		<category><![CDATA[rest api]]></category>
		<category><![CDATA[zoom]]></category>
		<guid isPermaLink="false">https://zappysys.com/blog/?p=4758</guid>

					<description><![CDATA[<p>Introduction In this post you will learn how to call Zoom REST API using SSIS. We will use SSIS REST API Task and JSON Source (see below). We will go through step by step demonstration to show you how to register OAuth App in Zoom portal, call API to read data and load into SQL [&#8230;]</p>
<p>The post <a href="https://zappysys.com/blog/call-zoom-rest-api-using-ssis/">How to call Zoom REST API using SSIS (OAuth / JWT)</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/zoom-connector/">API Connector for Zoom</a> which makes it much simpler to <strong>Read/Write Zoom 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>
<a href="https://zappysys.com/blog/wp-content/uploads/2018/09/zoom-api-integration.png"><img loading="lazy" decoding="async" class=" wp-image-4788 alignleft" src="https://zappysys.com/blog/wp-content/uploads/2018/09/zoom-api-integration.png" alt="" width="105" height="105" srcset="https://zappysys.com/blog/wp-content/uploads/2018/09/zoom-api-integration.png 250w, https://zappysys.com/blog/wp-content/uploads/2018/09/zoom-api-integration-150x150.png 150w" sizes="(max-width: 105px) 100vw, 105px" /></a>In this post you will learn how to call Zoom REST API using SSIS. We will use SSIS REST API Task and JSON Source (see below). We will go through step by step demonstration to show you how to register OAuth App in Zoom portal, call API to read data and load into SQL Server.</p>
<p>&nbsp;</p>
<p><strong>Tasks / Components used in this article.</strong><br />
<div class="su-table su-table-alternate">
<table>
<tbody>
<tr>
<td><img loading="lazy" decoding="async" class="" src="https://zappysys.com/images/ssis-powerpack/ssis-rest-api-web-service-task.png" alt="Custom SSIS Tasks - SSIS Rest Api Web Service Task" width="47" height="47" /></td>
<td><a href="https://zappysys.com/products/ssis-powerpack/ssis-rest-api-web-service-task/" target="_blank" rel="noopener">REST API Web Service Task</a></td>
</tr>
<tr class="su-even">
<td><img loading="lazy" decoding="async" class="" src="https://zappysys.com/images/ssis-powerpack/SSIS-Json-Source-Adapter.png" alt="Custom SSIS Components - Json Source" width="47" height="47" /></td>
<td><a href="https://zappysys.com/products/ssis-powerpack/ssis-json-file-source/" target="_blank" rel="noopener">JSON Source (REST API Source)</a></td>
</tr>
</tbody>
</table>
</div>
<h2><span id="Prerequisites">Prerequisites</span></h2>
<p>Before we look into Step-By-Step section to extract and load data from <strong>Zoom 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 Zoom API.</li>
</ol>
<h2>Zoom API Authentication</h2>
<p>Now let&#8217;s look at step by step how to read data from Zoom API or POST data to Zoom using SSIS.</p>
<p>Zoom Provides 3 ways to authenticate API calls. In this article we will cover only JWT and OAuth 2.0 connection approach.</p>
<ol>
<li>Use JWT Token</li>
<li>Use OAuth 2.0 Token (3-legged OAuth)</li>
<li>Use API Key / Secret directly in API call (Mostly used by older API <a href="https://zoom.github.io/api-v1/#list-users" target="_blank" rel="noopener">like this one</a>)</li>
</ol>
<h2>Method-1 : Call Zoom API in SSIS using JWT Token (RFC 7519)</h2>
<p>In this section we will learn how to use JWT Token method to call Zoom API (i.e. JWT <a href="https://tools.ietf.org/html/rfc7519" target="_blank" rel="noopener">as per RFC 7519</a> and <a href="https://jwt.io/" target="_blank" rel="noopener">here</a> ).</p>
<p>JWT method is simple compared to OAuth 2.0 (next section) so many people prefer it compared to OAuth.</p>
<p>Now let&#8217;s look at how to use JWT token approach to authenticate your Zoom API calls.</p>
<h3>Obtain Zoom API Key / Secret for JWT Auth</h3>
<ol>
<li>First Visit your <a href="https://developer.zoom.us/me/" target="_blank" rel="noopener">Zoom Developer account here</a></li>
<li>Click on API Tab and copy your API Key and Secret (We will use it later)
<div id="attachment_4956" style="width: 859px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2018/09/zoom-api-key-secret-jwt-token.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4956" class="size-full wp-image-4956" src="https://zappysys.com/blog/wp-content/uploads/2018/09/zoom-api-key-secret-jwt-token.png" alt="Obtain Zoom API Key and Secret (Used to generate JWT Token)" width="849" height="531" srcset="https://zappysys.com/blog/wp-content/uploads/2018/09/zoom-api-key-secret-jwt-token.png 849w, https://zappysys.com/blog/wp-content/uploads/2018/09/zoom-api-key-secret-jwt-token-300x188.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/09/zoom-api-key-secret-jwt-token-768x480.png 768w, https://zappysys.com/blog/wp-content/uploads/2018/09/zoom-api-key-secret-jwt-token-436x272.png 436w" sizes="(max-width: 849px) 100vw, 849px" /></a><p id="caption-attachment-4956" class="wp-caption-text">Obtain Zoom API Key and Secret (Used to generate JWT Token)</p></div></li>
<li>Whitelist the Redirect URL
<div id="attachment_9274" style="width: 761px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2018/09/Zoom-Callback-URL.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-9274" class="size-full wp-image-9274" src="https://zappysys.com/blog/wp-content/uploads/2018/09/Zoom-Callback-URL.png" alt="Whitelist Callback URL" width="751" height="270" srcset="https://zappysys.com/blog/wp-content/uploads/2018/09/Zoom-Callback-URL.png 751w, https://zappysys.com/blog/wp-content/uploads/2018/09/Zoom-Callback-URL-300x108.png 300w" sizes="(max-width: 751px) 100vw, 751px" /></a><p id="caption-attachment-9274" class="wp-caption-text">Whitelist the Redirect URL</p></div></li>
</ol>
<p>Once we have API key / Secret we can move on to SSIS part.</p>
<h3>Configure SSIS HTTP Connection with JWT</h3>
<p>Now lets get started with SSIS part. We will first create HTTP Connection for Zoom API access using JWT method.</p>
<ol>
<li>Open SSIS Package and drag <a href="https://zappysys.com/products/ssis-powerpack/ssis-rest-api-web-service-task/" target="_blank" rel="noopener">ZS REST API Task</a> from SSIS Control Flow Toolbox</li>
<li>Change URL Access Mode to <strong>Url From Connection</strong></li>
<li>Enter URL as <strong>https://api.zoom.us/v2/users/me/settings</strong></li>
<li>Select <strong>New ZS-HTTP</strong> connection type from the connection dropdown</li>
<li>Configure HTTP Connection as below. Select <strong>Credentials Type</strong> as <strong>JWT Token</strong>. Enter API Key and Secret.
<div id="attachment_4957" style="width: 730px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-jwt-token-option-http-connection-manager.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4957" class="size-full wp-image-4957" src="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-jwt-token-option-http-connection-manager.png" alt="Configure HTTP Connection Manager (for API using JWT Token Authentication)" width="720" height="587" srcset="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-jwt-token-option-http-connection-manager.png 720w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-jwt-token-option-http-connection-manager-300x245.png 300w" sizes="(max-width: 720px) 100vw, 720px" /></a><p id="caption-attachment-4957" class="wp-caption-text">Configure HTTP Connection Manager (for API using JWT Token Authentication)</p></div></li>
<li>Once HTTP connection is configured you can click OK to save connection.</li>
<li>On the REST API Task click Test to confirm see its working.
<div id="attachment_4793" style="width: 798px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2018/09/call-zoom-rest-api-in-ssis-use-oauth-connection.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4793" class="size-full wp-image-4793" src="https://zappysys.com/blog/wp-content/uploads/2018/09/call-zoom-rest-api-in-ssis-use-oauth-connection.png" alt="Calling Zoom REST API using SSIS REST API Task" width="788" height="523" srcset="https://zappysys.com/blog/wp-content/uploads/2018/09/call-zoom-rest-api-in-ssis-use-oauth-connection.png 788w, https://zappysys.com/blog/wp-content/uploads/2018/09/call-zoom-rest-api-in-ssis-use-oauth-connection-300x199.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/09/call-zoom-rest-api-in-ssis-use-oauth-connection-768x510.png 768w, https://zappysys.com/blog/wp-content/uploads/2018/09/call-zoom-rest-api-in-ssis-use-oauth-connection-272x182.png 272w" sizes="(max-width: 788px) 100vw, 788px" /></a><p id="caption-attachment-4793" class="wp-caption-text">Calling Zoom REST API using SSIS REST API Task</p></div></li>
</ol>
<div class="content_block" id="custom_post_widget-2516"><h2><span id="Debug_Web_API_call_using_Fiddler">Debug Web API call using Fiddler</span></h2>
To test how things looking behind the scene we strongly suggest to use <a href="https://zappysys.com/blog/how-to-use-fiddler-to-analyze-http-web-requests/" target="_blank" rel="noopener">tool like  fiddler</a>.

You can double click the URL entry (Right side) to see Request and Response Panels. Top panel is Request (URL, Headers, Body) and Bottom Panel is Response.
<div id="attachment_2344" class="wp-caption alignnone">

<a href="https://zappysys.com/blog/wp-content/uploads/2016/05/ssis-rest-api-call-debug-via-fiddler.png?ssl=1"><img loading="lazy" decoding="async" class="size-full wp-image-2344" 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?resize=720%2C316&amp;ssl=1" sizes="(max-width: 720px) 100vw, 720px" srcset="https://zappysys.com/blog/wp-content/uploads/2016/05/ssis-rest-api-call-debug-via-fiddler.png?w=1287&amp;ssl=1 1287w, https://zappysys.com/blog/wp-content/uploads/2016/05/ssis-rest-api-call-debug-via-fiddler.png?resize=300%2C131&amp;ssl=1 300w, https://zappysys.com/blog/wp-content/uploads/2016/05/ssis-rest-api-call-debug-via-fiddler.png?resize=768%2C337&amp;ssl=1 768w, https://zappysys.com/blog/wp-content/uploads/2016/05/ssis-rest-api-call-debug-via-fiddler.png?resize=1024%2C449&amp;ssl=1 1024w" alt="Debugging Web API call using Fiddler in SSIS" width="702" height="308" 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://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://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://zappysys.com/blog/wp-content/uploads/2016/05/ssis-rest-api-call-debug-via-fiddler.png?fit=720%2C316&amp;ssl=1" /></a>
<p class="wp-caption-text">Debugging Web API call using Fiddler in SSIS</p>

</div>
<h2><span id="Loadingdata_fromREST_API_to_SQL_Server">Loading <span id="Loading_Graph_API_Office_365_data_to_SQL_Server">data from </span>REST API to SQL Server</span></h2>
Once you setup HTTP / OAUTH connection we can use <strong>JSON Source</strong> or <strong>XML Source</strong> to extract data from API and  load into SQL Server. If you are API is XML based API then use XML Source in below examples else use JSON Source.

For example purpose we will load data into SQL Server but you can load into any Target (e.g. Flat file, Oracle, Excel) using Microsoft or ZappySys Destination connectors

To load REST API data into SQL Server perform the following steps (<strong>Screenshots are generic</strong> and used for demonstration for purpose, <strong>your values can be different</strong> than below)
<ol>
 	<li>Go to SSIS Data Flow tab</li>
 	<li>Drag <a href="https://zappysys.com/products/ssis-powerpack/ssis-json-file-source/" target="_blank" rel="noopener">ZS JSON Source</a> from the SSIS Toolbox (Use <a href="https://zappysys.com/products/ssis-powerpack/ssis-xml-source/" target="_blank" rel="noopener">ZS XML Source</a> if your API is XML based API)</li>
 	<li>Double click to edit Source</li>
 	<li>Set API URL you like to call, Check Use Credentials if you need to use HTTP or OAuth connection</li>
 	<li>Set Method / Body if its other than GET. For method other than GET make sure you select correct <strong>Content-Type</strong> from Dropdown (e.g. <strong>application/json</strong>). This indicate input data format in Body.</li>
 	<li>Set <strong>HTTP Headers</strong> if needed (in Most cases you won't need to set this)</li>
 	<li>Select Filter (many times this is not needed). If your API response has array node then select it here. For example if your response looks like this <strong>{ rows: [ {...}, {...}, {...} ] }</strong> then filter would be <strong>$.rows[*]</strong>. Select Array node you like to extract in the Filter selection UI.

<a href="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-get-data-google-bigquery-select-json-filter.png"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1573" src="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-get-data-google-bigquery-select-json-filter.png" alt="" width="675" height="363" srcset="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-get-data-google-bigquery-select-json-filter.png 675w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-get-data-google-bigquery-select-json-filter-300x161.png 300w" sizes="(max-width: 675px) 100vw, 675px" /></a></li>
 	<li><a href="https://zappysys.com/blog/ssis-rest-api-looping-until-no-more-pages-found/" target="_blank" rel="noopener">Configure Pagination</a> if needed on the pagination tab. Check your API documentation see it supports pagination.</li>
 	<li>Click OK to Save component settings and generate <a href="https://zappysys.com/blog/handling-ssis-component-metadata-issues/" target="_blank" rel="noopener">desired metadata / columns for the output</a>.</li>
 	<li>Now drag <strong>OLEDB destination</strong> from the SSIS toolbox and drop on the Data Flow surface (technically you can use any valid Destination but for demo we will use OLEDB Destination)</li>
 	<li>Connect Source to Destination Component</li>
 	<li>On OLEDB destination select / create new SQL Connection and then Click "<strong>New Table</strong>"</li>
 	<li>Click on <strong>Mappings tab</strong> to map columns by names and click OK to save</li>
 	<li>Execute the Package</li>
</ol>
<div id="attachment_1617" class="wp-caption alignnone">

<a href="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-xero-to-sql-server-data-load.png"><img loading="lazy" decoding="async" class="size-full wp-image-1617" 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/2017/07/ssis-xero-to-sql-server-data-load.png?resize=720%2C546" sizes="(max-width: 720px) 100vw, 720px" srcset="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-xero-to-sql-server-data-load.png?w=782 782w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-xero-to-sql-server-data-load.png?resize=300%2C227 300w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-xero-to-sql-server-data-load.png?resize=768%2C582 768w" alt="Configure SSIS OLEDB Destination - Loading Xero Data into SQL Server Table" width="702" height="532" data-attachment-id="1617" data-permalink="https://zappysys.com/blog/reading-loading-data-in-xero-sql-server-ssis/ssis-xero-to-sql-server-data-load/#main" data-orig-file="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-xero-to-sql-server-data-load.png?fit=782%2C593&amp;ssl=1" data-orig-size="782,593" 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-xero-to-sql-server-data-load" data-image-description="&lt;p&gt;Configure SSIS OLEDB Destination – Loading Xero Data into SQL Server Table&lt;/p&gt; " data-medium-file="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-xero-to-sql-server-data-load.png?fit=300%2C227&amp;ssl=1" data-large-file="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-xero-to-sql-server-data-load.png?fit=720%2C546&amp;ssl=1" /></a>
<p class="wp-caption-text">Configure SSIS OLEDB Destination – Loading REST API Data into SQL Server Table</p>

</div>
<div id="attachment_1618" class="wp-caption alignnone">

<a href="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-xero-sql-server-load-mappings.png"><img loading="lazy" decoding="async" class="size-full wp-image-1618" 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/2017/07/ssis-xero-sql-server-load-mappings.png?resize=720%2C533" sizes="(max-width: 720px) 100vw, 720px" srcset="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-xero-sql-server-load-mappings.png?w=734 734w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-xero-sql-server-load-mappings.png?resize=300%2C222 300w" alt="Xero to SQL Server Column Mappings for OLEDB Destination" width="702" height="519" data-attachment-id="1618" data-permalink="https://zappysys.com/blog/reading-loading-data-in-xero-sql-server-ssis/ssis-xero-sql-server-load-mappings/#main" data-orig-file="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-xero-sql-server-load-mappings.png?fit=734%2C543&amp;ssl=1" data-orig-size="734,543" 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-xero-sql-server-load-mappings" data-image-description="&lt;p&gt;Xero to SQL Server Column Mappings for OLEDB Destination&lt;/p&gt; " data-medium-file="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-xero-sql-server-load-mappings.png?fit=300%2C222&amp;ssl=1" data-large-file="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-xero-sql-server-load-mappings.png?fit=720%2C533&amp;ssl=1" /></a>
<p class="wp-caption-text">REST API to SQL Server Column Mappings for OLEDB Destination</p>

</div>
<div id="attachment_1619" class="wp-caption alignnone">

<a href="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-loading-data-from-xero-to-sql-server.png"><img loading="lazy" decoding="async" class="size-full wp-image-1619" 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/2017/07/ssis-loading-data-from-xero-to-sql-server.png?resize=283%2C391" sizes="(max-width: 283px) 100vw, 283px" srcset="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-loading-data-from-xero-to-sql-server.png?w=283 283w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-loading-data-from-xero-to-sql-server.png?resize=217%2C300 217w" alt="Loading Xero data to SQL Server in SSIS" width="275" height="380" data-attachment-id="1619" data-permalink="https://zappysys.com/blog/reading-loading-data-in-xero-sql-server-ssis/ssis-loading-data-from-xero-to-sql-server/#main" data-orig-file="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-loading-data-from-xero-to-sql-server.png?fit=283%2C391&amp;ssl=1" data-orig-size="283,391" 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-loading-data-from-xero-to-sql-server" data-image-description="&lt;p&gt;Loading Xero data to SQL Server in SSIS&lt;/p&gt; " data-medium-file="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-loading-data-from-xero-to-sql-server.png?fit=217%2C300&amp;ssl=1" data-large-file="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-loading-data-from-xero-to-sql-server.png?fit=283%2C391&amp;ssl=1" /></a>
<p class="wp-caption-text">Loading REST API to SQL Server in SSIS</p>

</div>
<h2><span id="POST_Data_to_ServiceNow_API_Insert_Update_or_Delete">POST / Write Data to API (Insert, Update or Delete)</span></h2>
There will be a time you like to automate POST actions (e.g. create new incident via API call). <a href="https://zappysys.com/blog/http-post-in-ssis-send-data-to-web-api-url-json-xml/" target="_blank" rel="noopener">Check this article</a> to learn more on how to POST , DELETE, PUT data using API calls
<h2><span id="Common_Errors">Common Errors</span></h2>
There are many error can occur during runtime. Here are most common errors you may face at runtime.
<div id="custom_post_widget-1887" class="content_block">
<h3><span id="Truncation_related_error">Truncation related error</span></h3>
The most common error you may face when you run a 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 how to fix common metadata related errors read an article "<a href="https://zappysys.com/blog/handling-ssis-component-metadata-issues/" target="_blank" rel="noopener">How to handle SSIS errors (truncation, metadata issues)</a>".
<h3><span id="Authentication_related_error">Authentication related error</span></h3>
Another frequent error you may get is authentication error, which happens when you deploy/copy a package to another machine and run it there. Check <a href="https://zappysys.com/blog/loading-data-from-rest-api-to-sql-server-in-ssis/#Deployment_to_Production">Deployment to Production</a> below to see why it happens and how to solve this problem.

</div>
<h2><span id="Deployment_to_Production">Deployment to Production</span></h2>
<div id="custom_post_widget-1932" class="content_block">In SSIS package <a href="https://docs.microsoft.com/en-us/sql/integration-services/security/access-control-for-sensitive-data-in-packages" target="_blank" rel="noopener">sensitive data such as tokens and passwords are by default encrypted by SSIS</a> with your Windows account which you use to create a package. So SSIS will fail to decrypt tokens/passwords, when you run it from another machine using another Windows account. To circumvent this when you are creating a SSIS package which uses authentication components (e.g. an <a href="https://zappysys.com/onlinehelp/ssis-powerpack/scr/ssis-oauth-connection-manager.htm" target="_blank" rel="noopener">OAuth Connection Manager</a> or an <a href="https://zappysys.com/onlinehelp/ssis-powerpack/scr/ssis-http-connection-manager.htm" target="_blank" rel="noopener">HTTP Connection Manager</a> with credentials, etc.), consider using parameters/variables to pass tokens/passwords. In this way you won’t face authentication related errors when package is deployed to a production server. Check our article on <a href="https://zappysys.com/blog/how-to-run-an-ssis-package-with-sensitive-data-on-sql-server/" target="_blank" rel="noopener">how to configure packages with sensitive data on your production or development server</a>.</div></div>
<h3>Reading Zoom API data using JSON Source (with Pagination)</h3>
<p>Now let&#8217;s look at how to use ZappySys JSON Source to read API data and parse into rows/column</p>
<ol>
<li>Drag and drop data flow task from SSIS Toolbox</li>
<li>Double click task to go to data flow designer</li>
<li>Drag SSIS ZS JSON Source from toolbox</li>
<li>Edit JSON Source like below</li>
<li>Enter URL like below (Use different URL if needed.)<br />
https://api.zoom.us/v2/users/me/meetings?type=upcoming&amp;page_size=100&amp;page_number=1</li>
<li>Select connection</li>
<li>Goto pagination tab and enter information as below screenshot.</li>
<li>Click on Select Filter</li>
<li>Click Preview to test</li>
</ol>
<div id="attachment_5234" style="width: 849px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-zoom-api-pagination-setup.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-5234" class="size-full wp-image-5234" src="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-zoom-api-pagination-setup.png" alt="Read Zoom API data using JSON Source (Configure Pagination)" width="839" height="687" srcset="https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-zoom-api-pagination-setup.png 839w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-zoom-api-pagination-setup-300x246.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/09/ssis-zoom-api-pagination-setup-768x629.png 768w" sizes="(max-width: 839px) 100vw, 839px" /></a><p id="caption-attachment-5234" class="wp-caption-text">Read Zoom API data using JSON Source (Configure Pagination)</p></div>
<h2>Method-2 : Call Zoom API in SSIS using OAuth 2.0</h2>
<p>Now let&#8217;s look at OAuth 2.0 approach to authenticate with Zoom API.</p>
<h3>Register OAuth App</h3>
<p>Very first step to authenticate your Zoom API call using OAuth method is to register App. Go through <a href="https://devdocs.zoom.us/docs/oauth-with-zoom" target="_blank" rel="noopener">steps  listed here to register your App</a>. Below are high level steps.</p>
<div class="su-note"  style="border-color:#e5dd9d;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:#FFF7B7;border-color:#ffffff;color:#333333;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;">Do not to submit your App for Marketplace Approval (Last step) if you are creating OAuth App to access their own company data and do not want to access other company&#8217;s data using your app. In other words leave your app under Development mode only (Ignore production credentials if you do not wish to publish app to marketplace).</div></div>
<ol>
<li>Visit <a href="http://marketplace.zoom.us/" target="_blank" rel="noopener">http://marketplace.zoom.us/</a></li>
<li>Click Build menu item at the top</li>
<li>Select App Type (i.e. <strong>Account Level</strong> or <strong>User Level</strong>) and Click Begin</li>
<li>Once App credentials displayed enter Redirect URL (use https://zappysys.com/oauth2 if you are not sure what to enter here). This URL never receives data from API but its only used to get authentication code during OAuth Process so don&#8217;t worry.</li>
<li>Click on Scopes tab and select one or more permissions you like to assign to your App.</li>
</ol>
<h3>Configure SSIS OAuth Connection</h3>
<p>Now lets get started with SSIS part. We will first create OAuth Connection for Zoom API access.</p>
<ol>
<li>Open SSIS Package and drag <a href="https://zappysys.com/products/ssis-powerpack/ssis-rest-api-web-service-task/" target="_blank" rel="noopener">ZS REST API Task</a> from SSIS Control Flow Toolbox</li>
<li>Change URL Access Mode to <strong>Url From Connection</strong></li>
<li>Enter URL as <strong>https://api.zoom.us/v2/users/me/settings</strong></li>
<li>Select <strong>New ZS-OAUTH</strong> connection type from the connection dropdown</li>
<li>Configure OAuth connection as below. Enter Token file path, enter Redirect URL, ClientID, Client Secret and then click Generate Token (You may have to login and then click Accept button to grant permission).
<div id="attachment_4791" style="width: 683px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2018/09/zoom-api-oauth-connection-set-token-file.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4791" class="size-full wp-image-4791" src="https://zappysys.com/blog/wp-content/uploads/2018/09/zoom-api-oauth-connection-set-token-file.png" alt="Configure OAuth Connection for Zoom API (Enter Token File Path - This is needed to handle changing refresh token scenario)" width="673" height="425" srcset="https://zappysys.com/blog/wp-content/uploads/2018/09/zoom-api-oauth-connection-set-token-file.png 673w, https://zappysys.com/blog/wp-content/uploads/2018/09/zoom-api-oauth-connection-set-token-file-300x189.png 300w" sizes="(max-width: 673px) 100vw, 673px" /></a><p id="caption-attachment-4791" class="wp-caption-text">Configure OAuth Connection for Zoom API (Enter Token File Path &#8211; This is needed to handle changing refresh token scenario)</p></div>
<div id="attachment_4790" style="width: 499px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2018/09/zoom-api-oauth-connection-set-redirect-url.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4790" class="size-full wp-image-4790" src="https://zappysys.com/blog/wp-content/uploads/2018/09/zoom-api-oauth-connection-set-redirect-url.png" alt="Configure OAuth Connection for Zoom API (Enter Redirect URL / Callback URL)" width="489" height="293" srcset="https://zappysys.com/blog/wp-content/uploads/2018/09/zoom-api-oauth-connection-set-redirect-url.png 489w, https://zappysys.com/blog/wp-content/uploads/2018/09/zoom-api-oauth-connection-set-redirect-url-300x180.png 300w" sizes="(max-width: 489px) 100vw, 489px" /></a><p id="caption-attachment-4790" class="wp-caption-text">Configure OAuth Connection for Zoom API (Enter Redirect URL / Callback URL)</p></div>
<div id="attachment_4792" style="width: 690px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2018/09/zoom-api-oauth-connection.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4792" class="size-full wp-image-4792" src="https://zappysys.com/blog/wp-content/uploads/2018/09/zoom-api-oauth-connection.png" alt="Generate Token for Zoom API using OAuth 2.0" width="680" height="637" srcset="https://zappysys.com/blog/wp-content/uploads/2018/09/zoom-api-oauth-connection.png 680w, https://zappysys.com/blog/wp-content/uploads/2018/09/zoom-api-oauth-connection-300x281.png 300w" sizes="(max-width: 680px) 100vw, 680px" /></a><p id="caption-attachment-4792" class="wp-caption-text">Generate Token for Zoom API using OAuth 2.0</p></div></li>
<li>Once you get token is generated you can click OK to save connection.</li>
<li>On the REST API Task click Test to confirm its working.
<div id="attachment_4793" style="width: 798px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2018/09/call-zoom-rest-api-in-ssis-use-oauth-connection.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4793" class="size-full wp-image-4793" src="https://zappysys.com/blog/wp-content/uploads/2018/09/call-zoom-rest-api-in-ssis-use-oauth-connection.png" alt="Calling Zoom REST API using SSIS REST API Task" width="788" height="523" srcset="https://zappysys.com/blog/wp-content/uploads/2018/09/call-zoom-rest-api-in-ssis-use-oauth-connection.png 788w, https://zappysys.com/blog/wp-content/uploads/2018/09/call-zoom-rest-api-in-ssis-use-oauth-connection-300x199.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/09/call-zoom-rest-api-in-ssis-use-oauth-connection-768x510.png 768w, https://zappysys.com/blog/wp-content/uploads/2018/09/call-zoom-rest-api-in-ssis-use-oauth-connection-272x182.png 272w" sizes="(max-width: 788px) 100vw, 788px" /></a><p id="caption-attachment-4793" class="wp-caption-text">Calling Zoom REST API using SSIS REST API Task</p></div></li>
</ol>
<div class="content_block" id="custom_post_widget-2516"><h2><span id="Debug_Web_API_call_using_Fiddler">Debug Web API call using Fiddler</span></h2>
To test how things looking behind the scene we strongly suggest to use <a href="https://zappysys.com/blog/how-to-use-fiddler-to-analyze-http-web-requests/" target="_blank" rel="noopener">tool like  fiddler</a>.

You can double click the URL entry (Right side) to see Request and Response Panels. Top panel is Request (URL, Headers, Body) and Bottom Panel is Response.
<div id="attachment_2344" class="wp-caption alignnone">

<a href="https://zappysys.com/blog/wp-content/uploads/2016/05/ssis-rest-api-call-debug-via-fiddler.png?ssl=1"><img loading="lazy" decoding="async" class="size-full wp-image-2344" 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?resize=720%2C316&amp;ssl=1" sizes="(max-width: 720px) 100vw, 720px" srcset="https://zappysys.com/blog/wp-content/uploads/2016/05/ssis-rest-api-call-debug-via-fiddler.png?w=1287&amp;ssl=1 1287w, https://zappysys.com/blog/wp-content/uploads/2016/05/ssis-rest-api-call-debug-via-fiddler.png?resize=300%2C131&amp;ssl=1 300w, https://zappysys.com/blog/wp-content/uploads/2016/05/ssis-rest-api-call-debug-via-fiddler.png?resize=768%2C337&amp;ssl=1 768w, https://zappysys.com/blog/wp-content/uploads/2016/05/ssis-rest-api-call-debug-via-fiddler.png?resize=1024%2C449&amp;ssl=1 1024w" alt="Debugging Web API call using Fiddler in SSIS" width="702" height="308" 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://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://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://zappysys.com/blog/wp-content/uploads/2016/05/ssis-rest-api-call-debug-via-fiddler.png?fit=720%2C316&amp;ssl=1" /></a>
<p class="wp-caption-text">Debugging Web API call using Fiddler in SSIS</p>

</div>
<h2><span id="Loadingdata_fromREST_API_to_SQL_Server">Loading <span id="Loading_Graph_API_Office_365_data_to_SQL_Server">data from </span>REST API to SQL Server</span></h2>
Once you setup HTTP / OAUTH connection we can use <strong>JSON Source</strong> or <strong>XML Source</strong> to extract data from API and  load into SQL Server. If you are API is XML based API then use XML Source in below examples else use JSON Source.

For example purpose we will load data into SQL Server but you can load into any Target (e.g. Flat file, Oracle, Excel) using Microsoft or ZappySys Destination connectors

To load REST API data into SQL Server perform the following steps (<strong>Screenshots are generic</strong> and used for demonstration for purpose, <strong>your values can be different</strong> than below)
<ol>
 	<li>Go to SSIS Data Flow tab</li>
 	<li>Drag <a href="https://zappysys.com/products/ssis-powerpack/ssis-json-file-source/" target="_blank" rel="noopener">ZS JSON Source</a> from the SSIS Toolbox (Use <a href="https://zappysys.com/products/ssis-powerpack/ssis-xml-source/" target="_blank" rel="noopener">ZS XML Source</a> if your API is XML based API)</li>
 	<li>Double click to edit Source</li>
 	<li>Set API URL you like to call, Check Use Credentials if you need to use HTTP or OAuth connection</li>
 	<li>Set Method / Body if its other than GET. For method other than GET make sure you select correct <strong>Content-Type</strong> from Dropdown (e.g. <strong>application/json</strong>). This indicate input data format in Body.</li>
 	<li>Set <strong>HTTP Headers</strong> if needed (in Most cases you won't need to set this)</li>
 	<li>Select Filter (many times this is not needed). If your API response has array node then select it here. For example if your response looks like this <strong>{ rows: [ {...}, {...}, {...} ] }</strong> then filter would be <strong>$.rows[*]</strong>. Select Array node you like to extract in the Filter selection UI.

<a href="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-get-data-google-bigquery-select-json-filter.png"><img loading="lazy" decoding="async" class="alignnone size-full wp-image-1573" src="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-get-data-google-bigquery-select-json-filter.png" alt="" width="675" height="363" srcset="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-get-data-google-bigquery-select-json-filter.png 675w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-get-data-google-bigquery-select-json-filter-300x161.png 300w" sizes="(max-width: 675px) 100vw, 675px" /></a></li>
 	<li><a href="https://zappysys.com/blog/ssis-rest-api-looping-until-no-more-pages-found/" target="_blank" rel="noopener">Configure Pagination</a> if needed on the pagination tab. Check your API documentation see it supports pagination.</li>
 	<li>Click OK to Save component settings and generate <a href="https://zappysys.com/blog/handling-ssis-component-metadata-issues/" target="_blank" rel="noopener">desired metadata / columns for the output</a>.</li>
 	<li>Now drag <strong>OLEDB destination</strong> from the SSIS toolbox and drop on the Data Flow surface (technically you can use any valid Destination but for demo we will use OLEDB Destination)</li>
 	<li>Connect Source to Destination Component</li>
 	<li>On OLEDB destination select / create new SQL Connection and then Click "<strong>New Table</strong>"</li>
 	<li>Click on <strong>Mappings tab</strong> to map columns by names and click OK to save</li>
 	<li>Execute the Package</li>
</ol>
<div id="attachment_1617" class="wp-caption alignnone">

<a href="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-xero-to-sql-server-data-load.png"><img loading="lazy" decoding="async" class="size-full wp-image-1617" 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/2017/07/ssis-xero-to-sql-server-data-load.png?resize=720%2C546" sizes="(max-width: 720px) 100vw, 720px" srcset="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-xero-to-sql-server-data-load.png?w=782 782w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-xero-to-sql-server-data-load.png?resize=300%2C227 300w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-xero-to-sql-server-data-load.png?resize=768%2C582 768w" alt="Configure SSIS OLEDB Destination - Loading Xero Data into SQL Server Table" width="702" height="532" data-attachment-id="1617" data-permalink="https://zappysys.com/blog/reading-loading-data-in-xero-sql-server-ssis/ssis-xero-to-sql-server-data-load/#main" data-orig-file="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-xero-to-sql-server-data-load.png?fit=782%2C593&amp;ssl=1" data-orig-size="782,593" 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-xero-to-sql-server-data-load" data-image-description="&lt;p&gt;Configure SSIS OLEDB Destination – Loading Xero Data into SQL Server Table&lt;/p&gt; " data-medium-file="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-xero-to-sql-server-data-load.png?fit=300%2C227&amp;ssl=1" data-large-file="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-xero-to-sql-server-data-load.png?fit=720%2C546&amp;ssl=1" /></a>
<p class="wp-caption-text">Configure SSIS OLEDB Destination – Loading REST API Data into SQL Server Table</p>

</div>
<div id="attachment_1618" class="wp-caption alignnone">

<a href="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-xero-sql-server-load-mappings.png"><img loading="lazy" decoding="async" class="size-full wp-image-1618" 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/2017/07/ssis-xero-sql-server-load-mappings.png?resize=720%2C533" sizes="(max-width: 720px) 100vw, 720px" srcset="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-xero-sql-server-load-mappings.png?w=734 734w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-xero-sql-server-load-mappings.png?resize=300%2C222 300w" alt="Xero to SQL Server Column Mappings for OLEDB Destination" width="702" height="519" data-attachment-id="1618" data-permalink="https://zappysys.com/blog/reading-loading-data-in-xero-sql-server-ssis/ssis-xero-sql-server-load-mappings/#main" data-orig-file="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-xero-sql-server-load-mappings.png?fit=734%2C543&amp;ssl=1" data-orig-size="734,543" 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-xero-sql-server-load-mappings" data-image-description="&lt;p&gt;Xero to SQL Server Column Mappings for OLEDB Destination&lt;/p&gt; " data-medium-file="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-xero-sql-server-load-mappings.png?fit=300%2C222&amp;ssl=1" data-large-file="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-xero-sql-server-load-mappings.png?fit=720%2C533&amp;ssl=1" /></a>
<p class="wp-caption-text">REST API to SQL Server Column Mappings for OLEDB Destination</p>

</div>
<div id="attachment_1619" class="wp-caption alignnone">

<a href="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-loading-data-from-xero-to-sql-server.png"><img loading="lazy" decoding="async" class="size-full wp-image-1619" 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/2017/07/ssis-loading-data-from-xero-to-sql-server.png?resize=283%2C391" sizes="(max-width: 283px) 100vw, 283px" srcset="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-loading-data-from-xero-to-sql-server.png?w=283 283w, https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-loading-data-from-xero-to-sql-server.png?resize=217%2C300 217w" alt="Loading Xero data to SQL Server in SSIS" width="275" height="380" data-attachment-id="1619" data-permalink="https://zappysys.com/blog/reading-loading-data-in-xero-sql-server-ssis/ssis-loading-data-from-xero-to-sql-server/#main" data-orig-file="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-loading-data-from-xero-to-sql-server.png?fit=283%2C391&amp;ssl=1" data-orig-size="283,391" 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-loading-data-from-xero-to-sql-server" data-image-description="&lt;p&gt;Loading Xero data to SQL Server in SSIS&lt;/p&gt; " data-medium-file="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-loading-data-from-xero-to-sql-server.png?fit=217%2C300&amp;ssl=1" data-large-file="https://zappysys.com/blog/wp-content/uploads/2017/07/ssis-loading-data-from-xero-to-sql-server.png?fit=283%2C391&amp;ssl=1" /></a>
<p class="wp-caption-text">Loading REST API to SQL Server in SSIS</p>

</div>
<h2><span id="POST_Data_to_ServiceNow_API_Insert_Update_or_Delete">POST / Write Data to API (Insert, Update or Delete)</span></h2>
There will be a time you like to automate POST actions (e.g. create new incident via API call). <a href="https://zappysys.com/blog/http-post-in-ssis-send-data-to-web-api-url-json-xml/" target="_blank" rel="noopener">Check this article</a> to learn more on how to POST , DELETE, PUT data using API calls
<h2><span id="Common_Errors">Common Errors</span></h2>
There are many error can occur during runtime. Here are most common errors you may face at runtime.
<div id="custom_post_widget-1887" class="content_block">
<h3><span id="Truncation_related_error">Truncation related error</span></h3>
The most common error you may face when you run a 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 how to fix common metadata related errors read an article "<a href="https://zappysys.com/blog/handling-ssis-component-metadata-issues/" target="_blank" rel="noopener">How to handle SSIS errors (truncation, metadata issues)</a>".
<h3><span id="Authentication_related_error">Authentication related error</span></h3>
Another frequent error you may get is authentication error, which happens when you deploy/copy a package to another machine and run it there. Check <a href="https://zappysys.com/blog/loading-data-from-rest-api-to-sql-server-in-ssis/#Deployment_to_Production">Deployment to Production</a> below to see why it happens and how to solve this problem.

</div>
<h2><span id="Deployment_to_Production">Deployment to Production</span></h2>
<div id="custom_post_widget-1932" class="content_block">In SSIS package <a href="https://docs.microsoft.com/en-us/sql/integration-services/security/access-control-for-sensitive-data-in-packages" target="_blank" rel="noopener">sensitive data such as tokens and passwords are by default encrypted by SSIS</a> with your Windows account which you use to create a package. So SSIS will fail to decrypt tokens/passwords, when you run it from another machine using another Windows account. To circumvent this when you are creating a SSIS package which uses authentication components (e.g. an <a href="https://zappysys.com/onlinehelp/ssis-powerpack/scr/ssis-oauth-connection-manager.htm" target="_blank" rel="noopener">OAuth Connection Manager</a> or an <a href="https://zappysys.com/onlinehelp/ssis-powerpack/scr/ssis-http-connection-manager.htm" target="_blank" rel="noopener">HTTP Connection Manager</a> with credentials, etc.), consider using parameters/variables to pass tokens/passwords. In this way you won’t face authentication related errors when package is deployed to a production server. Check our article on <a href="https://zappysys.com/blog/how-to-run-an-ssis-package-with-sensitive-data-on-sql-server/" target="_blank" rel="noopener">how to configure packages with sensitive data on your production or development server</a>.</div></div>
<h2>Conclusion</h2>
<p>In this post you have seen how easy it is to call Zoom API in SSIS. Just register OAuth App and start calling your API. <a href="https://zappysys.com/products/ssis-powerpack/">Download SSIS PowerPack</a> and explore many other API integration uses.</p>
<p>&nbsp;</p>
<p>The post <a href="https://zappysys.com/blog/call-zoom-rest-api-using-ssis/">How to call Zoom REST API using SSIS (OAuth / JWT)</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Read Azure DevOps data in SSIS (VSTS / TFS Online) – Call REST API / Load to SQL Server</title>
		<link>https://zappysys.com/blog/read-vsts-data-ssis-call-rest-api-load-sql-server/</link>
		
		<dc:creator><![CDATA[ZappySys]]></dc:creator>
		<pubDate>Sat, 18 Aug 2018 09:47:14 +0000</pubDate>
				<category><![CDATA[REST API Integration]]></category>
		<category><![CDATA[SSIS JSON Source (File/REST)]]></category>
		<category><![CDATA[SSIS OAuth Connection]]></category>
		<category><![CDATA[SSIS REST API Task]]></category>
		<category><![CDATA[azure devops]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[oauth2]]></category>
		<category><![CDATA[odata]]></category>
		<category><![CDATA[pagination]]></category>
		<category><![CDATA[rest]]></category>
		<category><![CDATA[rest api]]></category>
		<category><![CDATA[ssis]]></category>
		<category><![CDATA[TFS Online]]></category>
		<category><![CDATA[visual studio team service]]></category>
		<category><![CDATA[vsts]]></category>
		<guid isPermaLink="false">https://zappysys.com/blog/?p=4643</guid>

					<description><![CDATA[<p>Introduction In this blog, we will learn How to read data from Azure DevOps in SSIS and load into SQL Server Table. Azure DevOps was formally known as TFS Online / VSTS. In this article we will learn, how to read Issues (Work Items) using Azure DevOps API (i.e. VSTS API). In last few years Microsoft has [&#8230;]</p>
<p>The post <a href="https://zappysys.com/blog/read-vsts-data-ssis-call-rest-api-load-sql-server/">Read Azure DevOps data in SSIS (VSTS / TFS Online) – Call REST API / Load to SQL Server</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/08/Visual-Studio-Team-Services-logo-150x150-1.png"><img loading="lazy" decoding="async" class="alignleft wp-image-4646 " src="https://zappysys.com/blog/wp-content/uploads/2018/08/Visual-Studio-Team-Services-logo-150x150-1-150x150.png" alt="Visual Studio Team Service Logo" width="91" height="91" srcset="https://zappysys.com/blog/wp-content/uploads/2018/08/Visual-Studio-Team-Services-logo-150x150-1-150x150.png 150w, https://zappysys.com/blog/wp-content/uploads/2018/08/Visual-Studio-Team-Services-logo-150x150-1.png 300w" sizes="(max-width: 91px) 100vw, 91px" /></a></p>
<p>In this blog, we will learn <strong>How to read data from Azure DevOps in SSIS and load into SQL Server Table.</strong> Azure DevOps was formally known as TFS Online / VSTS.</p>
<p>In this article we will learn, how to read Issues (Work Items) using Azure DevOps API (i.e. VSTS API). In last few years Microsoft has changed marketing names few times for TFS Service. For example everything started with  Visual Source Safe (VSS) &gt; TFS &gt; TFS Online &gt; Visual Studio Online &gt; VSTS (Visual Studio Team Services)) and finally now its called <strong>Azure DevOps</strong>. In this article we might use terms like VSTS or TFS  Online or <strong>Azure DevOps</strong> but not to get confused its all about <strong>Calling Azure Dev Ops API.</strong></p>
<p>In this article we will try to cover few topics such as.</p>
<ul>
<li>Register an OAuth App to call REST API for <strong>Azure DevOps API (i.e. VSTS / TFS Online)</strong></li>
<li>Read all Issues (Work Items) data from VSTS with SSIS and finally</li>
<li>Create new Issue/Bug in Visual Studio Team Service Project WorkItems.</li>
<li>Authenticate and Call Azure DevOps <strong>using PAT</strong> (Personal Access Tokens) rather than OAuth 2.0</li>
</ul>
<p>We will go through the steps to read Issues data from Visual Studio Team Service and Load into SQL Server using  <a href="https://zappysys.com/products/ssis-powerpack/ssis-rest-api-web-service-task/">SSIS REST API Task</a> and <a href="https://zappysys.com/products/ssis-powerpack/ssis-json-file-source/">SSIS JSON Source.</a></p>
<p>In nutshell, this post will focus on how to call VSTS API using SSIS.</p>
<p>So let&#8217;s get started.</p>
<h2><span id="Requirements">Prerequisite<br />
</span></h2>
<ol>
<li>First, you will need to have SSIS installed</li>
<li>Secondly, make sure to have SSDT</li>
<li>Finally, do not forget to install ZappySys <a href="https://zappysys.com/products/ssis-powerpack/">SSIS PowerPack</a></li>
</ol>
<h2><span id="Conclusion">Call Azure DevOps API Using PAT (Personal Access Token)</span></h2>
<p>There are two ways to call Azure DevOps API. You can use <a href="https://docs.microsoft.com/en-us/azure/devops/integrate/get-started/authentication/oauth">OAuth 2.0</a> or use <a href="https://docs.microsoft.com/en-us/azure/devops/organizations/accounts/use-personal-access-tokens-to-authenticate" target="_blank" rel="noopener">PAT (i.e. Personal Access Token)</a> In the next section we will see how to use OAuth 2.0 if you like more secure way to authenticate (OAuth 2.0 requires more steps).</p>
<p>Microsoft offers Static API Token (referred as PAT &#8211; Personal Access Token) which you can use like a password (it remains valid for 1 year before you have regenerate).</p>
<p>So let&#8217;s get started.</p>
<h3>Create PAT (Personal Access Token)</h3>
<ol>
<li>Visit to <pre class="crayon-plain-tag">https://dev.azure.com/YOUR_COMPANY_NAME/_usersSettings/tokens</pre> . Create Personal Access Token (i.e. PAT ) by clicking User Settings icon &gt; Personal Access Token (see below)  (<a href="https://docs.microsoft.com/en-us/azure/devops/organizations/accounts/use-personal-access-tokens-to-authenticate?view=azure-devops&amp;tabs=preview-page" target="_blank" rel="noopener">detailed steps listed here</a> )
<div id="attachment_9224" style="width: 801px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2018/08/azure-devops-create-pat-personal-access-token.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-9224" class="size-full wp-image-9224" src="https://zappysys.com/blog/wp-content/uploads/2018/08/azure-devops-create-pat-personal-access-token.png" alt="Call Azure DevOps API (formally known as VSTS / TFS Online) - Create Personal Access Token (i.e. PAT)" width="791" height="559" srcset="https://zappysys.com/blog/wp-content/uploads/2018/08/azure-devops-create-pat-personal-access-token.png 791w, https://zappysys.com/blog/wp-content/uploads/2018/08/azure-devops-create-pat-personal-access-token-300x212.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/08/azure-devops-create-pat-personal-access-token-768x543.png 768w" sizes="(max-width: 791px) 100vw, 791px" /></a><p id="caption-attachment-9224" class="wp-caption-text">Call Azure DevOps API (formally known as VSTS / TFS Online) &#8211; Create Personal Access Token (i.e. PAT)</p></div></li>
<li>On Token Configuration Screen change Expiration to maximum (i.e. one year from today)</li>
<li>Now select permission &#8211; We will call Analytics API below (but you can also check Work Items section if you need to call some other API for read / write purpose)
<div id="attachment_9225" style="width: 1201px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2018/08/azure-devops-api-create-pat-personal-access-token-set-permission.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-9225" class="wp-image-9225 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/08/azure-devops-api-create-pat-personal-access-token-set-permission.png" alt="Change Permission / Expiration Date for Azure DevOps PAT (Personal Access Token) - Read / Write Work Items, Call Analytics API Example" width="1191" height="837" srcset="https://zappysys.com/blog/wp-content/uploads/2018/08/azure-devops-api-create-pat-personal-access-token-set-permission.png 1191w, https://zappysys.com/blog/wp-content/uploads/2018/08/azure-devops-api-create-pat-personal-access-token-set-permission-300x211.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/08/azure-devops-api-create-pat-personal-access-token-set-permission-768x540.png 768w, https://zappysys.com/blog/wp-content/uploads/2018/08/azure-devops-api-create-pat-personal-access-token-set-permission-1024x720.png 1024w" sizes="(max-width: 1191px) 100vw, 1191px" /></a><p id="caption-attachment-9225" class="wp-caption-text">Change Permission / Expiration Date for Azure DevOps PAT (Personal Access Token) &#8211; Read / Write Work Items, Call Analytics API Example</p></div></li>
</ol>
<h3>Call Azure DevOps OData API in SSIS &#8211; Read WorkItems  Example (Analytics API Service)</h3>
<p>Now lets configure JSON Source to read WorkItems by calling  Azure DevOps Analytics API (in Previous few sections we call different set of APIs). <a href="https://docs.microsoft.com/en-us/azure/devops/report/extend-analytics/wit-analytics?view=azure-devops">Check this link</a> for more information on AzureDevOps Analytics API (its OData format).</p>
<p>For demo purpose we are calling WorkItems entity but you can read from many other entities like (Read Areas, Iterations, Projects, Teams, Tags etc). <a href="https://docs.microsoft.com/en-us/azure/devops/report/extend-analytics/data-model-analytics-service?view=azure-devops">Check this link</a> to see which Entity (i.e. Table) you can query for specific OData API version.</p>
<p>So let&#8217;s get started</p>
<ol>
<li>Go to SSIS designer and drag Data Flow Task on the Designer Surface<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>Then double click Data Flow and from toolbox drag ZS JSON Source<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 like below
<ol>
<li>First change Data Format to <strong>OData</strong> (Analytics API we will call in this section is OData format)</li>
<li>Enter URL to Query data like below. Change <strong>YOUR_COMPANY_NAME</strong> with your own name. Below API URL will call Analytics will<br />
<pre class="crayon-plain-tag">https://analytics.dev.azure.com/YOUR_COMPANY_NAME/Odbc/_odata/v3.0/WorkItems?$select=WorkItemId,Title,WorkItemType,State,CreatedDate&amp;$orderby=CreatedDate desc&amp;$top=11</pre>
</li>
<li>Check Use Credentials and Select new <strong>ZS-HTTP</strong> connection (instead of OAUTH)</li>
</ol>
</li>
<li>On HTTP Connection UI Configure below
<ol>
<li>Enter Some URL &#8211; This will be ignored anyways (e.g. https://dev.azure.com )</li>
<li>Change Credentials Type to Basic (User ID / Password)</li>
<li>Enter some random word in User ID -i.e. fakeusername (this is ignored anyways but needs some non-empty value for older version of SSIS PowerPack else validation fails)</li>
<li>Enter PAT (i.e. Personal Access Token) obtained in the previous section</li>
</ol>
</li>
<li>Click OK to Save Connection UI and go back to JSON Source</li>
<li>On JSON Source, Enter or Select <strong>Array Filter</strong> as <pre class="crayon-plain-tag">$.value[*]</pre></li>
<li>Click Preview data see its working using HTTP connection method</li>
</ol>
<div id="attachment_9226" style="width: 1071px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2018/08/generate-azure-devops-pat-token-call-odata-rest-api.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-9226" class="size-full wp-image-9226" src="https://zappysys.com/blog/wp-content/uploads/2018/08/generate-azure-devops-pat-token-call-odata-rest-api.png" alt="Configure JSON Source - Call Azure DevOps Api using PAT (Personal Access Token)" width="1061" height="733" srcset="https://zappysys.com/blog/wp-content/uploads/2018/08/generate-azure-devops-pat-token-call-odata-rest-api.png 1061w, https://zappysys.com/blog/wp-content/uploads/2018/08/generate-azure-devops-pat-token-call-odata-rest-api-300x207.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/08/generate-azure-devops-pat-token-call-odata-rest-api-768x531.png 768w, https://zappysys.com/blog/wp-content/uploads/2018/08/generate-azure-devops-pat-token-call-odata-rest-api-1024x707.png 1024w" sizes="(max-width: 1061px) 100vw, 1061px" /></a><p id="caption-attachment-9226" class="wp-caption-text">Configure JSON Source &#8211; Call Azure DevOps Api using PAT (Personal Access Token)</p></div>
<p>&nbsp;</p>
<h2>Calling Azure DevOps API in SSIS using OAuth 2.0</h2>
<p>Now in this section we will see how to use more secure but little harder approach to authenticate. We will use OAuth 2.0 this time rather than static token (PAT) which we used in previous section.</p>
<p>In order to start, we will show several examples. ZappySys includes an <a href="https://zappysys.com/products/ssis-powerpack/ssis-json-file-source/">SSIS JSON Source</a> that will help you to call VSTS API, read various data from VSTS with SSIS, create a new issue on VSTS with SSIS and do many more actions using REST API. To learn more about VSTS API <a href="https://docs.microsoft.com/en-us/rest/api/vsts" rel="noopener">check this help file</a>.</p>
<h3>Create VSTS App (for OAuth 2.0 API Call)</h3>
<p>To access VSTS data using REST API call you need to create a VSTS app. Follow the mentioned steps below to register VSTS OAuth App:</p>
<ol>
<li>you can directly login to the <a href="https://app.vssps.visualstudio.com/profile/view">Visual Studio Team Service &#8211; TFS Online site</a> with your credentials, and redirect to the <a href="https://app.vsaex.visualstudio.com/app/register">Visual Studio Team Service App Registration</a> for creating an app.</li>
<li>you can open <a href="https://app.vssps.visualstudio.com/profile/view">MyApps Page</a>.
<div id="attachment_10065" style="width: 1233px" class="wp-caption alignnone"><a href="https://zappysys.com/blog/wp-content/uploads/2018/08/Visual-Studio-Team-Services-Create-new-OAuth-Apps.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-10065" class="wp-image-10065 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/08/Visual-Studio-Team-Services-Create-new-OAuth-Apps.png" alt="Visual-Studio-Team-Services-Create-new-OAuth-Apps" width="1223" height="759" srcset="https://zappysys.com/blog/wp-content/uploads/2018/08/Visual-Studio-Team-Services-Create-new-OAuth-Apps.png 1223w, https://zappysys.com/blog/wp-content/uploads/2018/08/Visual-Studio-Team-Services-Create-new-OAuth-Apps-300x186.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/08/Visual-Studio-Team-Services-Create-new-OAuth-Apps-768x477.png 768w, https://zappysys.com/blog/wp-content/uploads/2018/08/Visual-Studio-Team-Services-Create-new-OAuth-Apps-1024x635.png 1024w, https://zappysys.com/blog/wp-content/uploads/2018/08/Visual-Studio-Team-Services-Create-new-OAuth-Apps-436x272.png 436w" sizes="(max-width: 1223px) 100vw, 1223px" /></a><p id="caption-attachment-10065" class="wp-caption-text">Visual Studio Team Service: My Apps</p></div>
<p>Visual Studio Team Service: My Apps[/caption]</li>
<li>Click on Create new application link, and you will be redirected to the <a href="https://app.vsaex.visualstudio.com/app/register">Visual Studio Team Service App Registration</a> Page.</li>
<li>Make sure you enter Authorization call base URL. We suggest to below call back URL if you are unsure. We will use exact same URL on OAuth connection UI (Advanced Tab)</p><pre class="crayon-plain-tag">https://zappysys.com/oauth</pre><p>
</li>
<li>
<div id="attachment_4649" style="width: 962px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/08/VSTS-New-OAuth-App-Registration.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4649" class="wp-image-4649 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/08/VSTS-New-OAuth-App-Registration.png" alt="Visual Studio Team Service: New OAuth App Registration" width="952" height="760" srcset="https://zappysys.com/blog/wp-content/uploads/2018/08/VSTS-New-OAuth-App-Registration.png 952w, https://zappysys.com/blog/wp-content/uploads/2018/08/VSTS-New-OAuth-App-Registration-300x239.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/08/VSTS-New-OAuth-App-Registration-768x613.png 768w" sizes="(max-width: 952px) 100vw, 952px" /></a><p id="caption-attachment-4649" class="wp-caption-text">Visual Studio Team Service: New OAuth App Registration</p></div></li>
<li>Select the Authorization scopes as per your requirements, and click on Create Application button.<br />
For example to read Work Items or Create new Issues programmatically you can check following scope (i.e. OAuth permission).<strong>Check &#8211; Work items (full)  </strong>(i.e. vso.work_full scope)<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: The scopes selected on your registered application (below screenshot) must match the scopes entered in the ZappySys OAuth connection scopes field (see below). If they do not match exactly, an InvalidScope error can be produced.</div></div>
<strong><br />
</strong></p>
<div id="attachment_4651" style="width: 1130px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/08/VSTS-New-OAuth-App-Registration-Select-Scopes.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4651" class="wp-image-4651 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/08/VSTS-New-OAuth-App-Registration-Select-Scopes.png" alt="Visual Studio Team Service: Select Authorization Scopes" width="1120" height="761" srcset="https://zappysys.com/blog/wp-content/uploads/2018/08/VSTS-New-OAuth-App-Registration-Select-Scopes.png 1120w, https://zappysys.com/blog/wp-content/uploads/2018/08/VSTS-New-OAuth-App-Registration-Select-Scopes-300x204.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/08/VSTS-New-OAuth-App-Registration-Select-Scopes-768x522.png 768w, https://zappysys.com/blog/wp-content/uploads/2018/08/VSTS-New-OAuth-App-Registration-Select-Scopes-1024x696.png 1024w" sizes="(max-width: 1120px) 100vw, 1120px" /></a><p id="caption-attachment-4651" class="wp-caption-text">Visual Studio Team Service: Select Authorization Scopes</p></div></li>
<li>Once you are done with the Creation of an App certainly, you can edit the Application If you want to change Redirect URL or something.</li>
<li>furthermore, Go to MyApps Page and you have your App&#8217;s Lists there with App&#8217;s App ID as Client ID and App Secret as Client Secret.
<div id="attachment_10067" style="width: 1177px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/08/VSTS-OAuth-App-Credentials-1.png" target="_blank" rel="noopener"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-10067" class="wp-image-10067 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/08/VSTS-OAuth-App-Credentials-1.png" alt="VSTS-OAuth-App-Credentials" width="1167" height="495" srcset="https://zappysys.com/blog/wp-content/uploads/2018/08/VSTS-OAuth-App-Credentials-1.png 1167w, https://zappysys.com/blog/wp-content/uploads/2018/08/VSTS-OAuth-App-Credentials-1-300x127.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/08/VSTS-OAuth-App-Credentials-1-768x326.png 768w, https://zappysys.com/blog/wp-content/uploads/2018/08/VSTS-OAuth-App-Credentials-1-1024x434.png 1024w" sizes="(max-width: 1167px) 100vw, 1167px" /></a><p id="caption-attachment-10067" class="wp-caption-text">Visual Studio Team Service: Your Apps with App’s Credentials</p></div></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 Issues data from Visual Studio Team Service &#8211; TFS Online and create a new Issue in Visual Studio Team Service &#8211; TFS Online Work Items List under your Project with SSIS.</p>
<h3>Load VSTS data to SQL Server using SSIS JSON Source</h3>
<p>Now once you registered OAuth app in the Visual Studio Team Service &#8211; TFS 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 Mangers List: Select O-AUTH Connection Manager</p></div></li>
<li>Configure the new OAuth Connection for <strong>VSTS(Visual Studio Team Service &#8211; TFS Online)</strong> as below.</li>
<li>First lets enter Call back URL (Same URL you entered when you created App earlier)<a href="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-oauth-connection-manager-for-VSTS-API-configurations-Advanced-Tab.png"><img loading="lazy" decoding="async" class="size-full wp-image-4696" src="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-oauth-connection-manager-for-VSTS-API-configurations-Advanced-Tab.png" alt="SSIS OAuth Connection Manager: Advanced Tab Configurations" width="771" height="697" srcset="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-oauth-connection-manager-for-VSTS-API-configurations-Advanced-Tab.png 771w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-oauth-connection-manager-for-VSTS-API-configurations-Advanced-Tab-300x271.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-oauth-connection-manager-for-VSTS-API-configurations-Advanced-Tab-768x694.png 768w" sizes="(max-width: 771px) 100vw, 771px" /></a>SSIS OAuth Connection Manager: Advanced Tab Configurations</li>
<li>For VSTS API you need to set the Refresh Token File Path as below because VSTS API Token&#8217;s Refresh Token keeps changing.<a href="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-oauth-connection-manager-for-VSTS-API-configurations-OAuth2-Grant-Options-Tab.png"><img loading="lazy" decoding="async" class="size-full wp-image-4697" src="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-oauth-connection-manager-for-VSTS-API-configurations-OAuth2-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/08/ssis-oauth-connection-manager-for-VSTS-API-configurations-OAuth2-Grant-Options-Tab.png 771w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-oauth-connection-manager-for-VSTS-API-configurations-OAuth2-Grant-Options-Tab-300x271.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-oauth-connection-manager-for-VSTS-API-configurations-OAuth2-Grant-Options-Tab-768x694.png 768w" sizes="(max-width: 771px) 100vw, 771px" /></a></li>
<li>Then configure the App on the General tab like below (i.e. OAuth Provider, Client ID, Client Secret, Scopes, etc.)<br />
Scope must be valid one <a href="https://docs.microsoft.com/en-us/azure/devops/integrate/get-started/authentication/oauth?toc=%2Fazure%2Fdevops%2Forganizations%2Ftoc.json&amp;bc=%2Fazure%2Fdevops%2Forganizations%2Fbreadcrumb%2Ftoc.json&amp;view=azure-devops#scopes" target="_blank" rel="noopener">from this list</a> (only those scope allowed which are checked during app creation). For example during app creation you check Work items (full) then you can enter <strong>vso.work_full</strong> in scope.<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: The scopes selected on your registered application must match the scopes entered in the scopes field (below screenshot). If they do not match exactly, an InvalidScope error can be produced.</div></div><a href="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-oauth-connection-manager-for-VSTS-API-configurations-General-Tab.png"><img loading="lazy" decoding="async" class="size-full wp-image-4695" src="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-oauth-connection-manager-for-VSTS-API-configurations-General-Tab.png" alt="SSIS OAuth Connection Manager: General Tab Configurations" width="771" height="697" srcset="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-oauth-connection-manager-for-VSTS-API-configurations-General-Tab.png 771w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-oauth-connection-manager-for-VSTS-API-configurations-General-Tab-300x271.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-oauth-connection-manager-for-VSTS-API-configurations-General-Tab-768x694.png 768w" sizes="(max-width: 771px) 100vw, 771px" /></a></p>
<div class="mceTemp"></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>How to get ProjectID?</h4>
<p>If you don&#8217;t know the ProjectID, then you can also enter ProjectName in place of ProjectID in Request URL. you can also call GET Request for getting Lists of Projects. the Request URL for getting the list of Projects is:</p><pre class="crayon-plain-tag">https://{accountName}.visualstudio.com/_apis/projects?api-version=4.1</pre><p>
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" class="wp-caption aligncenter">
<div id="attachment_3777" style="width: 577px" class="wp-caption aligncenter"><a href="https://i1.wp.com/zappysys.com/blog/wp-content/uploads/2018/05/ssis-rest-api-task-share-post-on-linkedin.png?ssl=1"><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>
</div>
</li>
<li>furthermore, Double click on that Component to Edit the Configurations and Configure the task like the below-attached screesnshot.<br />
Some basic configurations need to be done in SSIS REST API Task.<br />
<strong># Request Tab: </strong></p>
<blockquote><p><strong>* </strong>Select Request URL Access Mode to Url from Connection.<br />
<strong>* </strong>Select Url Connection to your configured ZS-OAuth Connection Manager.<strong><br />
* </strong>Enter <strong>Request URL:</strong> https://zappysys.visualstudio.com/_apis/projects?api-version=4.1<br />
<strong>* </strong>Select <strong>HTTP Request Method:</strong> GET</p></blockquote>
<div id="attachment_4725" style="width: 810px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-rest-api-task-to-get-list-of-projects-VSTS-API-Request-Settings.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4725" class="size-full wp-image-4725" src="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-rest-api-task-to-get-list-of-projects-VSTS-API-Request-Settings.png" alt="SSIS REST API Task: Request Tab Configurations" width="800" height="654" srcset="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-rest-api-task-to-get-list-of-projects-VSTS-API-Request-Settings.png 800w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-rest-api-task-to-get-list-of-projects-VSTS-API-Request-Settings-300x245.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-rest-api-task-to-get-list-of-projects-VSTS-API-Request-Settings-768x628.png 768w" sizes="(max-width: 800px) 100vw, 800px" /></a><p id="caption-attachment-4725" class="wp-caption-text">SSIS REST API Tsk: Request Tab Configurations</p></div>
<p>Create New Variable from Variable Menu</p>
<div id="attachment_4692" style="width: 1559px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-set-variables.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4692" class="size-full wp-image-4692" src="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-set-variables.png" alt="SSIS User Variables: Create a new Variable and set Value" width="1549" height="249" srcset="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-set-variables.png 1549w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-set-variables-300x48.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-set-variables-768x123.png 768w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-set-variables-1024x165.png 1024w" sizes="(max-width: 1549px) 100vw, 1549px" /></a><p id="caption-attachment-4692" class="wp-caption-text">SSIS User Variables: Create a new Variable and set Value</p></div>
<p><strong># Response Tab: </strong></p>
<blockquote><p>* Select <strong>Response Content Type:</strong> Json<br />
* Set <strong>Response Content Filter Expression:</strong> $.value[1].id<br />
* check the checkbox of <strong>Save Response Content<br />
</strong><strong>* </strong>Set <strong>Save Mode </strong>to Save to Variable<br />
* <strong>Select your Variable:</strong> {{User::ProjectID}}</p></blockquote>
<div id="attachment_4726" style="width: 810px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-rest-api-task-to-get-list-of-projects-VSTS-API-Response-Settings.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4726" class="size-full wp-image-4726" src="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-rest-api-task-to-get-list-of-projects-VSTS-API-Response-Settings.png" alt="SSIS REST API Task: Response Tab Configurations" width="800" height="654" srcset="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-rest-api-task-to-get-list-of-projects-VSTS-API-Response-Settings.png 800w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-rest-api-task-to-get-list-of-projects-VSTS-API-Response-Settings-300x245.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-rest-api-task-to-get-list-of-projects-VSTS-API-Response-Settings-768x628.png 768w" sizes="(max-width: 800px) 100vw, 800px" /></a><p id="caption-attachment-4726" class="wp-caption-text">SSIS REST API Task: Response Tab Configurations</p></div></li>
<li> finally, you are done with the configurations and do Test Request/Response and your ProjectID will be saved in {{User:: ProjectID}}</li>
</ol>
<h4>Configure JSON Source Component</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-json-file-source/">ZS JSON Source Component</a> from the SSIS Toolbox.
<div id="attachment_3766" style="width: 604px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/05/ssis-json-source-for-getting-basic-profile-from-linkedin.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3766" class="wp-image-3766 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/05/ssis-json-source-for-getting-basic-profile-from-linkedin.png" alt="Drag and Drop JSON Source Component" width="594" height="268" srcset="https://zappysys.com/blog/wp-content/uploads/2018/05/ssis-json-source-for-getting-basic-profile-from-linkedin.png 594w, https://zappysys.com/blog/wp-content/uploads/2018/05/ssis-json-source-for-getting-basic-profile-from-linkedin-300x135.png 300w" sizes="(max-width: 594px) 100vw, 594px" /></a><p id="caption-attachment-3766" class="wp-caption-text">Drag and Drop JSON 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 />
<pre class="crayon-plain-tag">https://{accountName}.almsearch.visualstudio.com/{project}/_apis/search/workitemsearchresults?api-version=4.1-preview.1</pre>
here, We have used 2 Parameters<strong>.</strong></p>
<p><strong>* {accountName} </strong>is the name of the Visual Studio Team Services &#8211; TFS Online account<strong>.<br />
</strong><strong>* {project} </strong>is Project ID or project name (For more See this <a href="https://docs.microsoft.com/en-us/rest/api/vsts/search/work%20item%20search%20results/fetch%20work%20item%20search%20results?view=vsts-rest-4.1">Visual Studio Team Service API Documentation for getting filtered Issues data Request API</a>)<br />
We have used Search Work Items for Fetching Paginated Work Items(Issues, Bugs)</p>
<p>You can use Variable too in your Request URL, to <strong>make URL Dynamic</strong>, 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</p><pre class="crayon-plain-tag">https://zappysys.almsearch.visualstudio.com/{{User::ProjectID}}/_apis/search/workitemsearchresults?api-version=4.1-preview.1</pre><p>
&nbsp;</li>
</ol>
<div id="attachment_4693" style="width: 892px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-json-source-enter-request-url.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4693" class="size-full wp-image-4693" src="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-json-source-enter-request-url.png" alt="SSIS JSON Source Component: Enter the Request URL" width="882" height="752" srcset="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-json-source-enter-request-url.png 882w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-json-source-enter-request-url-300x256.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-json-source-enter-request-url-768x655.png 768w" sizes="(max-width: 882px) 100vw, 882px" /></a><p id="caption-attachment-4693" class="wp-caption-text">SSIS JSON Source Component: Enter the Request URL</p></div>
<h4>JSON Source Configuration for Pagination</h4>
<ol>
<li>now, we are going to set Pagination related configurations of Visual Studio Team Service &#8211; TFS Online for Getting all WorkItems with Search POST REST Request API. Here in our example,<br />
<strong><strong>Request Method: POST<br />
Body Content-Type: JSON (application/json)<br />
Request Body:<br />
</strong></strong><br />
<pre class="crayon-plain-tag">{
  "searchText": "a",
  "$skip": &lt;%page%&gt;,
  "$top": 100,
  "filters": {
    "System.TeamProject": [
      "ProductTesting"
    ]
  }
}</pre>
here, SearchText: The SearchText for filtering WorkItems based on the keywords match.<br />
<strong>$skip:</strong> Number of results to be skipped<br />
<strong>$top:</strong> Number of results to be returned.<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;">you can take any number of the page size. for example, you can set 100 in both $skip and $top properties (I have set 10 for the Demo Purpose only)</div></div>
filters: Filters to be applied. Set it to null if there are no filters to be applied.<br />
System.TeamProject: ProjectName in which you want to do filtering of WorkItems.</p>
<div id="attachment_4698" style="width: 1174px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-json-source-for-VSTS-API-request-settings-tab.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4698" class="size-full wp-image-4698" src="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-json-source-for-VSTS-API-request-settings-tab.png" alt="SSIS JSON Source Component: Configurations of Settings Tab" width="1164" height="728" srcset="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-json-source-for-VSTS-API-request-settings-tab.png 1164w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-json-source-for-VSTS-API-request-settings-tab-300x188.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-json-source-for-VSTS-API-request-settings-tab-768x480.png 768w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-json-source-for-VSTS-API-request-settings-tab-1024x640.png 1024w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-json-source-for-VSTS-API-request-settings-tab-436x272.png 436w" sizes="(max-width: 1164px) 100vw, 1164px" /></a><p id="caption-attachment-4698" class="wp-caption-text">SSIS JSON Source Component: Configurations of Settings Tab</p></div></li>
<li> You can Configure the Pagination Tab something like this:
<div id="attachment_4699" style="width: 836px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-json-source-for-VSTS-API-request-pagination-tab.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4699" class="size-full wp-image-4699" src="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-json-source-for-VSTS-API-request-pagination-tab.png" alt="SSIS JSON Source Component: Pagination Tab Settings" width="826" height="733" srcset="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-json-source-for-VSTS-API-request-pagination-tab.png 826w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-json-source-for-VSTS-API-request-pagination-tab-300x266.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-json-source-for-VSTS-API-request-pagination-tab-768x682.png 768w" sizes="(max-width: 826px) 100vw, 826px" /></a><p id="caption-attachment-4699" class="wp-caption-text">SSIS JSON Source Component: Pagination Tab Settings</p></div></li>
<li>furthermore, Select the Filter to set the Filter.
<div id="attachment_4700" style="width: 1093px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-json-source-select-filter-for-VSTS-API-POST-Request.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4700" class="size-full wp-image-4700" src="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-json-source-select-filter-for-VSTS-API-POST-Request.png" alt="SSIS JSON Source Component Configurations: Select Filter" width="1083" height="729" srcset="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-json-source-select-filter-for-VSTS-API-POST-Request.png 1083w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-json-source-select-filter-for-VSTS-API-POST-Request-300x202.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-json-source-select-filter-for-VSTS-API-POST-Request-768x517.png 768w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-json-source-select-filter-for-VSTS-API-POST-Request-1024x689.png 1024w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-json-source-select-filter-for-VSTS-API-POST-Request-272x182.png 272w" sizes="(max-width: 1083px) 100vw, 1083px" /></a><p id="caption-attachment-4700" class="wp-caption-text">SSIS JSON Source Component Configurations: Select Filter</p></div></li>
<li>It seems like you are all OK with the configurations, Click on the Preview button to see the response data.
<div id="attachment_4701" style="width: 1519px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-json-source-VSTS-API-preview-response-data.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4701" class="size-full wp-image-4701" src="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-json-source-VSTS-API-preview-response-data.png" alt="SSIS JSON Source Component: See the Preview" width="1509" height="731" srcset="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-json-source-VSTS-API-preview-response-data.png 1509w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-json-source-VSTS-API-preview-response-data-300x145.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-json-source-VSTS-API-preview-response-data-768x372.png 768w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-json-source-VSTS-API-preview-response-data-1024x496.png 1024w" sizes="(max-width: 1509px) 100vw, 1509px" /></a><p id="caption-attachment-4701" class="wp-caption-text">SSIS JSON Source Component: See the 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 Contacts 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 Contacts data into SQL Server Table.
<div id="attachment_4335" style="width: 819px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/07/ssis-oledb-destination-component.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4335" class="size-full wp-image-4335" src="https://zappysys.com/blog/wp-content/uploads/2018/07/ssis-oledb-destination-component.png" alt="Drag and Drop OLE DB Destination Component" width="809" height="497" srcset="https://zappysys.com/blog/wp-content/uploads/2018/07/ssis-oledb-destination-component.png 809w, https://zappysys.com/blog/wp-content/uploads/2018/07/ssis-oledb-destination-component-300x184.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/07/ssis-oledb-destination-component-768x472.png 768w" sizes="(max-width: 809px) 100vw, 809px" /></a><p id="caption-attachment-4335" 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_4703" style="width: 1176px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-ole-db-destination-for-dumping-workitems-list-in-sql.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4703" class="size-full wp-image-4703" src="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-ole-db-destination-for-dumping-workitems-list-in-sql.png" alt="OLE DB Destination Component - Configure for dumping WorkItems of Project from VSTS data in SQL Table" width="1166" height="772" srcset="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-ole-db-destination-for-dumping-workitems-list-in-sql.png 1166w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-ole-db-destination-for-dumping-workitems-list-in-sql-300x199.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-ole-db-destination-for-dumping-workitems-list-in-sql-768x508.png 768w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-ole-db-destination-for-dumping-workitems-list-in-sql-1024x678.png 1024w" sizes="(max-width: 1166px) 100vw, 1166px" /></a><p id="caption-attachment-4703" class="wp-caption-text">OLE DB Destination Component &#8211; Configure for dumping WorkItems of Project from VSTS 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_4704" style="width: 834px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-ole-db-destination-configure-column-mappings.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4704" class="size-full wp-image-4704" src="https://zappysys.com/blog/wp-content/uploads/2018/08/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/08/ssis-ole-db-destination-configure-column-mappings.png 824w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-ole-db-destination-configure-column-mappings-300x261.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-ole-db-destination-configure-column-mappings-768x669.png 768w" sizes="(max-width: 824px) 100vw, 824px" /></a><p id="caption-attachment-4704" class="wp-caption-text">OLE DB Destination &#8211; Column Configurations</p></div></li>
<li>furthermore, You can see the requests in <a href="https://zappysys.com/blog/how-to-use-fiddler-to-analyze-http-web-requests/">Fiddler</a> to see the Paginated requests flows.
<div id="attachment_4705" style="width: 1540px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/08/see-the-fiddler-requests.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4705" class="size-full wp-image-4705" src="https://zappysys.com/blog/wp-content/uploads/2018/08/see-the-fiddler-requests.png" alt="Fiddler - See All The Requests" width="1530" height="649" srcset="https://zappysys.com/blog/wp-content/uploads/2018/08/see-the-fiddler-requests.png 1530w, https://zappysys.com/blog/wp-content/uploads/2018/08/see-the-fiddler-requests-300x127.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/08/see-the-fiddler-requests-768x326.png 768w, https://zappysys.com/blog/wp-content/uploads/2018/08/see-the-fiddler-requests-1024x434.png 1024w" sizes="(max-width: 1530px) 100vw, 1530px" /></a><p id="caption-attachment-4705" class="wp-caption-text">Fiddler &#8211; See All The Requests</p></div></li>
<li>finally, Execute your package to Load Contacts data from Visual Studio Team Service &#8211; TFS Online to SQL Server.</li>
</ol>
<h2>Create a new WorkItem on Visual Studio Team Service &#8211; TFS Online (Use SSIS REST API Task)</h2>
<p>Now let&#8217;s look at one more example to call Visual Studio Team Service(VSTS) &#8211; TFS Online REST API. This time we will create a new WorkItem 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 https://{accountName}.visualstudio.com/{project}/_apis/wit/workitems/${type}?api-version=4.1
      here, 
      {accountName} - The name of the Visual Studio Team Services account.
      {project} - Project ID or project name
      {type} - WorkItems Type (Task, Bug, Issue, Requirement etc)
* Select HTTP Request Method as PATCH method
* Enter Request Body.
      Request Body:
      [
         {
             "op": "add",
             "path": "/fields/System.Title",
             "value": "Sample task"
         }
      ]
* Select Body Content Type: Text/Plain
*Enter Request Header:
        Content-Type: application/json-patch+json
(For more Information See this Visual Studio Team Service - TFS Online API Documentation for Creating a new WorkItem
https://docs.microsoft.com/en-us/rest/api/vsts/wit/work%20items/create?view=vsts-rest-4.1)</pre>
<div id="attachment_4707" style="width: 1068px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-rest-api-task-create-new-workitems-VSTS-API.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4707" class="size-full wp-image-4707" src="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-rest-api-task-create-new-workitems-VSTS-API.png" alt="REST API Task: Configurations" width="1058" height="652" srcset="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-rest-api-task-create-new-workitems-VSTS-API.png 1058w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-rest-api-task-create-new-workitems-VSTS-API-300x185.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-rest-api-task-create-new-workitems-VSTS-API-768x473.png 768w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-rest-api-task-create-new-workitems-VSTS-API-1024x631.png 1024w" sizes="(max-width: 1058px) 100vw, 1058px" /></a><p id="caption-attachment-4707" class="wp-caption-text">REST API Task: 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_4708" style="width: 1274px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-rest-api-task-create-new-workitems-VSTS-API-test-request-response.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4708" class="size-full wp-image-4708" src="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-rest-api-task-create-new-workitems-VSTS-API-test-request-response.png" alt="Create New WorkItem in VSTS Account: Do Test Request/Response" width="1264" height="671" srcset="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-rest-api-task-create-new-workitems-VSTS-API-test-request-response.png 1264w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-rest-api-task-create-new-workitems-VSTS-API-test-request-response-300x159.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-rest-api-task-create-new-workitems-VSTS-API-test-request-response-768x408.png 768w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-rest-api-task-create-new-workitems-VSTS-API-test-request-response-1024x544.png 1024w" sizes="(max-width: 1264px) 100vw, 1264px" /></a><p id="caption-attachment-4708" class="wp-caption-text">Create New WorkItem in VSTS Account: Do Test Request/Response</p></div></li>
<li>finally, you have created a WorkItem in VSTS successfully using VSTS REST API and REST API Task, See in VSTS Site.
<div id="attachment_4714" style="width: 1609px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/08/newly-created-workitem-in-workitems-list-VSTS-API.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4714" class="wp-image-4714 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/08/newly-created-workitem-in-workitems-list-VSTS-API.png" alt="VSTS Site: See the Newly Created WorkItem" width="1599" height="389" srcset="https://zappysys.com/blog/wp-content/uploads/2018/08/newly-created-workitem-in-workitems-list-VSTS-API.png 1599w, https://zappysys.com/blog/wp-content/uploads/2018/08/newly-created-workitem-in-workitems-list-VSTS-API-300x73.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/08/newly-created-workitem-in-workitems-list-VSTS-API-768x187.png 768w, https://zappysys.com/blog/wp-content/uploads/2018/08/newly-created-workitem-in-workitems-list-VSTS-API-1024x249.png 1024w" sizes="(max-width: 1599px) 100vw, 1599px" /></a><p id="caption-attachment-4714" class="wp-caption-text">VSTS Site: See the Newly Created WorkItem</p></div></li>
<li>And that&#8217;s it. similarly, you can Update/Delete particular WorkItem in WorkItems List in VSTS.</li>
</ol>
<h2><span id="Conclusion">Conclusion</span></h2>
<p>In this blog, we learned how to read Visual Studio Team Services &#8211; TFS(Team Foundation Server) Online data in SSIS, How to register an OAuth App for Visual Studio Team Service REST API, How to get all WorkItems data from Visual Studio Team Service  &#8211; TFS(Team Foundation Server) Online and create a new WorkItem on VSTS with SSIS using <a href="https://zappysys.com/products/ssis-powerpack/ssis-json-file-source/">ZS JSON 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>JSON Source Component </strong><a href="https://zappysys.com/blog/tag/ssis-json-source/">https://zappysys.com/blog/tag/ssis-json-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 VSTS API with our tools:</p>
<ul>
<li><a href="https://docs.microsoft.com/en-us/rest/api/vsts/?view=vsts-rest-4.1">Visual Studio Team Service Documentation for 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-json-file-source/">JSON Source Component</a>, you can also find <a href="https://youtu.be/t4fSghbSZLo">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=json-source.htm">JSON Source Component</a>.</li>
</ul>
<p>The post <a href="https://zappysys.com/blog/read-vsts-data-ssis-call-rest-api-load-sql-server/">Read Azure DevOps data in SSIS (VSTS / TFS Online) – Call REST API / Load to SQL Server</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How to read Constant Contact data in SSIS – Call REST API / Load to SQL Server</title>
		<link>https://zappysys.com/blog/read-constant-contact-data-ssis/</link>
		
		<dc:creator><![CDATA[ZappySys]]></dc:creator>
		<pubDate>Sat, 04 Aug 2018 10:29:59 +0000</pubDate>
				<category><![CDATA[REST API Integration]]></category>
		<category><![CDATA[SSIS JSON Source (File/REST)]]></category>
		<category><![CDATA[SSIS REST API Task]]></category>
		<category><![CDATA[Constant Contact]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[oauth2]]></category>
		<category><![CDATA[pagination]]></category>
		<category><![CDATA[rest api]]></category>
		<category><![CDATA[ssis]]></category>
		<guid isPermaLink="false">https://zappysys.com/blog/?p=4537</guid>

					<description><![CDATA[<p>Introduction &#160; In this blog, we will learn How to read Constant Contact data in SSIS and load into SQL Server Table, along with few other topics such as how to generate an API Token using Mashery Developer Account for Constant Contact REST API Call, how to read all Contacts from Constant Contact with SSIS and [&#8230;]</p>
<p>The post <a href="https://zappysys.com/blog/read-constant-contact-data-ssis/">How to read Constant Contact data in SSIS – Call REST API / Load to SQL Server</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Introduction</h2>
<p>&nbsp;</p>
<p><a href="https://zappysys.com/blog/wp-content/uploads/2018/08/constnt-contact-logo-150x150.png"><img loading="lazy" decoding="async" class=" wp-image-4630 alignleft" src="https://zappysys.com/blog/wp-content/uploads/2018/08/constnt-contact-logo-150x150.png" alt="Constant Contact Logo" width="198" height="197" srcset="https://zappysys.com/blog/wp-content/uploads/2018/08/constnt-contact-logo-150x150.png 364w, https://zappysys.com/blog/wp-content/uploads/2018/08/constnt-contact-logo-150x150-150x150.png 150w, https://zappysys.com/blog/wp-content/uploads/2018/08/constnt-contact-logo-150x150-300x298.png 300w" sizes="(max-width: 198px) 100vw, 198px" /></a>In this blog, we will learn <strong>How to read Constant Contact data in SSIS and load into SQL Server Table</strong>, along with few other topics such as how to generate an API Token using Mashery Developer Account for <strong>Constant Contact REST API Call</strong>, how to read all Contacts from Constant Contact with SSIS and finally How to add new Contact in Constant Contact Contact List Collection.</p>
<p>We will go through the steps to read Contact data from Constant Contact and Load into SQL Server using <a href="https://zappysys.com/products/ssis-powerpack/ssis-json-file-source/">SSIS JSON Source.</a></p>
<p>In nutshell, this post will focus on how to call Constant Contact API using SSIS. If you are MailChimp user and curious how to perform data integration in SSIS then check this article about <a href="https://zappysys.com/blog/get-data-from-mailchimp-in-ssis-using-rest-api-call/" target="_blank" rel="noopener">reading MailChimp data in SSIS</a>.</p>
<p>So let&#8217;s get started.</p>
<h2><span id="Requirements">Prerequisite<br />
</span></h2>
<ol>
<li>First, you will need to have SSIS installed</li>
<li>Secondly, make sure to have SSDT</li>
<li>Finally, do not forget to install ZappySys <a href="https://zappysys.com/products/ssis-powerpack/">SSIS PowerPack</a></li>
</ol>
<h2>What is Constant Contact</h2>
<p>Keeping in touch with customers on a consistent basis is one key to maintaining current clients and bringing in new ones. A number of companies exist that provide businesses with a way to contact clients regularly through snail mail, email or social media. Constant Contact offers online marketing services for businesses to stay in touch with clients.</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-rest-api-web-service-task/">SSIS REST API Task</a> and <a href="https://zappysys.com/products/ssis-powerpack/ssis-json-file-source/">SSIS JSON Source</a> that will help you to call Constant Contact API to read Constant Contact data, retrieve lists of Contacts data from Constant Contact, Add new Contact in Constant Contact with SSIS and do many more actions using REST API. To learn more about Constant Contact API <a href="http://developer.constantcontact.com/docs/developer-guides/overview-of-api-endpoints.html" rel="noopener">check this help file</a>.</p>
<h3>Setup your Mashery Developer Account</h3>
<p>To access Constant Contact data using Mashery Developer Account you need to register a MasheryID with Constant Contact. Follow the steps mentioned below to register Mashery Developer Account for Constant Contact Access:</p>
<ol>
<li>first of all, you can directly login to the <a href="https://constantcontact.mashery.com/member/">Constant Contact site</a> with your credentials, and redirect to the <a href="https://constantcontact.mashery.com/member/register">Mashrey Developer Console</a> to register a MasheryID.</li>
<li>thereafter Fillup the form and click on Register button
<div id="attachment_4541" style="width: 909px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/08/register-marshey-developer-account.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4541" class="wp-image-4541 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/08/register-marshey-developer-account.png" alt="Register Mashery ID to Constant Contact" width="899" height="762" srcset="https://zappysys.com/blog/wp-content/uploads/2018/08/register-marshey-developer-account.png 899w, https://zappysys.com/blog/wp-content/uploads/2018/08/register-marshey-developer-account-300x254.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/08/register-marshey-developer-account-768x651.png 768w" sizes="(max-width: 899px) 100vw, 899px" /></a><p id="caption-attachment-4541" class="wp-caption-text">Register Mashery ID to Constant Contact</p></div></li>
<li>If you have already registered on Mashery Developer Account, then you just have to log in using your Credentials.
<div id="attachment_4542" style="width: 910px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/08/log-in-marshey-developer-account.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4542" class="wp-image-4542 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/08/log-in-marshey-developer-account.png" alt="Login to Mashery Developer Account" width="900" height="579" srcset="https://zappysys.com/blog/wp-content/uploads/2018/08/log-in-marshey-developer-account.png 900w, https://zappysys.com/blog/wp-content/uploads/2018/08/log-in-marshey-developer-account-300x193.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/08/log-in-marshey-developer-account-768x494.png 768w" sizes="(max-width: 900px) 100vw, 900px" /></a><p id="caption-attachment-4542" class="wp-caption-text">Login to Mashery Developer Account</p></div></li>
<li>So, when you are done with the Mashery, you can go to <a href="https://constantcontact.mashery.com/apps/myapps">MyApplication Page</a> to create a new application.</li>
</ol>
<h3>Create Constant Contact App (for OAuth)</h3>
<p>To access Constant Contact data using REST API call you need to create a Mashery app. Follow the steps mentioned below to register Constant Contact OAuth App:</p>
<ol>
<li>First of all, you can directly login to the <a href="https://constantcontact.mashery.com/login">Mashery Developer Account</a> with your credentials, and redirect to the Constant Contact My Application&#8217;s Page for creating an app.</li>
<li>also, you can open the <a href="https://constantcontact.mashery.com/apps/myapps">MyApps Page</a>.
<div id="attachment_4585" style="width: 910px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/08/create-new-app-for-oauth-connection-1.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4585" class="wp-image-4585 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/08/create-new-app-for-oauth-connection-1.png" alt="Constant Contact: My Apps" width="900" height="356" srcset="https://zappysys.com/blog/wp-content/uploads/2018/08/create-new-app-for-oauth-connection-1.png 900w, https://zappysys.com/blog/wp-content/uploads/2018/08/create-new-app-for-oauth-connection-1-300x119.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/08/create-new-app-for-oauth-connection-1-768x304.png 768w" sizes="(max-width: 900px) 100vw, 900px" /></a><p id="caption-attachment-4585" class="wp-caption-text">Constant Contact: My Apps</p></div></li>
<li>Click on Create a New Application button while, the new Application form appears, Fill it up.
<div id="attachment_4570" style="width: 907px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/08/create-new-app-registration-form-for-oauth-connection.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4570" class="size-full wp-image-4570" src="https://zappysys.com/blog/wp-content/uploads/2018/08/create-new-app-registration-form-for-oauth-connection.png" alt="Constant Contact: Create New Application Form" width="897" height="1544" srcset="https://zappysys.com/blog/wp-content/uploads/2018/08/create-new-app-registration-form-for-oauth-connection.png 897w, https://zappysys.com/blog/wp-content/uploads/2018/08/create-new-app-registration-form-for-oauth-connection-174x300.png 174w, https://zappysys.com/blog/wp-content/uploads/2018/08/create-new-app-registration-form-for-oauth-connection-768x1322.png 768w, https://zappysys.com/blog/wp-content/uploads/2018/08/create-new-app-registration-form-for-oauth-connection-595x1024.png 595w" sizes="(max-width: 897px) 100vw, 897px" /></a><p id="caption-attachment-4570" class="wp-caption-text">Constant Contact: Create New Application Form</p></div></li>
<li>Once you are done with the Creation of an App certainly, you can edit the Application.<br />
Enter the Redirect URL there.</p>
<div id="attachment_4587" style="width: 878px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/08/edit-app-for-oauth-connection-1.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4587" class="wp-image-4587 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/08/edit-app-for-oauth-connection-1.png" alt="Constant Contact : Edit Application" width="868" height="733" srcset="https://zappysys.com/blog/wp-content/uploads/2018/08/edit-app-for-oauth-connection-1.png 868w, https://zappysys.com/blog/wp-content/uploads/2018/08/edit-app-for-oauth-connection-1-300x253.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/08/edit-app-for-oauth-connection-1-768x649.png 768w" sizes="(max-width: 868px) 100vw, 868px" /></a><p id="caption-attachment-4587" class="wp-caption-text">Constant Contact: Edit Application</p></div></li>
<li>furthermore, Go to Keys tab and you have your App&#8217;s Lists there with App&#8217;s Key as Client ID and Secret as Client Secret.
<div id="attachment_4588" style="width: 908px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/08/oauth-app-keys-for-connection-1.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4588" class="wp-image-4588 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/08/oauth-app-keys-for-connection-1.png" alt="Constant Contact: Apps Keys" width="898" height="698" srcset="https://zappysys.com/blog/wp-content/uploads/2018/08/oauth-app-keys-for-connection-1.png 898w, https://zappysys.com/blog/wp-content/uploads/2018/08/oauth-app-keys-for-connection-1-300x233.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/08/oauth-app-keys-for-connection-1-768x597.png 768w" sizes="(max-width: 898px) 100vw, 898px" /></a><p id="caption-attachment-4588" class="wp-caption-text">Constant Contact: Apps Keys</p></div></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 Contacts data from Constant Contact and add a new Contact in Contact Collection List on Constant contact with SSIS.</p>
<h3>Load Constant Contact data to SQL Server using SSIS JSON Source</h3>
<p>Now once you registered OAuth app in the Constant Contact website we can move to SSIS Part.</p>
<h4>Configure JSON Source Component</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-json-file-source/">ZS JSON Source Component</a> from the SSIS Toolbox.
<div id="attachment_3766" style="width: 604px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/05/ssis-json-source-for-getting-basic-profile-from-linkedin.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-3766" class="wp-image-3766 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/05/ssis-json-source-for-getting-basic-profile-from-linkedin.png" alt="Drag and Drop JSON Source Component" width="594" height="268" srcset="https://zappysys.com/blog/wp-content/uploads/2018/05/ssis-json-source-for-getting-basic-profile-from-linkedin.png 594w, https://zappysys.com/blog/wp-content/uploads/2018/05/ssis-json-source-for-getting-basic-profile-from-linkedin-300x135.png 300w" sizes="(max-width: 594px) 100vw, 594px" /></a><p id="caption-attachment-3766" class="wp-caption-text">Drag and Drop JSON 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 />
<pre class="crayon-plain-tag">https://api.constantcontact.com/v2/contacts?status=ALL&amp;limit=100&amp;api_key=&lt;&lt;&lt;Your_App_Key&gt;&gt;&gt;</pre>
here, We have used 2 Parameters<strong>.</strong></p>
<p><strong>* status</strong> is the filter the response based on the contact status property: <strong>ALL, ACTIVE, UNCONFIRMED, OPTOUT, or REMOVED.<br />
</strong><strong>* limit </strong>is the number of contacts to return per page, 1-500, default 50 (For more See this <a href="http://developer.constantcontact.com/docs/contacts-api/contacts-collection.html">Constant Contact API Documentation for getting Contacts Request API</a>)<br />
* <strong>&lt;&lt;&lt;Your_App_Key&gt;&gt;&gt; </strong>is your App Key, So you need to add your app key.</p>
<p>You can use Variable too in your Request URL, to <strong>make URL Dynamic</strong>, See the below-attached Screenshot.<br />
To make URL dynamic first create a 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</p>
<p><em>https://api.constantcontact.com/v2/contacts?status=ALL&amp;limit=100&amp;api_key=<strong>{{User::AppKey}}</strong></em></p>
<div id="attachment_4597" style="width: 1565px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-create-variable-and-set-value-for-dynamic-url.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4597" class="wp-image-4597 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-create-variable-and-set-value-for-dynamic-url.png" alt="SSIS User Variables: Create a new Variable and set Value" width="1555" height="317" srcset="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-create-variable-and-set-value-for-dynamic-url.png 1555w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-create-variable-and-set-value-for-dynamic-url-300x61.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-create-variable-and-set-value-for-dynamic-url-768x157.png 768w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-create-variable-and-set-value-for-dynamic-url-1024x209.png 1024w" sizes="(max-width: 1555px) 100vw, 1555px" /></a><p id="caption-attachment-4597" class="wp-caption-text">SSIS User Variables: Create a new Variable and set Value</p></div>
<div id="attachment_4589" style="width: 836px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-json-source-constant-contact-request-api-1.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4589" class="wp-image-4589 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-json-source-constant-contact-request-api-1.png" alt="SSIS JSON Source Component: Enter the Request URL" width="826" height="733" srcset="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-json-source-constant-contact-request-api-1.png 826w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-json-source-constant-contact-request-api-1-300x266.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-json-source-constant-contact-request-api-1-768x682.png 768w" sizes="(max-width: 826px) 100vw, 826px" /></a><p id="caption-attachment-4589" class="wp-caption-text">SSIS JSON Source Component: Enter the Request URL</p></div></li>
</ol>
<h4>Configure OAuth Connection Manager</h4>
<ol>
<li>Check Use Credentials Option and select a new ZS-OAuth Connection from the drop-down.</li>
<li>Configure the new OAuth Connection for Constant Contact as below.<br />
Basically, you need to configure the configurations of App on the General tab (i.e. Client ID, Client Secret, Authorization URL, Access Token URL)</p>
<div id="attachment_4590" style="width: 1439px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-oauth-connection-manager-general-tab-for-constant-contact-1.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4590" class="wp-image-4590 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-oauth-connection-manager-general-tab-for-constant-contact-1.png" alt="SSIS OAuth Connection Manager: General Tab Configurations" width="1429" height="740" srcset="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-oauth-connection-manager-general-tab-for-constant-contact-1.png 1429w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-oauth-connection-manager-general-tab-for-constant-contact-1-300x155.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-oauth-connection-manager-general-tab-for-constant-contact-1-768x398.png 768w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-oauth-connection-manager-general-tab-for-constant-contact-1-1024x530.png 1024w" sizes="(max-width: 1429px) 100vw, 1429px" /></a><p id="caption-attachment-4590" class="wp-caption-text">SSIS OAuth Connection Manager: General Tab Configurations</p></div>
<p>also, most importantly, you need to Enter your Callback URL in Advanced Tab.</p>
<div id="attachment_4591" style="width: 1438px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-oauth-connection-manager-advance-tab-for-constant-contact-1.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4591" class="wp-image-4591 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-oauth-connection-manager-advance-tab-for-constant-contact-1.png" alt="SSIS OAuth Connection Manager: Advance Tab Configurations." width="1428" height="740" srcset="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-oauth-connection-manager-advance-tab-for-constant-contact-1.png 1428w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-oauth-connection-manager-advance-tab-for-constant-contact-1-300x155.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-oauth-connection-manager-advance-tab-for-constant-contact-1-768x398.png 768w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-oauth-connection-manager-advance-tab-for-constant-contact-1-1024x531.png 1024w" sizes="(max-width: 1428px) 100vw, 1428px" /></a><p id="caption-attachment-4591" class="wp-caption-text">SSIS OAuth Connection Manager: Advance Tab Configurations.</p></div></li>
</ol>
<h4>JSON Source Configuration for Pagination</h4>
<ol>
<li> now, we are going to set Pagination related configurations for Constant Contact Getting all Contacts request. Here in our example, we are setting Page size as 5. while We need to read the next page information from the response.<br />
So, we can set the <strong>status=ALL, Limit=100</strong> and also we can specify Next Link Expression something like this: <strong>$.meta.pagination.next_link </strong>and Suffix for Next URL: <strong><strong>?api_key={{User::AppKey}}<br />
</strong></strong></p>
<div id="attachment_4592" style="width: 836px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-json-source-constant-contact-request-api-pagination-settings-1.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4592" class="wp-image-4592 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-json-source-constant-contact-request-api-pagination-settings-1.png" alt="SSIS JSON Source - Constant Contact request Pagination Configurations Settings" width="826" height="733" srcset="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-json-source-constant-contact-request-api-pagination-settings-1.png 826w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-json-source-constant-contact-request-api-pagination-settings-1-300x266.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-json-source-constant-contact-request-api-pagination-settings-1-768x682.png 768w" sizes="(max-width: 826px) 100vw, 826px" /></a><p id="caption-attachment-4592" class="wp-caption-text">SSIS JSON Source &#8211; Constant Contact request Pagination Configurations Settings</p></div></li>
<li>furthermore Select the Filter to set the Filter. seems like you are all OK with the configurations, Click on Preview button to see the response data.
<div id="attachment_4593" style="width: 1307px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-json-source-constant-contact-request-api-see-preview-1.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4593" class="wp-image-4593 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-json-source-constant-contact-request-api-see-preview-1.png" alt="JSON Source: Preview Contacts data of Constant Contact" width="1297" height="707" srcset="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-json-source-constant-contact-request-api-see-preview-1.png 1297w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-json-source-constant-contact-request-api-see-preview-1-300x164.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-json-source-constant-contact-request-api-see-preview-1-768x419.png 768w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-json-source-constant-contact-request-api-see-preview-1-1024x558.png 1024w" sizes="(max-width: 1297px) 100vw, 1297px" /></a><p id="caption-attachment-4593" class="wp-caption-text">JSON Source: Preview Contacts data of Constant Contact</p></div></li>
<li>finally, Click on OK button to save JSON Source settings.</li>
</ol>
<h4>Configure OLE DB Destination Component for dumping Contacts 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 Contacts data into SQL Server Table.
<div id="attachment_4335" style="width: 819px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/07/ssis-oledb-destination-component.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4335" class="size-full wp-image-4335" src="https://zappysys.com/blog/wp-content/uploads/2018/07/ssis-oledb-destination-component.png" alt="Drag and Drop OLE DB Destination Component" width="809" height="497" srcset="https://zappysys.com/blog/wp-content/uploads/2018/07/ssis-oledb-destination-component.png 809w, https://zappysys.com/blog/wp-content/uploads/2018/07/ssis-oledb-destination-component-300x184.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/07/ssis-oledb-destination-component-768x472.png 768w" sizes="(max-width: 809px) 100vw, 809px" /></a><p id="caption-attachment-4335" 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_4594" style="width: 1182px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-oledb-destination-for-dumping-constant-contact-data-1.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4594" class="wp-image-4594 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-oledb-destination-for-dumping-constant-contact-data-1.png" alt="OLE DB Destination Component - Configure for dumping Constant Contact data in SQL Table" width="1172" height="773" srcset="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-oledb-destination-for-dumping-constant-contact-data-1.png 1172w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-oledb-destination-for-dumping-constant-contact-data-1-300x198.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-oledb-destination-for-dumping-constant-contact-data-1-768x507.png 768w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-oledb-destination-for-dumping-constant-contact-data-1-1024x675.png 1024w" sizes="(max-width: 1172px) 100vw, 1172px" /></a><p id="caption-attachment-4594" class="wp-caption-text">OLE DB Destination Component &#8211; Configure for dumping Constant Contact 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_4595" style="width: 834px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-oledb-destination-for-dumping-constant-contact-data-columns-mappings-1.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4595" class="wp-image-4595 size-full" src="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-oledb-destination-for-dumping-constant-contact-data-columns-mappings-1.png" alt="OLE DB Destination - Column Configurations" width="824" height="718" srcset="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-oledb-destination-for-dumping-constant-contact-data-columns-mappings-1.png 824w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-oledb-destination-for-dumping-constant-contact-data-columns-mappings-1-300x261.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-oledb-destination-for-dumping-constant-contact-data-columns-mappings-1-768x669.png 768w" sizes="(max-width: 824px) 100vw, 824px" /></a><p id="caption-attachment-4595" class="wp-caption-text">OLE DB Destination &#8211; Column Configurations</p></div></li>
<li>furthermore, You can see the requests in <a href="https://zappysys.com/blog/how-to-use-fiddler-to-analyze-http-web-requests/">Fiddler</a> to see the Paginated requests flows.
<div id="attachment_4580" style="width: 1504px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/08/see-paginated-requests-of-constantcontact-api-in-fiddler.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4580" class="size-full wp-image-4580" src="https://zappysys.com/blog/wp-content/uploads/2018/08/see-paginated-requests-of-constantcontact-api-in-fiddler.png" alt="Fiddler - See All The Requests" width="1494" height="518" srcset="https://zappysys.com/blog/wp-content/uploads/2018/08/see-paginated-requests-of-constantcontact-api-in-fiddler.png 1494w, https://zappysys.com/blog/wp-content/uploads/2018/08/see-paginated-requests-of-constantcontact-api-in-fiddler-300x104.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/08/see-paginated-requests-of-constantcontact-api-in-fiddler-768x266.png 768w, https://zappysys.com/blog/wp-content/uploads/2018/08/see-paginated-requests-of-constantcontact-api-in-fiddler-1024x355.png 1024w" sizes="(max-width: 1494px) 100vw, 1494px" /></a><p id="caption-attachment-4580" class="wp-caption-text">Fiddler &#8211; See All The Requests</p></div></li>
<li>finally, Execute your package to Load Contacts data from Constant Contact to SQL Server.</li>
</ol>
<h2>Add a new Contact on Constant Contact (Use SSIS REST API Task)</h2>
<p>Now let&#8217;s look at one more example to call Constant Contact REST API. This time we will add a new contact 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 URL: 
https://api.constantcontact.com/v2/contacts?action_by=ACTION_BY_OWNER&amp;api_key=&lt;&lt;&lt;YOUR_APP_KEY&gt;&gt;&gt;

here, action_by Can be ACTION_BY_OWNER or ACTION_BY_VISITOR (from the API Document,<a href="http://developer.constantcontact.com/docs/contacts-api/contacts-collection.html?method=POST">Click here for more Informaion</a>)
Sample Request Body: 
{
	"addresses": [{
		"line1": "4928 Small Street",
		"city": "New York",
		"address_type": "PERSONAL",
		"state_code": "MA",
		"country_code": "us",
		"postal_code": "10022"
	}],
	"lists": [{
		"id": "1652428712"
	}],
	"email_addresses": [{
		"email_address": "hbshah@zappysys.com"
	}],
	"prefix_name": "Mr.",
	"first_name": "Hardik",
	"last_name": "Shah",
	"job_title": "Tech Supporter",
	"company_name": "ZappySys",
	"home_phone": "555-555-5555",
	"work_phone": "555-555-5555",
	"cell_phone": "555-555-5555",
	"fax": "555-555-5555",
	"custom_fields": [{
		"name": "CustomField1",
		"value": "Has control of $25 million budget"
	}]
}</pre>
<div id="attachment_4599" style="width: 1251px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-rest-api-task-configuration-for-add-new-contact-in-constant-contact.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4599" class="size-full wp-image-4599" src="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-rest-api-task-configuration-for-add-new-contact-in-constant-contact.png" alt="REST API Task: Configurations" width="1241" height="717" srcset="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-rest-api-task-configuration-for-add-new-contact-in-constant-contact.png 1241w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-rest-api-task-configuration-for-add-new-contact-in-constant-contact-300x173.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-rest-api-task-configuration-for-add-new-contact-in-constant-contact-768x444.png 768w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-rest-api-task-configuration-for-add-new-contact-in-constant-contact-1024x592.png 1024w" sizes="(max-width: 1241px) 100vw, 1241px" /></a><p id="caption-attachment-4599" class="wp-caption-text">REST API Task: Configurations</p></div></li>
<li>now you are done with the configurations. you can do Test Request/Response. See the below-attached request/response screen.
<div id="attachment_4600" style="width: 1328px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-rest-api-task-configuration-for-add-new-contact-in-constant-contact-test-request-response.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4600" class="size-full wp-image-4600" src="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-rest-api-task-configuration-for-add-new-contact-in-constant-contact-test-request-response.png" alt="Add New Contact in Costant Contact Account: Do Test Request/Response " width="1318" height="696" srcset="https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-rest-api-task-configuration-for-add-new-contact-in-constant-contact-test-request-response.png 1318w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-rest-api-task-configuration-for-add-new-contact-in-constant-contact-test-request-response-300x158.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-rest-api-task-configuration-for-add-new-contact-in-constant-contact-test-request-response-768x406.png 768w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-rest-api-task-configuration-for-add-new-contact-in-constant-contact-test-request-response-1024x541.png 1024w, https://zappysys.com/blog/wp-content/uploads/2018/08/ssis-rest-api-task-configuration-for-add-new-contact-in-constant-contact-test-request-response-720x380.png 720w" sizes="(max-width: 1318px) 100vw, 1318px" /></a><p id="caption-attachment-4600" class="wp-caption-text">Add New Contact in Constant Contact Account: Do Test Request/Response</p></div></li>
<li>finally, you have successfully added a contact. furthermore, Goto your Constant Contact Account on its site, you can see the latest Contact added which is added by us with the use of ZappySys and SSIS.
<div id="attachment_4601" style="width: 1604px" class="wp-caption aligncenter"><a href="https://zappysys.com/blog/wp-content/uploads/2018/08/constant-contact-newly-added-contact.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-4601" class="size-full wp-image-4601" src="https://zappysys.com/blog/wp-content/uploads/2018/08/constant-contact-newly-added-contact.png" alt="Constant Contact Site: See the Newly Added Contact" width="1594" height="593" srcset="https://zappysys.com/blog/wp-content/uploads/2018/08/constant-contact-newly-added-contact.png 1594w, https://zappysys.com/blog/wp-content/uploads/2018/08/constant-contact-newly-added-contact-300x112.png 300w, https://zappysys.com/blog/wp-content/uploads/2018/08/constant-contact-newly-added-contact-768x286.png 768w, https://zappysys.com/blog/wp-content/uploads/2018/08/constant-contact-newly-added-contact-1024x381.png 1024w" sizes="(max-width: 1594px) 100vw, 1594px" /></a><p id="caption-attachment-4601" class="wp-caption-text">Constant Contact Site: See the Newly Added Contact</p></div></li>
<li>though, You are done with adding a contact in Constant Contact. similarly, you can Update/Delete particular Contact in Contact Collection List.</li>
</ol>
<h2><span id="Conclusion">Conclusion</span></h2>
<p>In this blog, we learned how to Setup your Mashery Developer Account, Create Constant Contact App for OAuth, Get all Contacts data from Constant Contact and add a new contact on Constant Contact with SSIS using <a href="https://zappysys.com/products/ssis-powerpack/ssis-json-file-source/">ZS JSON 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>JSON Source Component </strong><a href="https://zappysys.com/blog/tag/ssis-json-source/">https://zappysys.com/blog/tag/ssis-json-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 Constant Contact API with our tools:</p>
<ul>
<li><a href="http://developer.constantcontact.com/docs/developer-guides/api-documentation-index.html">Constant Contact Documentation for 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-json-file-source/">JSON Source Component</a>, you can also find <a href="https://youtu.be/t4fSghbSZLo">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=json-source.htm">JSON Source Component</a>.</li>
</ul>
<p>The post <a href="https://zappysys.com/blog/read-constant-contact-data-ssis/">How to read Constant Contact data in SSIS – Call REST API / Load to SQL Server</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
