<?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>powerpack Archives | ZappySys Blog</title>
	<atom:link href="https://zappysys.com/blog/tag/powerpack/feed/" rel="self" type="application/rss+xml" />
	<link>https://zappysys.com/blog/tag/powerpack/</link>
	<description>SSIS / ODBC Drivers / API Connectors for JSON, XML, Azure, Amazon AWS, Salesforce, MongoDB and more</description>
	<lastBuildDate>Fri, 21 Nov 2025 03:37:45 +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>powerpack Archives | ZappySys Blog</title>
	<link>https://zappysys.com/blog/tag/powerpack/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>How to create BIML custom task or component</title>
		<link>https://zappysys.com/blog/how-to-use-biml-script-to-create-biml-custom-task-or-component/</link>
		
		<dc:creator><![CDATA[ZappySys]]></dc:creator>
		<pubDate>Thu, 21 Sep 2017 16:42:01 +0000</pubDate>
				<category><![CDATA[SSIS Components]]></category>
		<category><![CDATA[SSIS PowerPack]]></category>
		<category><![CDATA[SSIS Tips & How-Tos]]></category>
		<category><![CDATA[biml]]></category>
		<category><![CDATA[json source]]></category>
		<category><![CDATA[powerpack]]></category>
		<category><![CDATA[ssis http connection]]></category>
		<category><![CDATA[trash destination]]></category>
		<guid isPermaLink="false">http://zappysys.com/blog/?p=2025</guid>

					<description><![CDATA[<p>Introduction BIML, or Business Intelligence Markup Language, is a nice technology that lets you generate SSIS packages using a bit of scripting and parameters.  Check for more info if you are new to it: https://en.wikipedia.org/wiki/Business_Intelligence_Markup_Language http://bimlscript.com/ In this article, we will cover how to create a BIML custom task or component. For this purpose, we will use [&#8230;]</p>
<p>The post <a href="https://zappysys.com/blog/how-to-use-biml-script-to-create-biml-custom-task-or-component/">How to create BIML custom task or component</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Introduction</h2>
<p><a href="//zappysys.com/blog/wp-content/uploads/2017/09/ssis-biml-powerpack-zappysys.png"><img decoding="async" class="wp-image-2031 alignleft" src="//zappysys.com/blog/wp-content/uploads/2017/09/ssis-biml-powerpack-zappysys.png" alt="" width="90" height="90" srcset="https://zappysys.com/blog/wp-content/uploads/2017/09/ssis-biml-powerpack-zappysys.png 160w, https://zappysys.com/blog/wp-content/uploads/2017/09/ssis-biml-powerpack-zappysys-150x150.png 150w" sizes="(max-width: 90px) 100vw, 90px" /></a><span style="box-sizing: border-box; margin: 0px; padding: 0px;">BIML, or <em>Business Intelligence Markup Language,</em> is a nice technology that lets you generate SSIS packages using a bit of scripting and parameters.</span>  Check for more info if you are new to it:</p>
<ul style="list-style-position: inside;">
<li><a href="https://en.wikipedia.org/wiki/Business_Intelligence_Markup_Language" target="_blank" rel="noopener">https://en.wikipedia.org/wiki/Business_Intelligence_Markup_Language</a></li>
<li><a href="http://bimlscript.com/" target="_blank" rel="noopener">http://bimlscript.com/</a></li>
</ul>
<p>In this article, we will cover how to create a BIML custom task or component. For this purpose, we will use the <a href="//zappysys.com/products/ssis-powerpack/" target="_blank" rel="noopener">ZappySys PowerPack</a> Task or Data Flow component as an example. At the end of this article you will find <a href="//zappysys.com/blog/how-to-use-biml-to-generate-powerpack-ssis-connectors/#Download_sample_BIMLs">sample BIML files</a> you can download and fiddle around.</p>
<h2>Use BIML to create SSIS packages that use PowerPack tasks or components</h2>
<h3>BIML Elements</h3>
<p>BIML uses <pre class="crayon-plain-tag">CustomTask</pre>, <pre class="crayon-plain-tag">CustomComponent</pre>, and <pre class="crayon-plain-tag">CustomSsisConnection</pre> elements to create custom SSIS connectors. In each of them, you will need to specify <pre class="crayon-plain-tag">CreationName</pre> or a similar attribute/element, which defines what kind of component you want to create. E.g., for <em>LoggingTask</em> it would look like this:</p><pre class="crayon-plain-tag">ZappySys.PowerPack.Task.LoggingTask.LoggingTask, ZappySys.PowerPack120, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1903265a93eae502</pre><p>
You will find the connector name in DTSX. For Tasks, you have to specify the CreationName attribute; for components, it is UserComponentTypeName. For the <em>Rest API Task, </em>it looks similar to this:</p><pre class="crayon-plain-tag">&lt;DTS:Executable
 DTS:refId="Package\Sequence Container\ZS REST API Task 1.EventHandlers[OnError]\ZS REST API Task"
 DTS:CreationName="ZappySys.PowerPack.Task.RestApiTask.RestApiTask, ZappySys.PowerPack110, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1903265a93eae502"</pre><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;"><strong>NOTE</strong>: If your SSIS package is of a higher version than SQL Server 2012, convert it to SQL Server 2012 first.</div></div>
<p>For a different SQL Server SSIS package version, you will need to use a different DLL name, e.g.:</p>
<ul>
<li><strong>SQL Server 2008</strong>: ZappySys.PowerPack100</li>
<li><strong>SQL Server 2012</strong>: ZappySys.PowerPack110</li>
<li><strong>SQL Server 2014</strong>: ZappySys.PowerPack120</li>
<li><strong>SQL Server 2016</strong>: ZappySys.PowerPack130</li>
<li><strong>SQL Server 2017</strong>: ZappySys.PowerPack140</li>
</ul>
<p>So, to generate<strong> a SQL Server 2017</strong> SSIS package, the custom connector creation name becomes like this:</p><pre class="crayon-plain-tag">ZappySys.PowerPack.Task.LoggingTask.LoggingTask, ZappySys.PowerPack140, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1903265a93eae502</pre><p>
<h3>Create a BIML custom task with CustomTask</h3>
<p>You will need to use the <pre class="crayon-plain-tag">CustomTask</pre> element to create PowerPack Tasks in your Control Flow. So open your DTSX where you use a PowerPack Task, find out the <pre class="crayon-plain-tag">CreationName</pre> and then copy child element in <pre class="crayon-plain-tag">&lt;DTS:ObjectData&gt;</pre> element. (e.g., LoggingTask). You will need to escape it and use it in your BIML as well.</p>
<h4>DTSX snippet</h4>
<pre class="crayon-plain-tag">... 
&lt;DTS:Executable
    DTS:refId="Package\ZS Logging Task"
    DTS:CreationName="ZappySys.PowerPack.Task.LoggingTask.LoggingTask, ZappySys.PowerPack110, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1903265a93eae502"
    ...
    &lt;DTS:Variables /&gt;
    &lt;DTS:ObjectData&gt;
    &lt;LoggingTask
        Message="Hello from {{System::PackageName}}. I started on {{System::StartTime,yyy-MM-dd hh:mm:ss tt}}"
        LogVariableName=""
        MessageType="Information"
        LogMode="ExecutionLog"
        LogFilePath=""
        LogFileAppend="True"
        LogDateTime="True"
        DateTimeFormat="HH:mm:ss"
        LogLevel="Normal"
        PrefixTimestamp="False" /&gt;
    &lt;/DTS:ObjectData&gt;
&lt;/DTS:Executable&gt;
...</pre>
<h4>BIML snippet</h4>
<p>A Logging Task under the Tasks element will look like this:</p><pre class="crayon-plain-tag">...
&lt;CustomTask Name="Logging Task" CreationName="ZappySys.PowerPack.Task.LoggingTask.LoggingTask, ZappySys.PowerPack120, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1903265a93eae502" TaskContact="ZappySys"&gt;
    &lt;ObjectData&gt;
        &amp;lt;LoggingTask
        Message="Hello from {{System::PackageName}}. I started on {{System::StartTime,yyy-MM-dd hh:mm:ss tt}}"
        LogVariableName=""
        MessageType="Information"
        LogMode="ExecutionLog"
        LogFilePath=""
        LogFileAppend="True"
        LogDateTime="True"
        DateTimeFormat="HH:mm:ss"
        LogLevel="Normal"
        PrefixTimestamp="False" /&amp;gt;
 &lt;/ObjectData&gt;
&lt;/CustomTask&gt;
...</pre><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;"><strong>NOTE:</strong> Notice the escaped <pre class="crayon-plain-tag">&lt;LoggingTask&gt;</pre> XML element under <pre class="crayon-plain-tag">&lt;ObjectData&gt;</pre> element.</div></div>
<h3>Create BIML custom components using CustomComponent</h3>
<p>Use the <pre class="crayon-plain-tag">CustomComponent</pre> BIML element to generate these components in DataFlow:</p>
<ul>
<li>Sources</li>
<li>Transformations</li>
<li>Destinations</li>
</ul>
<p>If you need a connection, then use the CustomSsisConnection element.</p>
<p>Again, you will have to copy the <pre class="crayon-plain-tag">UserComponentTypeName</pre> property value and use it in BIML to initialize a component. For a custom connection, it is a bit different: just use the CreationName attribute value from DTSX in the BIML element. Also, don&#8217;t forget to copy property values from DTSX and mirror them in BIML.</p>
<p><span style="box-sizing: border-box; margin: 0px; padding: 0px;">Below are DTSX and BIML snippets showing a Data Flow that contains a JSON Source using an <a target="_blank" rel="noopener">HTTP Connection</a> and is connected to a <a target="_blank" rel="noopener">Trash Destination</a>.</span></p>
<h4>DTSX snippet</h4>
<pre class="crayon-plain-tag">...
&lt;DTS:ConnectionManagers&gt;
    &lt;DTS:ConnectionManager DTS:refId="Package.ConnectionManagers[ZS-HTTP Connection]" DTS:CreationName="ZS-HTTP" DTS:DTSID="{E57D23E9-E50A-4C4A-BB19-B91E776887CF}" DTS:ObjectName="ZS-HTTP Connection"&gt;
        &lt;DTS:ObjectData&gt;
            &lt;ConnectionManager ConnectionString="Url=https://httpbin.org/anything;CredentialType=Notset;UserName=;Timeout=100000;UseProxy=False;ProxyUrl=;UseProxyCreds=False;ProxyUserName=;DoNotUseDefaultProxy=False;UseClientCertificate=False;CertificatePath=;CertificateStorageType=CurrentUser;CertificateStoreName=My;CertificateThumbprint=;RetryMode=None;RetryCountMax=3;RetryWaitTimeMs=2000;RetryMultiplyWaitTime=False;RetryMessageList=;RetryStatusCodeList=" /&gt;
...
&lt;DTS:Executable DTS:refId="Package\Dataflow" DTS:CreationName="SSIS.Pipeline.3" DTS:DTSID="{C59866C4-9732-4B3A-8F80-7784E52C63F5}" DTS:ExecutableType="SSIS.Pipeline.3" DTS:LocaleID="-1" DTS:ObjectName="Dataflow" DTS:TaskContact="Performs high-performance data extraction, transformation and loading;Microsoft Corporation; Microsoft SQL Server v10; (C) 2007 Microsoft Corporation; All Rights Reserved;http://www.microsoft.com/sql/support/default.asp;1"&gt;
    &lt;DTS:ObjectData&gt;
    &lt;pipeline BLOBTempStoragePath="" bufferTempStoragePath="" version="1"&gt;
    &lt;components&gt;
    &lt;component refId="Package\Dataflow\JsonSource" componentClassID="DTS.ManagedComponentWrapper.3" name="JsonSource" usesDispositions="true" version="25"&gt;
        &lt;properties&gt;
            &lt;property dataType="System.Int32" name="AccessMode" typeConverter="ZappySys.Common.Ssis.FileValueAccessMode, ZappySys.Common, Version=1.0.2017.10830, Culture=neutral, PublicKeyToken=1903265a93eae502"&gt;2&lt;/property&gt;
            &lt;property dataType="System.Boolean" name="UseConnection"&gt;true&lt;/property&gt;
            &lt;property dataType="System.String" name="UserComponentTypeName"&gt;ZappySys.PowerPack.Adapter.JsonSource.JsonSource, ZappySys.PowerPack110, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1903265a93eae502&lt;/property&gt;
            ...
        &lt;/properties&gt;
        &lt;connections&gt;
            &lt;connection refId="Package\Dataflow\JsonSource.Connections[HTTP 1]" connectionManagerID="Package.ConnectionManagers[ZS-HTTP Connection]" connectionManagerRefId="Package.ConnectionManagers[ZS-HTTP Connection]" name="HTTP 1" /&gt;
        &lt;/connections&gt;
        &lt;outputs&gt;
            &lt;output refId="Package\Dataflow\JsonSource.Outputs[JsonSourceOutput]" errorRowDisposition="FailComponent" name="JsonSourceOutput" truncationRowDisposition="FailComponent"&gt;
                &lt;outputColumns&gt;
                    &lt;outputColumn refId="Package\Dataflow\JsonSource.Outputs[JsonSourceOutput].Columns[Url]" dataType="wstr" externalMetadataColumnId="Package\Dataflow\JsonSource.Outputs[JsonSourceOutput].ExternalColumns[url]" length="50" lineageId="Package\Dataflow\JsonSource.Outputs[JsonSourceOutput].Columns[Url]" name="Url" /&gt;
                &lt;/outputColumns&gt;
                &lt;externalMetadataColumns isUsed="True"&gt;
                    &lt;externalMetadataColumn refId="Package\Dataflow\JsonSource.Outputs[JsonSourceOutput].ExternalColumns[url]" dataType="wstr" length="50" name="url" /&gt;
                &lt;/externalMetadataColumns&gt;
            &lt;/output&gt;
            ...
        &lt;/outputs&gt;
    &lt;/component&gt;
    &lt;component refId="Package\Dataflow\TrashDestination" componentClassID="DTS.ManagedComponentWrapper.3" name="TrashDestination" version="2"&gt;
        &lt;properties&gt;
            &lt;property dataType="System.String" name="UserComponentTypeName"&gt;ZappySys.PowerPack.Adapter.TrashDestination.TrashDestination, ZappySys.PowerPack110, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1903265a93eae502&lt;/property&gt;
            ...
        &lt;/properties&gt;
        &lt;inputs&gt;
            &lt;input refId="Package\Dataflow\TrashDestination.Inputs[TrashInput]" name="TrashInput"&gt;
                &lt;externalMetadataColumns /&gt;
            &lt;/input&gt;
        &lt;/inputs&gt;
    &lt;/component&gt;
    &lt;/components&gt;
    &lt;paths&gt;
        &lt;path refId="Package\Dataflow.Paths[TrashInput]" endId="Package\Dataflow\TrashDestination.Inputs[TrashInput]" name="TrashInput" startId="Package\Dataflow\JsonSource.Outputs[JsonSourceOutput]" /&gt;
    &lt;/paths&gt;
...</pre>
<h4>BIML snippet</h4>
<pre class="crayon-plain-tag">...
&lt;Connections&gt;
    &lt;CustomSsisConnection Name="ZS-HTTP Connection" CreationName="ZS-HTTP" ObjectData="&amp;lt;ConnectionManager ConnectionString=&amp;quot;Url=https:&amp;#x2F;&amp;#x2F;httpbin.org&amp;#x2F;anything;CredentialType=Notset;UserName=;Timeout=100000;UseProxy=False;ProxyUrl=;UseProxyCreds=False;ProxyUserName=;DoNotUseDefaultProxy=False;UseClientCertificate=False;CertificatePath=;CertificateStorageType=CurrentUser;CertificateStoreName=My;CertificateThumbprint=;RetryMode=None;RetryCountMax=3;RetryWaitTimeMs=2000;RetryMultiplyWaitTime=False;RetryMessageList=;RetryStatusCodeList=&amp;quot; &amp;#x2F;&amp;gt;"/&gt;
&lt;/Connections&gt;
&lt;Packages&gt;
&lt;Package Name="DataFlow with Connection Sample" ConstraintMode="Linear"&gt;
&lt;Tasks&gt;
    &lt;Dataflow Name="Dataflow"&gt;
    &lt;Transformations&gt;
    &lt;CustomComponent Name="JsonSource" UsesDispositions="true" ComponentTypeName="ZappySys.PowerPack.Adapter.JsonSource.JsonSource, ZappySys.PowerPack130, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1903265a93eae502"&gt;
        &lt;CustomProperties&gt;
            &lt;CustomProperty Name="AccessMode" DataType="Int32"&gt;2&lt;/CustomProperty&gt;                              
            &lt;CustomProperty Name="UseConnection" DataType="Boolean"&gt;true&lt;/CustomProperty&gt;
        &lt;/CustomProperties&gt;
        &lt;OutputPaths&gt;
            &lt;OutputPath Name="JsonSourceOutput" ErrorRowDisposition="FailComponent" TruncationRowDisposition="FailComponent"&gt;
                &lt;ExternalColumns&gt;
                    &lt;ExternalColumn Name="url" DataType="String" Length="50" /&gt;
                &lt;/ExternalColumns&gt;                                  
                &lt;OutputColumns&gt;
                    &lt;OutputColumn Name="Url" ExternalMetadataColumnName="url" DataType="String" Length="50" /&gt;
                &lt;/OutputColumns&gt;
            &lt;/OutputPath&gt;
            &lt;OutputPath Name="Json Error Output" IsErrorOutput="true"&gt;
            &lt;OutputColumns&gt;
                &lt;OutputColumn Name="Url" /&gt;
            &lt;/OutputColumns&gt;
            &lt;/OutputPath&gt;                                  
        &lt;/OutputPaths&gt;
        &lt;Connections&gt;
        &lt;Connection Name="HTTP 1" ConnectionName="ZS-HTTP Connection" /&gt;
        &lt;/Connections&gt;                             
    &lt;/CustomComponent&gt;
    &lt;CustomComponent Name="TrashDestination" ComponentTypeName="ZappySys.PowerPack.Adapter.TrashDestination.TrashDestination, ZappySys.PowerPack130, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1903265a93eae502"&gt;
        &lt;InputPaths&gt;
            &lt;InputPath OutputPathName="JsonSource.JsonSourceOutput" Identifier="TrashInput" SsisName="TrashInput"/&gt;
        &lt;/InputPaths&gt;
    &lt;/CustomComponent&gt;
    &lt;/Transformations&gt;
...</pre>
<h2>Resources</h2>
<ul>
<li><a href="https://www.varigence.com/Documentation" target="_blank" rel="noopener">BIML documentation</a></li>
<li><a href="https://www.varigence.com/Documentation/Language/Element/AstCustomTaskNode" target="_blank" rel="noopener">CustomTask documentation</a></li>
<li><a href="https://schemas.varigence.com/Documentation/Language/Element/AstCustomComponentNode" target="_blank" rel="noopener">CustomComponent documentation</a></li>
<li><a href="https://www.varigence.com/Documentation/Language/Element/AstCustomSsisConnectionNode" target="_blank" rel="noopener">CustomSsisConnection documentation</a></li>
</ul>
<h2>Download sample BIMLs</h2>
<ul>
<li><a href="//zappysys.com/blog/wp-content/uploads/2017/09/Sample-BIML-with-PowerPack-components-inside-DataFlow.zip" target="_blank" rel="noopener">Sample BIML with PowerPack DataFlow Components</a></li>
<li><a href="//zappysys.com/blog/wp-content/uploads/2017/09/Sample-BIML-with-PowerPack-components-inside-DataFlow-with-connection.zip" target="_blank" rel="noopener">Sample BIML with PowerPack DataFlow Components with Connection</a></li>
<li><a href="//zappysys.com/blog/wp-content/uploads/2017/09/Sample-BIML-with-PowerPack-Task.zip" target="_blank" rel="noopener">Sample BIML with PowerPack Task</a></li>
</ul>
<p>The post <a href="https://zappysys.com/blog/how-to-use-biml-script-to-create-biml-custom-task-or-component/">How to create BIML custom task or component</a> appeared first on <a href="https://zappysys.com/blog">ZappySys Blog</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
